source: AE/Installer/trunk/source/main_window.cpp@ 324

Last change on this file since 324 was 324, checked in by iritscen, 16 years ago

Replacing old CLI source with new GUI source.

  • Property svn:executable set to *
File size: 21.9 KB
Line 
1#include "installer.cpp"
2
3vector<string> globalInstalledMods;
4vector<ModPackage> globalPackages;
5#include "boost/thread.hpp"
6#include <boost/thread/mutex.hpp>
7
8/////////////////////////////////////////////////////////////////////////////
9// Name: main_window.cpp
10// Purpose:
11// Author:
12// Modified by:
13// Created: 07/05/2009 20:38:25
14// RCS-ID:
15// Copyright:
16// Licence:
17/////////////////////////////////////////////////////////////////////////////
18
19// For compilers that support precompilation, includes "wx/wx.h".
20#include "wx/wxprec.h"
21
22#ifdef __BORLANDC__
23#pragma hdrstop
24#endif
25
26#ifndef WX_PRECOMP
27#include "wx/wx.h"
28#endif
29
30////@begin includes
31#include "about_window.h"
32////@end includes
33
34#include "main_window.h"
35
36////@begin XPM images
37#include "redo.xpm"
38#include "fileopen.xpm"
39#include "filesaveas.xpm"
40#include "quit.xpm"
41////@end XPM images
42
43//#define wxDebug 1;
44//#define wxUSE_UNICODE 1;
45
46/*
47 * MainWindow type definition
48 */
49
50IMPLEMENT_CLASS( MainWindow, wxFrame )
51
52
53/*
54 * MainWindow event table definition
55 */
56
57BEGIN_EVENT_TABLE( MainWindow, wxFrame )
58
59////@begin MainWindow event table entries
60 EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick )
61
62 EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick )
63
64 EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected )
65 EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled )
66
67 EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate )
68
69 EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick )
70
71 EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected )
72
73 EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected )
74
75 EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected )
76
77 EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected )
78
79 EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick )
80
81 EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick )
82
83 EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick )
84
85 EVT_MENU( wxID_EXIT, MainWindow::OnExitClick )
86
87 EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick )
88
89 EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick )
90
91////@end MainWindow event table entries
92
93END_EVENT_TABLE()
94
95
96/*
97 * MainWindow constructors
98 */
99
100MainWindow::MainWindow()
101{
102 Init();
103}
104
105MainWindow::MainWindow( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
106{
107 Init();
108 Create( parent, id, caption, pos, size, style );
109}
110
111
112/*
113 * MainWindow creator
114 */
115
116bool MainWindow::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
117{
118////@begin MainWindow creation
119 wxFrame::Create( parent, id, caption, pos, size, style );
120
121 CreateControls();
122 SetIcon(GetIconResource(wxT("oni_special.ico")));
123 Centre();
124////@end MainWindow creation
125 return true;
126}
127
128
129/*
130 * MainWindow destructor
131 */
132
133MainWindow::~MainWindow()
134{
135////@begin MainWindow destruction
136////@end MainWindow destruction
137}
138
139
140/*
141 * Member initialisation
142 */
143
144void MainWindow::Init()
145{
146////@begin MainWindow member initialisation
147 MainSplitter = NULL;
148 SelectAll = NULL;
149 RefreshButton = NULL;
150 Mods_CheckboxList = NULL;
151 titleText = NULL;
152 creatorText = NULL;
153 descriptionText = NULL;
154 StatusArea = NULL;
155 ProgressBar = NULL;
156 InstallButton = NULL;
157 OptionsPanel = NULL;
158 SepRadio = NULL;
159 NoSepRadio = NULL;
160 SeparatedRadio = NULL;
161 CompleteRadio = NULL;
162 ReglobalizeButton = NULL;
163////@end MainWindow member initialisation
164
165}
166
167
168/*
169 * Control creation for MainWindow
170 */
171wxStatusBar* TheStatusBar;
172wxButton* TheInstallButton;
173wxGauge* TheProgressBar;
174void MainWindow::CreateControls()
175{
176////@begin MainWindow content construction
177 MainWindow* itemFrame1 = this;
178
179 wxMenuBar* menuBar = new wxMenuBar;
180 wxMenu* itemMenu37 = new wxMenu;
181 {
182 wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_LOAD, _("&Load Configuration..."), wxEmptyString, wxITEM_NORMAL);
183 wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("fileopen.xpm")));
184 menuItem->SetBitmap(bitmap);
185 itemMenu37->Append(menuItem);
186 }
187 {
188 wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_SAVE, _("&Save Configuration..."), wxEmptyString, wxITEM_NORMAL);
189 wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("filesaveas.xpm")));
190 menuItem->SetBitmap(bitmap);
191 itemMenu37->Append(menuItem);
192 }
193 itemMenu37->AppendSeparator();
194 {
195 wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_EXIT, _("Exit"), wxEmptyString, wxITEM_NORMAL);
196 wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("quit.xpm")));
197 menuItem->SetBitmap(bitmap);
198 itemMenu37->Append(menuItem);
199 }
200 menuBar->Append(itemMenu37, _("&File"));
201 wxMenu* itemMenu42 = new wxMenu;
202 itemMenu42->Append(wxID_OPTIONS, _("Show Advanced Options..."), wxEmptyString, wxITEM_CHECK);
203 menuBar->Append(itemMenu42, _("Options"));
204 wxMenu* itemMenu44 = new wxMenu;
205 itemMenu44->Append(wxID_HELP, _("Help"), wxEmptyString, wxITEM_NORMAL);
206 itemMenu44->Append(wxID_ABOUT, _("About"), wxEmptyString, wxITEM_NORMAL);
207 menuBar->Append(itemMenu44, _("Help"));
208 itemFrame1->SetMenuBar(menuBar);
209
210 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
211 itemFrame1->SetSizer(itemBoxSizer2);
212
213 MainSplitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_LIVE_UPDATE|wxNO_BORDER );
214 MainSplitter->SetMinimumPaneSize(150);
215 MainSplitter->SetName(_T("MainSplitter"));
216
217 wxPanel* itemPanel4 = new wxPanel( MainSplitter, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
218 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
219 itemPanel4->SetSizer(itemBoxSizer5);
220
221 wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
222 itemBoxSizer5->Add(itemBoxSizer6, 0, wxGROW|wxALL, 0);
223 SelectAll = new wxCheckBox( itemPanel4, SelectAll_Checkbox, _("Select All/None"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
224 SelectAll->SetValue(false);
225 SelectAll->SetName(_T("SelectAll_Checkbox"));
226 itemBoxSizer6->Add(SelectAll, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
227
228 RefreshButton = new wxBitmapButton( itemPanel4, Refresh_Button, itemFrame1->GetBitmapResource(wxT("redo.xpm")), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
229 RefreshButton->SetName(_T("RefreshButton"));
230 itemBoxSizer6->Add(RefreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
231
232 wxArrayString Mods_CheckboxListStrings;
233 Mods_CheckboxList = new wxCheckListBox( itemPanel4, Mods_CheckboxList1, wxDefaultPosition, wxDefaultSize, Mods_CheckboxListStrings, wxLB_HSCROLL );
234 Mods_CheckboxList->SetName(_T("Mods_CheckboxList"));
235 itemBoxSizer5->Add(Mods_CheckboxList, 1, wxGROW|wxALL, 0);
236
237 wxPanel* itemPanel10 = new wxPanel( MainSplitter, DescriptionHolder_Panel, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
238 itemPanel10->SetName(_T("DescriptionHolder_Panel"));
239 wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
240 itemPanel10->SetSizer(itemBoxSizer11);
241
242 wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
243 itemBoxSizer11->Add(itemBoxSizer12, 0, wxGROW|wxALL, 0);
244 wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
245 itemBoxSizer12->Add(itemBoxSizer13, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
246 titleText = new wxTextCtrl( itemPanel10, Title_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
247 titleText->SetName(_T("Title_Text"));
248 titleText->SetBackgroundColour(wxColour(240, 240, 240));
249 itemBoxSizer13->Add(titleText, 1, wxGROW|wxLEFT, 5);
250
251 wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
252 itemBoxSizer12->Add(itemBoxSizer15, 1, wxGROW|wxALL, 0);
253 creatorText = new wxTextCtrl( itemPanel10, Author_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_RIGHT );
254 creatorText->SetName(_T("Author_Text"));
255 creatorText->SetBackgroundColour(wxColour(240, 240, 240));
256 itemBoxSizer15->Add(creatorText, 1, wxGROW|wxRIGHT, 5);
257
258 wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
259 itemStaticLine17->Show(false);
260 itemBoxSizer11->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
261
262 descriptionText = new wxTextCtrl( itemPanel10, Description_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_RICH2 );
263 descriptionText->SetName(_T("DescriptionName"));
264 descriptionText->SetBackgroundColour(wxColour(240, 240, 240));
265 itemBoxSizer11->Add(descriptionText, 1, wxGROW|wxLEFT|wxRIGHT, 5);
266
267 MainSplitter->SplitVertically(itemPanel4, itemPanel10, 150);
268 itemBoxSizer2->Add(MainSplitter, 1, wxGROW|wxALL, 0);
269
270 StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
271 StatusArea->SetName(_T("StatusArea"));
272 StatusArea->SetFieldsCount(1);
273 StatusArea->SetStatusText(_("Status Area"), 0);
274 itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
275
276 wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
277 itemBoxSizer2->Add(itemBoxSizer20, 0, wxGROW|wxALL, 0);
278
279 ProgressBar = new wxGauge( itemFrame1, ProgressBar_Gauge, 1000, wxDefaultPosition, wxDefaultSize, wxGA_SMOOTH );
280 ProgressBar->SetValue(0);
281 itemBoxSizer20->Add(ProgressBar, 1, wxGROW|wxALL, 0);
282
283 InstallButton = new wxButton( itemFrame1, Install_Button, _("Install!"), wxDefaultPosition, wxDefaultSize, 0 );
284 itemBoxSizer20->Add(InstallButton, 0, wxGROW|wxALL, 0);
285
286 wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
287 itemBoxSizer2->Add(itemBoxSizer23, 0, wxGROW|wxALL, 0);
288
289 OptionsPanel = new wxPanel( itemFrame1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
290 itemBoxSizer2->Add(OptionsPanel, 0, wxGROW, 0);
291
292 wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
293 OptionsPanel->SetSizer(itemBoxSizer25);
294
295 wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
296 itemBoxSizer25->Add(itemBoxSizer26, 0, wxGROW|wxALL, 5);
297
298 SepRadio = new wxRadioButton( OptionsPanel, Sep_RadioButton, _("Sep"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
299 SepRadio->SetValue(false);
300 if (MainWindow::ShowToolTips())
301 SepRadio->SetToolTip(_("For PC Demo and Mac"));
302 itemBoxSizer26->Add(SepRadio, 0, wxALIGN_LEFT|wxALL, 5);
303
304 NoSepRadio = new wxRadioButton( OptionsPanel, NoSep_RadioButton, _("NoSep"), wxDefaultPosition, wxDefaultSize, 0 );
305 NoSepRadio->SetValue(false);
306 if (MainWindow::ShowToolTips())
307 NoSepRadio->SetToolTip(_("For PC Retail"));
308 itemBoxSizer26->Add(NoSepRadio, 0, wxALIGN_LEFT|wxALL, 5);
309
310 wxStaticLine* itemStaticLine29 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
311 itemBoxSizer25->Add(itemStaticLine29, 0, wxGROW|wxALL, 5);
312
313 wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
314 itemBoxSizer25->Add(itemBoxSizer30, 0, wxGROW|wxALL, 5);
315
316 SeparatedRadio = new wxRadioButton( OptionsPanel, Separated_RadioButton, _("Separated Level0"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
317 SeparatedRadio->SetValue(false);
318 SeparatedRadio->SetName(_T("Separated_RadioButton"));
319 itemBoxSizer30->Add(SeparatedRadio, 0, wxALIGN_LEFT|wxALL, 5);
320
321 CompleteRadio = new wxRadioButton( OptionsPanel, Complete_RadioButton, _("Complete Level0"), wxDefaultPosition, wxDefaultSize, 0 );
322 CompleteRadio->SetValue(false);
323 CompleteRadio->SetName(_T("Complete_RadioButton"));
324 itemBoxSizer30->Add(CompleteRadio, 0, wxALIGN_LEFT|wxALL, 5);
325
326 wxStaticLine* itemStaticLine33 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
327 itemBoxSizer25->Add(itemStaticLine33, 0, wxGROW|wxALL, 5);
328
329 wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
330 itemBoxSizer25->Add(itemBoxSizer34, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
331
332 ReglobalizeButton = new wxButton( OptionsPanel, ReGlobalize_Button, _("Reglobalize"), wxDefaultPosition, wxDefaultSize, 0 );
333 ReglobalizeButton->SetName(_T("Reglobalize_Button"));
334 itemBoxSizer34->Add(ReglobalizeButton, 0, wxGROW|wxALL, 5);
335
336 // Connect events and objects
337 Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
338////@end MainWindow content construction
339
340 if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) {
341 static_cast<string>("-import:sep");
342 splitInstances = NOT_SPLIT;
343 }
344 else {
345 static_cast<string>("-import:nosep");
346 splitInstances = SPLIT;
347 }
348
349 globalPackages = getPackages();
350 globalInstalledMods = getInstallString();
351 for (int i = 0; i < globalPackages.size(); i++) {
352 Mods_CheckboxList->Append(globalPackages[i].name.c_str());
353 if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
354 }
355 TheStatusBar = StatusArea;
356 TheInstallButton = InstallButton;
357 TheProgressBar = ProgressBar;
358 OptionsPanel->Hide();
359 if(splitInstances == SPLIT) SeparatedRadio->SetValue(true);
360 else CompleteRadio->SetValue(true);
361
362
363
364 if(strImportOption == "-import:nosep") NoSepRadio->SetValue(true);
365 else SepRadio->SetValue(true);
366
367 //MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight() );
368}
369
370
371/*
372 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for SelectAll_Checkbox
373 */
374
375void MainWindow::OnSelectAllCheckboxClick( wxCommandEvent& event )
376{
377 switch(SelectAll->Get3StateValue()) {
378 case wxCHK_UNCHECKED:
379 for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
380 //SelectAll->Set3StateValue(wxCHK_CHECKED);
381 break;
382 case wxCHK_CHECKED:
383 for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, true);
384 //SelectAll->Set3StateValue(wxCHK_UNCHECKED);
385 break;
386 case wxCHK_UNDETERMINED:
387 for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
388 //SelectAll->Set3StateValue(wxCHK_CHECKED);
389 break;
390
391 }
392
393}
394
395
396/*
397 * wxEVT_CREATE event handler for Mods_CheckboxList
398 */
399
400void MainWindow::ModList_OnCreate( wxWindowCreateEvent& event )
401{
402
403
404}
405
406
407/*
408 * Should we show tooltips?
409 */
410
411bool MainWindow::ShowToolTips()
412{
413 return true;
414}
415
416/*
417 * Get bitmap resources
418 */
419
420wxBitmap MainWindow::GetBitmapResource( const wxString& name )
421{
422 // Bitmap retrieval
423////@begin MainWindow bitmap retrieval
424 wxUnusedVar(name);
425 if (name == _T("redo.xpm"))
426 {
427 wxBitmap bitmap(redo_xpm);
428 return bitmap;
429 }
430 else if (name == _T("fileopen.xpm"))
431 {
432 wxBitmap bitmap( fileopen_xpm);
433 return bitmap;
434 }
435 else if (name == _T("filesaveas.xpm"))
436 {
437 wxBitmap bitmap( filesaveas_xpm);
438 return bitmap;
439 }
440 else if (name == _T("quit.xpm"))
441 {
442 wxBitmap bitmap( quit_xpm);
443 return bitmap;
444 }
445 return wxNullBitmap;
446////@end MainWindow bitmap retrieval
447}
448
449/*
450 * Get icon resources
451 */
452
453wxIcon MainWindow::GetIconResource( const wxString& name )
454{
455 // Icon retrieval
456////@begin MainWindow icon retrieval
457 wxUnusedVar(name);
458 if (name == _T("oni_special.ico"))
459 {
460 wxIcon icon(_T("oni_special.ico"), wxBITMAP_TYPE_ICO);
461 return icon;
462 }
463 return wxNullIcon;
464////@end MainWindow icon retrieval
465}
466
467
468/*
469 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for Mods_CheckboxList1
470 */
471
472void MainWindow::OnModsCheckboxList1Selected( wxCommandEvent& event )
473{
474 //event.GetSelection
475 titleText->SetLabel(wxT(globalPackages[event.GetSelection()].name.c_str()));
476 creatorText->SetLabel(globalPackages[event.GetSelection()].creator.c_str());
477 descriptionText->SetLabel(globalPackages[event.GetSelection()].readme.c_str());
478
479 creatorText->Refresh();
480}
481
482
483/*
484 * wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1
485 */
486
487void MainWindow::OnModsCheckboxList1Toggled( wxCommandEvent& event )
488{
489 SelectAll->Set3StateValue(wxCHK_UNDETERMINED);
490 if(event.GetInt()) {
491 /*
492 switch(SelectAll->Get3StateValue()) {
493 case wxCHK_UNCHECKED:
494 break;
495 case wxCHK_CHECKED:
496 break;
497 case wxCHK_UNDETERMINED :
498 break;
499 }
500 */
501 }
502}
503
504
505/*
506 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS
507 */
508
509void MainWindow::OnOptionsClick( wxCommandEvent& event )
510{
511
512 if (!event.GetInt() ) {
513 OptionsPanel->Hide();
514 MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight());}
515 else {
516 OptionsPanel->Show();
517 MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()+OptionsPanel->GetRect().GetHeight());
518 }
519}
520
521
522/*
523 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT
524 */
525
526void MainWindow::OnExitClick( wxCommandEvent& event )
527{
528exit(0);
529}
530
531
532/*
533 * wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button
534 */
535
536
537struct recompile
538{
539 recompile(vector<string> localPackages) : thePackages(localPackages) { }
540 void operator()()
541 {
542 TheInstallButton->Disable();
543 recompileAll(thePackages);
544 TheInstallButton->Enable();
545 }
546
547 vector<string> thePackages;
548};
549
550void MainWindow::OnInstallButtonClick( wxCommandEvent& event )
551{
552
553 vector<string> localPackages;
554 localPackages.push_back("Globalize");
555 for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName );
556 if ( !localPackages.empty() ) {
557
558 //MainWindow::MainWindow().Hide();
559 // boost::thread thrd2(recompileAll(localPackages) );
560 //MainWindow::MainWindow().Show();
561 recompile packages(localPackages);
562 boost::thread thrd(packages);
563
564 }
565
566
567}
568
569void setStatusArea( string s ) {
570 TheStatusBar->SetStatusText(_(s.c_str()));
571
572 //MainWindow::MainWindow().SetSize(MainWindow::MainWindow().GetRect().GetWidth(), MainWindow::MainWindow().GetRect().GetHeight()+1);
573
574 //MainWindow::StatusBar->SetLabel("Importing Files...");
575 //StatusBar->SetLabel(s);
576//->SetLabel(s);
577
578}
579
580void setProgressBar( int i ) {
581//TheProgressBar->SetValue(
582
583 TheProgressBar->SetValue(i);
584
585}
586
587
588/*
589 * wxEVT_UPDATE_UI event handler for ID_STATUSBAR
590 */
591
592void MainWindow::OnStatusbarUpdate( wxUpdateUIEvent& event )
593{
594////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
595 // Before editing this code, remove the block markers.
596 event.Skip();
597////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
598}
599
600
601/*
602 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT
603 */
604
605void MainWindow::OnAboutClick( wxCommandEvent& event )
606{
607////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
608 // Before editing this code, remove the block markers.
609 About* window = new About(this);
610 int returnValue = window->ShowModal();
611 window->Destroy();
612////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
613}
614
615
616/*
617 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for NoSep_RadioButton
618 */
619
620void MainWindow::OnNoSepRadioButtonSelected( wxCommandEvent& event )
621{
622 static_cast<string>("-import:nosep");
623}
624
625
626/*
627 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton
628 */
629
630void MainWindow::OnSepRadioButtonSelected( wxCommandEvent& event )
631{
632 static_cast<string>("-import:sep");
633}
634
635
636/*
637 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
638 */
639
640void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event )
641{
642splitInstances = SPLIT;
643
644}
645
646
647/*
648 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton
649 */
650
651void MainWindow::OnCompleteRadioButtonSelected( wxCommandEvent& event )
652{
653splitInstances = NOT_SPLIT;
654
655}
656
657
658/*
659 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON
660 */
661
662void MainWindow::OnRefreshButtonClick( wxCommandEvent& event )
663{
664 refreshMods(globalInstalledMods);
665}
666
667
668/*
669 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD
670 */
671
672
673
674
675void MainWindow::refreshMods (vector<string> s) {
676
677 Mods_CheckboxList->Clear();
678 //globalInstalledMods = getPackages();
679 for (int i = 0; i < globalPackages.size(); i++) {
680 Mods_CheckboxList->Append(globalPackages[i].name.c_str());
681 if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
682 //else Mods_CheckboxList->Check(i,0);
683
684 }
685}
686
687void MainWindow::OnLoadClick( wxCommandEvent& event )
688{
689 static const wxChar *FILETYPES = _T(
690 "Mod Loadouts (*.cfg)|*.cfg|"
691 "All files (*.*)|*.*"
692 );
693
694 wxFileDialog* openFileDialog =
695 new wxFileDialog( this, _("Open Mod Loadout"), "", "", FILETYPES,
696 wxOPEN, wxDefaultPosition);
697
698 if ( openFileDialog->ShowModal() == wxID_OK )
699 {
700 refreshMods(getInstallString( string(openFileDialog->GetPath()) ));
701 }
702
703
704}
705
706
707/*
708 * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE
709 */
710
711void MainWindow::OnSaveClick( wxCommandEvent& event )
712{
713 static const wxChar *FILETYPES = _T(
714 "Mod Loadouts (*.cfg)|*.cfg|"
715 "All files (*.*)|*.*"
716 );
717
718 wxFileDialog* openFileDialog =
719 new wxFileDialog( this, _("Open file"), "", "", FILETYPES,
720 wxSAVE, wxDefaultPosition);
721
722 if ( openFileDialog->ShowModal() == wxID_OK )
723 {
724
725
726 //Mods_CheckboxList->
727
728
729
730 //
731
732 if ( exists( openFileDialog->GetPath().c_str() ) )
733 {
734 remove( openFileDialog->GetPath().c_str() );
735 }
736
737 ofstream file(openFileDialog->GetPath().c_str());
738
739 vector<string>list;
740 for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
741 vector<string>::iterator begin_iter = list.begin();
742 vector<string>::iterator end_iter = list.end();
743
744 sort( list.begin(), list.end() );
745
746 for( ; begin_iter != end_iter; ++begin_iter) {
747 file << *begin_iter << " ";
748 }
749
750 file.close();
751 file.clear();
752
753 //SetCurrentFilename(openFileDialog->GetFilename());
754 //theText->LoadFile(openFileDialog->GetFilename());
755 //SetStatusText(GetCurrentFilename(), 0);
756 //SetStatusText(openFileDialog->GetDirectory(),1);
757 }
758}
759
760
761/*
762 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ReGlobalize_Button
763 */
764
765void MainWindow::OnReGlobalizeButtonClick( wxCommandEvent& event )
766{
767globalizeData();
768 setProgressBar(1000);
769 setStatusArea("Done!");
770}
771
Note: See TracBrowser for help on using the repository browser.