Changeset 355 for AE/Installer/trunk/source
- Timestamp:
- Jun 19, 2009, 12:30:30 AM (15 years ago)
- Location:
- AE/Installer/trunk/source
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
AE/Installer/trunk/source/installer.h
r325 r355 50 50 } 51 51 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);} 52 60 }; 53 61 -
AE/Installer/trunk/source/main_window.cpp
r353 r355 1 1 /* 2 3 4 5 6 // To-do: - Disable Install button when nothing (new) is selected2 AE/Mod Installer 3 by Gumby and Iritscen 4 */ 5 6 // To-do: - 7 7 // - 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 ??? 9 9 10 10 #define DEBUG … … 21 21 22 22 #include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations 23 23 #include "boost/lexical_cast.hpp" //int -> string 24 24 #include "installer.h" 25 25 … … 53 53 54 54 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 61 int 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!"); 77 71 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]); 115 85 } 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 happened138 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 has151 86 char choice = 0; 152 87 153 88 //SetCurrentDirectory("C:/Program Files/Oni/edition/install"); 154 char levelnum[3];89 ///char levels[i][3]; 155 90 path Characters = "../GameDataFolder/level0_Characters"; 156 91 path Particles = "../GameDataFolder/level0_Particles"; … … 161 96 path TRAC = Animations / "level0_TRAC"; 162 97 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 163 125 /* 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"; 177 144 create_directory( "../GameDataFolder/" ); 145 178 146 create_directory( "packages" ); 179 if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats"); 147 148 if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats"); 180 149 create_directory( "packages/VanillaDats" ); 181 150 182 151 create_directory( "packages/VanillaDats/level0_Final/" ); 152 //blah blah finish this. 153 //logfile << "packages/VanillaDats/level0_Final/ created"; 183 154 create_directory( Characters ); 184 155 create_directory( Particles ); … … 189 160 create_directory( TRAC ); 190 161 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; 192 172 for(int i = 0; i < 15; i++) 193 173 { 194 sprintf(levelnum,"%d",levels[i]); // int to char array195 exists("../../GameDataFolder/level" + (string)levelnum + "_Final");196 system((strOniSplit + " -export ../GameDataFolder/level" + (string)levelnum + "_Final ../../GameDataFolder/level" + (string)levelnum + "_Final.dat").c_str());197 174 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 200 176 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 ) 206 190 { 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"; 207 259 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 } 221 269 } 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 271 272 272 if(!exists( Archive / dir_itr->filename())) rename(dir_itr->path(), Archive / dir_itr->filename());273 else remove(dir_itr->path());274 }275 273 } 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) )); 276 279 277 278 } 279 system( (strOniSplit + " -move:delete " + Textures.string() + " ../GameDataFolder/level" + (string)levelnum + "_Final/TXMP*.oni").c_str()); 280 280 } 281 281 } 282 282 logfile << "Reimporting levels\n"; 283 283 for (int i = 0; i < 15; i++) 284 284 { 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++; 288 293 } 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";296 294 create_directory( VanillaCharacters.parent_path() ); 297 295 create_directory( VanillaParticles.parent_path() ); … … 299 297 create_directory( VanillaSounds.parent_path() ); 300 298 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) )); 301 309 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) )); 302 311 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) )); 303 313 system((strOniSplit + " " + strImportOption + " " + Textures.string() + " " + VanillaTextures.string()).c_str()); 304 314 //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) )); 305 316 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) )); 306 318 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); 308 329 309 create_directory("../GameDataFolder/IGMD");310 copy((path)"packages/VanillaBSL/IGMD", (path)"../GameDataFolder");311 330 } 312 331 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 315 341 return err; 316 342 } 317 343 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 do361 {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 do444 {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 else469 {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 }500 344 501 345 vector<ModPackage> getPackages(void) … … 506 350 string filename = "\0"; 507 351 string MODINFO_CFG = "Mod_Info.cfg"; 508 352 509 353 try 510 354 { … … 514 358 file.open((dir_itr->path().string() + "/" + MODINFO_CFG).c_str()); 515 359 //cout << filename << "\n"; 516 360 517 361 if(!file.fail()) 518 362 { … … 524 368 file.clear(); 525 369 } 370 sort(packages.begin(), packages.end()); 526 371 } 527 372 catch (const std::exception & ex) … … 529 374 cout << "Warning, something odd happened!\n"; 530 375 } 531 376 532 377 return packages; 533 378 } … … 536 381 { 537 382 /* 538 539 540 541 542 543 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 */ 545 390 ModPackage package; 546 391 string line; … … 567 412 iter = tokens.begin(); //what word we are on, starts at first word 568 413 /* 569 570 571 414 if (!AEInstallVersion.compare(*iter)) 415 If mod is too old, skip this mod. 416 */ 572 417 /*else*/if (!NameOfMod.compare(*iter)) { //if it contains the name 573 418 for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) { //interates through the words, ends if it reaches the end of the line or a "//" comment … … 578 423 } 579 424 } 580 425 581 426 } 582 427 else if (!ModString.compare(*iter)) { … … 590 435 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 591 436 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 594 439 if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasBSL = 1; 595 440 } … … 638 483 } 639 484 } 640 485 641 486 } 642 487 package.doOutput(); … … 646 491 void recompileAll(vector<string> installedMods) 647 492 { 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 653 496 setStatusArea("Importing levels..."); 654 497 //setStatusArea("Recompiling Data..."); … … 660 503 string datString; 661 504 std::stringstream out; 662 663 505 506 ptime start_time(second_clock::local_time()); 664 507 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(); 666 512 if(splitInstances == SPLIT){ 667 513 recursive_directory_iterator end_iter; 668 514 669 515 for ( recursive_directory_iterator dir_itr( vanilla_dir ); 670 671 516 dir_itr != end_iter; 517 ++dir_itr ) 672 518 { 673 519 try{ … … 678 524 } 679 525 catch(exception ex) { 680 526 681 527 } 682 528 } 683 529 684 530 //recursive_directory_iterator end_iter; 685 686 531 532 687 533 out << numberOfDats; 688 534 datString = out.str(); 689 535 try { 690 536 for ( recursive_directory_iterator dir_itr( vanilla_dir ); 691 692 537 dir_itr != end_iter; 538 ++dir_itr ) 693 539 { 694 540 try … … 700 546 if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename() )) 701 547 importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename(); 702 548 703 549 //else cout << " packages/VanillaDats/" + installedMods[i] + "/oni/"; 704 550 } 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); 708 554 setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats 709 555 setStatusArea("Importing " + dir_itr->path().filename() + " " + statusString); 710 556 711 557 system(importCommand.c_str()); 712 558 //Sleep(1000); 713 559 //cout << importCommand << "\n"; 714 560 j++; 715 561 716 562 } 717 563 } 718 564 catch ( const std::exception & ex ) 719 565 { 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() + "!"); 573 logfile.close(); 721 574 } 722 575 } 723 576 724 577 } 725 578 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() + "!"); 586 logfile.close(); 729 587 } 730 588 731 589 } 732 590 else if(splitInstances == NOT_SPLIT){ 733 591 directory_iterator end_iter; 734 592 735 593 for ( directory_iterator dir_itr( vanilla_dir ); 736 737 594 dir_itr != end_iter; 595 ++dir_itr ) 738 596 { 739 597 740 598 if ( is_directory( dir_itr->status() ) ) 741 599 { 742 600 numberOfDats++; 743 601 } 744 745 602 603 746 604 } 747 605 748 606 out << numberOfDats; 749 607 datString = out.str(); 750 608 751 609 for ( directory_iterator dir_itr( vanilla_dir ); 752 753 610 dir_itr != end_iter; 611 ++dir_itr ) 754 612 { 755 613 try … … 758 616 { 759 617 importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " " + "../GameDataFolder/" + dir_itr->path().filename() 760 + ".dat";618 + ".dat"; 761 619 for (int i = 0; i < installedMods.size(); ++i) { 762 620 if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename() )) 763 621 importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename(); 764 622 } 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); 768 626 setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats 769 627 setStatusArea("Importing " + dir_itr->path().filename() + " " + statusString); 770 628 771 629 system(importCommand.c_str()); 772 630 773 631 j++; 774 632 } … … 776 634 catch ( const std::exception & ex ) 777 635 { 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() + "!"); 643 logfile.close(); 644 }} 645 } 646 logfile << "Writing config file"; 782 647 writeInstalledMods(installedMods); 783 648 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()); 661 logfile2.close(); 662 663 //total_time.length().hours(); 664 785 665 Sleep(1000); 786 666 setProgressBar(0); … … 789 669 void writeInstalledMods(vector<string> installedMods) 790 670 { 791 671 792 672 if ( exists( strInstallCfg ) ) 793 673 { 794 674 remove( strInstallCfg ); 795 675 } 796 676 797 677 ofstream file(strInstallCfg.c_str()); 798 678 799 679 vector<string>list = installedMods; 800 680 vector<string>::iterator begin_iter = list.begin(); 801 681 vector<string>::iterator end_iter = list.end(); 802 682 803 683 sort( list.begin(), list.end() ); 804 684 805 685 for( ; begin_iter != end_iter; ++begin_iter) { 806 686 file << *begin_iter << " "; 807 687 } 808 688 809 689 file.close(); 810 690 file.clear(); 811 691 812 692 } 813 693 … … 816 696 //system(strPauseCmd); 817 697 vector<string> returnval; 818 698 819 699 string line; 820 700 fstream file; 821 701 822 702 if (exists( Cfg )) 823 703 { … … 830 710 } 831 711 else cout << "fail"; 832 712 833 713 return returnval; 834 714 } … … 841 721 // Find first "non-delimiter". 842 722 string::size_type pos = str.find_first_of(delimiters, lastPos); 843 723 844 724 while (string::npos != pos || string::npos != lastPos) 845 725 { … … 856 736 directory_iterator end_iter_gdf; 857 737 for ( directory_iterator dir_itr_gdf( "../GameDataFolder" ); 858 859 738 dir_itr_gdf != end_iter_gdf; 739 ++dir_itr_gdf ) 860 740 { 861 741 //cout << dir_itr_gdf->path().extension() << "\n"; … … 863 743 remove( dir_itr_gdf->path() ); 864 744 } 865 866 } 867 745 746 } 747 868 748 } 869 749 … … 912 792 913 793 /* 914 915 794 * MainWindow type definition 795 */ 916 796 917 797 IMPLEMENT_CLASS( MainWindow, wxFrame ) … … 919 799 920 800 /* 921 922 801 * MainWindow event table definition 802 */ 923 803 924 804 BEGIN_EVENT_TABLE( MainWindow, wxFrame ) 925 805 926 806 ////@begin MainWindow event table entries 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 807 EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick ) 808 809 EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick ) 810 811 EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected ) 812 EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled ) 813 814 EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate ) 815 816 EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick ) 817 818 EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected ) 819 820 EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected ) 821 822 EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected ) 823 824 EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected ) 825 826 EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick ) 827 828 EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick ) 829 830 EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick ) 831 832 EVT_MENU( wxID_EXIT, MainWindow::OnExitClick ) 833 834 EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick ) 835 836 EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick ) 957 837 958 838 ////@end MainWindow event table entries … … 962 842 963 843 /* 964 965 844 * MainWindow constructors 845 */ 966 846 967 847 MainWindow::MainWindow() 968 848 { 969 849 Init(); 970 850 } 971 851 972 852 MainWindow::MainWindow( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) 973 853 { 974 975 976 } 977 978 979 /* 980 981 854 Init(); 855 Create( parent, id, caption, pos, size, style ); 856 } 857 858 859 /* 860 * MainWindow creator 861 */ 982 862 983 863 bool MainWindow::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) 984 864 { 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 */ 999 881 1000 882 MainWindow::~MainWindow() 1001 883 { 1002 ////@begin MainWindow destruction1003 ////@end MainWindow destruction1004 } 1005 1006 1007 /* 1008 1009 884 ////@begin MainWindow destruction 885 ////@end MainWindow destruction 886 } 887 888 889 /* 890 * Member initialisation 891 */ 1010 892 1011 893 void MainWindow::Init() 1012 894 { 1013 ////@begin MainWindow member initialisation1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 ////@end MainWindow member initialisation1031 1032 } 1033 1034 1035 /* 1036 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 */ 1038 920 wxStatusBar **TheStatusBar; 1039 921 wxButton* TheInstallButton; … … 1041 923 void MainWindow::CreateControls() 1042 924 { 1043 ////@begin MainWindow content construction1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 ////@end MainWindow content construction1208 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 1209 1091 if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) { 1210 1092 static_cast<string>("-import:sep"); … … 1218 1100 globalPackages = getPackages(); 1219 1101 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 */ 1243 1133 1244 1134 void MainWindow::OnSelectAllCheckboxClick( wxCommandEvent& event ) 1245 1135 { 1246 1136 switch(SelectAll->Get3StateValue()) { 1247 1137 case wxCHK_UNCHECKED: 1248 1138 for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false); … … 1259 1149 1260 1150 } 1261 1262 } 1263 1264 1265 /* 1266 1267 1151 1152 } 1153 1154 1155 /* 1156 * wxEVT_CREATE event handler for Mods_CheckboxList 1157 */ 1268 1158 1269 1159 void MainWindow::ModList_OnCreate( wxWindowCreateEvent& event ) … … 1275 1165 1276 1166 /* 1277 1278 1167 * Should we show tooltips? 1168 */ 1279 1169 1280 1170 bool MainWindow::ShowToolTips() 1281 1171 { 1282 1283 } 1284 1285 /* 1286 1287 1172 return true; 1173 } 1174 1175 /* 1176 * Get bitmap resources 1177 */ 1288 1178 1289 1179 wxBitmap MainWindow::GetBitmapResource( const wxString& name ) 1290 1180 { 1291 1292 ////@begin MainWindow bitmap retrieval1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 ////@end MainWindow bitmap retrieval1316 } 1317 1318 /* 1319 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 */ 1321 1211 1322 1212 wxIcon MainWindow::GetIconResource( const wxString& name ) 1323 1213 { 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 */ 1340 1231 1341 1232 void MainWindow::OnModsCheckboxList1Selected( wxCommandEvent& event ) … … 1351 1242 1352 1243 /* 1353 1354 1244 * wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1 1245 */ 1355 1246 1356 1247 void MainWindow::OnModsCheckboxList1Toggled( wxCommandEvent& event ) … … 1358 1249 SelectAll->Set3StateValue(wxCHK_UNDETERMINED); 1359 1250 if(event.GetInt()) { 1360 /*1251 /* 1361 1252 switch(SelectAll->Get3StateValue()) { 1362 case wxCHK_UNCHECKED:1253 case wxCHK_UNCHECKED: 1363 1254 break; 1364 case wxCHK_CHECKED:1255 case wxCHK_CHECKED: 1365 1256 break; 1366 case wxCHK_UNDETERMINED :1257 case wxCHK_UNDETERMINED : 1367 1258 break; 1368 }1369 */1370 } 1371 } 1372 1373 1374 /* 1375 1376 1259 } 1260 */ 1261 } 1262 } 1263 1264 1265 /* 1266 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS 1267 */ 1377 1268 1378 1269 void MainWindow::OnOptionsClick( wxCommandEvent& event ) 1379 1270 { 1380 1271 1272 1273 1274 1381 1275 if (!event.GetInt() ) { 1382 1276 OptionsPanel->Hide(); 1383 1277 MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight());} 1384 1278 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(); 1385 1282 OptionsPanel->Show(); 1386 1283 MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()+OptionsPanel->GetRect().GetHeight()); … … 1390 1287 1391 1288 /* 1392 1393 1289 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT 1290 */ 1394 1291 1395 1292 void MainWindow::OnExitClick( wxCommandEvent& event ) 1396 1293 { 1397 exit(0);1398 } 1399 1400 1401 /* 1402 1403 1294 exit(0); 1295 } 1296 1297 1298 /* 1299 * wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button 1300 */ 1404 1301 1405 1302 1406 1303 struct recompile 1407 1304 { 1408 1409 1410 1305 recompile(vector<string> localPackages) : thePackages(localPackages) { } 1306 void operator()() 1307 { 1411 1308 TheInstallButton->Disable(); 1412 1413 1414 1415 1416 1309 recompileAll(thePackages); 1310 TheInstallButton->Enable(); 1311 } 1312 1313 vector<string> thePackages; 1417 1314 }; 1418 1315 1419 1316 void MainWindow::OnInstallButtonClick( wxCommandEvent& event ) 1420 1317 { 1421 1318 1422 1319 vector<string> localPackages; 1423 1320 localPackages.push_back("Globalize"); 1424 1321 for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName ); 1425 1322 if ( !localPackages.empty() ) { 1426 1323 1427 1324 //MainWindow::MainWindow().Hide(); 1428 // boost::thread thrd2(recompileAll(localPackages) );1325 // boost::thread thrd2(recompileAll(localPackages) ); 1429 1326 //MainWindow::MainWindow().Show(); 1430 1327 #ifdef WIN32 … … 1438 1335 1439 1336 } 1440 1441 1337 1338 1442 1339 } 1443 1340 1444 1341 /*void setStatusArea( string s ) { 1445 1446 1447 1448 1449 1450 1451 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); 1452 1349 //->SetLabel(s); 1453 1350 1454 1351 }*/ 1455 1352 1456 1353 void setProgressBar( int i ) { 1457 //TheProgressBar->SetValue(1354 //TheProgressBar->SetValue( 1458 1355 1459 1356 TheProgressBar->SetValue(i); … … 1463 1360 1464 1361 /* 1465 1466 1362 * wxEVT_UPDATE_UI event handler for ID_STATUSBAR 1363 */ 1467 1364 1468 1365 void MainWindow::OnStatusbarUpdate( wxUpdateUIEvent& event ) 1469 1366 { 1470 ////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.1471 1472 1473 ////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.1474 } 1475 1476 1477 /* 1478 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 */ 1480 1377 1481 1378 void MainWindow::OnAboutClick( wxCommandEvent& event ) 1482 1379 { 1483 ////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.1484 1485 1486 1487 1488 ////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.1489 } 1490 1491 1492 /* 1493 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 */ 1495 1392 1496 1393 void MainWindow::OnNoSepRadioButtonSelected( wxCommandEvent& event ) … … 1501 1398 1502 1399 /* 1503 1504 1400 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton 1401 */ 1505 1402 1506 1403 void MainWindow::OnSepRadioButtonSelected( wxCommandEvent& event ) … … 1511 1408 1512 1409 /* 1513 1514 1410 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton 1411 */ 1515 1412 1516 1413 void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event ) 1517 1414 { 1518 splitInstances = SPLIT;1519 1520 } 1521 1522 1523 /* 1524 1525 1415 splitInstances = SPLIT; 1416 1417 } 1418 1419 1420 /* 1421 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton 1422 */ 1526 1423 1527 1424 void MainWindow::OnCompleteRadioButtonSelected( wxCommandEvent& event ) 1528 1425 { 1529 splitInstances = NOT_SPLIT;1530 1531 } 1532 1533 1534 /* 1535 1536 1426 splitInstances = NOT_SPLIT; 1427 1428 } 1429 1430 1431 /* 1432 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON 1433 */ 1537 1434 1538 1435 void MainWindow::OnRefreshButtonClick( wxCommandEvent& event ) … … 1543 1440 1544 1441 /* 1545 1546 1442 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD 1443 */ 1547 1444 1548 1445 … … 1550 1447 1551 1448 void MainWindow::refreshMods (vector<string> s) { 1552 1449 1553 1450 Mods_CheckboxList->Clear(); 1554 1555 1556 1557 1558 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 } 1561 1458 } 1562 1459 … … 1566 1463 "Mod Loadouts (*.cfg)|*.cfg|" 1567 1464 "All files (*.*)|*.*" 1568 );1569 1465 ); 1466 1570 1467 wxFileDialog* openFileDialog = 1571 1468 new wxFileDialog( this, _("Open Mod Loadout"), "", "", FILETYPES, 1572 1573 1469 wxOPEN, wxDefaultPosition); 1470 1574 1471 if ( openFileDialog->ShowModal() == wxID_OK ) 1575 1472 { … … 1582 1479 1583 1480 /* 1584 1585 1481 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE 1482 */ 1586 1483 1587 1484 void MainWindow::OnSaveClick( wxCommandEvent& event ) … … 1590 1487 "Mod Loadouts (*.cfg)|*.cfg|" 1591 1488 "All files (*.*)|*.*" 1592 );1593 1594 1489 ); 1490 1491 wxFileDialog* openFileDialog = 1595 1492 new wxFileDialog( this, _("Open file"), "", "", FILETYPES, 1596 1493 wxSAVE, wxDefaultPosition); … … 1599 1496 { 1600 1497 1601 1602 1498 1499 //Mods_CheckboxList-> 1603 1500 1604 1501 1605 1502 1606 1503 // 1607 1504 1608 1505 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(); 1628 1525 1629 1526 //SetCurrentFilename(openFileDialog->GetFilename()); … … 1635 1532 1636 1533 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 */ 1640 1538 1641 1539 void MainWindow::OnReGlobalizeButtonClick( wxCommandEvent& event ) 1642 1540 { 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 */ 1652 1568 1653 1569 /*void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event ) 1654 1570 { 1655 1571 ////@begin wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow. 1656 1657 1572 // Before editing this code, remove the block markers. 1573 event.Skip(); 1658 1574 ////@end wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow. 1659 1575 }*/ -
AE/Installer/trunk/source/main_window.h
r331 r355 190 190 #endif 191 191 // _MAINWINDOW_H_ 192 void doglobalizeData(void);
Note:
See TracChangeset
for help on using the changeset viewer.