Mercurial > mercurial > hgweb_rsearcher.cgi
diff src/rsearcher.cpp @ 0:d3b8cd5aeb70
make repo.
author | pyon@macmini |
---|---|
date | Sun, 30 Sep 2018 17:27:04 +0900 |
parents | |
children | eaa27e4ed5be |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rsearcher.cpp Sun Sep 30 17:27:04 2018 +0900 @@ -0,0 +1,412 @@ +// Filename : rsearcher.cpp +// Last Change: 2018-09-16 Sun 18:25:30. +// + +#include "rsearcher.h" +#include "main.h" + +/********************/ +/** MySearchCtrl **/ +/********************/ +MySearchCtrl::MySearchCtrl( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style ) + : wxSearchCtrl( parent, id, value, pos, size, style ) +{ + m_parent = parent; + SetMaxLength( 10 ); + #ifndef __WXMAC__ + ShowSearchButton( true ); + #endif + ShowCancelButton( false ); + + wxFont font( 12, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD ); + SetFont( font ); +} + +MySearchCtrl::~MySearchCtrl() +{ +} + +// Event Table +BEGIN_EVENT_TABLE( MySearchCtrl, wxSearchCtrl ) + EVT_CHAR( MySearchCtrl::OnKey ) +END_EVENT_TABLE() + +// Event Handlers & Functions +void MySearchCtrl::OnKey( wxKeyEvent& event ) +{ + int kc = event.GetKeyCode(); + + if ( kc == 13 ) { // Enter + // select all + wxString s = GetValue(); + + MainFrame* f = (MainFrame*)FindWindowById( ID_MAIN ); + f->Cmd( s ); + + wxMessageBox( "Enter ed" ); + event.Skip(); + return; + } + + if ( kc == 45 ) { // Num-Key '-' as Backspace + wxString t = GetStringSelection(); + if ( t.IsEmpty() ) { + long p = GetInsertionPoint(); + if ( p > 0 ) Remove( p - 1, p ); + } + else { + Cut(); + } + return; + } + + if ( kc == WXK_ESCAPE ) { // clear by ESC + this->Clear(); + return; + } + + event.Skip(); +} + +/********************/ +/** MyStaticBitmap **/ +/********************/ +MyStaticBitmap::MyStaticBitmap( wxScrolledWindow *parent, wxWindowID id, const wxBitmap &label, const wxPoint &pos, const wxSize &size, long style, const wxString &name ) + : wxStaticBitmap( parent, id, label, pos, size, style, name ) +{ + m_parent = parent; + Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( MyStaticBitmap::OnLeftDown ), NULL, this ); + Connect( wxEVT_LEFT_UP, wxMouseEventHandler( MyStaticBitmap::OnLeftUp ), NULL, this ); + Connect( wxEVT_MOTION, wxMouseEventHandler( MyStaticBitmap::OnMotion ), NULL, this ); + Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( MyStaticBitmap::OnWheel ), NULL, this ); +} + +MyStaticBitmap::~MyStaticBitmap() +{ + Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( MyStaticBitmap::OnLeftDown ), NULL, this ); + Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( MyStaticBitmap::OnLeftUp ), NULL, this ); + Disconnect( wxEVT_MOTION, wxMouseEventHandler( MyStaticBitmap::OnMotion ), NULL, this ); + Disconnect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( MyStaticBitmap::OnWheel ), NULL, this ); +} + +// Event Handlers +void MyStaticBitmap::OnWheel( wxMouseEvent& event ) +{ + if ( event.ControlDown() ) { + if ( event.GetWheelRotation() < 0 ) { + if ( m_zoom < 4 ) m_zoom++; + } + else { + if ( m_zoom > 0 ) m_zoom--; + } + SetBitmap( m_bmp[ m_zoom ] ); + m_parent->SetScrollbars( 10, 10, m_bmp[ m_zoom ].GetWidth() / 10, m_bmp[ m_zoom ].GetHeight() / 10 ); + return; + } + event.Skip(); +} + +void MyStaticBitmap::OnLeftDown( wxMouseEvent& event ) +{ + event.GetPosition( &m_dragx, &m_dragy ); + SetCursor( wxCursor( wxCURSOR_SIZING ) ); +} + +void MyStaticBitmap::OnLeftUp( wxMouseEvent& WXUNUSED(event) ) +{ + SetCursor( wxCursor( wxCURSOR_ARROW ) ); +} + +void MyStaticBitmap::OnMotion( wxMouseEvent& event ) +{ + if ( event.Dragging() ) { + int xv, yv, x, y; + m_parent->GetViewStart( &xv, &yv ); + + event.GetPosition( &x, &y ); + + int xa = abs( x - m_dragx ); + int ya = abs( y - m_dragy ); + int xs = x - m_dragx < 0 ? -1 : 1; + int ys = y - m_dragy < 0 ? -1 : 1; + + /* handai dakedo sumu-zu + m_parent->Scroll( xv + xs * log10( xa + 1 ), yv + ys * log10( ya + 1 ) ); + */ + m_parent->Scroll( xv + xs * log10( xa + 1 ), yv + ys * log10( ya + 1 ) ); + + m_dragx = x; m_dragy = y; + } +} + +// Functions + +/********************/ +/** Main Frame **/ +/********************/ +MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) + : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetIcon( wxIcon( wxT( "sample" ) ) ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + //this->SetBackgroundColour( wxColour( 0, 150, 230 ) ); + + wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL ); + + // Left + wxImageList* imgList = new wxImageList( 16, 16, false, 1 ); + wxBitmap bmp( wxT( "image/blue.png" ), wxBITMAP_TYPE_PNG ); + imgList->Add( bmp, wxNullBitmap ); + bmp.LoadFile( wxT( "image/water.png" ), wxBITMAP_TYPE_PNG ); + imgList->Add( bmp, wxNullBitmap ); + + m_notebook = new wxNotebook( this, ID_NBOOK, wxDefaultPosition, wxDefaultSize, 0 ); + m_notebook->SetImageList( imgList ); + + m_scrolledWindow1 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow1->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow1, wxT( "Image-01" ), false, 0 ); + + m_scrolledWindow2 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow2->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow2, wxT( "Image-02" ), false, 0 ); + + m_scrolledWindow3 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow3->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow3, wxT( "Image-03" ), false, 0 ); + + m_scrolledWindow4 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow4->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow4, wxT( "Image-04" ), false, 0 ); + + m_scrolledWindow5 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow5->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow5, wxT( "Image-05" ), false, 0 ); + + m_scrolledWindow6 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_scrolledWindow6->SetScrollRate( 5, 5 ); + m_notebook->AddPage( m_scrolledWindow6, wxT( "Image-06" ), false, 0 ); + + bSizerTop->Add( m_notebook, 1, wxEXPAND|wxALL, 5 ); + + // Right + wxBoxSizer* bSizerRight = new wxBoxSizer( wxVERTICAL ); + + m_searchCtrl = new MySearchCtrl( this, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxSize( -1, 24 ), wxTE_PROCESS_ENTER ); + bSizerRight->Add( m_searchCtrl, 0, wxALL, 5 ); + m_searchCtrl->SetFocus(); + + m_textCtrlName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, -1 ), 0 ); + m_textCtrlName->SetBackgroundColour( wxColour( 180, 210, 240 ) ); + bSizerRight->Add( m_textCtrlName, 0, wxALL, 5 ); + + m_textCtrlAddr = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120, -1 ), 0 ); + m_textCtrlAddr->SetBackgroundColour( wxColour( 180, 210, 240 ) ); + bSizerRight->Add( m_textCtrlAddr, 0, wxALL|wxEXPAND, 5 ); + + m_dataViewListCtrl = new wxDataViewListCtrl( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxDV_ROW_LINES|wxDV_SINGLE ); + m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT( "No" ), wxDATAVIEW_CELL_INERT, 30, wxALIGN_RIGHT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); + m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( "Date" ), wxDATAVIEW_CELL_INERT, 120, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE ); + + bSizerRight->Add( m_dataViewListCtrl, 1, wxALL|wxEXPAND, 5 ); + + m_textCtrlLog = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerRight->Add( m_textCtrlLog, 1, wxALL|wxEXPAND, 5 ); + + m_slider = new wxSlider( this, ID_SLDR, 1, 1, 5, wxDefaultPosition, wxSize( -1,200 ), wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_LABELS|wxSL_VERTICAL ); + bSizerRight->Add( m_slider, 0, wxALL, 5 ); + + m_buttonPrint = new wxButton( this, ID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 ); + + m_button = new wxButton( this, ID_TEST, wxT( "MyButton" ), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerRight->Add( m_button, 0, wxALL, 5 ); + + bSizerTop->Add( bSizerRight, 0, wxEXPAND, 5 ); + + this->SetSizer( bSizerTop ); + this->Layout(); + + //this->Centre( wxBOTH ); + + m_staticBitmap1 = new MyStaticBitmap( m_scrolledWindow1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); + m_staticBitmap2 = new MyStaticBitmap( m_scrolledWindow2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); + m_staticBitmap3 = new MyStaticBitmap( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); + m_staticBitmap4 = new MyStaticBitmap( m_scrolledWindow4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); + m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString ); + + InDevelop(); +} + +MainFrame::~MainFrame() +{ +} + +// Event Table +BEGIN_EVENT_TABLE( MainFrame, wxFrame ) + EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked ) + EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged ) + EVT_BUTTON( ID_TEST, MainFrame::OnTestButton ) + EVT_CLOSE( MainFrame::SaveConfig ) + //EVT_IDLE( MainFrame::OnIdle ) +END_EVENT_TABLE() + + +// Event Handler +void MainFrame::OnItemDClicked( wxDataViewEvent& WXUNUSED(event) ) +{ + wxMessageBox( "dcli" ); + int r = m_dataViewListCtrl->GetSelectedRow(); + wxString no = m_dataViewListCtrl->GetTextValue( r, 0 ); + + LoadBitmaps(); +} + +void MainFrame::OnNBookChanged( wxBookCtrlEvent& WXUNUSED(event) ) +{ + for ( int i = 0; i < m_notebook->GetPageCount(); i++ ) { + m_notebook->SetPageImage( i, 1 ); + } + m_notebook->SetPageImage( m_notebook->GetSelection(), 0 ); +} + +/* +void MainFrame::OnItemSelected( wxDataViewEvent& event ) +{ + dclick or select ? +} +*/ + + +/* +void MainFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) +{ +} + +*/ +void MainFrame::SaveConfig( wxCloseEvent& WXUNUSED(event) ) +{ + if ( !IsIconized() && !IsMaximized() ) { + wxGetApp().rect = this->GetRect(); + } + Destroy(); +} + +void MainFrame::OnTestButton( wxCommandEvent& WXUNUSED(event) ) +{ + /* ok + Cmd( m_searchCtrl->GetValue() ); + Cmd( wxT( "0100012345" ) ); + */ + + wxBitmap bmp( wxT("db/19970101/img088.jpg"), wxBITMAP_TYPE_JPEG ); + int width = bmp.GetWidth(); + int height = bmp.GetHeight(); + wxImage img = bmp.ConvertToImage(); + + int ww, wh; + m_scrolledWindow1->GetSize( &ww, &wh ); + + float w = ww; + float h = w * height / width; + m_staticBitmap1->SetBitmap( wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) ); + m_scrolledWindow1->SetScrollbars( 10, 10, w / 10, h / 10 ); + + for ( int i = 0; i < 5; i++ ) { + w *= 1.1; + h *= 1.1; + m_staticBitmap1->SetImage( i, wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) ); + } +} + +// Functions +void MainFrame::Cmd( wxString cmd ) +{ + m_dataViewListCtrl->DeleteAllItems(); + + if ( cmd.Cmp( wxT( "q" ) ) == 0 || cmd.Cmp( wxT( "9" ) ) == 0 ) { + Close(); + } + + if ( cmd.Cmp( wxT( "." ) ) == 0 ) { + wxString appdir = wxGetCwd(); + wxString execmd = wxT( "explorer " ) + appdir; + wxExecute( execmd ); + return; + } + + wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) ); + if ( reHhs.Matches( cmd ) ) { + wxArrayString output, errors; + cmd = wxT( "./rsearcher -q " ) + cmd; + wxExecute( cmd, output, errors, wxEXEC_SYNC, NULL ); // ok + + if ( output.GetCount() > 0 ) { + m_textCtrlName->SetValue( output[0] ); + m_textCtrlAddr->SetValue( output[2] ); + for ( int i = 5, n = 1; i < output.GetCount(); i++, n++ ) { + wxVector<wxVariant> data; + data.push_back( wxString::Format( wxT( "%02d" ), n ) ); + data.push_back( output[i] ); + m_dataViewListCtrl->AppendItem( data ); + data.clear(); + } + } + + if ( errors.GetCount() > 0 ) { + wxMessageBox( errors[0], wxT( "Error" ) ); + } + } +} + +void MainFrame::LoadBitmap( wxStaticBitmap* sb, wxString file ) +{ + wxBitmap bmp( file, wxBITMAP_TYPE_JPEG ); + int width = bmp.GetWidth(); + int height = bmp.GetHeight(); + wxImage img = bmp.ConvertToImage(); + + int ww, wh; + sb->GetSize( &ww, &wh ); + + float w = ww; + float h = w * height / width; + sb->SetBitmap( wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) ); + //sb->SetScrollbars( 10, 10, w / 10, h / 10 ); + + for ( int i = 0; i < 5; i++ ) { + w *= 1.1; + h *= 1.1; + //sb->SetImage( i, wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) ); + } +} + +void MainFrame::LoadBitmaps( void ) +{ + int no = 1; + LoadBitmap( m_staticBitmap1, wxString::Format( ".cache/%02d_1", no ) ); + LoadBitmap( m_staticBitmap2, wxString::Format( ".cache/%02d_2", no ) ); + LoadBitmap( m_staticBitmap3, wxString::Format( ".cache/%02d_3", no ) ); + LoadBitmap( m_staticBitmap4, wxString::Format( ".cache/%02d_4", no ) ); + LoadBitmap( m_staticBitmap5, wxString::Format( ".cache/%02d_5", no ) ); +} + +void MainFrame::GetImage( wxString hhs, wxString no ) +{ + // http get +} + +void MainFrame::InDevelop( void ) +{ + LoadBitmaps(); + + m_slider->Enable( false ); + m_slider->Show( false ); + + m_buttonPrint->Enable( false ); + m_buttonPrint->Show( false ); + + m_button->Enable( false ); + m_button->Show( false ); +} +