diff src/myframe.cpp @ 15:de222bc84e48

Implement Mouse Gesture in Preview Dialog.
author pyon@macmini
date Sun, 15 Jun 2014 16:45:52 +0900
parents bbd65edf71d4
children 1ba97995f642
line wrap: on
line diff
--- a/src/myframe.cpp	Thu Jun 05 04:19:03 2014 +0900
+++ b/src/myframe.cpp	Sun Jun 15 16:45:52 2014 +0900
@@ -1,5 +1,5 @@
 // Filename   : myframe.cpp
-// Last Change: 23-May-2014.
+// Last Change: 05-Jun-2014.
 //
 #include "main.h"
 #include "db.h"
@@ -151,20 +151,31 @@
 /* サムネイル表示 */
 void ThumbnailPanel::SetCacheImages( wxString dirpath )
 {
+    wxBitmap bmp;
+    wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png");
+
     wxDir dir( dirpath );
     if ( !dir.IsOpened() ) return;
 
     m_imagefiles.Clear();
     wxDir::GetAllFiles( dirpath, &m_imagefiles, wxT("*.jpg"), wxDIR_FILES );
 
+    m_cachefiles.Clear();
     wxString cachedir = wxT("cache") + dirpath.AfterLast( ':' );
     wxDir cdir( cachedir );
-    if ( !cdir.IsOpened() ) return;
+    if ( !cdir.IsOpened() ) {
+        bmp.LoadFile( thumb, wxBITMAP_TYPE_PNG );
+        m_bitmap0->SetBitmap( bmp );
+        m_bitmap1->SetBitmap( bmp );
+        m_bitmap2->SetBitmap( bmp );
+        m_bitmap3->SetBitmap( bmp );
+        m_bitmap4->SetBitmap( bmp );
+        m_bitmap5->SetBitmap( bmp );
+        return;
+    }
 
-    m_cachefiles.Clear();
     wxDir::GetAllFiles( cachedir, &m_cachefiles, wxT("*.png"), wxDIR_FILES );
 
-    wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png");
     int n = m_cachefiles.GetCount();
     if ( n < 6 ) {
         while ( n < 6 ) {
@@ -173,7 +184,6 @@
         }
     }
 
-    wxBitmap bmp;
     bmp.LoadFile( m_cachefiles[0], wxBITMAP_TYPE_PNG ); m_bitmap0->SetBitmap( bmp );
     bmp.LoadFile( m_cachefiles[1], wxBITMAP_TYPE_PNG ); m_bitmap1->SetBitmap( bmp );
     bmp.LoadFile( m_cachefiles[2], wxBITMAP_TYPE_PNG ); m_bitmap2->SetBitmap( bmp );
@@ -313,8 +323,11 @@
     m_searchBox->SetFocus();
 	bSizerCmd->Add( m_searchBox, 1, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 	
+	m_buttonPaste = new wxButton( m_panelMain, ID_PASTE, wxT("貼付検索"), wxDefaultPosition, wxSize( 65, -1 ), 0 );
+	bSizerCmd->Add( m_buttonPaste, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 10 );
+	
 	m_buttonKana = new wxButton( m_panelMain, ID_KANA, wxT("カナ検索"), wxDefaultPosition, wxSize( 65, -1 ), 0 );
-	bSizerCmd->Add( m_buttonKana, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 20 );
+	bSizerCmd->Add( m_buttonKana, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
 	
 	m_buttonHist = new wxButton( m_panelMain, ID_HIST, wxT("検索履歴"), wxDefaultPosition, wxSize( 65, -1 ), 0 );
 	bSizerCmd->Add( m_buttonHist, 0, wxALL, 5 );
@@ -360,8 +373,9 @@
     EVT_MENU( ID_MNAPPDIR,    MyFrame::OnOpenAppDir )
     EVT_LIST_ITEM_SELECTED(  ID_LIST, MyFrame::OnSelectItem )
     EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnDClickItem )
-    EVT_BUTTON( ID_KANA, MyFrame::OnKana )
-    EVT_BUTTON( ID_HIST, MyFrame::OnHistory )
+    EVT_BUTTON( ID_PASTE, MyFrame::OnPaste )
+    EVT_BUTTON( ID_KANA,  MyFrame::OnKana )
+    EVT_BUTTON( ID_HIST,  MyFrame::OnHistory )
     EVT_TEXT_ENTER( ID_SEARCH, MyFrame::OnCommand )
     EVT_SIZE( MyFrame::OnWinSize )
     EVT_MOVE( MyFrame::OnWinMove )
@@ -711,6 +725,31 @@
     wxExecute( execmd );
 }
 
+/* 貼付検索 */
+void MyFrame::OnPaste( wxCommandEvent& WXUNUSED(event) )
+{
+    wxString s;
+    if ( wxTheClipboard->Open() ) {
+        if ( wxTheClipboard->IsSupported( wxDF_TEXT ) ) {
+            wxTextDataObject data;
+            wxTheClipboard->GetData( data );
+            s = data.GetText();
+        }
+        wxTheClipboard->Close();
+    }
+
+    wxRegEx reHhs( wxT("^0[1238][0-9]{8}$") );
+    if ( reHhs.Matches( s ) ) {
+        m_hhsno = s;
+        UpdateList( m_hhsno );
+        UpdateThumbmail( 0 );
+        return;
+    }
+    else {
+        wxMessageBox( wxT("被保険者番号ではありません.") );
+    }
+}
+
 /* カナ検索ダイアログ */
 void MyFrame::OnKana( wxCommandEvent& WXUNUSED(event) )
 {