Changeset 355 for AE/Installer/trunk


Ignore:
Timestamp:
Jun 19, 2009, 12:30:30 AM (15 years ago)
Author:
gumby
Message:
 
Location:
AE/Installer/trunk/source
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • AE/Installer/trunk/source/installer.h

    r325 r355  
    5050        }
    5151       
     52             bool operator < (const ModPackage &fs)
     53     { return (name < fs.name);}
     54
     55     bool operator > (const ModPackage &fs)
     56     { return (name > fs.name);}
     57
     58     bool operator == (const ModPackage &fs)
     59     { return (name == fs.name);}
    5260};
    5361
  • AE/Installer/trunk/source/main_window.cpp

    r353 r355  
    11/*
    2  AE/Mod Installer
    3  by Gumby and Iritscen
    4  */
    5 
    6 // To-do: - Disable Install button when nothing (new) is selected
     2AE/Mod Installer
     3by Gumby and Iritscen
     4*/
     5
     6// To-do: -
    77//                - Institute lots of checks into file-handling
    8 //                - Clear mod info fields when mod is de-selected
     8//                - Clear mod info fields when mod is de-selected ???
    99
    1010#define DEBUG
     
    2121
    2222#include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations
    23 
     23#include "boost/lexical_cast.hpp" //int -> string
    2424#include "installer.h"
    2525
     
    5353
    5454
    55 /*
    56  int main(void)
    57  {
    58  if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) splitInstances = NOT_SPLIT;
    59  else splitInstances = NOT_SPLIT;
    60  //     SetConsoleTitle("AE Installer"); windows junk, convert to SDL
    61  #ifdef WIN32   
    62  system("color 0A");
    63  #endif
    64  cout << "\nWelcome to the AE installer!\n";
    65  cout << "\nWhat would you like to do?\n";
    66  
    67  return mainMenu();
    68  }
    69  */
    70 
    71 
    72 
    73 int mainMenu(void)
    74 {
    75         char choice = '0';
    76         bool exit = false;
     55
     56
     57#include "boost/date_time/gregorian/gregorian.hpp"
     58#include "boost/date_time/date_parsing.hpp"
     59#include "boost/date_time/posix_time/posix_time.hpp"
     60
     61int globalizeData(void)
     62{
     63            using boost::lexical_cast;
     64    using boost::bad_lexical_cast;
     65// using namespace boost::posix_time;
     66        using namespace boost::gregorian;
     67        using namespace boost::posix_time;
     68        ptime start_time(second_clock::local_time());
     69
     70        setStatusArea("Globalizing!");
    7771        int err = 0;
    78         do
    79         {
    80                 if( exists( "../GameDataFolder" ) ) {
    81                         cout << "\n1. Add new packages\n";
    82                         cout << "2. Remove packages\n";
    83                         cout << "3. See what is installed\n";
    84                         cout << "4. Globalize data\n";
    85                         cout << "5. About AE\n";
    86                         cout << "6. Quit\n\n";
    87                        
    88                         choice = cin.get();
    89                         cin.ignore(128, '\n');
    90                         switch(choice)
    91                         {
    92                                 case '1':
    93                                         err = installPackages();
    94                                         break;
    95                                 case '2':
    96                                         err = uninstallPackages();
    97                                         break;
    98                                 case '3':
    99                                         err = listInstalledPackages();
    100                                         break;
    101                                 case '4':
    102                                         err = globalizeData();
    103                                         break;
    104                                 case '5':
    105                                         err = printInstallerInfo();
    106                                         break;
    107                                 case '6':
    108                                         exit = true;
    109                                         break;
    110                                 default:
    111                                         cout << "Please choose one of the above numbers, and press Enter.\n\n";
    112                         }
    113                         if (err) // if something fatal happened
    114                                 exit = true;
     72        int parts_done = 0;
     73        char Step_x_x[300];
     74        //char levels[i][5];
     75        remove("Globalize.log");
     76        ofstream logfile("Globalize.log");
     77        logfile << "Globalization started " << to_simple_string(start_time) << endl;
     78        try {
     79               
     80                char levels_cstr[15][3] = {"0", "1", "2", "3", "4", "6", "8", "9", "10", "11", "12", "13", "14", "18", "19"}; // the levels Oni has...probably should have made a string array. Oops.
     81                //const vector<double> ck(cv, &cv[CvSize]);
     82                vector<string> levels;
     83                for (int f = 0; f < 15; f++) {
     84                        levels.push_back(levels_cstr[f]);
    11585                }
    116                 else {
    117                         cout << "\n1. Globalize data\n";
    118                         cout << "2. About AE\n";
    119                         cout << "3. Quit\n\n";
    120                        
    121                         choice = cin.get();
    122                         cin.ignore(128, '\n');
    123                         switch(choice)
    124                         {
    125                                 case '1':
    126                                         err = globalizeData();
    127                                         break;
    128                                 case '2':
    129                                         err = printInstallerInfo();
    130                                         break;
    131                                 case '3':
    132                                         exit = true;
    133                                         break;
    134                                 default:
    135                                         cout << "Please choose one of the above numbers, and press Enter.\n\n";
    136                         }
    137                         if (err) // if something fatal happened
    138                                 exit = true;
    139                 }
    140         } while(!exit);
    141        
    142         return err;
    143 }
    144 
    145 int globalizeData(void)
    146 {
    147         int err = 0;
    148        
    149         try {
    150                 int levels[15] = {0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19}; // the levels Oni has
    15186                char choice = 0;
    152                
     87
    15388                //SetCurrentDirectory("C:/Program Files/Oni/edition/install");
    154                 char levelnum[3];
     89                ///char levels[i][3];
    15590                path Characters = "../GameDataFolder/level0_Characters";
    15691                path Particles = "../GameDataFolder/level0_Particles";
     
    16196                path TRAC = Animations / "level0_TRAC";
    16297                path TRAM = Animations / "level0_TRAM";
     98               
     99                vector<path> GDFPaths;
     100                GDFPaths.push_back(Characters);
     101                GDFPaths.push_back(Particles);
     102                GDFPaths.push_back(Textures);
     103                GDFPaths.push_back(Sounds);
     104                GDFPaths.push_back(TRAC);
     105                GDFPaths.push_back(TRAM);
     106               
     107                       
     108                path VanillaCharacters = "packages/VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
     109                path VanillaParticles = "packages/VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
     110                path VanillaTextures  = "packages/VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
     111                path VanillaSounds = "packages/VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
     112                path VanillaAnimations = "packages/VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
     113                path VanillaTRAC = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
     114                path VanillaTRAM = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
     115
     116                vector<path> VanillaPaths;
     117               
     118                VanillaPaths.push_back(VanillaCharacters);
     119                VanillaPaths.push_back(VanillaParticles);
     120                VanillaPaths.push_back(VanillaTextures);
     121                VanillaPaths.push_back(VanillaSounds);
     122                VanillaPaths.push_back(VanillaTRAC);
     123                VanillaPaths.push_back(VanillaTRAM);
     124               
    163125                /*
    164                  if (exists("../GameDataFolder/"))
    165                  {
    166                  //cout << "\nIt looks like you've already globalized Oni's data.\nDo you want to re-globalize?\n(This will erase existing mods installed to the AE's game data.)"
    167                  //      << "\n1. Re-globalize"
    168                  //      << "\n2. Return to main menu\n";
    169                  //choice = cin.get();
    170                  cin.ignore(128, '\n');
    171                  if (choice == '1')
    172                  remove_all("../GameDataFolder"); // remove AE GDF
    173                  if (choice == '2')
    174                  return 0;
    175                  }
    176                  */
     126                if (exists("../GameDataFolder/"))
     127                {
     128                //cout << "\nIt looks like you've already globalized Oni's data.\nDo you want to re-globalize?\n(This will erase existing mods installed to the AE's game data.)"
     129                //       << "\n1. Re-globalize"
     130                //       << "\n2. Return to main menu\n";
     131                //choice = cin.get();
     132                cin.ignore(128, '\n');
     133                if (choice == '1')
     134                remove_all("../GameDataFolder"); // remove AE GDF
     135                if (choice == '2')
     136                return 0;
     137                }
     138                */
     139                setStatusArea("Removing old GameDataFolder...\n");
     140                logfile <<  "Removing old GameDataFolder...\n";
     141                remove_all( "../GameDataFolder/" );
     142                setStatusArea("Creating needed directories...");
     143                logfile <<  "Creating needed directories...\n";
    177144                create_directory( "../GameDataFolder/" );
     145               
    178146                create_directory( "packages" );
    179                 if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats");
     147               
     148                if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats");
    180149                create_directory( "packages/VanillaDats" );
    181150               
    182151                create_directory( "packages/VanillaDats/level0_Final/" );
     152                //blah blah finish this.
     153                //logfile <<  "packages/VanillaDats/level0_Final/ created";
    183154                create_directory( Characters );
    184155                create_directory( Particles );
     
    189160                create_directory( TRAC );
    190161                create_directory( TRAM );
    191                
     162                int num_levels = 0;
     163                for(int i = 1; i < 15; i++)
     164                {
     165                                if (exists("../../GameDataFolder/level" + levels[i] + "_Final.dat")) {
     166                                num_levels++;
     167
     168                        }
     169                }
     170                logfile << "Exporting and moving...\n\n";
     171                int total_steps =  8 + 2 * num_levels;
    192172                for(int i = 0; i < 15; i++)
    193173                {
    194                         sprintf(levelnum,"%d",levels[i]); // int to char array
    195                         exists("../../GameDataFolder/level" + (string)levelnum + "_Final");
    196                         system((strOniSplit + " -export ../GameDataFolder/level" + (string)levelnum + "_Final ../../GameDataFolder/level" + (string)levelnum + "_Final.dat").c_str());
    197174                       
    198                         create_directory( "packages/VanillaDats/level" + (string)levelnum + "_Final" ); //remember to cast your arrays as strings :)
    199                         create_directory( "packages/VanillaDats/level" + (string)levelnum + "_Final/level" + (string)levelnum + "_Final" );
     175                        //printf(levels[i],"%d",levels[i]); // int to char array
    200176                       
    201                         directory_iterator end_iter;
    202                         for ( directory_iterator dir_itr( "../GameDataFolder/level" + (string)levelnum + "_Final" ); dir_itr != end_iter; ++dir_itr )
    203                         {
    204                                 //cout << dir_itr->path().filename();
    205                                 if ( is_regular_file( dir_itr->status() ) )
     177                        if (exists("../../GameDataFolder/level" + levels[i] + "_Final.dat")) {
     178                                logfile << "level" << levels[i] << "_Final\n";
     179                                logfile << "\tExporting level" << levels[i] << "_Final.dat\n";
     180                                //printf(Step_x_x,"Step %d/%d: exporting level%d_final.dat", parts_done + 1,, levels[i]); setStatusArea((string)Step_x_x);
     181                                setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + " exporting level" + levels[i]+"_Final.dat");
     182                                create_directory( "../GameDataFolder/level" + levels[i] + "_Final" );
     183//                              setStatusArea(strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat");
     184                                system((strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat").c_str());
     185                                create_directory( "packages/VanillaDats/level" + levels[i] + "_Final" );
     186                                create_directory( "packages/VanillaDats/level" + levels[i] + "_Final/level" + levels[i] + "_Final" );
     187
     188                                directory_iterator end_iter;
     189                                for ( directory_iterator dir_itr( "../GameDataFolder/level" + levels[i] + "_Final" ); dir_itr != end_iter; ++dir_itr )
    206190                                {
     191                                        //cout << dir_itr->path().filename();
     192                                        if ( is_regular_file( dir_itr->status() ) )
     193                                        {
     194                                                if ( dir_itr->path().filename().substr(0,8) == "TXMPfail" ||
     195                                                        dir_itr->path().filename().substr(0,9) == "TXMPlevel" ||
     196                                                        ( dir_itr->path().filename().substr(0,4) == "TXMP" && dir_itr->path().filename().find("intro")!=string::npos) ||
     197                                                        dir_itr->path().filename().substr(0,4) == "TXMB" ||
     198                                                        dir_itr->path().filename() == "M3GMpowerup_lsi.oni" ||
     199                                                        dir_itr->path().filename() == "TXMPlsi_icon.oni" ||
     200                                                        ( dir_itr->path().filename().substr(0,4) == "TXMB" && dir_itr->path().filename().find("splash_screen.oni")!=string::npos)       )
     201                                                {
     202                                                        cout <<dir_itr->path().filename() << "\n";
     203                                                        create_directory( dir_itr->path().parent_path() / "NoGlobal"); 
     204                                                        if(!exists( dir_itr->path().parent_path() / "NoGlobal" / dir_itr->filename())) rename(dir_itr->path(), dir_itr->path().parent_path() / "NoGlobal" /
     205                                                                dir_itr->filename());
     206                                                        else remove(dir_itr->path());
     207                                                }
     208                                                else if (dir_itr->path().filename().substr(0,4) == "TRAC"
     209                                                        || dir_itr->path().filename().substr(0,4) == "ONVL") {
     210                                                                cout <<dir_itr->path().filename() << "\n";
     211                                                                if(!exists( TRAC / dir_itr->filename())) rename(dir_itr->path(), TRAC / dir_itr->filename());
     212                                                                else remove(dir_itr->path());
     213                                                }
     214                                                else if (dir_itr->path().filename().substr(0,4) == "TRAM") {
     215                                                        cout <<dir_itr->path().filename() << "\n";
     216                                                        if(!exists( TRAM / dir_itr->filename())) rename(dir_itr->path(), TRAM / dir_itr->filename());
     217                                                        else remove(dir_itr->path());
     218                                                }
     219                                                else if (dir_itr->path().filename().substr(0,4) == "ONSK" ||
     220                                                        dir_itr->path().filename().substr(0,4) == "TXMP") {
     221                                                                cout <<dir_itr->path().filename() << "\n";\
     222                                                                        create_directory( dir_itr->path().parent_path() / "TexFix");   
     223                                                                if(!exists( Textures / dir_itr->filename())) rename(dir_itr->path(), Textures / dir_itr->filename());
     224                                                                //rename(dir_itr->path(), dir_itr->path().parent_path() / "TexFix" / dir_itr->filename());
     225                                                }
     226                                                else if (dir_itr->path().filename().substr(0,4) == "ONCC"
     227                                                        || dir_itr->path().filename().substr(0,4) == "TRBS"
     228                                                        || dir_itr->path().filename().substr(0,4) == "ONCV"
     229                                                        || dir_itr->path().filename().substr(0,4) == "TRMA"
     230                                                        || dir_itr->path().filename().substr(0,4) == "TRSC"
     231                                                        || dir_itr->path().filename().substr(0,4) == "TRAS") {
     232                                                                cout <<dir_itr->path().filename() << "\n";
     233                                                                if(!exists( Characters / dir_itr->filename())) rename(dir_itr->path(), Characters / dir_itr->filename());
     234                                                                else remove(dir_itr->path());
     235                                                }
     236                                                else if (dir_itr->path().filename().substr(0,4) == "OSBD"
     237                                                        || dir_itr->path().filename().substr(0,4) == "SNDD") {
     238                                                                cout << dir_itr->path().filename() << "\n";
     239                                                                if(!exists( Sounds / dir_itr->filename())) rename(dir_itr->path(), Sounds / dir_itr->filename());
     240                                                                else remove(dir_itr->path());
     241                                                }
     242                                                else if (dir_itr->path().filename().substr(0,5) == "BINA3"
     243                                                        || dir_itr->path().filename().substr(0,10) == "M3GMdebris"
     244                                                        || dir_itr->path().filename() == "M3GMtoxic_bubble.oni"
     245                                                        || dir_itr->path().filename().substr(0,8) == "M3GMelec"
     246                                                        || dir_itr->path().filename().substr(0,7) == "M3GMrat"
     247                                                        || dir_itr->path().filename().substr(0,7) == "M3GMjet"
     248                                                        || dir_itr->path().filename().substr(0,9) == "M3GMbomb_"
     249                                                        || dir_itr->path().filename() == "M3GMbarab_swave.oni"
     250                                                        || dir_itr->path().filename() == "M3GMbloodyfoot.oni"
     251                                                        ){
     252                                                                cout <<dir_itr->path().filename() << "\n";
     253                                                                if(!exists( Particles / dir_itr->filename())) rename(dir_itr->path(), Particles / dir_itr->filename());
     254                                                                else remove(dir_itr->path());
     255                                                }
     256                                                else if (dir_itr->path().filename().substr(0,4) == "AGDB"
     257                                                        || dir_itr->path().filename().substr(0,4) == "TRCM") {
     258                                                                cout <<dir_itr->path().filename() << "\n";
    207259                                       
    208                                         if ( dir_itr->path().filename().substr(0,8) == "TXMPfail" ||
    209                                                 dir_itr->path().filename().substr(0,9) == "TXMPlevel" ||
    210                                                 ( dir_itr->path().filename().substr(0,4) == "TXMP" && dir_itr->path().filename().find("intro")!=string::npos) ||
    211                                                 dir_itr->path().filename().substr(0,4) == "TXMB" ||
    212                                                 dir_itr->path().filename() == "M3GMpowerup_lsi.oni" ||
    213                                                 dir_itr->path().filename() == "TXMPlsi_icon.oni" ||
    214                                                 ( dir_itr->path().filename().substr(0,4) == "TXMB" && dir_itr->path().filename().find("splash_screen.oni")!=string::npos)       )
    215                                         {
    216                                                 cout <<dir_itr->path().filename() << "\n";
    217                                                 create_directory( dir_itr->path().parent_path() / "NoGlobal"); 
    218                                                 if(!exists( dir_itr->path().parent_path() / "NoGlobal" / dir_itr->filename())) rename(dir_itr->path(), dir_itr->path().parent_path() / "NoGlobal" /
    219                                                                                                                                                                                                                           dir_itr->filename());
    220                                                 else remove(dir_itr->path());
     260                                                                if(!exists( Archive / dir_itr->filename())) rename(dir_itr->path(), Archive / dir_itr->filename());
     261                                                                else remove(dir_itr->path());
     262                                                }
     263                                                if (exists(dir_itr->path())) {
     264
     265                                                }
     266                                                else {
     267                                                        logfile << "\tMoved file: " << dir_itr->path().filename() << "\n";
     268                                                }
    221269                                        }
    222                                         else if (dir_itr->path().filename().substr(0,4) == "TRAC") {
    223                                                 cout <<dir_itr->path().filename() << "\n";
    224                                                 if(!exists( TRAC / dir_itr->filename())) rename(dir_itr->path(), TRAC / dir_itr->filename());
    225                                                 else remove(dir_itr->path());
    226                                         }
    227                                         else if (dir_itr->path().filename().substr(0,4) == "TRAM") {
    228                                                 cout <<dir_itr->path().filename() << "\n";
    229                                                 if(!exists( TRAM / dir_itr->filename())) rename(dir_itr->path(), TRAM / dir_itr->filename());
    230                                                 else remove(dir_itr->path());
    231                                         }
    232                                         else if (dir_itr->path().filename().substr(0,4) == "ONSK" ||
    233                                                          dir_itr->path().filename().substr(0,4) == "TXMP") {
    234                                                 cout <<dir_itr->path().filename() << "\n";\
    235                                                 create_directory( dir_itr->path().parent_path() / "TexFix");   
    236                                                 if(!exists( Textures / dir_itr->filename())) rename(dir_itr->path(), Textures / dir_itr->filename());
    237                                                 //rename(dir_itr->path(), dir_itr->path().parent_path() / "TexFix" / dir_itr->filename());
    238                                         }
    239                                         else if (dir_itr->path().filename().substr(0,4) == "ONCC"
    240                                                          || dir_itr->path().filename().substr(0,4) == "TRBS"
    241                                                          || dir_itr->path().filename().substr(0,4) == "TRMA"
    242                                                          || dir_itr->path().filename().substr(0,4) == "TRSC"
    243                                                          || dir_itr->path().filename().substr(0,4) == "TRAS") {
    244                                                 cout <<dir_itr->path().filename() << "\n";
    245                                                 if(!exists( Characters / dir_itr->filename())) rename(dir_itr->path(), Characters / dir_itr->filename());
    246                                                 else remove(dir_itr->path());
    247                                         }
    248                                         else if (dir_itr->path().filename().substr(0,4) == "OSBD"
    249                                                          || dir_itr->path().filename().substr(0,4) == "SNDD") {
    250                                                 cout << dir_itr->path().filename() << "\n";
    251                                                 if(!exists( Sounds / dir_itr->filename())) rename(dir_itr->path(), Sounds / dir_itr->filename());
    252                                                 else remove(dir_itr->path());
    253                                         }
    254                                         else if (dir_itr->path().filename().substr(0,5) == "BINA3"
    255                                                          || dir_itr->path().filename().substr(0,10) == "M3GMdebris"
    256                                                          || dir_itr->path().filename() == "M3GMtoxic_bubble.oni"
    257                                                          || dir_itr->path().filename().substr(0,8) == "M3GMelec"
    258                                                          || dir_itr->path().filename().substr(0,7) == "M3GMrat"
    259                                                          || dir_itr->path().filename().substr(0,7) == "M3GMjet"
    260                                                          || dir_itr->path().filename().substr(0,9) == "M3GMbomb_"
    261                                                          || dir_itr->path().filename() == "M3GMbarab_swave.oni"
    262                                                          || dir_itr->path().filename() == "M3GMbloodyfoot.oni"
    263                                                          ){
    264                                                 cout <<dir_itr->path().filename() << "\n";
    265                                                 if(!exists( Particles / dir_itr->filename())) rename(dir_itr->path(), Particles / dir_itr->filename());
    266                                                 else remove(dir_itr->path());
    267                                         }
    268                                         else if (dir_itr->path().filename().substr(0,4) == "AGDB"
    269                                                          || dir_itr->path().filename().substr(0,4) == "TRCM") {
    270                                                 cout <<dir_itr->path().filename() << "\n";
     270
     271
    271272                                               
    272                                                 if(!exists( Archive / dir_itr->filename())) rename(dir_itr->path(), Archive / dir_itr->filename());
    273                                                 else remove(dir_itr->path());
    274                                         }
    275273                                }
     274                                logfile << "\tCleaning up TXMPs...\n";
     275                                system( (strOniSplit + " -move:delete " + Textures.string() + " ../GameDataFolder/level" + levels[i] + "_Final/TXMP*.oni").c_str());
     276                                parts_done++;
     277
     278                                setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
    276279                               
    277                                
    278                         }
    279                         system( (strOniSplit + " -move:delete " + Textures.string() + " ../GameDataFolder/level" + (string)levelnum + "_Final/TXMP*.oni").c_str());
    280                        
     280                        }
    281281                }
    282                
     282                logfile << "Reimporting levels\n";
    283283                for (int i = 0; i < 15; i++)
    284284                {
    285                         sprintf(levelnum,"%d",levels[i]);
    286                         system( (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levelnum + "_Final packages/VanillaDats/level" + levelnum + "_Final/level"
    287                                          + levelnum + "_Final/level" + levelnum + "_Final.oni").c_str());
     285                        logfile << "\tReimporting level" << levels[i] << "_Final.oni\n";
     286                        //printf(levels[i],"%d",levels[i]);
     287                        //printf(Step_x_x,"Step %d/%d: reimporting level", parts_done + 1, 7 + 2 * num_levels); setStatusArea((string)Step_x_x + levels[i] + (string)"_Final.dat");
     288                        setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + " reimporting level" + levels[i]+"_Final.oni");
     289                        system( (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final packages/VanillaDats/level" + levels[i] + "_Final/level"
     290                                + levels[i] + "_Final/level" + levels[i] + "_Final.oni > Globalize.oni").c_str());
     291                        setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
     292                                parts_done++;
    288293                }
    289                 path VanillaCharacters = "packages/VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
    290                 path VanillaParticles = "packages/VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
    291                 path VanillaTextures  = "packages/VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
    292                 path VanillaSounds = "packages/VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
    293                 path VanillaAnimations = "packages/VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
    294                 path VanillaTRAC = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
    295                 path VanillaTRAM = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
    296294                create_directory( VanillaCharacters.parent_path() );
    297295                create_directory( VanillaParticles.parent_path() );
     
    299297                create_directory( VanillaSounds.parent_path() );
    300298                create_directory( VanillaAnimations.remove_filename() );
     299               
     300                for(int j = 0; j < GDFPaths.size(); j++) {
     301                        logfile << "\tReimporting " << GDFPaths[j].filename() << ".oni\n";
     302                        setStatusArea("Step" + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + ": reimporting " + GDFPaths[j].filename() );
     303                        system((strOniSplit + " " + strImportOption + " " + GDFPaths[j].string() + " " + VanillaPaths[j].string()).c_str());
     304                        parts_done++;
     305                        setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
     306                }
     307/*
     308                printf(Step_x_x,"Step %d/%d: reimporting level0_Characters", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
    301309                system((strOniSplit + " " + strImportOption + " " + Characters.string() + " " + VanillaCharacters.string()).c_str());
     310                parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Particles", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
    302311                system((strOniSplit + " " + strImportOption + " " + Particles.string() + " " + VanillaParticles.string()).c_str());
     312                parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Textures", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
    303313                system((strOniSplit + " " + strImportOption + " " + Textures.string() + " " + VanillaTextures.string()).c_str());
    304314                //system((strOniSplit   + " " + strImportOption + (string)" " + Animations.string() + (string)" " + VanillaAnimations.string()).c_str());
     315                parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_TRAC", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
    305316                system((strOniSplit + " " + strImportOption + " " + TRAC.string() + " " + VanillaTRAC.string()).c_str());
     317                parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Sounds", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
    306318                system((strOniSplit + " " + strImportOption + " " + Sounds.string() + " " + VanillaSounds.string()).c_str());
    307                 system((strOniSplit + " " + strImportOption + " " + TRAM.string() + " " + VanillaTRAM.string()).c_str());
     319                parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_TRAM", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
     320                system((strOniSplit + " " + strImportOption + " " + TRAM.string() + " " + VanillaTRAM.string()).c_str());
     321                //parts_done++; setStatusArea((string)"Copying level scripts...");setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
     322                if (exists("../GameDataFolder/IGMD")) remove_all("../GameDataFolder/IGMD");
     323*/
     324                create_directory((path)"../GameDataFolder/IGMD");
     325                copy((path)"packages/VanillaBSL/", (path)"../GameDataFolder");
     326                setProgressBar( 1000 );
     327                setStatusArea((string)"Done! Now select your mod packages and click install.");
     328        //      while(1) Sleep(-1);
    308329               
    309                 create_directory("../GameDataFolder/IGMD");
    310                 copy((path)"packages/VanillaBSL/IGMD", (path)"../GameDataFolder");
    311330        }
    312331        catch (exception ex) {
    313                 cout << ex.what();
    314         }
     332                setStatusArea("Warning, handled exception: " + (string)ex.what());
     333        }
     334       
     335                ptime end_time(second_clock::local_time());
     336                time_period total_time (start_time, end_time);
     337                logfile << "\n\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
     338                //total_time.length().hours();
     339        logfile.close();
     340
    315341        return err;
    316342}
    317343
    318 int installPackages(void)
    319 {
    320         bool installed_something = 0;
    321         int err = 0;
    322         ModPackage package;
    323         vector<string> installed_packages;
    324         vector<ModPackage> packages;
    325         vector<ModPackage>::iterator iter;
    326         vector<string> installString;
    327        
    328         iter = packages.begin();
    329         packages = getPackages();
    330         vector<string> installedMods = getInstallString();
    331        
    332         if (packages.empty())
    333         {
    334                 cout << "Error: You have no packages!\n";
    335                 return 0;
    336         }
    337        
    338         cout << "Detecting installed packages...\n";
    339        
    340         int index = 1;
    341         char choice = '0';
    342        
    343         for (vector<ModPackage>::iterator package_iter = packages.begin(); package_iter != packages.end(); ++package_iter)
    344         {
    345                 if (!binary_search(installedMods.begin(), installedMods.end(), package_iter->modStringName))
    346                 { //package_iter->isInstalled :< I forgot about this...
    347                         //cout << index << " ";
    348                         system(strClsCmd);
    349                         cout << (*package_iter).name << "\n";
    350                         for (int character = 1; character <= (*package_iter).name.length() - 1; character++) cout << '-';
    351                         cout << "\n"
    352                         << (*package_iter).readme << "\n\n"
    353                         << "Please enter a number choice\n"
    354                         << " 1. Add\n"
    355                         << " 2. Don't Add\n"
    356                         << "";
    357                         index++;
    358                         choice = 0;
    359                        
    360                         do
    361                         {
    362                                 choice = cin.get();
    363                                 cin.ignore(1280, '\n');
    364                         } while(choice == 0);
    365                        
    366                         if (choice == '1')
    367                         {
    368                                 cout << "\nInstalling...\n\n";
    369                                 if (package_iter->hasOnis || (package_iter->hasDeltas /*(*package_iter).isUnpacked */ ))
    370                                 {
    371                                         installed_something = 1;
    372                                         installedMods.push_back(package_iter->modStringName);
    373                                         system(strPauseCmd);
    374                                 }
    375                         }
    376                 }
    377         }
    378         if (index == 1)
    379         {
    380                 cout << "Warning: All packages are already installed\n";
    381                 //would you like to recombine your data?
    382                 return 0;
    383         }
    384         if (installed_something == 0)
    385         {
    386                 cout << "Warning: You didn't add anything!\n";
    387                 //would you like to recombine your data?
    388                 return 0;
    389         }
    390        
    391         sort(installedMods.begin(), installedMods.end());
    392         //system(Onisplit.c_str());
    393         recompileAll(installedMods);
    394         system(strPauseCmd);
    395        
    396         return err;
    397 }
    398 
    399 int uninstallPackages(void)
    400 {
    401         int err = 0;
    402         ModPackage package;
    403         vector<string> installed_packages;
    404         vector<ModPackage> packages;
    405         vector<ModPackage>::iterator iter;
    406         vector<string> installString;
    407        
    408         iter = packages.begin();
    409         packages = getPackages();
    410        
    411        
    412         cout << "Detecting installed packages...\n";
    413        
    414         vector<string> installedMods = getInstallString();
    415        
    416         if (packages.empty())
    417         {
    418                 cout << "Error: You have no packages!\n";
    419                 return 0;
    420         }
    421        
    422         int index = 0;
    423         int uninstalled_something = 0;
    424         char choice = '0';
    425        
    426         for (vector<ModPackage>::iterator package_iter = packages.begin(); package_iter != packages.end(); ++package_iter)
    427         {
    428                 if (binary_search(installedMods.begin(), installedMods.end(), package_iter->modStringName))
    429                 { //package_iter->isInstalled :< I forgot about this...
    430                         //cout << index << " ";
    431                         system(strClsCmd);
    432                         cout << (*package_iter).name << "\n";
    433                         for (int character = 1; character <= (*package_iter).name.length() - 1; character++) cout << '-';
    434                         cout << "\n"
    435                         << (*package_iter).readme << "\n\n"
    436                         << "Please enter a number choice\n"
    437                         << " 1. Remove\n"
    438                         << " 2. Don't Remove\n"
    439                         << "";
    440                        
    441                         choice = 0;
    442                        
    443                         do
    444                         {
    445                                 choice = cin.get();
    446                                 cin.ignore(1280, '\n');
    447                         } while(choice == 0);
    448                        
    449                         if (choice == '1')
    450                         {
    451                                 cout << "\nUninstalling...\n\n";
    452                                 installedMods.erase( installedMods.begin() + (index) );
    453                                 system(strPauseCmd);
    454                                 uninstalled_something = 1;
    455                                
    456                         }
    457                         else {
    458                                 index++;
    459                         }
    460                 }
    461         }
    462         if ( uninstalled_something == 0 )
    463         {
    464                 if (index == 0) //bad practice, I need to implement a second vector or something. Meh.
    465                 {
    466                         cout << "\nWarning: You have no installed packages!";
    467                 }
    468                 else
    469                 {
    470                         cout << "\nWarning: You didn't remove anything!";
    471                 }
    472                 //would you like to recombine your data?
    473                 return 0;
    474                
    475         }       
    476         sort(installedMods.begin(), installedMods.end());
    477         //system(Onisplit.c_str());
    478         recompileAll(installedMods);
    479         system(strPauseCmd);
    480        
    481         return err;
    482 }
    483 
    484 int listInstalledPackages(void)
    485 {
    486         cout << "\nThis feature not yet implemented.\n\n";
    487        
    488         return 0;
    489 }
    490 
    491 int printInstallerInfo(void)
    492 {
    493         cout << "\nAE/Mod Installer\n";
    494         cout << "version " << strInstallerVersion << "\n";
    495         cout << "by Gumby & Iritscen\n";
    496         cout << "see http://oni.bungie.org/community/forums for more info\n\n";
    497        
    498         return 0;
    499 }
    500344
    501345vector<ModPackage> getPackages(void)
     
    506350        string filename = "\0";
    507351        string MODINFO_CFG = "Mod_Info.cfg";
    508        
     352
    509353        try
    510354        {
     
    514358                        file.open((dir_itr->path().string() + "/" + MODINFO_CFG).c_str());
    515359                        //cout << filename << "\n";
    516                        
     360
    517361                        if(!file.fail())
    518362                        {
     
    524368                        file.clear();
    525369                }
     370                sort(packages.begin(), packages.end());
    526371        }
    527372        catch (const std::exception & ex)
     
    529374                cout << "Warning, something odd happened!\n";
    530375        }
    531        
     376
    532377        return packages;
    533378}
     
    536381{
    537382        /*
    538          This converts a file to a ModPackage struct.
    539          
    540          A few notes...
    541          "iter" is the current word we are on. I should have named it "token" or something, but I don't have multiple iterators, so its ok.
    542          I refer to (*iter) at the beginning of each if statement block. I could probably store it as a variable, but I'm pretty sure that dereferencing a pointer\iterator isn't much
    543          slower than reading a variable.
    544          */
     383        This converts a file to a ModPackage struct.
     384
     385        A few notes...
     386        "iter" is the current word we are on. I should have named it "token" or something, but I don't have multiple iterators, so its ok.
     387        I refer to (*iter) at the beginning of each if statement block. I could probably store it as a variable, but I'm pretty sure that dereferencing a pointer\iterator isn't much
     388        slower than reading a variable.
     389        */
    545390        ModPackage package;
    546391        string line;
     
    567412                        iter = tokens.begin();                          //what word we are on, starts at first word
    568413                        /*
    569                          if (!AEInstallVersion.compare(*iter))
    570                          If mod is too old, skip this mod.
    571                          */
     414                        if (!AEInstallVersion.compare(*iter))
     415                        If mod is too old, skip this mod.
     416                        */
    572417                        /*else*/if (!NameOfMod.compare(*iter))  {       //if it contains the name
    573418                                for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {     //interates through the words, ends if it reaches the end of the line or a "//" comment
     
    578423                                        }
    579424                                }
    580                                
     425
    581426                        }
    582427                        else if (!ModString.compare(*iter)) {
     
    590435                                if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasOnis = 1; //Gotta love c++'s lack of a standard case-insensitive
    591436                                else if (!HasBSL.compare(*iter)) { // string comparer...I know my implementation here sucks. I need to change it to check each character one by one. At the moment,
    592                                 iter++; iter++;}  // using "YFR" would probably set it off. :<
    593                                
     437                                        iter++; iter++;}  // using "YFR" would probably set it off. :<
     438
    594439                                if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasBSL = 1;
    595440                        }
     
    638483                        }
    639484                }
    640                
     485
    641486        }
    642487        package.doOutput();
     
    646491void recompileAll(vector<string> installedMods)
    647492{
    648 #ifdef WIN32
    649         RedirectIOToConsole();
    650         HWND hWnd = GetConsoleWindow();
    651         ShowWindow( hWnd, SW_HIDE );
    652 #endif
     493        using namespace boost::gregorian;
     494        using namespace boost::posix_time;
     495       
    653496        setStatusArea("Importing levels...");
    654497        //setStatusArea("Recompiling Data...");
     
    660503        string datString;
    661504        std::stringstream out;
    662        
    663        
     505
     506        ptime start_time(second_clock::local_time());
    664507        clearOldDats();
    665         remove("Onisplit.log");
     508        remove("Install.log");
     509        ofstream logfile("Install.log");
     510        logfile << "Mod Installation started " << to_simple_string(start_time) << endl;
     511        logfile.close();
    666512        if(splitInstances == SPLIT){
    667513                recursive_directory_iterator end_iter;
    668                
     514
    669515                for ( recursive_directory_iterator dir_itr( vanilla_dir );
    670                          dir_itr != end_iter;
    671                          ++dir_itr )
     516                        dir_itr != end_iter;
     517                        ++dir_itr )
    672518                {
    673519                        try{
     
    678524                        }
    679525                        catch(exception ex) {
    680                                
     526
    681527                        }
    682528                }
    683                
     529
    684530                //recursive_directory_iterator end_iter;
    685                
    686                
     531
     532
    687533                out << numberOfDats;
    688534                datString = out.str();
    689535                try {
    690536                        for ( recursive_directory_iterator dir_itr( vanilla_dir );
    691                                  dir_itr != end_iter;
    692                                  ++dir_itr )
     537                                dir_itr != end_iter;
     538                                ++dir_itr )
    693539                        {
    694540                                try
     
    700546                                                        if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename()  ))
    701547                                                                importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename();
    702                                                        
     548
    703549                                                        //else cout << " packages/VanillaDats/" + installedMods[i] + "/oni/";
    704550                                                }
    705                                                 importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Onisplit.log";
    706                                                
    707                                                 sprintf(statusString,"%d/%i\0",j,numberOfDats);
     551                                                importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
     552
     553                                                printf(statusString,"%d/%i\0",j,numberOfDats); 
    708554                                                setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
    709555                                                setStatusArea("Importing " +  dir_itr->path().filename() + " " + statusString);
    710                                                
     556
    711557                                                system(importCommand.c_str());
    712558                                                //Sleep(1000);
    713559                                                //cout << importCommand << "\n";
    714560                                                j++;
    715                                                
     561
    716562                                        }
    717563                                }
    718564                                catch ( const std::exception & ex )
    719565                                {
    720                                         cout << "Warning, exception " << ex.what() << "!";
     566                                       
     567        remove("Install.log");
     568        ofstream logfile("Install.log");
     569       
     570       
     571                                        logfile << "Warning, exception " << ex.what() << "!";
     572                                        setStatusArea("Warning, exception " + (string)ex.what() + "!");
     573logfile.close();       
    721574                                }
    722575                        }
    723                        
     576
    724577                }
    725578                catch( const std::exception & ex ) {
    726                         cout << "Warning, exception " << ex.what() << "!\n"
    727                         << "You probably need to re-globalize.";
    728                         //create_directory( "./packages/VanillaDats" );
     579       
     580        remove("Install.log");
     581        ofstream logfile("Install.log");
     582       
     583       
     584                                        logfile << "Warning, exception " << ex.what() << "!";
     585                                        setStatusArea("Warning, exception " + (string)ex.what() + "!");
     586logfile.close();
    729587                }
    730                
     588
    731589        }
    732590        else if(splitInstances == NOT_SPLIT){
    733591                directory_iterator end_iter;
    734                
     592
    735593                for ( directory_iterator dir_itr( vanilla_dir );
    736                          dir_itr != end_iter;
    737                          ++dir_itr )
     594                        dir_itr != end_iter;
     595                        ++dir_itr )
    738596                {
    739                        
     597
    740598                        if ( is_directory( dir_itr->status() ) )
    741599                        {
    742600                                numberOfDats++;
    743601                        }
    744                        
    745                        
     602
     603
    746604                }
    747                
     605
    748606                out << numberOfDats;
    749607                datString = out.str();
    750                
     608
    751609                for ( directory_iterator dir_itr( vanilla_dir );
    752                          dir_itr != end_iter;
    753                          ++dir_itr )
     610                        dir_itr != end_iter;
     611                        ++dir_itr )
    754612                {
    755613                        try
     
    758616                                {
    759617                                        importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " " + "../GameDataFolder/" + dir_itr->path().filename()
    760                                         + ".dat";
     618                                                + ".dat";
    761619                                        for (int i = 0; i < installedMods.size(); ++i) {
    762620                                                if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename()  ))
    763621                                                        importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename();
    764622                                        }
    765                                         importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat";
    766                                        
    767                                         sprintf(statusString,"%d/%i\0",j,numberOfDats);
     623                                        importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
     624
     625                                        printf(statusString,"%d/%i\0",j,numberOfDats); 
    768626                                        setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
    769627                                        setStatusArea("Importing " +  dir_itr->path().filename() + " " + statusString);
    770                                        
     628
    771629                                        system(importCommand.c_str());
    772                                        
     630
    773631                                        j++;
    774632                                }
     
    776634                        catch ( const std::exception & ex )
    777635                        {
    778                                 cout << "Warning, something odd happened!\n";
    779                         }
    780                 }
    781         }
     636       
     637        remove("Install.log");
     638        ofstream logfile("Install.log");
     639       
     640       
     641                                        logfile << "Warning, exception " << ex.what() << "!";
     642                                        setStatusArea("Warning, exception " + (string)ex.what() + "!");
     643logfile.close();
     644                        }}
     645        }
     646        logfile << "Writing config file";
    782647        writeInstalledMods(installedMods);
    783648        setProgressBar(1000);
    784         setStatusArea("Done!");
     649        setStatusArea("Done! You can now play Oni.");
     650       
     651                ptime end_time(second_clock::local_time());
     652                time_period total_time (start_time, end_time);
     653                       
     654       
     655                ofstream logfile2("Install.log", ios::app | ios::ate);
     656                string outstring = (string)"\n\nGlobalization ended " + to_simple_string(end_time) + "\nThe process took ";// + (string)total_time.length();
     657               
     658                logfile2 << "\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
     659               
     660                //logfile2.write(outstring.c_str(), outstring.length());
     661logfile2.close();
     662
     663                //total_time.length().hours();
     664       
    785665        Sleep(1000);
    786666        setProgressBar(0);
     
    789669void writeInstalledMods(vector<string> installedMods)
    790670{
    791        
     671
    792672        if ( exists( strInstallCfg ) )
    793673        {
    794674                remove( strInstallCfg );
    795675        }
    796        
     676
    797677        ofstream file(strInstallCfg.c_str());
    798        
     678
    799679        vector<string>list = installedMods;
    800680        vector<string>::iterator begin_iter = list.begin();
    801681        vector<string>::iterator end_iter = list.end();
    802        
     682
    803683        sort( list.begin(), list.end() );
    804        
     684
    805685        for( ; begin_iter != end_iter; ++begin_iter) {
    806686                file << *begin_iter << " ";
    807687        }
    808        
     688
    809689        file.close();
    810690        file.clear();
    811        
     691
    812692}
    813693
     
    816696        //system(strPauseCmd);
    817697        vector<string> returnval;
    818        
     698
    819699        string line;
    820700        fstream file;
    821        
     701
    822702        if (exists( Cfg ))
    823703        {
     
    830710        }
    831711        else cout << "fail";
    832        
     712
    833713        return returnval;
    834714}
     
    841721        // Find first "non-delimiter".
    842722        string::size_type pos     = str.find_first_of(delimiters, lastPos);
    843        
     723
    844724        while (string::npos != pos || string::npos != lastPos)
    845725        {
     
    856736        directory_iterator end_iter_gdf;
    857737        for ( directory_iterator dir_itr_gdf( "../GameDataFolder" );
    858                  dir_itr_gdf != end_iter_gdf;
    859                  ++dir_itr_gdf )
     738                dir_itr_gdf != end_iter_gdf;
     739                ++dir_itr_gdf )
    860740        {
    861741                //cout << dir_itr_gdf->path().extension() << "\n";
     
    863743                        remove( dir_itr_gdf->path() );
    864744                }
    865                
    866         }
    867        
     745
     746        }
     747
    868748}
    869749
     
    912792
    913793/*
    914  * MainWindow type definition
    915  */
     794* MainWindow type definition
     795*/
    916796
    917797IMPLEMENT_CLASS( MainWindow, wxFrame )
     
    919799
    920800/*
    921  * MainWindow event table definition
    922  */
     801* MainWindow event table definition
     802*/
    923803
    924804BEGIN_EVENT_TABLE( MainWindow, wxFrame )
    925805
    926806////@begin MainWindow event table entries
    927     EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick )
    928 
    929     EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick )
    930 
    931     EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected )
    932     EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled )
    933 
    934     EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate )
    935 
    936     EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick )
    937 
    938     EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected )
    939 
    940     EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected )
    941 
    942     EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected )
    943 
    944     EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected )
    945 
    946     EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick )
    947 
    948     EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick )
    949 
    950     EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick )
    951 
    952     EVT_MENU( wxID_EXIT, MainWindow::OnExitClick )
    953 
    954     EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick )
    955 
    956     EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick )
     807EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick )
     808
     809EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick )
     810
     811EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected )
     812EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled )
     813
     814EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate )
     815
     816EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick )
     817
     818EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected )
     819
     820EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected )
     821
     822EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected )
     823
     824EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected )
     825
     826EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick )
     827
     828EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick )
     829
     830EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick )
     831
     832EVT_MENU( wxID_EXIT, MainWindow::OnExitClick )
     833
     834EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick )
     835
     836EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick )
    957837
    958838////@end MainWindow event table entries
     
    962842
    963843/*
    964  * MainWindow constructors
    965  */
     844* MainWindow constructors
     845*/
    966846
    967847MainWindow::MainWindow()
    968848{
    969     Init();
     849        Init();
    970850}
    971851
    972852MainWindow::MainWindow( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
    973853{
    974     Init();
    975     Create( parent, id, caption, pos, size, style );
    976 }
    977 
    978 
    979 /*
    980  * MainWindow creator
    981  */
     854        Init();
     855        Create( parent, id, caption, pos, size, style );
     856}
     857
     858
     859/*
     860* MainWindow creator
     861*/
    982862
    983863bool MainWindow::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
    984864{
    985 ////@begin MainWindow creation
    986     wxFrame::Create( parent, id, caption, pos, size, style );
    987 
    988     CreateControls();
    989     SetIcon(GetIconResource(wxT("oni_special.ico")));
    990     Centre();
    991 ////@end MainWindow creation
    992     return true;
    993 }
    994 
    995 
    996 /*
    997  * MainWindow destructor
    998  */
     865        ////@begin MainWindow creation
     866        wxFrame::Create( parent, id, caption, pos, size, style );
     867
     868        CreateControls();
     869        SetIcon(GetIconResource(wxT("oni_special.ico")));
     870        Centre();
     871       
     872       
     873        ////@end MainWindow creation
     874        return true;
     875}
     876
     877
     878/*
     879* MainWindow destructor
     880*/
    999881
    1000882MainWindow::~MainWindow()
    1001883{
    1002 ////@begin MainWindow destruction
    1003 ////@end MainWindow destruction
    1004 }
    1005 
    1006 
    1007 /*
    1008  * Member initialisation
    1009  */
     884        ////@begin MainWindow destruction
     885        ////@end MainWindow destruction
     886}
     887
     888
     889/*
     890* Member initialisation
     891*/
    1010892
    1011893void MainWindow::Init()
    1012894{
    1013 ////@begin MainWindow member initialisation
    1014     MainSplitter = NULL;
    1015     SelectAll = NULL;
    1016     RefreshButton = NULL;
    1017     Mods_CheckboxList = NULL;
    1018     titleText = NULL;
    1019     creatorText = NULL;
    1020     descriptionText = NULL;
    1021     StatusArea = NULL;
    1022     ProgressBar = NULL;
    1023     InstallButton = NULL;
    1024     OptionsPanel = NULL;
    1025     SepRadio = NULL;
    1026     NoSepRadio = NULL;
    1027     SeparatedRadio = NULL;
    1028     CompleteRadio = NULL;
    1029     ReglobalizeButton = NULL;
    1030 ////@end MainWindow member initialisation
    1031 
    1032 }
    1033 
    1034 
    1035 /*
    1036  * Control creation for MainWindow
    1037  */
     895        ////@begin MainWindow member initialisation
     896        MainSplitter = NULL;
     897        SelectAll = NULL;
     898        RefreshButton = NULL;
     899        Mods_CheckboxList = NULL;
     900        titleText = NULL;
     901        creatorText = NULL;
     902        descriptionText = NULL;
     903        StatusArea = NULL;
     904        ProgressBar = NULL;
     905        InstallButton = NULL;
     906        OptionsPanel = NULL;
     907        SepRadio = NULL;
     908        NoSepRadio = NULL;
     909        SeparatedRadio = NULL;
     910        CompleteRadio = NULL;
     911        ReglobalizeButton = NULL;
     912        ////@end MainWindow member initialisation
     913
     914}
     915
     916
     917/*
     918* Control creation for MainWindow
     919*/
    1038920wxStatusBar **TheStatusBar;
    1039921wxButton* TheInstallButton;
     
    1041923void MainWindow::CreateControls()
    1042924{   
    1043 ////@begin MainWindow content construction
    1044     // Generated by DialogBlocks, 31/05/2009 19:03:55 (unregistered)
    1045 
    1046     MainWindow* itemFrame1 = this;
    1047 
    1048     wxMenuBar* menuBar = new wxMenuBar;
    1049     wxMenu* itemMenu37 = new wxMenu;
    1050     {
    1051         wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_LOAD, _("&Load Configuration..."), wxEmptyString, wxITEM_NORMAL);
    1052         wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("fileopen.xpm")));
    1053         menuItem->SetBitmap(bitmap);
    1054         itemMenu37->Append(menuItem);
    1055     }
    1056     {
    1057         wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_SAVE, _("&Save Configuration..."), wxEmptyString, wxITEM_NORMAL);
    1058         wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("filesaveas.xpm")));
    1059         menuItem->SetBitmap(bitmap);
    1060         itemMenu37->Append(menuItem);
    1061     }
    1062     itemMenu37->AppendSeparator();
    1063     {
    1064         wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_EXIT, _("Exit"), wxEmptyString, wxITEM_NORMAL);
    1065         wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("quit.xpm")));
    1066         menuItem->SetBitmap(bitmap);
    1067         itemMenu37->Append(menuItem);
    1068     }
    1069     menuBar->Append(itemMenu37, _("&File"));
    1070     wxMenu* itemMenu42 = new wxMenu;
    1071     itemMenu42->Append(wxID_OPTIONS, _("Show Advanced Options..."), wxEmptyString, wxITEM_CHECK);
    1072     menuBar->Append(itemMenu42, _("Options"));
    1073     wxMenu* itemMenu44 = new wxMenu;
    1074     itemMenu44->Append(wxID_HELP, _("Help"), wxEmptyString, wxITEM_NORMAL);
    1075     itemMenu44->Append(wxID_ABOUT, _("About"), wxEmptyString, wxITEM_NORMAL);
    1076     menuBar->Append(itemMenu44, _("Help"));
    1077     itemFrame1->SetMenuBar(menuBar);
    1078 
    1079     wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
    1080     itemFrame1->SetSizer(itemBoxSizer2);
    1081 
    1082     MainSplitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_LIVE_UPDATE|wxNO_BORDER );
    1083     MainSplitter->SetMinimumPaneSize(150);
    1084     MainSplitter->SetName(_T("MainSplitter"));
    1085 
    1086     wxPanel* itemPanel4 = new wxPanel( MainSplitter, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
    1087     wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
    1088     itemPanel4->SetSizer(itemBoxSizer5);
    1089 
    1090     wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
    1091     itemBoxSizer5->Add(itemBoxSizer6, 0, wxGROW|wxALL, 0);
    1092     SelectAll = new wxCheckBox( itemPanel4, SelectAll_Checkbox, _("Select All/None"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
    1093     SelectAll->SetValue(false);
    1094     SelectAll->SetName(_T("SelectAll_Checkbox"));
    1095     itemBoxSizer6->Add(SelectAll, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
    1096 
    1097     RefreshButton = new wxBitmapButton( itemPanel4, Refresh_Button, itemFrame1->GetBitmapResource(wxT("redo.xpm")), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
    1098     RefreshButton->SetName(_T("RefreshButton"));
    1099     itemBoxSizer6->Add(RefreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
    1100 
    1101     wxArrayString Mods_CheckboxListStrings;
    1102     Mods_CheckboxList = new wxCheckListBox( itemPanel4, Mods_CheckboxList1, wxDefaultPosition, wxDefaultSize, Mods_CheckboxListStrings, wxLB_HSCROLL );
    1103     Mods_CheckboxList->SetName(_T("Mods_CheckboxList"));
    1104     itemBoxSizer5->Add(Mods_CheckboxList, 1, wxGROW|wxALL, 0);
    1105 
    1106     wxPanel* itemPanel10 = new wxPanel( MainSplitter, DescriptionHolder_Panel, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
    1107     itemPanel10->SetName(_T("DescriptionHolder_Panel"));
    1108     wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
    1109     itemPanel10->SetSizer(itemBoxSizer11);
    1110 
    1111     wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
    1112     itemBoxSizer11->Add(itemBoxSizer12, 0, wxGROW|wxALL, 0);
    1113     wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
    1114     itemBoxSizer12->Add(itemBoxSizer13, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
    1115     titleText = new wxTextCtrl( itemPanel10, Title_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
    1116     titleText->SetName(_T("Title_Text"));
    1117     titleText->SetBackgroundColour(wxColour(240, 240, 240));
    1118     itemBoxSizer13->Add(titleText, 1, wxGROW|wxLEFT, 5);
    1119 
    1120     wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
    1121     itemBoxSizer12->Add(itemBoxSizer15, 1, wxGROW|wxALL, 0);
    1122     creatorText = new wxTextCtrl( itemPanel10, Author_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_RIGHT );
    1123     creatorText->SetName(_T("Author_Text"));
    1124     creatorText->SetBackgroundColour(wxColour(240, 240, 240));
    1125     itemBoxSizer15->Add(creatorText, 1, wxGROW|wxRIGHT, 5);
    1126 
    1127     wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
    1128     itemStaticLine17->Show(false);
    1129     itemBoxSizer11->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
    1130 
    1131     descriptionText = new wxTextCtrl( itemPanel10, Description_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_AUTO_URL );
    1132     descriptionText->SetName(_T("DescriptionName"));
    1133     descriptionText->SetBackgroundColour(wxColour(240, 240, 240));
    1134     itemBoxSizer11->Add(descriptionText, 1, wxGROW|wxLEFT|wxRIGHT, 5);
    1135 
    1136     MainSplitter->SplitVertically(itemPanel4, itemPanel10, 150);
    1137     itemBoxSizer2->Add(MainSplitter, 1, wxGROW|wxALL, 0);
    1138 
    1139     StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
    1140     StatusArea->SetName(_T("StatusArea"));
    1141     StatusArea->SetFieldsCount(1);
    1142     StatusArea->SetStatusText(_("Status Area"), 0);
    1143     itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
    1144 
    1145     wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
    1146     itemBoxSizer2->Add(itemBoxSizer20, 0, wxGROW|wxALL, 0);
    1147 
    1148     ProgressBar = new wxGauge( itemFrame1, ProgressBar_Gauge, 1000, wxDefaultPosition, wxSize(-1, 30), wxGA_SMOOTH );
    1149     ProgressBar->SetValue(0);
    1150     itemBoxSizer20->Add(ProgressBar, 1, wxGROW|wxALL, 0);
    1151 
    1152     InstallButton = new wxButton( itemFrame1, Install_Button, _("Install!"), wxDefaultPosition, wxSize(-1, 30), 0 );
    1153     itemBoxSizer20->Add(InstallButton, 0, wxGROW|wxALL, 0);
    1154 
    1155     wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
    1156     itemBoxSizer2->Add(itemBoxSizer23, 0, wxGROW|wxALL, 0);
    1157 
    1158     OptionsPanel = new wxPanel( itemFrame1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
    1159     itemBoxSizer2->Add(OptionsPanel, 0, wxGROW, 0);
    1160 
    1161     wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
    1162     OptionsPanel->SetSizer(itemBoxSizer25);
    1163 
    1164     wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
    1165     itemBoxSizer25->Add(itemBoxSizer26, 0, wxGROW|wxALL, 5);
    1166 
    1167     SepRadio = new wxRadioButton( OptionsPanel, Sep_RadioButton, _("Sep"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
    1168     SepRadio->SetValue(false);
    1169     if (MainWindow::ShowToolTips())
    1170         SepRadio->SetToolTip(_("For PC Demo and Mac"));
    1171     itemBoxSizer26->Add(SepRadio, 0, wxALIGN_LEFT|wxALL, 5);
    1172 
    1173     NoSepRadio = new wxRadioButton( OptionsPanel, NoSep_RadioButton, _("NoSep"), wxDefaultPosition, wxDefaultSize, 0 );
    1174     NoSepRadio->SetValue(false);
    1175     if (MainWindow::ShowToolTips())
    1176         NoSepRadio->SetToolTip(_("For PC Retail"));
    1177     itemBoxSizer26->Add(NoSepRadio, 0, wxALIGN_LEFT|wxALL, 5);
    1178 
    1179     wxStaticLine* itemStaticLine29 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
    1180     itemBoxSizer25->Add(itemStaticLine29, 0, wxGROW|wxALL, 5);
    1181 
    1182     wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
    1183     itemBoxSizer25->Add(itemBoxSizer30, 0, wxGROW|wxALL, 5);
    1184 
    1185     SeparatedRadio = new wxRadioButton( OptionsPanel, Separated_RadioButton, _("Separated Level0"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
    1186     SeparatedRadio->SetValue(false);
    1187     SeparatedRadio->SetName(_T("Separated_RadioButton"));
    1188     itemBoxSizer30->Add(SeparatedRadio, 0, wxALIGN_LEFT|wxALL, 5);
    1189 
    1190     CompleteRadio = new wxRadioButton( OptionsPanel, Complete_RadioButton, _("Complete Level0"), wxDefaultPosition, wxDefaultSize, 0 );
    1191     CompleteRadio->SetValue(false);
    1192     CompleteRadio->SetName(_T("Complete_RadioButton"));
    1193     itemBoxSizer30->Add(CompleteRadio, 0, wxALIGN_LEFT|wxALL, 5);
    1194 
    1195     wxStaticLine* itemStaticLine33 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
    1196     itemBoxSizer25->Add(itemStaticLine33, 0, wxGROW|wxALL, 5);
    1197 
    1198     wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
    1199     itemBoxSizer25->Add(itemBoxSizer34, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
    1200 
    1201     ReglobalizeButton = new wxButton( OptionsPanel, ReGlobalize_Button, _("Reglobalize"), wxDefaultPosition, wxDefaultSize, 0 );
    1202     ReglobalizeButton->SetName(_T("Reglobalize_Button"));
    1203     itemBoxSizer34->Add(ReglobalizeButton, 0, wxGROW|wxALL, 5);
    1204 
    1205     // Connect events and objects
    1206     Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
    1207 ////@end MainWindow content construction
    1208        
     925        ////@begin MainWindow content construction
     926        // Generated by DialogBlocks, 31/05/2009 19:03:55 (unregistered)
     927
     928        MainWindow* itemFrame1 = this;
     929
     930        wxMenuBar* menuBar = new wxMenuBar;
     931        wxMenu* itemMenu37 = new wxMenu;
     932        {
     933                wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_LOAD, _("&Load Configuration..."), wxEmptyString, wxITEM_NORMAL);
     934                wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("fileopen.xpm")));
     935                menuItem->SetBitmap(bitmap);
     936                itemMenu37->Append(menuItem);
     937        }
     938        {
     939                wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_SAVE, _("&Save Configuration..."), wxEmptyString, wxITEM_NORMAL);
     940                wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("filesaveas.xpm")));
     941                menuItem->SetBitmap(bitmap);
     942                itemMenu37->Append(menuItem);
     943        }
     944        itemMenu37->AppendSeparator();
     945        {
     946                wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_EXIT, _("Exit"), wxEmptyString, wxITEM_NORMAL);
     947                wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("quit.xpm")));
     948                menuItem->SetBitmap(bitmap);
     949                itemMenu37->Append(menuItem);
     950        }
     951        menuBar->Append(itemMenu37, _("&File"));
     952        wxMenu* itemMenu42 = new wxMenu;
     953        itemMenu42->Append(wxID_OPTIONS, _("Show Advanced Options..."), wxEmptyString, wxITEM_CHECK);
     954        menuBar->Append(itemMenu42, _("Options"));
     955        wxMenu* itemMenu44 = new wxMenu;
     956        itemMenu44->Append(wxID_HELP, _("Help"), wxEmptyString, wxITEM_NORMAL);
     957        itemMenu44->Append(wxID_ABOUT, _("About"), wxEmptyString, wxITEM_NORMAL);
     958        menuBar->Append(itemMenu44, _("Help"));
     959        itemFrame1->SetMenuBar(menuBar);
     960
     961        wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
     962        itemFrame1->SetSizer(itemBoxSizer2);
     963
     964        MainSplitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_LIVE_UPDATE|wxNO_BORDER );
     965        MainSplitter->SetMinimumPaneSize(150);
     966        MainSplitter->SetName(_T("MainSplitter"));
     967
     968        wxPanel* itemPanel4 = new wxPanel( MainSplitter, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
     969        wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
     970        itemPanel4->SetSizer(itemBoxSizer5);
     971
     972        wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
     973        itemBoxSizer5->Add(itemBoxSizer6, 0, wxGROW|wxALL, 0);
     974        SelectAll = new wxCheckBox( itemPanel4, SelectAll_Checkbox, _("Select All/None"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
     975        SelectAll->SetValue(false);
     976        SelectAll->SetName(_T("SelectAll_Checkbox"));
     977        itemBoxSizer6->Add(SelectAll, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
     978
     979        RefreshButton = new wxBitmapButton( itemPanel4, Refresh_Button, itemFrame1->GetBitmapResource(wxT("redo.xpm")), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
     980        RefreshButton->SetName(_T("RefreshButton"));
     981        itemBoxSizer6->Add(RefreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
     982
     983        wxArrayString Mods_CheckboxListStrings;
     984        Mods_CheckboxList = new wxCheckListBox( itemPanel4, Mods_CheckboxList1, wxDefaultPosition, wxDefaultSize, Mods_CheckboxListStrings, wxLB_HSCROLL );
     985        Mods_CheckboxList->SetName(_T("Mods_CheckboxList"));
     986        itemBoxSizer5->Add(Mods_CheckboxList, 1, wxGROW|wxALL, 0);
     987
     988        wxPanel* itemPanel10 = new wxPanel( MainSplitter, DescriptionHolder_Panel, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
     989        itemPanel10->SetName(_T("DescriptionHolder_Panel"));
     990        wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
     991        itemPanel10->SetSizer(itemBoxSizer11);
     992
     993        wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
     994        itemBoxSizer11->Add(itemBoxSizer12, 0, wxGROW|wxALL, 0);
     995        wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
     996        itemBoxSizer12->Add(itemBoxSizer13, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
     997        titleText = new wxTextCtrl( itemPanel10, Title_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
     998        titleText->SetName(_T("Title_Text"));
     999        titleText->SetBackgroundColour(wxColour(240, 240, 240));
     1000        itemBoxSizer13->Add(titleText, 1, wxGROW|wxLEFT, 5);
     1001
     1002        wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
     1003        itemBoxSizer12->Add(itemBoxSizer15, 1, wxGROW|wxALL, 0);
     1004        creatorText = new wxTextCtrl( itemPanel10, Author_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_RIGHT );
     1005        creatorText->SetName(_T("Author_Text"));
     1006        creatorText->SetBackgroundColour(wxColour(240, 240, 240));
     1007        itemBoxSizer15->Add(creatorText, 1, wxGROW|wxRIGHT, 5);
     1008
     1009        wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
     1010        itemStaticLine17->Show(false);
     1011        itemBoxSizer11->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
     1012
     1013        descriptionText = new wxTextCtrl( itemPanel10, Description_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_AUTO_URL );
     1014        descriptionText->SetName(_T("DescriptionName"));
     1015        descriptionText->SetBackgroundColour(wxColour(240, 240, 240));
     1016        itemBoxSizer11->Add(descriptionText, 1, wxGROW|wxLEFT|wxRIGHT, 5);
     1017
     1018        MainSplitter->SplitVertically(itemPanel4, itemPanel10, 150);
     1019        itemBoxSizer2->Add(MainSplitter, 1, wxGROW|wxALL, 0);
     1020
     1021        StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
     1022        StatusArea->SetName(_T("StatusArea"));
     1023        StatusArea->SetFieldsCount(1);
     1024        StatusArea->SetStatusText(_("Status Area"), 0);
     1025        itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
     1026
     1027        wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
     1028        itemBoxSizer2->Add(itemBoxSizer20, 0, wxGROW|wxALL, 0);
     1029
     1030        ProgressBar = new wxGauge( itemFrame1, ProgressBar_Gauge, 1000, wxDefaultPosition, wxSize(-1, 30), wxGA_SMOOTH );
     1031        ProgressBar->SetValue(0);
     1032        itemBoxSizer20->Add(ProgressBar, 1, wxGROW|wxALL, 0);
     1033
     1034        InstallButton = new wxButton( itemFrame1, Install_Button, _("Install!"), wxDefaultPosition, wxSize(-1, 30), 0 );
     1035        itemBoxSizer20->Add(InstallButton, 0, wxGROW|wxALL, 0);
     1036
     1037        wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
     1038        itemBoxSizer2->Add(itemBoxSizer23, 0, wxGROW|wxALL, 0);
     1039
     1040        OptionsPanel = new wxPanel( itemFrame1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
     1041        itemBoxSizer2->Add(OptionsPanel, 0, wxGROW, 0);
     1042
     1043        wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
     1044        OptionsPanel->SetSizer(itemBoxSizer25);
     1045
     1046        wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
     1047        itemBoxSizer25->Add(itemBoxSizer26, 0, wxGROW|wxALL, 5);
     1048
     1049        SepRadio = new wxRadioButton( OptionsPanel, Sep_RadioButton, _("Sep"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
     1050        SepRadio->SetValue(false);
     1051        if (MainWindow::ShowToolTips())
     1052                SepRadio->SetToolTip(_("For PC Demo and Mac"));
     1053        itemBoxSizer26->Add(SepRadio, 0, wxALIGN_LEFT|wxALL, 5);
     1054
     1055        NoSepRadio = new wxRadioButton( OptionsPanel, NoSep_RadioButton, _("NoSep"), wxDefaultPosition, wxDefaultSize, 0 );
     1056        NoSepRadio->SetValue(false);
     1057        if (MainWindow::ShowToolTips())
     1058                NoSepRadio->SetToolTip(_("For PC Retail"));
     1059        itemBoxSizer26->Add(NoSepRadio, 0, wxALIGN_LEFT|wxALL, 5);
     1060
     1061        wxStaticLine* itemStaticLine29 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
     1062        itemBoxSizer25->Add(itemStaticLine29, 0, wxGROW|wxALL, 5);
     1063
     1064        wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
     1065        itemBoxSizer25->Add(itemBoxSizer30, 0, wxGROW|wxALL, 5);
     1066
     1067        SeparatedRadio = new wxRadioButton( OptionsPanel, Separated_RadioButton, _("Separated Level0"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
     1068        SeparatedRadio->SetValue(false);
     1069        SeparatedRadio->SetName(_T("Separated_RadioButton"));
     1070        itemBoxSizer30->Add(SeparatedRadio, 0, wxALIGN_LEFT|wxALL, 5);
     1071
     1072        CompleteRadio = new wxRadioButton( OptionsPanel, Complete_RadioButton, _("Complete Level0"), wxDefaultPosition, wxDefaultSize, 0 );
     1073        CompleteRadio->SetValue(false);
     1074        CompleteRadio->SetName(_T("Complete_RadioButton"));
     1075        itemBoxSizer30->Add(CompleteRadio, 0, wxALIGN_LEFT|wxALL, 5);
     1076
     1077        wxStaticLine* itemStaticLine33 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
     1078        itemBoxSizer25->Add(itemStaticLine33, 0, wxGROW|wxALL, 5);
     1079
     1080        wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
     1081        itemBoxSizer25->Add(itemBoxSizer34, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
     1082
     1083        ReglobalizeButton = new wxButton( OptionsPanel, ReGlobalize_Button, _("Reglobalize"), wxDefaultPosition, wxDefaultSize, 0 );
     1084        ReglobalizeButton->SetName(_T("Reglobalize_Button"));
     1085        itemBoxSizer34->Add(ReglobalizeButton, 0, wxGROW|wxALL, 5);
     1086
     1087        // Connect events and objects
     1088        Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
     1089        ////@end MainWindow content construction
     1090
    12091091        if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) {
    12101092                static_cast<string>("-import:sep");
     
    12181100        globalPackages = getPackages();
    12191101        globalInstalledMods = getInstallString();
    1220                 for (int i = 0; i < globalPackages.size(); i++) {
    1221                         Mods_CheckboxList->Append(globalPackages[i].name.c_str());
    1222                         if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
    1223         }
    1224                 TheStatusBar = &StatusArea;
    1225                 TheInstallButton = InstallButton;
    1226                 TheProgressBar = ProgressBar;
    1227                 OptionsPanel->Hide();
    1228                 if(splitInstances == SPLIT) SeparatedRadio->SetValue(true);
    1229                 else CompleteRadio->SetValue(true);
    1230                
    1231                
    1232                
    1233                 if(strImportOption == "-import:nosep") NoSepRadio->SetValue(true);
    1234                 else SepRadio->SetValue(true);
    1235 
    1236                         //MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight() );
    1237 }
    1238 
    1239                
    1240 /*
    1241  * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for SelectAll_Checkbox
    1242  */
     1102        for (int i = 0; i < globalPackages.size(); i++) {
     1103                Mods_CheckboxList->Append(globalPackages[i].name.c_str());
     1104                if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
     1105        }
     1106
     1107        TheStatusBar = &StatusArea;
     1108        TheInstallButton = InstallButton;
     1109        TheProgressBar = ProgressBar;
     1110        OptionsPanel->Hide();
     1111        if(splitInstances == SPLIT) SeparatedRadio->SetValue(true);
     1112        else CompleteRadio->SetValue(true);
     1113
     1114
     1115
     1116        if(strImportOption == "-import:nosep") NoSepRadio->SetValue(true);
     1117        else SepRadio->SetValue(true);
     1118       
     1119       
     1120#ifdef WIN32
     1121        RedirectIOToConsole();
     1122        HWND hWnd = GetConsoleWindow();
     1123        ShowWindow( hWnd, SW_HIDE );
     1124#endif
     1125       
     1126                //MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight() );
     1127}
     1128
     1129
     1130/*
     1131* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for SelectAll_Checkbox
     1132*/
    12431133
    12441134void MainWindow::OnSelectAllCheckboxClick( wxCommandEvent& event )
    12451135{
    1246                 switch(SelectAll->Get3StateValue()) {
     1136        switch(SelectAll->Get3StateValue()) {
    12471137        case wxCHK_UNCHECKED:
    12481138                for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
     
    12591149
    12601150        }
    1261        
    1262 }
    1263 
    1264 
    1265 /*
    1266  * wxEVT_CREATE event handler for Mods_CheckboxList
    1267  */
     1151
     1152}
     1153
     1154
     1155/*
     1156* wxEVT_CREATE event handler for Mods_CheckboxList
     1157*/
    12681158
    12691159void MainWindow::ModList_OnCreate( wxWindowCreateEvent& event )
     
    12751165
    12761166/*
    1277  * Should we show tooltips?
    1278  */
     1167* Should we show tooltips?
     1168*/
    12791169
    12801170bool MainWindow::ShowToolTips()
    12811171{
    1282     return true;
    1283 }
    1284 
    1285 /*
    1286  * Get bitmap resources
    1287  */
     1172        return true;
     1173}
     1174
     1175/*
     1176* Get bitmap resources
     1177*/
    12881178
    12891179wxBitmap MainWindow::GetBitmapResource( const wxString& name )
    12901180{
    1291     // Bitmap retrieval
    1292 ////@begin MainWindow bitmap retrieval
    1293     wxUnusedVar(name);
    1294     if (name == _T("redo.xpm"))
    1295     {
    1296         wxBitmap bitmap(redo_xpm);
    1297         return bitmap;
    1298     }
    1299     else if (name == _T("fileopen.xpm"))
    1300     {
    1301         wxBitmap bitmap( fileopen_xpm);
    1302         return bitmap;
    1303     }
    1304     else if (name == _T("filesaveas.xpm"))
    1305     {
    1306         wxBitmap bitmap( filesaveas_xpm);
    1307         return bitmap;
    1308     }
    1309     else if (name == _T("quit.xpm"))
    1310     {
    1311         wxBitmap bitmap( quit_xpm);
    1312         return bitmap;
    1313     }
    1314     return wxNullBitmap;
    1315 ////@end MainWindow bitmap retrieval
    1316 }
    1317 
    1318 /*
    1319  * Get icon resources
    1320  */
     1181        // Bitmap retrieval
     1182        ////@begin MainWindow bitmap retrieval
     1183        wxUnusedVar(name);
     1184        if (name == _T("redo.xpm"))
     1185        {
     1186                wxBitmap bitmap(redo_xpm);
     1187                return bitmap;
     1188        }
     1189        else if (name == _T("fileopen.xpm"))
     1190        {
     1191                wxBitmap bitmap( fileopen_xpm);
     1192                return bitmap;
     1193        }
     1194        else if (name == _T("filesaveas.xpm"))
     1195        {
     1196                wxBitmap bitmap( filesaveas_xpm);
     1197                return bitmap;
     1198        }
     1199        else if (name == _T("quit.xpm"))
     1200        {
     1201                wxBitmap bitmap( quit_xpm);
     1202                return bitmap;
     1203        }
     1204        return wxNullBitmap;
     1205        ////@end MainWindow bitmap retrieval
     1206}
     1207
     1208/*
     1209* Get icon resources
     1210*/
    13211211
    13221212wxIcon MainWindow::GetIconResource( const wxString& name )
    13231213{
    1324     // Icon retrieval
    1325 ////@begin MainWindow icon retrieval
    1326     wxUnusedVar(name);
    1327     if (name == _T("oni_special.ico"))
    1328     {
    1329         wxIcon icon(_T("oni_special.ico"), wxBITMAP_TYPE_ICO);
    1330         return icon;
    1331     }
    1332     return wxNullIcon;
    1333 ////@end MainWindow icon retrieval
    1334 }
    1335 
    1336 
    1337 /*
    1338  * wxEVT_COMMAND_LISTBOX_SELECTED event handler for Mods_CheckboxList1
    1339  */
     1214
     1215        // Icon retrieval
     1216        ////@begin MainWindow icon retrieval
     1217        wxUnusedVar(name);
     1218        if (name == _T("oni_special.ico"))
     1219        {
     1220        //      wxIcon icon(_T("oni_special.ico"), wxBITMAP_TYPE_ICO);
     1221        //      return icon;
     1222        }
     1223        return wxNullIcon;
     1224        ////@end MainWindow icon retrieval
     1225}
     1226
     1227
     1228/*
     1229* wxEVT_COMMAND_LISTBOX_SELECTED event handler for Mods_CheckboxList1
     1230*/
    13401231
    13411232void MainWindow::OnModsCheckboxList1Selected( wxCommandEvent& event )
     
    13511242
    13521243/*
    1353  * wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1
    1354  */
     1244* wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1
     1245*/
    13551246
    13561247void MainWindow::OnModsCheckboxList1Toggled( wxCommandEvent& event )
     
    13581249        SelectAll->Set3StateValue(wxCHK_UNDETERMINED);
    13591250        if(event.GetInt()) {
    1360         /*
     1251                /*
    13611252                switch(SelectAll->Get3StateValue()) {
    1362         case wxCHK_UNCHECKED:
     1253                case wxCHK_UNCHECKED:
    13631254                break;
    1364         case wxCHK_CHECKED:
     1255                case wxCHK_CHECKED:
    13651256                break;
    1366         case wxCHK_UNDETERMINED :
     1257                case wxCHK_UNDETERMINED :
    13671258                break;
    1368         }
    1369         */
    1370         }
    1371 }
    1372 
    1373 
    1374 /*
    1375  * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS
    1376  */
     1259                }
     1260                */
     1261        }
     1262}
     1263
     1264
     1265/*
     1266* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS
     1267*/
    13771268
    13781269void MainWindow::OnOptionsClick( wxCommandEvent& event )
    13791270{
    1380        
     1271
     1272
     1273       
     1274
    13811275        if (!event.GetInt() ) {
    13821276                OptionsPanel->Hide();
    13831277                MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight());}
    13841278        else {
     1279                //Uncomment this when we release, it gets annoying if you are testing globalization a lot ;)
     1280                //wxMessageDialog* YesNoDialog = new wxMessageDialog(this,                      "WARNING: These options are for advanced users only, use with caution.", "AE Installer Alert",  wxOK | wxICON_EXCLAMATION       , wxDefaultPosition);
     1281                //YesNoDialog->ShowModal();
    13851282                OptionsPanel->Show();
    13861283                MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()+OptionsPanel->GetRect().GetHeight());
     
    13901287
    13911288/*
    1392  * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT
    1393  */
     1289* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT
     1290*/
    13941291
    13951292void MainWindow::OnExitClick( wxCommandEvent& event )
    13961293{
    1397 exit(0);
    1398 }
    1399 
    1400 
    1401 /*
    1402  * wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button
    1403  */
     1294        exit(0);
     1295}
     1296
     1297
     1298/*
     1299* wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button
     1300*/
    14041301
    14051302
    14061303struct recompile
    14071304{
    1408     recompile(vector<string> localPackages) : thePackages(localPackages) { }
    1409     void operator()()
    1410     {
     1305        recompile(vector<string> localPackages) : thePackages(localPackages) { }
     1306        void operator()()
     1307        {
    14111308                TheInstallButton->Disable();
    1412        recompileAll(thePackages);
    1413            TheInstallButton->Enable();
    1414     }
    1415 
    1416     vector<string> thePackages;
     1309                recompileAll(thePackages);
     1310                TheInstallButton->Enable();
     1311        }
     1312
     1313        vector<string> thePackages;
    14171314};
    14181315
    14191316void MainWindow::OnInstallButtonClick( wxCommandEvent& event )
    14201317{
    1421        
     1318
    14221319        vector<string> localPackages;
    14231320        localPackages.push_back("Globalize");
    14241321        for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName );
    14251322        if ( !localPackages.empty() )   {
    1426                
     1323
    14271324                //MainWindow::MainWindow().Hide();     
    1428         //      boost::thread thrd2(recompileAll(localPackages) );
     1325                //      boost::thread thrd2(recompileAll(localPackages) );
    14291326                //MainWindow::MainWindow().Show();
    14301327#ifdef WIN32
     
    14381335
    14391336        }
    1440        
    1441        
     1337
     1338
    14421339}
    14431340
    14441341/*void setStatusArea( string s ) {
    1445         //TheStatusBar = MainWindow::StatusArea;
    1446         (**TheStatusBar).SetStatusText(_(s.c_str()), 0);
    1447        
    1448                 //MainWindow::MainWindow().SetSize(MainWindow::MainWindow().GetRect().GetWidth(), MainWindow::MainWindow().GetRect().GetHeight()+1);
    1449                                                
    1450         //MainWindow::StatusBar->SetLabel("Importing Files...");
    1451         //StatusBar->SetLabel(s);
     1342//TheStatusBar = MainWindow::StatusArea;
     1343(**TheStatusBar).SetStatusText(_(s.c_str()), 0);
     1344
     1345//MainWindow::MainWindow().SetSize(MainWindow::MainWindow().GetRect().GetWidth(), MainWindow::MainWindow().GetRect().GetHeight()+1);
     1346
     1347//MainWindow::StatusBar->SetLabel("Importing Files...");
     1348//StatusBar->SetLabel(s);
    14521349//->SetLabel(s);
    1453        
     1350
    14541351}*/
    14551352
    14561353void setProgressBar( int i ) {
    1457 //TheProgressBar->SetValue(
     1354        //TheProgressBar->SetValue(
    14581355
    14591356        TheProgressBar->SetValue(i);
     
    14631360
    14641361/*
    1465  * wxEVT_UPDATE_UI event handler for ID_STATUSBAR
    1466  */
     1362* wxEVT_UPDATE_UI event handler for ID_STATUSBAR
     1363*/
    14671364
    14681365void MainWindow::OnStatusbarUpdate( wxUpdateUIEvent& event )
    14691366{
    1470 ////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
    1471     // Before editing this code, remove the block markers.
    1472     event.Skip();
    1473 ////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
    1474 }
    1475 
    1476 
    1477 /*
    1478  * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT
    1479  */
     1367        ////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
     1368        // Before editing this code, remove the block markers.
     1369        event.Skip();
     1370        ////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
     1371}
     1372
     1373
     1374/*
     1375* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT
     1376*/
    14801377
    14811378void MainWindow::OnAboutClick( wxCommandEvent& event )
    14821379{
    1483 ////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
    1484     // Before editing this code, remove the block markers.
    1485     About* window = new About(this);
    1486     int returnValue = window->ShowModal();
    1487     window->Destroy();
    1488 ////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
    1489 }
    1490 
    1491 
    1492 /*
    1493  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for NoSep_RadioButton
    1494  */
     1380        ////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
     1381        // Before editing this code, remove the block markers.
     1382        About* window = new About(this);
     1383        int returnValue = window->ShowModal();
     1384        window->Destroy();
     1385        ////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
     1386}
     1387
     1388
     1389/*
     1390* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for NoSep_RadioButton
     1391*/
    14951392
    14961393void MainWindow::OnNoSepRadioButtonSelected( wxCommandEvent& event )
     
    15011398
    15021399/*
    1503  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton
    1504  */
     1400* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton
     1401*/
    15051402
    15061403void MainWindow::OnSepRadioButtonSelected( wxCommandEvent& event )
     
    15111408
    15121409/*
    1513  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
    1514  */
     1410* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
     1411*/
    15151412
    15161413void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event )
    15171414{
    1518 splitInstances = SPLIT;
    1519 
    1520 }
    1521 
    1522 
    1523 /*
    1524  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton
    1525  */
     1415        splitInstances = SPLIT;
     1416
     1417}
     1418
     1419
     1420/*
     1421* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton
     1422*/
    15261423
    15271424void MainWindow::OnCompleteRadioButtonSelected( wxCommandEvent& event )
    15281425{
    1529 splitInstances = NOT_SPLIT;
    1530 
    1531 }
    1532 
    1533 
    1534 /*
    1535  * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON
    1536  */
     1426        splitInstances = NOT_SPLIT;
     1427
     1428}
     1429
     1430
     1431/*
     1432* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON
     1433*/
    15371434
    15381435void MainWindow::OnRefreshButtonClick( wxCommandEvent& event )
     
    15431440
    15441441/*
    1545  * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD
    1546  */
     1442* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD
     1443*/
    15471444
    15481445
     
    15501447
    15511448void MainWindow::refreshMods (vector<string> s) {
    1552        
     1449
    15531450        Mods_CheckboxList->Clear();
    1554                                            //globalInstalledMods = getPackages();
    1555                 for (int i = 0; i < globalPackages.size(); i++) {
    1556                         Mods_CheckboxList->Append(globalPackages[i].name.c_str());
    1557                         if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
    1558                         //else Mods_CheckboxList->Check(i,0);
    1559                
    1560                 }
     1451        //globalInstalledMods = getPackages();
     1452        for (int i = 0; i < globalPackages.size(); i++) {
     1453                Mods_CheckboxList->Append(globalPackages[i].name.c_str());
     1454                if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
     1455                //else Mods_CheckboxList->Check(i,0);
     1456
     1457        }
    15611458}
    15621459
     
    15661463                "Mod Loadouts (*.cfg)|*.cfg|"
    15671464                "All files (*.*)|*.*"
    1568         );
    1569        
     1465                );
     1466
    15701467        wxFileDialog* openFileDialog =
    15711468                new wxFileDialog( this, _("Open Mod Loadout"), "", "", FILETYPES,
    1572                                   wxOPEN, wxDefaultPosition);
    1573  
     1469                wxOPEN, wxDefaultPosition);
     1470
    15741471        if ( openFileDialog->ShowModal() == wxID_OK )
    15751472        {
     
    15821479
    15831480/*
    1584  * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE
    1585  */
     1481* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE
     1482*/
    15861483
    15871484void MainWindow::OnSaveClick( wxCommandEvent& event )
     
    15901487                "Mod Loadouts (*.cfg)|*.cfg|"
    15911488                "All files (*.*)|*.*"
    1592         );
    1593 
    1594                 wxFileDialog* openFileDialog =
     1489                );
     1490
     1491        wxFileDialog* openFileDialog =
    15951492                new wxFileDialog( this, _("Open file"), "", "", FILETYPES,
    15961493                wxSAVE, wxDefaultPosition);
     
    15991496        {
    16001497
    1601                
    1602                         //Mods_CheckboxList->
     1498
     1499                //Mods_CheckboxList->
    16031500
    16041501
    16051502
    16061503                //
    1607                
     1504
    16081505                if ( exists( openFileDialog->GetPath().c_str() ) )
    1609         {
    1610                 remove( openFileDialog->GetPath().c_str() );
    1611         }
    1612 
    1613         ofstream file(openFileDialog->GetPath().c_str());
    1614        
    1615         vector<string>list;
    1616         for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
    1617         vector<string>::iterator begin_iter = list.begin();
    1618         vector<string>::iterator end_iter = list.end();
    1619 
    1620         sort( list.begin(), list.end() );
    1621 
    1622         for( ; begin_iter != end_iter; ++begin_iter) {
    1623                 file << *begin_iter << " ";
    1624         }
    1625        
    1626         file.close();
    1627         file.clear();
     1506                {
     1507                        remove( openFileDialog->GetPath().c_str() );
     1508                }
     1509
     1510                ofstream file(openFileDialog->GetPath().c_str());
     1511
     1512                vector<string>list;
     1513                for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
     1514                vector<string>::iterator begin_iter = list.begin();
     1515                vector<string>::iterator end_iter = list.end();
     1516
     1517                sort( list.begin(), list.end() );
     1518
     1519                for( ; begin_iter != end_iter; ++begin_iter) {
     1520                        file << *begin_iter << " ";
     1521                }
     1522
     1523                file.close();
     1524                file.clear();
    16281525
    16291526                //SetCurrentFilename(openFileDialog->GetFilename());
     
    16351532
    16361533
    1637 /*
    1638  * wxEVT_COMMAND_BUTTON_CLICKED event handler for ReGlobalize_Button
    1639  */
     1534
     1535/*
     1536* wxEVT_COMMAND_BUTTON_CLICKED event handler for ReGlobalize_Button
     1537*/
    16401538
    16411539void MainWindow::OnReGlobalizeButtonClick( wxCommandEvent& event )
    16421540{
    1643 globalizeData();
    1644                 setProgressBar(1000);
    1645                 setStatusArea("Done!");
    1646 }
    1647 
    1648 
    1649 /*
    1650  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
    1651  */
     1541        wxMessageDialog* YesNoDialog = new wxMessageDialog(this,                        "WARNING: This will DELETE the Edition's GameDataFolder and reglobalize all of your data. \n Are you SURE you want to do this? ", "AE Installer Alert",  wxYES_NO | wxICON_EXCLAMATION  , wxDefaultPosition);
     1542
     1543        if (YesNoDialog->ShowModal() == wxID_NO) { //if the user said no...
     1544               
     1545        }
     1546        else {
     1547               
     1548       
     1549
     1550#ifdef WIN32
     1551
     1552        boost::thread thrd2(globalizeData);
     1553        //globalizeData();
     1554        //boost::thread::create_thread(&globalizeData);
     1555        //       boost::thread_group Tg;
     1556        // Tg.create_thread( &globalizeData(), this );
     1557#else
     1558        globalizeData();
     1559        setProgressBar(1000);
     1560        setStatusArea("Done!");
     1561#endif
     1562}
     1563
     1564}
     1565/*
     1566* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
     1567*/
    16521568
    16531569/*void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event )
    16541570{
    16551571////@begin wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow.
    1656     // Before editing this code, remove the block markers.
    1657     event.Skip();
     1572// Before editing this code, remove the block markers.
     1573event.Skip();
    16581574////@end wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow.
    16591575}*/
  • AE/Installer/trunk/source/main_window.h

    r331 r355  
    190190#endif
    191191    // _MAINWINDOW_H_
     192void doglobalizeData(void);
Note: See TracChangeset for help on using the changeset viewer.