0
|
1 // Filename : rsearcher.cpp
|
3
|
2 // Last Change: 2018-10-11 –Ø 18:28:07.
|
0
|
3 //
|
|
4
|
2
|
5 #include <wx/arrstr.h>
|
3
|
6 #include <wx/html/htmprint.h>
|
0
|
7 #include "rsearcher.h"
|
|
8 #include "main.h"
|
|
9
|
|
10 /********************/
|
|
11 /** MySearchCtrl **/
|
|
12 /********************/
|
|
13 MySearchCtrl::MySearchCtrl( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style )
|
|
14 : wxSearchCtrl( parent, id, value, pos, size, style )
|
|
15 {
|
|
16 m_parent = parent;
|
|
17 SetMaxLength( 10 );
|
|
18 #ifndef __WXMAC__
|
|
19 ShowSearchButton( true );
|
|
20 #endif
|
|
21 ShowCancelButton( false );
|
|
22
|
|
23 wxFont font( 12, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD );
|
|
24 SetFont( font );
|
|
25 }
|
|
26
|
|
27 MySearchCtrl::~MySearchCtrl()
|
|
28 {
|
|
29 }
|
|
30
|
|
31 // Event Table
|
|
32 BEGIN_EVENT_TABLE( MySearchCtrl, wxSearchCtrl )
|
|
33 EVT_CHAR( MySearchCtrl::OnKey )
|
|
34 END_EVENT_TABLE()
|
|
35
|
|
36 // Event Handlers & Functions
|
|
37 void MySearchCtrl::OnKey( wxKeyEvent& event )
|
|
38 {
|
|
39 int kc = event.GetKeyCode();
|
|
40
|
|
41 if ( kc == 13 ) { // Enter
|
2
|
42 SelectAll();
|
0
|
43
|
|
44 MainFrame* f = (MainFrame*)FindWindowById( ID_MAIN );
|
2
|
45 f->Cmd( GetValue() );
|
0
|
46
|
|
47 event.Skip();
|
|
48 return;
|
|
49 }
|
|
50
|
|
51 if ( kc == 45 ) { // Num-Key '-' as Backspace
|
|
52 wxString t = GetStringSelection();
|
|
53 if ( t.IsEmpty() ) {
|
|
54 long p = GetInsertionPoint();
|
|
55 if ( p > 0 ) Remove( p - 1, p );
|
|
56 }
|
|
57 else {
|
|
58 Cut();
|
|
59 }
|
|
60 return;
|
|
61 }
|
|
62
|
|
63 if ( kc == WXK_ESCAPE ) { // clear by ESC
|
|
64 this->Clear();
|
|
65 return;
|
|
66 }
|
|
67
|
|
68 event.Skip();
|
|
69 }
|
|
70
|
|
71 /********************/
|
|
72 /** MyStaticBitmap **/
|
|
73 /********************/
|
|
74 MyStaticBitmap::MyStaticBitmap( wxScrolledWindow *parent, wxWindowID id, const wxBitmap &label, const wxPoint &pos, const wxSize &size, long style, const wxString &name )
|
|
75 : wxStaticBitmap( parent, id, label, pos, size, style, name )
|
|
76 {
|
|
77 m_parent = parent;
|
3
|
78 Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( OnLeftDown ), NULL, this );
|
|
79 Connect( wxEVT_LEFT_UP, wxMouseEventHandler( OnLeftUp ), NULL, this );
|
|
80 Connect( wxEVT_MOTION, wxMouseEventHandler( OnMotion ), NULL, this );
|
|
81 Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( OnWheel ), NULL, this );
|
|
82
|
|
83 Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OnStartRGesture ), NULL, this );
|
|
84 Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( OnEndRGesture ), NULL, this );
|
0
|
85 }
|
|
86
|
|
87 MyStaticBitmap::~MyStaticBitmap()
|
|
88 {
|
3
|
89 Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( OnLeftDown ), NULL, this );
|
|
90 Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( OnLeftUp ), NULL, this );
|
|
91 Disconnect( wxEVT_MOTION, wxMouseEventHandler( OnMotion ), NULL, this );
|
|
92 Disconnect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( OnWheel ), NULL, this );
|
|
93
|
|
94 Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OnStartRGesture ), NULL, this );
|
|
95 Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( OnEndRGesture ), NULL, this );
|
|
96
|
0
|
97 }
|
|
98
|
|
99 // Event Handlers
|
|
100 void MyStaticBitmap::OnWheel( wxMouseEvent& event )
|
|
101 {
|
|
102 if ( event.ControlDown() ) {
|
|
103 if ( event.GetWheelRotation() < 0 ) {
|
|
104 if ( m_zoom < 4 ) m_zoom++;
|
|
105 }
|
|
106 else {
|
|
107 if ( m_zoom > 0 ) m_zoom--;
|
|
108 }
|
|
109 SetBitmap( m_bmp[ m_zoom ] );
|
|
110 m_parent->SetScrollbars( 10, 10, m_bmp[ m_zoom ].GetWidth() / 10, m_bmp[ m_zoom ].GetHeight() / 10 );
|
|
111 return;
|
|
112 }
|
|
113 event.Skip();
|
|
114 }
|
|
115
|
|
116 void MyStaticBitmap::OnLeftDown( wxMouseEvent& event )
|
|
117 {
|
|
118 event.GetPosition( &m_dragx, &m_dragy );
|
|
119 SetCursor( wxCursor( wxCURSOR_SIZING ) );
|
|
120 }
|
|
121
|
|
122 void MyStaticBitmap::OnLeftUp( wxMouseEvent& WXUNUSED(event) )
|
|
123 {
|
|
124 SetCursor( wxCursor( wxCURSOR_ARROW ) );
|
|
125 }
|
|
126
|
|
127 void MyStaticBitmap::OnMotion( wxMouseEvent& event )
|
|
128 {
|
|
129 if ( event.Dragging() ) {
|
|
130 int xv, yv, x, y;
|
|
131 m_parent->GetViewStart( &xv, &yv );
|
|
132
|
|
133 event.GetPosition( &x, &y );
|
|
134
|
|
135 int xa = abs( x - m_dragx );
|
|
136 int ya = abs( y - m_dragy );
|
|
137 int xs = x - m_dragx < 0 ? -1 : 1;
|
|
138 int ys = y - m_dragy < 0 ? -1 : 1;
|
|
139
|
|
140 /* handai dakedo sumu-zu
|
|
141 m_parent->Scroll( xv + xs * log10( xa + 1 ), yv + ys * log10( ya + 1 ) );
|
|
142 */
|
|
143 m_parent->Scroll( xv + xs * log10( xa + 1 ), yv + ys * log10( ya + 1 ) );
|
|
144
|
|
145 m_dragx = x; m_dragy = y;
|
|
146 }
|
|
147 }
|
|
148
|
3
|
149 /* right-gesture: start detect */
|
|
150 void MyStaticBitmap::OnStartRGesture( wxMouseEvent& event )
|
|
151 {
|
|
152 event.GetPosition( &cx, &cy );
|
|
153 }
|
|
154
|
|
155 /* right-gesture: judge */
|
|
156 void MyStaticBitmap::OnEndRGesture( wxMouseEvent& event )
|
|
157 {
|
|
158 int x, y;
|
|
159 event.GetPosition( &x, &y );
|
|
160
|
|
161 int dx = x - cx;
|
|
162 int dy = y - cy;
|
|
163 float rad = fabs( atan2( dy, dx ) );
|
|
164 float pi = 3.14159;
|
|
165
|
|
166 // to right
|
|
167 if ( rad < pi/8 && dx > 0 ) {
|
|
168 wxMessageBox("right");
|
|
169 }
|
|
170 // to left
|
|
171 else if ( rad > pi/8*7 && rad < pi && dx < 0 ) {
|
|
172 wxMessageBox("left");
|
|
173 }
|
|
174 // to up-right
|
|
175 else if ( rad > pi/8 && rad < pi/8*3 && dx > 0 ) {
|
|
176 wxMessageBox("right-up");
|
|
177 //Close();
|
|
178 }
|
|
179 }
|
|
180
|
0
|
181 // Functions
|
|
182
|
|
183 /********************/
|
|
184 /** Main Frame **/
|
|
185 /********************/
|
|
186 MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
|
|
187 : wxFrame( parent, id, title, pos, size, style )
|
|
188 {
|
1
|
189 CreateControls();
|
3
|
190 LoadDB();
|
|
191 LoadBitmaps( wxEmptyString );
|
|
192 m_timer.SetOwner( this, ID_TIMER );
|
1
|
193 }
|
|
194
|
|
195 MainFrame::~MainFrame()
|
|
196 {
|
2
|
197 RemoveFile( wxT( "auth.db" ) );
|
|
198 RemoveFile( wxT( "hhs.db" ) );
|
|
199 RemoveFile( wxT( ".cache/*" ) );
|
1
|
200 }
|
|
201
|
|
202 // Event Table
|
|
203 BEGIN_EVENT_TABLE( MainFrame, wxFrame )
|
2
|
204 EVT_DATAVIEW_SELECTION_CHANGED( ID_LIST, MainFrame::OnItemSelected )
|
1
|
205 EVT_DATAVIEW_ITEM_ACTIVATED( ID_LIST, MainFrame::OnItemDClicked )
|
|
206 EVT_NOTEBOOK_PAGE_CHANGED( ID_NBOOK, MainFrame::OnNBookChanged )
|
3
|
207 EVT_BUTTON( wxID_PRINT, MainFrame::OnPrint )
|
|
208 EVT_BUTTON( ID_LOGOUT, MainFrame::OnLogout )
|
1
|
209 EVT_BUTTON( ID_TEST, MainFrame::OnTestButton )
|
3
|
210 EVT_CLOSE( MainFrame::OnClose )
|
|
211 EVT_IDLE( MainFrame::OnIdle )
|
|
212 EVT_TIMER( ID_TIMER, MainFrame::OnTimer )
|
1
|
213 END_EVENT_TABLE()
|
|
214
|
|
215
|
|
216 // Event Handler
|
2
|
217 void MainFrame::OnItemSelected( wxDataViewEvent& WXUNUSED(event) )
|
|
218 {
|
|
219 int r = m_dataViewListCtrl->GetSelectedRow();
|
|
220 wxString ready = m_dataViewListCtrl->GetTextValue( r, 2 );
|
3
|
221 if ( ready.IsSameAs( wxT( "OK" ), true ) ) {
|
|
222 wxString date = m_dataViewListCtrl->GetTextValue( r, 1 );
|
|
223 date.Replace( wxT( "-" ), wxEmptyString, true );
|
|
224 LoadBitmaps( date );
|
|
225 } else {
|
|
226 LoadBitmaps( wxEmptyString );
|
2
|
227 }
|
|
228 }
|
|
229
|
1
|
230 void MainFrame::OnItemDClicked( wxDataViewEvent& WXUNUSED(event) )
|
|
231 {
|
|
232 int r = m_dataViewListCtrl->GetSelectedRow();
|
3
|
233 wxString status = m_dataViewListCtrl->GetTextValue( r, 2 );
|
|
234 if ( status.IsSameAs( wxT( "OK" ), true ) ) return;
|
|
235
|
2
|
236 wxString date = m_dataViewListCtrl->GetTextValue( r, 1 );
|
|
237 date.Replace( wxT( "-" ), wxEmptyString, true );
|
|
238 GetImages( m_hhs, date );
|
3
|
239 LoadBitmaps( date );
|
|
240
|
|
241 m_dataViewListCtrl->SetTextValue( wxT( "OK" ), r, 2 );
|
1
|
242 }
|
|
243
|
|
244 void MainFrame::OnNBookChanged( wxBookCtrlEvent& WXUNUSED(event) )
|
|
245 {
|
|
246 for ( int i = 0; i < m_notebook->GetPageCount(); i++ ) {
|
|
247 m_notebook->SetPageImage( i, 1 );
|
|
248 }
|
|
249 m_notebook->SetPageImage( m_notebook->GetSelection(), 0 );
|
|
250 }
|
|
251
|
3
|
252 void MainFrame::OnClose( wxCloseEvent& WXUNUSED(event) ) // save config
|
1
|
253 {
|
|
254 if ( !IsIconized() && !IsMaximized() ) {
|
|
255 wxGetApp().rect = this->GetRect();
|
|
256 }
|
|
257 Destroy();
|
|
258 }
|
|
259
|
3
|
260 void MainFrame::OnPrint( wxCommandEvent& WXUNUSED(event) )
|
|
261 {
|
|
262 PrintImages();
|
|
263 }
|
|
264
|
|
265 void MainFrame::OnLogout( wxCommandEvent& WXUNUSED(event) )
|
|
266 {
|
|
267 wxMessageBox("logout");
|
|
268 return;
|
|
269 }
|
|
270
|
1
|
271 void MainFrame::OnTestButton( wxCommandEvent& WXUNUSED(event) )
|
|
272 {
|
2
|
273 return;
|
1
|
274 }
|
|
275
|
3
|
276
|
|
277 void MainFrame::OnTimer( wxTimerEvent& WXUNUSED(event) )
|
|
278 {
|
|
279 wxMessageBox( "timer !" );
|
|
280 // logout
|
|
281 }
|
|
282
|
|
283 void MainFrame::OnIdle( wxIdleEvent& event )
|
|
284 {
|
|
285 if ( !m_timer.IsRunning() ) {
|
|
286 m_timer.Start( 300 * 1000, wxTIMER_ONE_SHOT );
|
|
287 }
|
|
288 event.RequestMore();
|
|
289 event.Skip();
|
|
290 }
|
|
291
|
1
|
292 // Functions
|
|
293 void MainFrame::CreateControls( void )
|
|
294 {
|
0
|
295 this->SetIcon( wxIcon( wxT( "sample" ) ) );
|
|
296 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
|
297 //this->SetBackgroundColour( wxColour( 0, 150, 230 ) );
|
2
|
298 this->SetBackgroundColour( wxColour( 153, 153, 153 ) );
|
0
|
299
|
|
300 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL );
|
|
301
|
|
302 // Left
|
|
303 wxImageList* imgList = new wxImageList( 16, 16, false, 1 );
|
|
304 wxBitmap bmp( wxT( "image/blue.png" ), wxBITMAP_TYPE_PNG );
|
|
305 imgList->Add( bmp, wxNullBitmap );
|
|
306 bmp.LoadFile( wxT( "image/water.png" ), wxBITMAP_TYPE_PNG );
|
|
307 imgList->Add( bmp, wxNullBitmap );
|
|
308
|
|
309 m_notebook = new wxNotebook( this, ID_NBOOK, wxDefaultPosition, wxDefaultSize, 0 );
|
|
310 m_notebook->SetImageList( imgList );
|
|
311
|
|
312 m_scrolledWindow1 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
313 m_scrolledWindow1->SetScrollRate( 5, 5 );
|
|
314 m_notebook->AddPage( m_scrolledWindow1, wxT( "Image-01" ), false, 0 );
|
|
315
|
|
316 m_scrolledWindow2 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
317 m_scrolledWindow2->SetScrollRate( 5, 5 );
|
|
318 m_notebook->AddPage( m_scrolledWindow2, wxT( "Image-02" ), false, 0 );
|
|
319
|
|
320 m_scrolledWindow3 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
321 m_scrolledWindow3->SetScrollRate( 5, 5 );
|
|
322 m_notebook->AddPage( m_scrolledWindow3, wxT( "Image-03" ), false, 0 );
|
|
323
|
|
324 m_scrolledWindow4 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
325 m_scrolledWindow4->SetScrollRate( 5, 5 );
|
|
326 m_notebook->AddPage( m_scrolledWindow4, wxT( "Image-04" ), false, 0 );
|
|
327
|
|
328 m_scrolledWindow5 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
329 m_scrolledWindow5->SetScrollRate( 5, 5 );
|
|
330 m_notebook->AddPage( m_scrolledWindow5, wxT( "Image-05" ), false, 0 );
|
|
331
|
|
332 m_scrolledWindow6 = new wxScrolledWindow( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
|
333 m_scrolledWindow6->SetScrollRate( 5, 5 );
|
|
334 m_notebook->AddPage( m_scrolledWindow6, wxT( "Image-06" ), false, 0 );
|
|
335
|
|
336 bSizerTop->Add( m_notebook, 1, wxEXPAND|wxALL, 5 );
|
|
337
|
|
338 // Right
|
|
339 wxBoxSizer* bSizerRight = new wxBoxSizer( wxVERTICAL );
|
|
340
|
|
341 m_searchCtrl = new MySearchCtrl( this, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxSize( -1, 24 ), wxTE_PROCESS_ENTER );
|
|
342 bSizerRight->Add( m_searchCtrl, 0, wxALL, 5 );
|
|
343 m_searchCtrl->SetFocus();
|
|
344
|
|
345 m_textCtrlName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 80, -1 ), 0 );
|
|
346 m_textCtrlName->SetBackgroundColour( wxColour( 180, 210, 240 ) );
|
|
347 bSizerRight->Add( m_textCtrlName, 0, wxALL, 5 );
|
|
348
|
2
|
349 m_textCtrlAddr = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 160, -1 ), 0 );
|
0
|
350 m_textCtrlAddr->SetBackgroundColour( wxColour( 180, 210, 240 ) );
|
|
351 bSizerRight->Add( m_textCtrlAddr, 0, wxALL|wxEXPAND, 5 );
|
|
352
|
|
353 m_dataViewListCtrl = new wxDataViewListCtrl( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxDV_ROW_LINES|wxDV_SINGLE );
|
2
|
354 m_dataViewListColumnNo = m_dataViewListCtrl->AppendTextColumn( wxT( "No" ), wxDATAVIEW_CELL_INERT, 30, wxALIGN_RIGHT, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
|
|
355 m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( "Date" ), wxDATAVIEW_CELL_INERT, 80, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
|
|
356 m_dataViewListColumnDate = m_dataViewListCtrl->AppendTextColumn( wxT( "Ready" ), wxDATAVIEW_CELL_INERT, 60, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE );
|
0
|
357
|
|
358 bSizerRight->Add( m_dataViewListCtrl, 1, wxALL|wxEXPAND, 5 );
|
|
359
|
|
360 m_textCtrlLog = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
|
361 bSizerRight->Add( m_textCtrlLog, 1, wxALL|wxEXPAND, 5 );
|
|
362
|
2
|
363 m_slider = new wxSlider( this, ID_SLDR, 1, 1, 5, wxDefaultPosition, wxSize( -1, 200 ), wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_LABELS|wxSL_VERTICAL );
|
0
|
364 bSizerRight->Add( m_slider, 0, wxALL, 5 );
|
|
365
|
3
|
366 m_buttonPrint = new wxButton( this, wxID_PRINT, wxT( "Print" ), wxDefaultPosition, wxDefaultSize, 0 );
|
0
|
367 bSizerRight->Add( m_buttonPrint, 0, wxALL, 5 );
|
|
368
|
3
|
369 m_buttonLogout = new wxButton( this, ID_LOGOUT, wxT( "Logout" ), wxDefaultPosition, wxDefaultSize, 0 );
|
|
370 bSizerRight->Add( m_buttonLogout, 0, wxALL, 5 );
|
|
371
|
1
|
372 m_buttonTest = new wxButton( this, ID_TEST, wxT( "Test" ), wxDefaultPosition, wxDefaultSize, 0 );
|
|
373 bSizerRight->Add( m_buttonTest, 0, wxALL, 5 );
|
0
|
374
|
|
375 bSizerTop->Add( bSizerRight, 0, wxEXPAND, 5 );
|
|
376
|
|
377 this->SetSizer( bSizerTop );
|
|
378 this->Layout();
|
|
379
|
|
380 //this->Centre( wxBOTH );
|
|
381
|
|
382 m_staticBitmap1 = new MyStaticBitmap( m_scrolledWindow1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
|
383 m_staticBitmap2 = new MyStaticBitmap( m_scrolledWindow2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
|
384 m_staticBitmap3 = new MyStaticBitmap( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
|
385 m_staticBitmap4 = new MyStaticBitmap( m_scrolledWindow4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
|
386 m_staticBitmap5 = new MyStaticBitmap( m_scrolledWindow5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
|
387 }
|
|
388
|
|
389 void MainFrame::Cmd( wxString cmd )
|
|
390 {
|
|
391 m_dataViewListCtrl->DeleteAllItems();
|
2
|
392 LoadBitmaps( wxEmptyString );
|
0
|
393
|
2
|
394 if ( cmd.IsSameAs( wxT( "q" ), true ) || cmd.IsSameAs( wxT( "9" ), true ) ) {
|
0
|
395 Close();
|
2
|
396 return;
|
0
|
397 }
|
|
398
|
2
|
399 if ( cmd.IsSameAs( wxT( "c" ), true ) || cmd.IsSameAs( wxT( "cmd" ), true ) ) {
|
|
400 Close();
|
|
401 return;
|
|
402 }
|
|
403
|
3
|
404 if ( cmd.IsSameAs( wxT( "k" ), true ) ) {
|
|
405 // hiragana kensaku
|
|
406 return;
|
|
407 }
|
|
408
|
|
409 if ( cmd.IsSameAs( wxT( "." ), false ) ) {
|
0
|
410 wxString appdir = wxGetCwd();
|
|
411 wxString execmd = wxT( "explorer " ) + appdir;
|
|
412 wxExecute( execmd );
|
|
413 return;
|
|
414 }
|
|
415
|
3
|
416 if ( cmd.IsSameAs( wxT( "*" ), false ) ) {
|
|
417 // cmd = clipboard // paste clipboard
|
|
418 }
|
|
419
|
|
420 if ( cmd.IsSameAs( wxT( "+" ), false ) ) {
|
|
421 // print
|
|
422 return;
|
|
423 }
|
|
424
|
0
|
425 wxRegEx reHhs( wxT( "^0[1238][0-9]{8}$" ) );
|
|
426 if ( reHhs.Matches( cmd ) ) {
|
2
|
427 m_hhs = m_searchCtrl->GetValue();
|
|
428 Search();
|
|
429 return;
|
|
430 }
|
0
|
431
|
3
|
432 wxMessageBox( wxT( "Bad Input !!" ) );
|
0
|
433 }
|
|
434
|
1
|
435 void MainFrame::LoadBitmap( wxScrolledWindow* sc, wxStaticBitmap* sb, wxString file )
|
0
|
436 {
|
2
|
437 if ( startup ) {
|
|
438 file = wxT( "image/hw201810.jpg" );
|
|
439 startup = false;
|
|
440 }
|
|
441 if ( !wxFileExists( file ) ) file = wxT( "image/testpattern.jpg" );
|
0
|
442 wxBitmap bmp( file, wxBITMAP_TYPE_JPEG );
|
|
443 int width = bmp.GetWidth();
|
|
444 int height = bmp.GetHeight();
|
|
445 wxImage img = bmp.ConvertToImage();
|
|
446
|
|
447 int ww, wh;
|
1
|
448 sc->GetSize( &ww, &wh );
|
0
|
449
|
3
|
450 float w = ww - 30;
|
0
|
451 float h = w * height / width;
|
|
452 sb->SetBitmap( wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) );
|
1
|
453 sc->SetScrollbars( 10, 10, w / 10, h / 10 );
|
0
|
454
|
|
455 for ( int i = 0; i < 5; i++ ) {
|
|
456 w *= 1.1;
|
|
457 h *= 1.1;
|
|
458 //sb->SetImage( i, wxBitmap( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ) );
|
|
459 }
|
|
460 }
|
|
461
|
2
|
462 void MainFrame::LoadBitmaps( wxString date )
|
0
|
463 {
|
2
|
464 LoadBitmap( m_scrolledWindow1, m_staticBitmap1, wxString::Format( wxT( ".cache/%08s_1" ), date ) );
|
|
465 LoadBitmap( m_scrolledWindow2, m_staticBitmap2, wxString::Format( wxT( ".cache/%08s_2" ), date ) );
|
|
466 LoadBitmap( m_scrolledWindow3, m_staticBitmap3, wxString::Format( wxT( ".cache/%08s_3" ), date ) );
|
|
467 LoadBitmap( m_scrolledWindow4, m_staticBitmap4, wxString::Format( wxT( ".cache/%08s_4" ), date ) );
|
|
468 LoadBitmap( m_scrolledWindow5, m_staticBitmap5, wxString::Format( wxT( ".cache/%08s_5" ), date ) );
|
|
469 }
|
|
470
|
|
471 void MainFrame::GetImages( wxString hhs, wxString date )
|
|
472 {
|
|
473 wxArrayString args; // http get
|
|
474 args.Add( wxT( "client.exe" ) );
|
|
475 args.Add( m_server );
|
|
476 args.Add( hhs );
|
|
477 args.Add( date );
|
|
478
|
|
479 //wxMessageBox( wxJoin( args, ' ', '\\' ) );
|
3
|
480 int estimate = 5;
|
|
481 wxProgressDialog pd( wxT( "Connecting Server" ), wxT( "Start..." ), estimate, NULL, wxPD_APP_MODAL|wxPD_ELAPSED_TIME|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE );
|
|
482 pd.SetSize( wxSize( 320, 140 ) );
|
|
483
|
2
|
484 wxExecute( wxJoin( args, ' ', '\\' ), wxEXEC_ASYNC|wxEXEC_HIDE_CONSOLE );
|
3
|
485 for ( int i = 0; i < estimate; i++ ) {
|
|
486 wxSleep( 1 );
|
|
487 pd.Update( i, wxT( "Now Loading..." ) );
|
|
488 }
|
0
|
489 }
|
|
490
|
2
|
491 void MainFrame::Search( void )
|
0
|
492 {
|
2
|
493 wxString date;
|
|
494 int match_cnt = 0;
|
|
495 for ( int i = 0; i < m_index.GetCount(); i++ ) {
|
|
496 if ( m_index[i].StartsWith( m_hhs, &date ) ) {
|
|
497 wxVector<wxVariant> data;
|
|
498 data.push_back( wxString::Format( wxT( "%02d" ), ++match_cnt ) );
|
|
499 date = date.Mid( 1, 4 ) + wxT( "-" ) + date.Mid( 5, 2 ) + wxT( "-" ) + date.Mid( 7, 2 );
|
|
500 data.push_back( date );
|
|
501 data.push_back( wxEmptyString );
|
|
502 m_dataViewListCtrl->AppendItem( data );
|
|
503 data.clear();
|
|
504 }
|
|
505 }
|
3
|
506 if ( match_cnt == 0 ) wxMessageBox( wxT( "Not Matched !!" ) );
|
2
|
507 }
|
|
508
|
3
|
509 void MainFrame::LoadDB( void )
|
2
|
510 {
|
|
511 wxTextFile file;
|
|
512 file.Open( wxT( "index.db" ) );
|
|
513 for ( int i = 0; i < file.GetLineCount(); i++ )
|
|
514 m_index.Add( file.GetLine( i ) );
|
|
515 file.Close();
|
|
516 m_index.Sort( true );
|
3
|
517
|
|
518 /*
|
|
519 file.Open( wxT( "hhs.db" ) );
|
|
520 for ( int i = 0; i < file.GetLineCount(); i++ ) {
|
|
521 //
|
|
522 }
|
|
523 file.Close();
|
|
524 */
|
|
525 }
|
|
526
|
|
527 void MainFrame::PrintImages( void )
|
|
528 {
|
|
529 int r = m_dataViewListCtrl->GetSelectedRow();
|
|
530 wxString ready = m_dataViewListCtrl->GetTextValue( r, 2 );
|
|
531
|
|
532 if ( !ready.IsSameAs( wxT( "OK" ), true ) ) {
|
|
533 wxMessageBox( wxT( "Not Ready for Print !!" ) );
|
|
534 return;
|
|
535 }
|
|
536
|
|
537 wxDateTime now = wxDateTime::Now();
|
|
538 wxString nowstr = now.Format( "%Y/%m/%d %H:%M", wxDateTime::GMT9 ).c_str();
|
|
539
|
|
540 wxString date = m_dataViewListCtrl->GetTextValue( r, 1 );
|
|
541 date.Replace( wxT( "-" ), wxEmptyString, true );
|
|
542
|
|
543 wxString html, file;
|
|
544 html = wxT( "<html><body>\n" );
|
|
545
|
|
546 for ( int i = 1; i < 6; i++ ) {
|
|
547 file = wxString::Format( wxT( ".cache/%08s_%d" ), date, i );
|
|
548 html = html + wxT( "<img src=\"" ) + file + wxT( "\" width=\"750\" height=\"1060\"/>\n" );
|
|
549 html = html + wxT( "<div align=right><font size=-2><u>" ) + m_hhs + wxT( "@" ) + m_user + wxT( "#" ) + nowstr + wxT( "</u></font></div>\n\n" );
|
|
550 }
|
|
551 html = html + wxT( "</body></html>" );
|
|
552
|
|
553 // start printing
|
|
554 wxHtmlPrintout hpout( wxT( "Re:Searcher" ) );
|
|
555 hpout.SetMargins( 0, 0, 0, 0, 0 );
|
|
556 wxPrintDialogData pd;
|
|
557 wxPrinter p( &pd );
|
|
558
|
|
559 hpout.SetHtmlText( html, wxEmptyString, false );
|
|
560 p.Print( NULL, &hpout, true );
|
2
|
561 }
|
|
562
|
|
563 void MainFrame::RemoveFile( wxString pattern )
|
|
564 {
|
|
565 wxString file = wxFindFirstFile( pattern );
|
|
566 while ( !file.empty() ) {
|
|
567 wxRemoveFile( file );
|
|
568 file = wxFindNextFile();
|
|
569 }
|
0
|
570 }
|
|
571
|
1
|
572 void MainFrame::InDevelop( bool flag )
|
0
|
573 {
|
1
|
574 if ( !flag ) return;
|
0
|
575
|
3
|
576 bool lo = false;
|
|
577 m_buttonLogout->Enable( lo );
|
|
578 m_buttonLogout->Show( lo );
|
0
|
579
|
3
|
580 bool sl = false;
|
|
581 m_slider->Enable( sl );
|
|
582 m_slider->Show( sl );
|
0
|
583
|
3
|
584 bool tb = false;
|
1
|
585 m_buttonTest->Enable( tb );
|
|
586 m_buttonTest->Show( tb );
|
|
587
|
3
|
588 // search
|
|
589 m_searchCtrl->SetValue( wxT( "0100122642" ) );
|
0
|
590 }
|
|
591
|