comparison src/mainframe.cpp @ 1:f40a65687079

small fix.
author pyon@macmini
date Mon, 10 Jun 2019 05:56:36 +0900
parents 2f5584f0d127
children 45d4fd954c31
comparison
equal deleted inserted replaced
0:2f5584f0d127 1:f40a65687079
1 // Filename : mainframe.cpp 1 // Filename : mainframe.cpp
2 // Last Change: 2019-06-08 Sat 10:56:10. 2 // Last Change: 2019-06-09 Sun 17:05:28.
3 // 3 //
4 4
5 #include "id.h" 5 #include "id.h"
6 #include "appconf.h" 6 #include "appconf.h"
7 #include "mainframe.h" 7 #include "mainframe.h"
9 MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) 9 MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
10 : wxFrame( parent, id, title, pos, size, style ) 10 : wxFrame( parent, id, title, pos, size, style )
11 { 11 {
12 CreateControls(); 12 CreateControls();
13 13
14 AppConf appconf;
15 wxString dir = appconf.LoadWork();
16 m_dirPicker->SetPath( dir );
17
14 m_filelist = new FileList(); 18 m_filelist = new FileList();
15 m_filelist->SetDirectory( "./work" ); 19 m_filelist->SetDirectory( dir );
16 20
17 m_lookWindow1->SetDefaultParams( 1, SPL_W, SPL_H, SPL_DCW, SPL_DCH ); 21 m_lookWindow1->SetDefaultParams( 1, SPL_W, SPL_H, SPL_DCW, SPL_DCH );
18 m_lookWindow2->SetDefaultParams( 2, OPN1_W, OPN1_H, OPN1_DCW, OPN1_DCH ); 22 m_lookWindow2->SetDefaultParams( 2, OPN1_W, OPN1_H, OPN1_DCW, OPN1_DCH );
19 m_lookWindow3->SetDefaultParams( 3, OPN2_W, OPN2_H, OPN2_DCW, OPN2_DCH ); 23 m_lookWindow3->SetDefaultParams( 3, OPN2_W, OPN2_H, OPN2_DCW, OPN2_DCH );
20 m_lookWindow3->AddMask(); 24 m_lookWindow3->AddMask();
21 25
22 SetCanvas(); 26 UpdateCanvas();
27
28 m_listViewThumb->SetDirectory( dir );
29
30 UpdateThumbnail();
23 } 31 }
24 32
25 MainFrame::~MainFrame() 33 MainFrame::~MainFrame()
26 { 34 {
27 } 35 }
28 36
29 // Event Table 37 // Event Table
30 BEGIN_EVENT_TABLE( MainFrame, wxFrame ) 38 BEGIN_EVENT_TABLE( MainFrame, wxFrame )
31 /* 39 /*
32 EVT_TEXT( ID_HHS, MoverFrame::OnHhs )
33 EVT_TEXT_ENTER( ID_HHS, MoverFrame::OnHhs )
34 EVT_CHOICE( ID_CHOICE, MoverFrame::OnChoice ) 40 EVT_CHOICE( ID_CHOICE, MoverFrame::OnChoice )
35 EVT_CHECKBOX( ID_CPAPER, MoverFrame::OnPaperCheck ) 41 EVT_CHECKBOX( ID_CPAPER, MoverFrame::OnPaperCheck )
36 */ 42 */
37 EVT_BUTTON( ID_RST1, MainFrame::OnReset1 ) 43 EVT_BUTTON( ID_RST1, MainFrame::OnReset1 )
38 EVT_BUTTON( ID_RST2, MainFrame::OnReset2 ) 44 EVT_BUTTON( ID_RST2, MainFrame::OnReset2 )
39 EVT_BUTTON( ID_RST3, MainFrame::OnReset3 ) 45 EVT_BUTTON( ID_RST3, MainFrame::OnReset3 )
40 EVT_BUTTON( ID_RST4, MainFrame::OnReset4 ) 46 EVT_BUTTON( ID_RST4, MainFrame::OnReset4 )
41 EVT_BUTTON( ID_PRINT, MainFrame::OnPrint ) 47 EVT_BUTTON( ID_PRINT, MainFrame::OnPrint )
42 EVT_SPINCTRL( ID_SPNW1, MainFrame::OnSpinW1 ) 48 EVT_SPINCTRL( ID_SPNW1, MainFrame::OnSpinW1 )
49 EVT_TEXT( ID_HNO, MainFrame::OnHno )
50 EVT_TEXT_ENTER( ID_HNO, MainFrame::OnHno )
51 EVT_BUTTON( ID_UPDT, MainFrame::OnUpdate )
43 EVT_CLOSE( MainFrame::OnClose ) 52 EVT_CLOSE( MainFrame::OnClose )
44 /* 53 /*
45 EVT_LIST_ITEM_SELECTED( ID_THUMB, MoverFrame::OnThumbItemSelected ) 54 EVT_LIST_ITEM_SELECTED( ID_THUMB, MoverFrame::OnThumbItemSelected )
46 EVT_LIST_ITEM_DESELECTED( ID_THUMB, MoverFrame::OnThumbItemDeselected ) 55 EVT_LIST_ITEM_DESELECTED( ID_THUMB, MoverFrame::OnThumbItemDeselected )
47 EVT_LIST_ITEM_ACTIVATED( ID_THUMB, MoverFrame::OnThumbItemDClicked ) 56 EVT_LIST_ITEM_ACTIVATED( ID_THUMB, MoverFrame::OnThumbItemDClicked )
141 150
142 void MainFrame::OnSpinW1( wxSpinEvent& WXUNUSED(event) ) 151 void MainFrame::OnSpinW1( wxSpinEvent& WXUNUSED(event) )
143 { 152 {
144 } 153 }
145 154
155 void MainFrame::OnHno( wxCommandEvent& WXUNUSED(event) )
156 {
157 wxString no = m_textCtrlNo->GetValue();
158 m_textCtrlName->SetBackgroundColour( *wxRED );
159 m_textCtrlName->SetValue( wxT("It's not a No. style !") );
160 //if ( no.Len() == 10 ) SetHhsName( no );
161 }
146 /* 162 /*
147 void MainFrame::OnScanner( wxCommandEvent& WXUNUSED(event) ) 163 void MainFrame::OnScanner( wxCommandEvent& WXUNUSED(event) )
148 { 164 {
149 wxExecute( m_scanner ); 165 wxExecute( m_scanner );
150 } 166 }
151 */ 167 */
168
169 void MainFrame::OnUpdate( wxCommandEvent& WXUNUSED(event) )
170 {
171 UpdateCanvas();
172 UpdateThumbnail();
173 }
152 174
153 void MainFrame::OnClose( wxCloseEvent& WXUNUSED(event) ) 175 void MainFrame::OnClose( wxCloseEvent& WXUNUSED(event) )
154 { 176 {
155 if ( !IsIconized() && !IsMaximized() ) { 177 if ( !IsIconized() && !IsMaximized() ) {
156 AppConf appconf; 178 AppConf appconf;
157 appconf.SaveRect( GetRect() ); 179 appconf.SaveRect( GetRect() );
158 } 180 }
181 AppConf appconf;
182 appconf.SaveWork( m_dirPicker->GetPath() );
159 Destroy(); 183 Destroy();
160 } 184 }
161 185
162 // Functions 186 // Functions
163 void MainFrame::CreateControls( void ) 187 void MainFrame::CreateControls( void )
306 sbSizerDir->Add( m_comboBox, 0, wxALL, 5 ); 330 sbSizerDir->Add( m_comboBox, 0, wxALL, 5 );
307 331
308 m_staticTextDrive = new wxStaticText( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("Drive"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); 332 m_staticTextDrive = new wxStaticText( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("Drive"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
309 sbSizerDir->Add( m_staticTextDrive, 0, wxALL, 5 ); 333 sbSizerDir->Add( m_staticTextDrive, 0, wxALL, 5 );
310 334
311 //m_listBox = new wxListBox( sbSizerDir->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 335 wxString m_checkListChoices[] = { wxT("C:\\"), wxT("Y:\\"), wxT("Z:\\") };
312 //fgSizerSetup->Add( m_listBox, 0, wxALL, 5 ); 336 int m_checkListNChoices = sizeof( m_checkListChoices ) / sizeof( wxString );
337 m_checkList = new wxCheckListBox( sbSizerDir->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxSize( 100, -1 ), m_checkListNChoices, m_checkListChoices, wxLB_MULTIPLE );
338 m_checkList->Check( 0, true );
339 m_checkList->Check( 1, true );
340 m_checkList->Check( 2, true );
341 fgSizerSetup->Add( m_checkList, 0, wxALL, 5 );
313 342
314 fgSizerSetup->Add( 0, 0, 1, wxEXPAND, 5 ); 343 fgSizerSetup->Add( 0, 0, 1, wxEXPAND, 5 );
315 344
316 m_buttonMkdir = new wxButton( sbSizerDir->GetStaticBox(), ID_MKDIR, wxT("Mkdir"), wxDefaultPosition, wxDefaultSize, 0 ); 345 m_buttonMkdir = new wxButton( sbSizerDir->GetStaticBox(), ID_MKDIR, wxT("Mkdir"), wxDefaultPosition, wxDefaultSize, 0 );
317 sbSizerDir->Add( m_buttonMkdir, 0, wxALL, 5 ); 346 sbSizerDir->Add( m_buttonMkdir, 0, wxALL, 5 );
318 347
319 sbSizerDir->Add( fgSizerSetup, 0, wxEXPAND, 5 ); 348 sbSizerDir->Add( fgSizerSetup, 1, wxEXPAND, 5 );
320 349
321 m_staticline = new wxStaticLine( sbSizerDir->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); 350 m_staticline = new wxStaticLine( sbSizerDir->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
322 sbSizerDir->Add( m_staticline, 0, wxEXPAND|wxALL, 5 ); 351 sbSizerDir->Add( m_staticline, 0, wxEXPAND|wxALL, 5 );
323 352
324 m_checkBox = new wxCheckBox( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("FilingMode"), wxDefaultPosition, wxDefaultSize, 0 ); 353 m_checkBox = new wxCheckBox( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("FilingMode"), wxDefaultPosition, wxDefaultSize, 0 );
325 sbSizerDir->Add( m_checkBox, 0, wxALL, 5 ); 354 sbSizerDir->Add( m_checkBox, 0, wxALL|wxALIGN_LEFT, 5 );
326 355
327 m_button30 = new wxButton( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 ); 356 m_button30 = new wxButton( sbSizerDir->GetStaticBox(), wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
328 sbSizerDir->Add( m_button30, 0, wxALL|wxALIGN_RIGHT, 5 ); 357 sbSizerDir->Add( m_button30, 0, wxALL|wxALIGN_RIGHT, 5 );
329 358
330 m_buttonFMove = new wxButton( sbSizerDir->GetStaticBox(), ID_FMOVE, wxT("Move"), wxDefaultPosition, wxDefaultSize, 0 ); 359 m_buttonFMove = new wxButton( sbSizerDir->GetStaticBox(), ID_FMOVE, wxT("Move"), wxDefaultPosition, wxDefaultSize, 0 );
331 sbSizerDir->Add( m_buttonFMove, 0, wxALL|wxALIGN_RIGHT, 5 ); 360 sbSizerDir->Add( m_buttonFMove, 0, wxALL|wxALIGN_RIGHT, 5 );
332 361
333 fgSizerMain->Add( sbSizerDir, 0, wxEXPAND, 5 ); 362 fgSizerMain->Add( sbSizerDir, 1, wxEXPAND, 5 );
334 363
335 // Move 364 // Move
336 wxStaticBoxSizer* sbSizerMove = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, wxT("Move") ), wxHORIZONTAL ); 365 wxStaticBoxSizer* sbSizerMove = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, wxT("Move") ), wxHORIZONTAL );
337 366
338 wxFlexGridSizer* fgSizerMove = new wxFlexGridSizer( 0, 3, 0, 0 ); 367 wxFlexGridSizer* fgSizerMove = new wxFlexGridSizer( 0, 3, 0, 0 );
347 376
348 m_textCtrlName = new wxTextCtrl( sbSizerMove->GetStaticBox(), wxID_ANY, wxT("Nobi Nobita"), wxDefaultPosition, wxDefaultSize, 0 ); 377 m_textCtrlName = new wxTextCtrl( sbSizerMove->GetStaticBox(), wxID_ANY, wxT("Nobi Nobita"), wxDefaultPosition, wxDefaultSize, 0 );
349 m_textCtrlName->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); 378 m_textCtrlName->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
350 fgSizerMove->Add( m_textCtrlName, 0, wxALL|wxALIGN_BOTTOM, 5 ); 379 fgSizerMove->Add( m_textCtrlName, 0, wxALL|wxALIGN_BOTTOM, 5 );
351 380
352 m_staticTextNo = new wxStaticText( sbSizerMove->GetStaticBox(), wxID_ANY, wxT("No"), wxDefaultPosition, wxDefaultSize, 0 ); 381 m_staticTextNo = new wxStaticText( sbSizerMove->GetStaticBox(), ID_HNO, wxT("No"), wxDefaultPosition, wxDefaultSize, 0 );
353 fgSizerMove->Add( m_staticTextNo, 0, wxALL|wxALIGN_RIGHT, 5 ); 382 fgSizerMove->Add( m_staticTextNo, 0, wxALL|wxALIGN_RIGHT, 5 );
354 383
355 m_bitmapNo = new wxStaticBitmap( sbSizerMove->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( MHNO_W, MHNO_H ), 0 ); 384 m_bitmapNo = new wxStaticBitmap( sbSizerMove->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( MHNO_W, MHNO_H ), 0 );
356 fgSizerMove->Add( m_bitmapNo, 0, wxALL, 5 ); 385 fgSizerMove->Add( m_bitmapNo, 0, wxALL, 5 );
357 386
361 390
362 fgSizerMove->Add( 50, 0, 1, wxEXPAND, 5 ); 391 fgSizerMove->Add( 50, 0, 1, wxEXPAND, 5 );
363 392
364 m_gauge = new wxGauge( sbSizerMove->GetStaticBox(), wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL ); 393 m_gauge = new wxGauge( sbSizerMove->GetStaticBox(), wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
365 m_gauge->SetValue( 0 ); 394 m_gauge->SetValue( 0 );
366 fgSizerMove->Add( m_gauge, 1, wxALL|wxEXPAND, 5 ); 395 fgSizerMove->Add( m_gauge, 1, wxALL|wxEXPAND|wxALIGN_TOP, 5 );
367 396
368 m_buttonMove = new wxButton( sbSizerMove->GetStaticBox(), ID_MOVE, wxT("Move"), wxDefaultPosition, wxDefaultSize, 0 ); 397 m_buttonMove = new wxButton( sbSizerMove->GetStaticBox(), ID_MOVE, wxT("Move"), wxDefaultPosition, wxDefaultSize, 0 );
369 fgSizerMove->Add( m_buttonMove, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); 398 fgSizerMove->Add( m_buttonMove, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 );
370 399
371 sbSizerMove->Add( fgSizerMove, 0, 0, 5 ); 400 sbSizerMove->Add( fgSizerMove, 0, 0, 5 );
401
402 sbSizerMove->Add( 40, 0, 0, wxEXPAND, 5 );
372 403
373 m_dataViewListCtrl = new wxDataViewListCtrl( sbSizerMove->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_MULTIPLE|wxDV_ROW_LINES|wxDV_VERT_RULES ); 404 m_dataViewListCtrl = new wxDataViewListCtrl( sbSizerMove->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_MULTIPLE|wxDV_ROW_LINES|wxDV_VERT_RULES );
374 m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT("No"), wxDATAVIEW_CELL_INERT, 30, static_cast<wxAlignment>(wxALIGN_RIGHT) , wxDATAVIEW_COL_RESIZABLE ); 405 m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT("No"), wxDATAVIEW_CELL_INERT, 30, static_cast<wxAlignment>(wxALIGN_RIGHT) , wxDATAVIEW_COL_RESIZABLE );
375 m_dataViewListColumnHno = m_dataViewListCtrl->AppendTextColumn( wxT("Hno"), wxDATAVIEW_CELL_INERT, 80, static_cast<wxAlignment>(wxALIGN_CENTER), wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); 406 m_dataViewListColumnHno = m_dataViewListCtrl->AppendTextColumn( wxT("Hno"), wxDATAVIEW_CELL_INERT, 80, static_cast<wxAlignment>(wxALIGN_CENTER), wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
376 m_dataViewListColumnName = m_dataViewListCtrl->AppendTextColumn( wxT("Name"), wxDATAVIEW_CELL_INERT, 80, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); 407 m_dataViewListColumnName = m_dataViewListCtrl->AppendTextColumn( wxT("Name"), wxDATAVIEW_CELL_INERT, 80, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
417 bSizerWork->Add( m_slider, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 448 bSizerWork->Add( m_slider, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
418 449
419 m_buttonUpdate = new wxButton( sbSizerWork->GetStaticBox(), ID_UPDT, wxT("Refresh"), wxDefaultPosition, wxSize( 60,-1 ), 0 ); 450 m_buttonUpdate = new wxButton( sbSizerWork->GetStaticBox(), ID_UPDT, wxT("Refresh"), wxDefaultPosition, wxSize( 60,-1 ), 0 );
420 bSizerWork->Add( m_buttonUpdate, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 451 bSizerWork->Add( m_buttonUpdate, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
421 452
422 sbSizerWork->Add( bSizerWork, 1, wxEXPAND, 5 ); 453 sbSizerWork->Add( bSizerWork, 0, wxEXPAND, 5 );
423 454
424 //m_customControl = new ( sbSizerWork->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); 455 m_listViewThumb = new ListThumbnail( sbSizerWork->GetStaticBox(), ID_THUMB, wxDefaultPosition, wxDefaultSize, wxLC_ICON );
425 //m_customControl->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT ) ); 456 //m_listViewThumb->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_INFOBK ) );
426 457 sbSizerWork->Add( m_listViewThumb, 1, wxALL|wxEXPAND, 5 );
427 //sbSizerWork->Add( m_customControl, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 );
428 458
429 bSizerTop->Add( sbSizerWork, 1, wxEXPAND, 5 ); 459 bSizerTop->Add( sbSizerWork, 1, wxEXPAND, 5 );
430 460
431 // Log 461 // Log
432 m_collapsiblePane = new wxCollapsiblePane( this, wxID_ANY, wxT("Message"), wxDefaultPosition, wxDefaultSize, wxCP_DEFAULT_STYLE ); 462 m_collapsiblePane = new wxCollapsiblePane( this, wxID_ANY, wxT("Message"), wxDefaultPosition, wxDefaultSize, wxCP_DEFAULT_STYLE );
447 this->Layout(); 477 this->Layout();
448 478
449 this->Centre( wxBOTH ); 479 this->Centre( wxBOTH );
450 } 480 }
451 481
452 void MainFrame::SetCanvas( void ) 482 void MainFrame::UpdateCanvas( void )
453 { 483 {
454 wxArrayString files = m_filelist->Update(); 484 wxArrayString files = m_filelist->Update();
455 int n = files.GetCount(); 485 int n = files.GetCount();
456 if ( n < 6 ) { 486 if ( n < 6 ) {
457 LookMarksheet( m_testpattern ); 487 LookMarksheet( m_testpattern );
469 m_lookWindow2->ResetMask1(); 499 m_lookWindow2->ResetMask1();
470 m_lookWindow3->ResetMask1(); 500 m_lookWindow3->ResetMask1();
471 m_lookWindow3->ResetMask2(); 501 m_lookWindow3->ResetMask2();
472 } 502 }
473 503
504 void MainFrame::UpdateThumbnail( void )
505 {
506 m_listViewThumb->Reload();
507 }
508
474 void MainFrame::LookMarksheet( wxString file ) 509 void MainFrame::LookMarksheet( wxString file )
475 { 510 {
476 wxImage marksheet( file, wxBITMAP_TYPE_JPEG ); 511 wxImage marksheet( file, wxBITMAP_TYPE_JPEG );
477 wxRect rect_name( 480, 1040, 1400, 380 ); 512 wxRect rect_name( 480, 1040, 1400, 380 );
478 wxRect rect_hno( 2700, 440, 1200, 200 ); 513 wxRect rect_hno( 2700, 440, 1200, 200 );
487 wxBitmap hhsno_bmp = hhsno_image.Scale( MHNO_W, MHNO_H, wxIMAGE_QUALITY_HIGH ); 522 wxBitmap hhsno_bmp = hhsno_image.Scale( MHNO_W, MHNO_H, wxIMAGE_QUALITY_HIGH );
488 m_bitmapNo->SetBitmap( hhsno_bmp ); 523 m_bitmapNo->SetBitmap( hhsno_bmp );
489 524
490 /* 525 /*
491 // 推測 526 // 推測
492 wxString hhsno = GuessHhs( file, rect_mhno ); 527 wxString no = GuessHhs( file, rect_mhno );
493 m_textCtrlHhs->SetValue( hhsno ); 528 m_textCtrlNo->SetValue( no );
494 SetHhsName( hhsno ); 529 SetHhsName( no );
495 */ 530 */
496 } 531 }
497 532
498 void MainFrame::DoMask( wxString file, wxRect rect ) 533 void MainFrame::DoMask( wxString file, wxRect rect )
499 { 534 {