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

Last change on this file since 324 was 324, checked in by iritscen, 11 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.