Mercurial > mercurial > hgweb_rsearcher.cgi
comparison src/rsearcher.cpp @ 6:9a8b581c1993
improve performance.
author | pyon@macmini |
---|---|
date | Tue, 23 Oct 2018 19:15:22 +0900 |
parents | e3b10fb860b3 |
children | 29829e98d510 |
comparison
equal
deleted
inserted
replaced
5:e3b10fb860b3 | 6:9a8b581c1993 |
---|---|
1 // Filename : rsearcher.cpp | 1 // Filename : rsearcher.cpp |
2 // Last Change: 2018-10-22 ŒŽ 16:20:03. | 2 // Last Change: 2018-10-23 ‰Î 13:09:30. |
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> |
114 // Event Handlers | 114 // Event Handlers |
115 void MyStaticBitmap::OnWheel( wxMouseEvent& event ) | 115 void MyStaticBitmap::OnWheel( wxMouseEvent& event ) |
116 { | 116 { |
117 if ( event.ControlDown() ) { | 117 if ( event.ControlDown() ) { |
118 if ( event.GetWheelRotation() < 0 ) { | 118 if ( event.GetWheelRotation() < 0 ) { |
119 if ( m_zoom < 4 ) m_zoom++; | 119 //if ( m_zoom < 4 ) m_zoom++; |
120 } | 120 } |
121 else { | 121 else { |
122 if ( m_zoom > 0 ) m_zoom--; | 122 //if ( m_zoom > 0 ) m_zoom--; |
123 } | 123 } |
124 SetBitmap( m_bmp[ m_zoom ] ); | |
125 m_parent->SetScrollbars( 10, 10, m_bmp[ m_zoom ].GetWidth() / 10, m_bmp[ m_zoom ].GetHeight() / 10 ); | |
126 return; | 124 return; |
127 } | 125 } |
128 event.Skip(); | 126 event.Skip(); |
129 } | 127 } |
130 | 128 |
226 m_timer.SetOwner( this, ID_TIMER ); | 224 m_timer.SetOwner( this, ID_TIMER ); |
227 } | 225 } |
228 | 226 |
229 MainFrame::~MainFrame() | 227 MainFrame::~MainFrame() |
230 { | 228 { |
231 RemoveFile( wxT( "auth.db" ) ); | |
232 RemoveFile( wxT( "hhs.db" ) ); | |
233 RemoveFile( wxT( ".cache/*" ) ); | |
234 } | 229 } |
235 | 230 |
236 // Event Table | 231 // Event Table |
237 BEGIN_EVENT_TABLE( MainFrame, wxFrame ) | 232 BEGIN_EVENT_TABLE( MainFrame, wxFrame ) |
238 EVT_DATAVIEW_SELECTION_CHANGED( ID_LIST, MainFrame::OnItemSelected ) | 233 EVT_DATAVIEW_SELECTION_CHANGED( ID_LIST, MainFrame::OnItemSelected ) |
239 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked ) | 234 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked ) |
240 EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged ) | 235 EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged ) |
241 EVT_BUTTON( wxID_PRINT, MainFrame::OnPrint ) | 236 EVT_BUTTON( wxID_PRINT, MainFrame::OnPrint ) |
242 EVT_BUTTON( ID_PSEARCH, MainFrame::OnPasteSearch ) | 237 EVT_BUTTON( ID_PSEARCH, MainFrame::OnPasteSearch ) |
238 EVT_BUTTON( ID_PZOOM, MainFrame::OnPlusZoom ) | |
239 EVT_BUTTON( ID_MZOOM, MainFrame::OnMinusZoom ) | |
240 EVT_BUTTON( ID_DARK, MainFrame::OnDark ) | |
243 EVT_BUTTON( wxID_HELP, MainFrame::OnHelp ) | 241 EVT_BUTTON( wxID_HELP, MainFrame::OnHelp ) |
244 EVT_BUTTON( ID_LOGOUT, MainFrame::OnLogout ) | 242 EVT_BUTTON( ID_LOGOUT, MainFrame::OnLogout ) |
245 EVT_CLOSE( MainFrame::OnClose ) | 243 EVT_CLOSE( MainFrame::OnClose ) |
246 EVT_IDLE( MainFrame::OnIdle ) | 244 EVT_IDLE( MainFrame::OnIdle ) |
247 EVT_TIMER( ID_TIMER, MainFrame::OnTimer ) | 245 EVT_TIMER( ID_TIMER, MainFrame::OnTimer ) |
300 void MainFrame::OnPrint( wxCommandEvent& WXUNUSED(event) ) | 298 void MainFrame::OnPrint( wxCommandEvent& WXUNUSED(event) ) |
301 { | 299 { |
302 PrintImages(); | 300 PrintImages(); |
303 } | 301 } |
304 | 302 |
303 void MainFrame::OnPlusZoom( wxCommandEvent& WXUNUSED(event) ) | |
304 { | |
305 ChangeCZoom( 1 ); | |
306 } | |
307 | |
308 void MainFrame::OnMinusZoom( wxCommandEvent& WXUNUSED(event ) ) | |
309 { | |
310 ChangeCZoom( -1 ); | |
311 } | |
312 | |
313 void MainFrame::OnDark( wxCommandEvent& WXUNUSED(event ) ) | |
314 { | |
315 ChangeColor( m_staticBitmap1 ); | |
316 ChangeColor( m_staticBitmap2 ); | |
317 ChangeColor( m_staticBitmap3 ); | |
318 ChangeColor( m_staticBitmap4 ); | |
319 ChangeColor( m_staticBitmap5 ); | |
320 m_dark = !m_dark; | |
321 } | |
322 | |
305 void MainFrame::OnHelp( wxCommandEvent& WXUNUSED(event) ) | 323 void MainFrame::OnHelp( wxCommandEvent& WXUNUSED(event) ) |
306 { | 324 { |
307 wxString version, build; | 325 wxString version, build; |
308 version = wxString::Format( wxT( "Re:Searcher-- version %s / %s\n\n" ), RSVER, RSRELEASE ); | 326 version = wxString::Format( wxT( "Re:Searcher-- version %s / %s\n\n" ), RSVER, RSRELEASE ); |
309 build = wxString::Format( wxT( "build with %s\nrunning under %s." ), wxVERSION_STRING, wxGetOsDescription() ); | 327 build = wxString::Format( wxT( "build with %s\nrunning under %s." ), wxVERSION_STRING, wxGetOsDescription() ); |
411 bSizerRight->Add( m_buttonPsearch, 0, wxALL, 5 ); | 429 bSizerRight->Add( m_buttonPsearch, 0, wxALL, 5 ); |
412 | 430 |
413 m_buttonPrint = new wxButton( this, wxID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 ); | 431 m_buttonPrint = new wxButton( this, wxID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 ); |
414 bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 ); | 432 bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 ); |
415 | 433 |
416 m_buttonHelp = new wxButton( this, wxID_HELP, wxT( "Help" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
417 bSizerRight->Add( m_buttonHelp, 0, wxALL, 5 ); | |
418 | |
419 m_buttonLogout = new wxButton( this, ID_LOGOUT, wxT( "Logout" ), wxDefaultPosition, wxDefaultSize, 0 ); | 434 m_buttonLogout = new wxButton( this, ID_LOGOUT, wxT( "Logout" ), wxDefaultPosition, wxDefaultSize, 0 ); |
420 bSizerRight->Add( m_buttonLogout, 0, wxALL, 5 ); | 435 bSizerRight->Add( m_buttonLogout, 0, wxALL, 5 ); |
436 | |
437 // invisible buttons for shortcut-key | |
438 m_buttonPzoom = new wxButton( this, ID_PZOOM, wxT( "ZOOM" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
439 m_buttonPzoom->Hide(); | |
440 m_buttonMzoom = new wxButton( this, ID_MZOOM, wxT( "zoom" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
441 m_buttonMzoom->Hide(); | |
442 m_buttonDark = new wxButton( this, ID_DARK, wxT( "Dark" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
443 m_buttonDark->Hide(); | |
444 m_buttonHelp = new wxButton( this, wxID_HELP, wxT( "Help" ), wxDefaultPosition, wxDefaultSize, 0 ); | |
445 m_buttonHelp->Hide(); | |
421 | 446 |
422 bSizerTop->Add( bSizerRight, 0, wxEXPAND, 5 ); | 447 bSizerTop->Add( bSizerRight, 0, wxEXPAND, 5 ); |
423 | 448 |
424 this->SetSizer( bSizerTop ); | 449 this->SetSizer( bSizerTop ); |
425 this->Layout(); | 450 this->Layout(); |
433 m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); | 458 m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); |
434 } | 459 } |
435 | 460 |
436 void MainFrame::SetAccelerator( void ) | 461 void MainFrame::SetAccelerator( void ) |
437 { | 462 { |
438 wxAcceleratorEntry entries[2]; | 463 wxAcceleratorEntry entries[5]; |
439 entries[0].Set( wxACCEL_CTRL, (int) 'P', wxID_PRINT ); | 464 entries[0].Set( wxACCEL_CTRL, (int)'P', wxID_PRINT ); |
440 entries[1].Set( wxACCEL_NORMAL, WXK_F1, wxID_HELP ); | 465 entries[1].Set( wxACCEL_NORMAL, WXK_F1, wxID_HELP ); |
441 /* | 466 entries[2].Set( wxACCEL_NORMAL, (int)'Z', ID_PZOOM ); |
442 entries[1].Set( wxACCEL_CTRL, (int) 'X', wxID_EXIT ); | 467 entries[3].Set( wxACCEL_NORMAL, (int)'X', ID_MZOOM ); |
443 entries[2].Set( wxACCEL_SHIFT, (int) 'A', ID_ABOUT); | 468 entries[4].Set( wxACCEL_NORMAL, (int)'D', ID_DARK ); |
444 entries[3].Set( wxACCEL_NORMAL, WXK_DELETE, wxID_CUT); | 469 wxAcceleratorTable accel( 5, entries ); |
445 */ | |
446 wxAcceleratorTable accel( 2, entries ); | |
447 SetAcceleratorTable( accel ); | 470 SetAcceleratorTable( accel ); |
448 } | 471 } |
449 | 472 |
450 void MainFrame::Cmd( wxString cmd ) | 473 void MainFrame::Cmd( wxString cmd ) |
451 { | 474 { |
452 m_dataViewListCtrl->DeleteAllItems(); | 475 m_dataViewListCtrl->DeleteAllItems(); |
476 m_textCtrlName->SetValue( wxEmptyString ); | |
477 m_textCtrlAddr->SetValue( wxEmptyString ); | |
453 LoadBitmaps( wxEmptyString, false ); | 478 LoadBitmaps( wxEmptyString, false ); |
479 | |
454 wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) ); | 480 wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) ); |
455 | 481 |
456 if ( cmd.IsSameAs( wxT( "q" ), true ) || cmd.IsSameAs( wxT( "9" ), true ) ) { | 482 if ( cmd.IsSameAs( wxT( "q" ), true ) || cmd.IsSameAs( wxT( "9" ), true ) ) { |
457 Close(); | 483 Close(); |
458 return; | 484 return; |
478 PasteSeaarch(); | 504 PasteSeaarch(); |
479 return; | 505 return; |
480 } | 506 } |
481 | 507 |
482 if ( cmd.IsSameAs( wxT( "+" ), false ) ) { | 508 if ( cmd.IsSameAs( wxT( "+" ), false ) ) { |
483 PrintImages(); | 509 //PrintImages(); |
484 return; | 510 return; |
485 } | 511 } |
486 | 512 |
487 if ( reHhs.Matches( cmd ) ) { | 513 if ( reHhs.Matches( cmd ) ) { |
488 m_hhs = m_searchCtrl->GetValue(); | 514 m_hhs = m_searchCtrl->GetValue(); |
491 } | 517 } |
492 | 518 |
493 wxMessageBox( wxT( "Bad Input !!" ) ); | 519 wxMessageBox( wxT( "Bad Input !!" ) ); |
494 } | 520 } |
495 | 521 |
496 bool MainFrame::LoadBitmap( wxScrolledWindow* sc, wxStaticBitmap* sb, wxString file ) | 522 bool MainFrame::LoadBitmap( wxScrolledWindow* sc, MyStaticBitmap* sb, wxString file ) |
497 { | 523 { |
498 sb->SetBitmap( wxNullBitmap ); | 524 sb->SetBitmap( wxNullBitmap ); |
525 sb->zoom = 0; | |
499 sc->Scroll( 0, 0 ); | 526 sc->Scroll( 0, 0 ); |
500 | 527 |
501 bool ok = true; | 528 bool ok = true; |
502 if ( startup ) { | 529 if ( startup ) { |
503 file = wxT( "image/hello.jpg" ); | 530 file = wxT( "image/hello.jpg" ); |
506 if ( !wxFileExists( file ) ) { | 533 if ( !wxFileExists( file ) ) { |
507 file = wxT( "image/testpattern.jpg" ); | 534 file = wxT( "image/testpattern.jpg" ); |
508 ok = false; | 535 ok = false; |
509 } | 536 } |
510 wxBitmap bmp( file, wxBITMAP_TYPE_JPEG ); | 537 wxBitmap bmp( file, wxBITMAP_TYPE_JPEG ); |
538 sb->SetOrigImage( bmp ); | |
511 int width = bmp.GetWidth(); | 539 int width = bmp.GetWidth(); |
512 int height = bmp.GetHeight(); | 540 int height = bmp.GetHeight(); |
513 wxImage img = bmp.ConvertToImage(); | 541 wxImage img = bmp.ConvertToImage(); |
514 | 542 |
515 int ww, wh; | 543 int ww, wh; |
535 if ( !ok && reload ) { | 563 if ( !ok && reload ) { |
536 wxSleep( 5 ); | 564 wxSleep( 5 ); |
537 LoadBitmaps( date, false ); | 565 LoadBitmaps( date, false ); |
538 } | 566 } |
539 return ok; | 567 return ok; |
568 } | |
569 | |
570 void MainFrame::ChangeCZoom( int z ) | |
571 { | |
572 int n = m_notebook->GetSelection(); | |
573 if ( n == 0 ) ChangeZoom( m_scrolledWindow1, m_staticBitmap1, z ); | |
574 if ( n == 1 ) ChangeZoom( m_scrolledWindow2, m_staticBitmap2, z ); | |
575 if ( n == 2 ) ChangeZoom( m_scrolledWindow3, m_staticBitmap3, z ); | |
576 if ( n == 3 ) ChangeZoom( m_scrolledWindow4, m_staticBitmap4, z ); | |
577 if ( n == 4 ) ChangeZoom( m_scrolledWindow5, m_staticBitmap5, z ); | |
578 } | |
579 | |
580 void MainFrame::ChangeZoom( wxScrolledWindow* sc, MyStaticBitmap* sb, int z ) | |
581 { | |
582 if ( z > 0 ) sb->zoom++; | |
583 else sb->zoom--; | |
584 | |
585 float zz = pow( 1.1, sb->zoom ); | |
586 | |
587 int x, y; | |
588 sc->GetViewStart( &x, &y ); | |
589 sc->Scroll( 0, 0 ); | |
590 wxBitmap bmp = sb->GetOrigImage(); | |
591 | |
592 int width = bmp.GetWidth(); | |
593 int height = bmp.GetHeight(); | |
594 wxImage img = bmp.ConvertToImage(); | |
595 | |
596 int ww, wh; | |
597 sc->GetSize( &ww, &wh ); | |
598 | |
599 float w = ww * zz - 30; | |
600 float h = w * height / width; | |
601 sb->SetBitmap( wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) ); | |
602 sc->SetScrollbars( 10, 10, (int)w / 10, (int)h / 10 ); | |
603 sc->Scroll( x, y ); | |
604 | |
605 if ( m_dark ) ChangeColor( sb ); | |
606 } | |
607 | |
608 void MainFrame::ChangeColor( MyStaticBitmap* sb ) | |
609 { | |
610 wxBitmap bmp = sb->GetBitmap(); | |
611 wxImage img = bmp.ConvertToImage(); | |
612 unsigned char r, g, b; | |
613 for ( int x = 0; x < img.GetWidth(); x++ ) { | |
614 for ( int y = 0; y < img.GetHeight(); y++ ) { | |
615 r = 255 - img.GetRed( x, y ); | |
616 g = 255 - img.GetGreen( x, y ); | |
617 b = 255 - img.GetBlue( x, y ); | |
618 img.SetRGB( x, y, r, g, b ); | |
619 } | |
620 } | |
621 sb->SetBitmap( wxBitmap( img ) ); | |
540 } | 622 } |
541 | 623 |
542 void MainFrame::GetImages( wxString hhs, wxString date ) | 624 void MainFrame::GetImages( wxString hhs, wxString date ) |
543 { | 625 { |
544 wxArrayString args; // http get | 626 wxArrayString args; // http get |
698 p.Print( NULL, &hpout, true ); | 780 p.Print( NULL, &hpout, true ); |
699 | 781 |
700 WriteLog( wxT( "[print]" ) ); | 782 WriteLog( wxT( "[print]" ) ); |
701 } | 783 } |
702 | 784 |
703 void MainFrame::RemoveFile( wxString pattern ) | |
704 { | |
705 wxString file = wxFindFirstFile( pattern ); | |
706 while ( !file.empty() ) { | |
707 wxRemoveFile( file ); | |
708 file = wxFindNextFile(); | |
709 } | |
710 } | |
711 | |
712 void MainFrame::WriteLog( wxString msg ) | 785 void MainFrame::WriteLog( wxString msg ) |
713 { | 786 { |
714 wxDateTime now = wxDateTime::Now(); | 787 wxDateTime now = wxDateTime::Now(); |
715 wxString file = wxGetCwd() + wxFILE_SEP_PATH + wxT( "log" ) + wxFILE_SEP_PATH + now.Format( wxT( "%Y%m%d" ) ) + wxT( ".log" ); | 788 wxString file = wxGetCwd() + wxFILE_SEP_PATH + wxT( "log" ) + wxFILE_SEP_PATH + now.Format( wxT( "%Y%m%d" ) ) + wxT( ".log" ); |
716 | 789 |
725 | 798 |
726 void MainFrame::InDevelop( bool flag ) | 799 void MainFrame::InDevelop( bool flag ) |
727 { | 800 { |
728 if ( !flag ) return; | 801 if ( !flag ) return; |
729 | 802 |
730 bool he = false; | |
731 m_buttonHelp->Enable( he ); | |
732 m_buttonHelp->Show( he ); | |
733 | |
734 bool lo = false; | 803 bool lo = false; |
735 m_buttonLogout->Enable( lo ); | 804 m_buttonLogout->Enable( lo ); |
736 m_buttonLogout->Show( lo ); | 805 m_buttonLogout->Show( lo ); |
737 | 806 |
738 bool sl = false; | 807 bool sl = false; |