comparison src/rsearcher.cpp @ 10:36811fd22bd2

v1.4
author pyon@macmini
date Thu, 08 Nov 2018 19:15:43 +0900
parents ae89ce4793d8
children 799b6008db8e
comparison
equal deleted inserted replaced
9:ae89ce4793d8 10:36811fd22bd2
1 // Filename : rsearcher.cpp 1 // Filename : rsearcher.cpp
2 // Last Change: 2018-10-31 水 16:39:35. 2 // Last Change: 2018-11-08 木 14:47:21.
3 // 3 //
4 4
5 #include <wx/arrstr.h> 5 #include <wx/arrstr.h>
6 #include <wx/html/htmprint.h> 6 #include <wx/html/htmprint.h>
7 #include <wx/clipbrd.h> 7 #include <wx/clipbrd.h>
270 { 270 {
271 } 271 }
272 272
273 // Event Table 273 // Event Table
274 BEGIN_EVENT_TABLE( MainFrame, wxFrame ) 274 BEGIN_EVENT_TABLE( MainFrame, wxFrame )
275 EVT_SPLITTER_DCLICK( ID_SPLIT, MainFrame::OnSplitWin )
275 EVT_DATAVIEW_SELECTION_CHANGED( ID_LIST, MainFrame::OnItemSelected ) 276 EVT_DATAVIEW_SELECTION_CHANGED( ID_LIST, MainFrame::OnItemSelected )
276 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked ) 277 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked )
278 EVT_DATAVIEW_SELECTION_CHANGED( ID_LISTKANA, MainFrame::OnKanaItemSelected )
279 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LISTKANA, MainFrame::OnKanaItemDClicked )
277 EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged ) 280 EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged )
278 EVT_BUTTON( ID_PSEARCH, MainFrame::OnPasteSearch ) 281 EVT_BUTTON( ID_PSEARCH, MainFrame::OnPasteSearch )
279 EVT_BUTTON( wxID_PRINT, MainFrame::OnPrint ) 282 EVT_BUTTON( wxID_PRINT, MainFrame::OnPrint )
280 EVT_CLOSE( MainFrame::OnClose ) 283 EVT_CLOSE( MainFrame::OnClose )
281 EVT_IDLE( MainFrame::OnIdle ) 284 EVT_IDLE( MainFrame::OnIdle )
291 EVT_BUTTON( ID_LOGOUT, MainFrame::OnLogout ) 294 EVT_BUTTON( ID_LOGOUT, MainFrame::OnLogout )
292 END_EVENT_TABLE() 295 END_EVENT_TABLE()
293 296
294 297
295 // Event Handler 298 // Event Handler
299 void MainFrame::OnSplitWin( wxSplitterEvent& WXUNUSED(event) )
300 {
301 int w, h;
302 this->GetSize( &w, &h );
303 m_splitter->SetSashPosition( w - 200, true );
304 }
305
296 void MainFrame::OnItemSelected( wxDataViewEvent& WXUNUSED(event) ) 306 void MainFrame::OnItemSelected( wxDataViewEvent& WXUNUSED(event) )
297 { 307 {
298 int r = m_dataViewListCtrl->GetSelectedRow(); 308 int r = m_dataViewListCtrl->GetSelectedRow();
299 if ( r == wxNOT_FOUND ) return; 309 if ( r == wxNOT_FOUND ) return;
300 310
317 wxString date = m_dataViewListCtrl->GetTextValue( r, 1 ); 327 wxString date = m_dataViewListCtrl->GetTextValue( r, 1 );
318 date.Replace( wxT( "-" ), wxEmptyString, true ); 328 date.Replace( wxT( "-" ), wxEmptyString, true );
319 GetImages( m_hhs, date ); 329 GetImages( m_hhs, date );
320 if ( LoadBitmaps( date, true ) ) 330 if ( LoadBitmaps( date, true ) )
321 m_dataViewListCtrl->SetTextValue( wxT( "OK" ), r, 2 ); 331 m_dataViewListCtrl->SetTextValue( wxT( "OK" ), r, 2 );
332 }
333
334 void MainFrame::OnKanaItemSelected( wxDataViewEvent& WXUNUSED(event) )
335 {
336 int r = m_dataViewListKana->GetSelectedRow();
337 if ( r == wxNOT_FOUND ) return;
338 }
339
340 void MainFrame::OnKanaItemDClicked( wxDataViewEvent& WXUNUSED(event) )
341 {
342 m_dataViewListCtrl->DeleteAllItems();
343 wxGetApp().RemoveFile( wxT( ".cache/*" ) );
344 LoadBitmaps( wxEmptyString, false );
345
346 int r = m_dataViewListKana->GetSelectedRow();
347 m_searchCtrl->SetValue( m_dataViewListKana->GetTextValue( r, 0 ) );
348 m_textCtrlName->SetValue( m_dataViewListKana->GetTextValue( r, 1 ) );
349 m_textCtrlAddr->SetValue( m_dataViewListKana->GetTextValue( r, 2 ) );
350 m_hhs = m_searchCtrl->GetValue();
351 Search();
322 } 352 }
323 353
324 void MainFrame::OnNBookChanged( wxBookCtrlEvent& WXUNUSED(event) ) 354 void MainFrame::OnNBookChanged( wxBookCtrlEvent& WXUNUSED(event) )
325 { 355 {
326 for ( int i = 0; i < m_notebook->GetPageCount(); i++ ) { 356 for ( int i = 0; i < m_notebook->GetPageCount(); i++ ) {
397 } 427 }
398 428
399 void MainFrame::OnHelp( wxCommandEvent& WXUNUSED(event) ) 429 void MainFrame::OnHelp( wxCommandEvent& WXUNUSED(event) )
400 { 430 {
401 wxString version, build; 431 wxString version, build;
402 version = wxString::Format( wxT( "Re:Searcher-- version %s / %s\n\n" ), RSVER, RSRELEASE ); 432 version = wxString::Format( wxT( "Re:Searcher -- version %s / %s\n\n" ), RSVER, RSRELEASE );
403 build = wxString::Format( wxT( "build with %s\nrunning under %s." ), wxVERSION_STRING, wxGetOsDescription() ); 433 build = wxString::Format( wxT( "build with %s\nrunning under %s." ), wxVERSION_STRING, wxGetOsDescription() );
404 434
405 wxMessageBox( version + build, wxT( "Help" ) ); 435 wxMessageBox( version + build, wxT( "Help" ) );
406 return; 436 return;
407 } 437 }
429 459
430 // Functions 460 // Functions
431 void MainFrame::CreateControls( void ) 461 void MainFrame::CreateControls( void )
432 { 462 {
433 this->SetIcon( wxIcon( wxT( "sample" ) ) ); 463 this->SetIcon( wxIcon( wxT( "sample" ) ) );
434 this->SetSizeHints( wxDefaultSize, wxDefaultSize ); 464 this->SetSizeHints( wxSize( 400, 300 ), wxDefaultSize );
435 this->SetBackgroundColour( wxColour( 30, 80, 40 ) ); 465 this->SetBackgroundColour( wxColour( 30, 80, 40 ) );
436 //this->SetBackgroundColour( wxColour( 153, 153, 153 ) ); 466 //this->SetBackgroundColour( wxColour( 153, 153, 153 ) );
437 467
438 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL ); 468 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL );
469
470 m_splitter = new wxSplitterWindow( this, ID_SPLIT, wxDefaultPosition, wxDefaultSize, wxSP_THIN_SASH );
471 m_splitter->SetMinimumPaneSize( 20 );
472 m_panelLeft = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
473 m_panelLeft->SetBackgroundColour( wxColour( 30, 80, 40 ) );
474 m_panelRight = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
475 m_panelRight->SetBackgroundColour( wxColour( 30, 80, 40 ) );
476
477 int w, h;
478 this->GetSize( &w, &h );
479 m_splitter->SplitVertically( m_panelLeft, m_panelRight, w - 200 );
439 480
440 // Left 481 // Left
482 wxBoxSizer* bSizerLeft = new wxBoxSizer( wxVERTICAL );
483
441 wxImageList* imgList = new wxImageList( 16, 16, false, 1 ); 484 wxImageList* imgList = new wxImageList( 16, 16, false, 1 );
442 wxBitmap bmp( wxT( "image/blue.png" ), wxBITMAP_TYPE_PNG ); 485 wxBitmap bmp( wxT( "image/blue.png" ), wxBITMAP_TYPE_PNG );
443 imgList->Add( bmp, wxNullBitmap ); 486 imgList->Add( bmp, wxNullBitmap );
444 bmp.LoadFile( wxT( "image/water.png" ), wxBITMAP_TYPE_PNG ); 487 bmp.LoadFile( wxT( "image/water.png" ), wxBITMAP_TYPE_PNG );
445 imgList->Add( bmp, wxNullBitmap ); 488 imgList->Add( bmp, wxNullBitmap );
446 489
447 m_notebook = new wxNotebook( this, ID_NBOOK, wxDefaultPosition, wxDefaultSize, 0 ); 490 m_notebook = new wxNotebook( m_panelLeft, ID_NBOOK, wxDefaultPosition, wxDefaultSize, 0 );
448 m_notebook->SetImageList( imgList ); 491 m_notebook->SetImageList( imgList );
449 492
450 m_scrolledWindow1 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); 493 m_scrolledWindow1 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
451 m_scrolledWindow1->SetScrollRate( 5, 5 ); 494 m_scrolledWindow1->SetScrollRate( 5, 5 );
452 m_notebook->AddPage( m_scrolledWindow1, wxT( "Image-01" ), false, 0 ); 495 m_notebook->AddPage( m_scrolledWindow1, wxT( "Image-01" ), false, 0 );
469 512
470 m_scrolledWindow6 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); 513 m_scrolledWindow6 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
471 m_scrolledWindow6->SetScrollRate( 5, 5 ); 514 m_scrolledWindow6->SetScrollRate( 5, 5 );
472 m_notebook->AddPage( m_scrolledWindow6, wxT( "Image-06" ), false, 0 ); 515 m_notebook->AddPage( m_scrolledWindow6, wxT( "Image-06" ), false, 0 );
473 516
474 bSizerTop->Add( m_notebook, 1, wxEXPAND|wxALL, 5 ); 517 bSizerLeft->Add( m_notebook, 1, wxEXPAND|wxALL, 5 );
518 m_panelLeft->SetSizer( bSizerLeft );
475 519
476 // Right 520 // Right
477 wxBoxSizer* bSizerRight = new wxBoxSizer( wxVERTICAL ); 521 wxBoxSizer* bSizerRight = new wxBoxSizer( wxVERTICAL );
478 522
479 m_searchCtrl = new MySearchCtrl( this, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxSize( -1, 24 ), wxTE_PROCESS_ENTER ); 523 m_searchCtrl = new MySearchCtrl( m_panelRight, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxSize( -1, 24 ), wxTE_PROCESS_ENTER );
480 bSizerRight->Add( m_searchCtrl, 0, wxALL, 5 ); 524 bSizerRight->Add( m_searchCtrl, 0, wxALL, 5 );
481 m_searchCtrl->SetFocus(); 525 m_searchCtrl->SetFocus();
482 526
483 m_textCtrlName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, -1 ), wxTE_READONLY ); 527 m_textCtrlName = new wxTextCtrl( m_panelRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, -1 ), wxTE_READONLY );
484 m_textCtrlName->SetBackgroundColour( wxColour( 180, 210, 240 ) ); 528 m_textCtrlName->SetBackgroundColour( wxColour( 180, 210, 240 ) );
485 bSizerRight->Add( m_textCtrlName, 0, wxALL, 5 ); 529 bSizerRight->Add( m_textCtrlName, 0, wxALL, 5 );
486 530
487 m_textCtrlAddr = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 160, -1 ), wxTE_READONLY ); 531 m_textCtrlAddr = new wxTextCtrl( m_panelRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 160, -1 ), wxTE_READONLY );
488 m_textCtrlAddr->SetBackgroundColour( wxColour( 180, 210, 240 ) ); 532 m_textCtrlAddr->SetBackgroundColour( wxColour( 180, 210, 240 ) );
489 bSizerRight->Add( m_textCtrlAddr, 0, wxALL|wxEXPAND, 5 ); 533 bSizerRight->Add( m_textCtrlAddr, 0, wxALL|wxEXPAND, 5 );
490 534
491 m_dataViewListCtrl = new wxDataViewListCtrl( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxDV_ROW_LINES|wxDV_SINGLE ); 535 m_dataViewListCtrl = new wxDataViewListCtrl( m_panelRight, ID_LIST, wxDefaultPosition, wxDefaultSize, wxDV_ROW_LINES|wxDV_SINGLE );
492 m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT( "No" ), wxDATAVIEW_CELL_INERT, 30, wxALIGN_RIGHT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); 536 m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT( "No" ), wxDATAVIEW_CELL_INERT, 30, wxALIGN_RIGHT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
493 m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( "Date" ), wxDATAVIEW_CELL_INERT, 80, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); 537 m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( " Date" ), wxDATAVIEW_CELL_INERT, 80, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
494 m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( "Ready" ), wxDATAVIEW_CELL_INERT, 60, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); 538 m_dataViewListColumnReady = m_dataViewListCtrl->AppendTextColumn( wxT( "Ready" ), wxDATAVIEW_CELL_INERT, 60, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
495
496 bSizerRight->Add( m_dataViewListCtrl, 1, wxALL|wxEXPAND, 5 ); 539 bSizerRight->Add( m_dataViewListCtrl, 1, wxALL|wxEXPAND, 5 );
497 540
498 m_textCtrlLog = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); 541 m_dataViewListKana = new wxDataViewListCtrl( m_panelRight, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxDV_ROW_LINES|wxDV_SINGLE );
499 bSizerRight->Add( m_textCtrlLog, 1, wxALL|wxEXPAND, 5 ); 542 m_dataViewListColumnKNo = m_dataViewListKana->AppendTextColumn( wxT( " No" ), wxDATAVIEW_CELL_INERT, 70, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
500 543 m_dataViewListColumnName = m_dataViewListKana->AppendTextColumn( wxT( " Name" ), wxDATAVIEW_CELL_INERT, 80, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
501 m_slider = new wxSlider( this, ID_SLDR, 1, 1, 5, wxDefaultPosition, wxSize( -1, 200 ), wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_LABELS|wxSL_VERTICAL ); 544 m_dataViewListColumnAddr = m_dataViewListKana->AppendTextColumn( wxT( " Address" ), wxDATAVIEW_CELL_INERT, -1, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
502 bSizerRight->Add( m_slider, 0, wxALL, 5 ); 545 bSizerRight->Add( m_dataViewListKana, 1, wxALL|wxEXPAND, 5 );
503 546
504 m_buttonPsearch = new wxButton( this, ID_PSEARCH, wxT( "Paste-Search" ), wxDefaultPosition, wxDefaultSize, 0 ); 547 m_textCtrlLog = new wxTextCtrl( m_panelRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1, 40 ), 0 );
548 bSizerRight->Add( m_textCtrlLog, 0, wxALL|wxEXPAND, 5 );
549
550 m_buttonPsearch = new wxButton( m_panelRight, ID_PSEARCH, wxT( "Paste-Search" ), wxDefaultPosition, wxDefaultSize, 0 );
505 bSizerRight->Add( m_buttonPsearch, 0, wxALL, 5 ); 551 bSizerRight->Add( m_buttonPsearch, 0, wxALL, 5 );
506 552
507 m_buttonPrint = new wxButton( this, wxID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 ); 553 m_buttonPrint = new wxButton( m_panelRight, wxID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 );
508 bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 ); 554 bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 );
509 555
510 m_buttonLogout = new wxButton( this, ID_LOGOUT, wxT( "Logout" ), wxDefaultPosition, wxDefaultSize, 0 ); 556 // now building...
511 bSizerRight->Add( m_buttonLogout, 0, wxALL, 5 ); 557 m_slider = new wxSlider( m_panelRight, ID_SLDR, 1, 1, 5, wxDefaultPosition, wxSize( -1, 200 ), wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_LABELS|wxSL_VERTICAL );
558 //bSizerRight->Add( m_slider, 0, wxALL, 5 );
559
560 m_buttonLogout = new wxButton( m_panelRight, ID_LOGOUT, wxT( "Logout" ), wxDefaultPosition, wxDefaultSize, 0 );
561 //bSizerRight->Add( m_buttonLogout, 0, wxALL, 5 );
512 562
513 // invisible buttons for shortcut-key 563 // invisible buttons for shortcut-key
514 m_buttonFocus = new wxButton( this, ID_FOCUS, wxT( "Focus" ), wxDefaultPosition, wxDefaultSize, 0 ); 564 m_buttonFocus = new wxButton( this, ID_FOCUS, wxT( "Focus" ), wxDefaultPosition, wxDefaultSize, 0 );
515 m_buttonFocus->Hide(); 565 m_buttonFocus->Hide();
516 m_buttonPzoom = new wxButton( this, ID_PZOOM, wxT( "ZOOM" ), wxDefaultPosition, wxDefaultSize, 0 ); 566 m_buttonPzoom = new wxButton( this, ID_PZOOM, wxT( "ZOOM" ), wxDefaultPosition, wxDefaultSize, 0 );
519 m_buttonMzoom->Hide(); 569 m_buttonMzoom->Hide();
520 m_buttonDark = new wxButton( this, ID_DARK, wxT( "Dark" ), wxDefaultPosition, wxDefaultSize, 0 ); 570 m_buttonDark = new wxButton( this, ID_DARK, wxT( "Dark" ), wxDefaultPosition, wxDefaultSize, 0 );
521 m_buttonDark->Hide(); 571 m_buttonDark->Hide();
522 m_buttonSatellite = new wxButton( this, ID_SWIN, wxT( "Satellite" ), wxDefaultPosition, wxDefaultSize, 0 ); 572 m_buttonSatellite = new wxButton( this, ID_SWIN, wxT( "Satellite" ), wxDefaultPosition, wxDefaultSize, 0 );
523 m_buttonSatellite->Hide(); 573 m_buttonSatellite->Hide();
524 m_buttonClose = new wxButton( this, wxID_CLOSE, wxT( "Close" ), wxDefaultPosition, wxDefaultSize, 0 ); 574 m_buttonClose = new wxButton( this, wxID_CLOSE, wxT( "Close" ), wxDefaultPosition, wxDefaultSize, 0 );
525 m_buttonClose->Hide(); 575 m_buttonClose->Hide();
526 m_buttonHelp = new wxButton( this, wxID_HELP, wxT( "Help" ), wxDefaultPosition, wxDefaultSize, 0 ); 576 m_buttonHelp = new wxButton( this, wxID_HELP, wxT( "Help" ), wxDefaultPosition, wxDefaultSize, 0 );
527 m_buttonHelp->Hide(); 577 m_buttonHelp->Hide();
528 578
529 bSizerTop->Add( bSizerRight, 0, wxEXPAND, 5 ); 579 m_panelRight->SetSizer( bSizerRight );
530 580
581 //
582 bSizerTop->Add( m_splitter, 1, wxEXPAND, 0 );
583
531 this->SetSizer( bSizerTop ); 584 this->SetSizer( bSizerTop );
532 this->Layout(); 585 this->Layout();
533 586
534 //this->Centre( wxBOTH ); 587 //this->Centre( wxBOTH );
535
536 m_staticBitmap1 = new MyStaticBitmap( m_scrolledWindow1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); 588 m_staticBitmap1 = new MyStaticBitmap( m_scrolledWindow1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
537 m_staticBitmap2 = new MyStaticBitmap( m_scrolledWindow2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); 589 m_staticBitmap2 = new MyStaticBitmap( m_scrolledWindow2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
538 m_staticBitmap3 = new MyStaticBitmap( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); 590 m_staticBitmap3 = new MyStaticBitmap( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
539 m_staticBitmap4 = new MyStaticBitmap( m_scrolledWindow4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); 591 m_staticBitmap4 = new MyStaticBitmap( m_scrolledWindow4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
540 m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); 592 m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
559 void MainFrame::Cmd( wxString cmd ) 611 void MainFrame::Cmd( wxString cmd )
560 { 612 {
561 m_textCtrlName->SetValue( wxEmptyString ); 613 m_textCtrlName->SetValue( wxEmptyString );
562 m_textCtrlAddr->SetValue( wxEmptyString ); 614 m_textCtrlAddr->SetValue( wxEmptyString );
563 m_dataViewListCtrl->DeleteAllItems(); 615 m_dataViewListCtrl->DeleteAllItems();
616 m_dataViewListKana->DeleteAllItems();
564 wxGetApp().RemoveFile( wxT( ".cache/*" ) ); 617 wxGetApp().RemoveFile( wxT( ".cache/*" ) );
565 LoadBitmaps( wxEmptyString, false ); 618 LoadBitmaps( wxEmptyString, false );
566 619
567 wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) ); 620 wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) );
568 621
598 } 651 }
599 652
600 if ( reHhs.Matches( cmd ) ) { 653 if ( reHhs.Matches( cmd ) ) {
601 m_hhs = m_searchCtrl->GetValue(); 654 m_hhs = m_searchCtrl->GetValue();
602 Search(); 655 Search();
656 return;
657 }
658
659 wxString hiragana = wxT( "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっ " );
660 wxString katakana = wxT( "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッ " );
661 wxRegEx reHiraGana( wxT( "^[" ) + hiragana + wxT( "]+$" ) );
662 wxRegEx reKataKana( wxT( "^[" ) + katakana + wxT( "]+$" ) );
663
664 bool fuzzy = false;
665 if ( cmd.Right( 1 ).IsSameAs( wxT( "%" ) ) ) {
666 cmd.Replace( wxT( "%" ), wxEmptyString, true );
667 fuzzy = true;
668 }
669
670 if ( reHiraGana.Matches( cmd ) || reKataKana.Matches( cmd ) ) {
671 if ( cmd.Len() < 5 ) {
672 wxMessageBox( wxT( "too short !" ) );
673 return;
674 }
675 if ( reHiraGana.Matches( cmd ) ) {
676 for ( int i = 0; i < hiragana.Len(); i++ )
677 cmd.Replace( hiragana[i], katakana[i], true );
678 }
679
680 int match_cnt = 0;
681 HhsHash::iterator it;
682 for( it = hhash.begin(); it != hhash.end(); ++it ){
683 wxString key = it->first, value = it->second->kana;
684 value.Replace( wxT( " " ), wxEmptyString, true );
685 if ( value.IsSameAs( cmd ) || ( fuzzy && value.StartsWith( cmd ) ) ) {
686 wxVector<wxVariant> data;
687 data.push_back( key );
688 data.push_back( it->second->name );
689 data.push_back( it->second->addr );
690 m_dataViewListKana->AppendItem( data );
691 data.clear();
692 m_dataViewListKana->ToggleWindowStyle( wxHSCROLL );
693 match_cnt++;
694 }
695 }
696
697 if ( match_cnt == 1 ) {
698 m_searchCtrl->SetValue( m_dataViewListKana->GetTextValue( 0, 0 ) );
699 m_textCtrlName->SetValue( m_dataViewListKana->GetTextValue( 0, 1 ) );
700 m_textCtrlAddr->SetValue( m_dataViewListKana->GetTextValue( 0, 2 ) );
701 m_hhs = m_searchCtrl->GetValue();
702 Search();
703 }
704
705 if ( match_cnt == 0 ) {
706 wxMessageBox( wxT( "No name matched." ) );
707 }
603 return; 708 return;
604 } 709 }
605 710
606 wxMessageBox( wxT( "Bad Input !!" ) ); 711 wxMessageBox( wxT( "Bad Input !!" ) );
607 } 712 }
816 m_searchCtrl->SetValue( s ); 921 m_searchCtrl->SetValue( s );
817 m_hhs = m_searchCtrl->GetValue(); 922 m_hhs = m_searchCtrl->GetValue();
818 Search(); 923 Search();
819 return; 924 return;
820 } 925 }
821 wxMessageBox( wxT( "Bad Input !!" ) ); 926 wxMessageBox( wxT( "Bad clipboard data !!" ) );
822 } 927 }
823 928
824 void MainFrame::PrintImages( void ) 929 void MainFrame::PrintImages( void )
825 { 930 {
826 int r = m_dataViewListCtrl->GetSelectedRow(); 931 int r = m_dataViewListCtrl->GetSelectedRow();