Mercurial > mercurial > hgweb_searcher03.cgi
comparison src/myframe.cpp @ 2:c066fde99517
Added Batch Print Mode.
| author | pyon@macmini |
|---|---|
| date | Fri, 23 Aug 2013 18:32:09 +0900 |
| parents | 7b6dab24f4b8 |
| children | 1a64119ab257 |
comparison
equal
deleted
inserted
replaced
| 1:7b6dab24f4b8 | 2:c066fde99517 |
|---|---|
| 1 // Filename : myframe.cpp | 1 // Filename : myframe.cpp |
| 2 // Last Change: 04-Aug-2013. | 2 // Last Change: 23-Aug-2013. |
| 3 // | 3 // |
| 4 #include "main.h" | 4 #include "main.h" |
| 5 #include "db.h" | 5 #include "db.h" |
| 6 #include "myframe.h" | |
| 7 #include "about.h" | 6 #include "about.h" |
| 8 #include "kana.h" | 7 #include "kana.h" |
| 9 #include "hist.h" | 8 #include "hist.h" |
| 10 #include "index.h" | 9 #include "index.h" |
| 11 #include "mask.h" | 10 #include "mask.h" |
| 11 #include "marksheet.h" | |
| 12 #include "myframe.h" | |
| 13 #include "bprint.h" | |
| 12 | 14 |
| 13 /////////////////////////////////////////////////////////////// | 15 /////////////////////////////////////////////////////////////// |
| 14 // カスタム検索ボックス | 16 // カスタム検索ボックス |
| 15 MySearchBox::MySearchBox( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style ) | 17 MySearchBox::MySearchBox( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style ) |
| 16 : wxSearchCtrl( parent, id, value, pos, size, style ) | 18 : wxSearchCtrl( parent, id, value, pos, size, style ) |
| 42 Cut(); | 44 Cut(); |
| 43 } | 45 } |
| 44 return; | 46 return; |
| 45 } | 47 } |
| 46 | 48 |
| 47 if ( event.GetKeyCode() == WXK_RETURN ) { | 49 if ( event.GetKeyCode() == WXK_ESCAPE ) { // clear by ESC |
| 48 | 50 this->Clear(); |
| 49 if ( s.IsSameAs( wxT("+") ) ) { | |
| 50 wxMessageBox(wxT("pripri")); | |
| 51 return; | |
| 52 } | |
| 53 | |
| 54 wxRegEx reHhs( wxT("^0[1238][0-9]{8}$") ); | |
| 55 if ( reHhs.Matches( s ) ) { | |
| 56 wxString t = GetHhsInfoByHhsNo( s ); | |
| 57 wxArrayString array = GetPathByHhsNo( s ); | |
| 58 wxMessageBox( t ); | |
| 59 return; | |
| 60 } | |
| 61 | |
| 62 wxRegEx reNo( wxT("^[0-9]{1,2}$") ); | |
| 63 if ( reNo.Matches( s ) ) { | |
| 64 return; | |
| 65 } | |
| 66 | |
| 67 //m_parent->SetStatusMessage(wxT("bad input"), 0 ); | |
| 68 return; | 51 return; |
| 69 } | 52 } |
| 70 | 53 |
| 71 event.Skip(); | 54 event.Skip(); |
| 72 } | 55 } |
| 56 | |
| 73 | 57 |
| 74 /////////////////////////////////////////////////////////////// | 58 /////////////////////////////////////////////////////////////// |
| 75 // メインフレーム | 59 // メインフレーム |
| 76 #define WINL_W 400 | 60 #define WINL_W 480 |
| 77 #define LOGO_W 200 | 61 #define LOGO_W 200 |
| 78 #define LOGO_H 92 | 62 #define LOGO_H 92 |
| 79 | 63 |
| 80 // resources | 64 // resources |
| 81 #if !defined(__WXMSW__) && !defined(__WXPM__) | 65 #if !defined(__WXMSW__) && !defined(__WXPM__) |
| 84 | 68 |
| 85 MyFrame::MyFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) | 69 MyFrame::MyFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) |
| 86 : wxFrame( parent, id, title, pos, size, style ) | 70 : wxFrame( parent, id, title, pos, size, style ) |
| 87 { | 71 { |
| 88 this->SetSizeHints( wxSize( WINL_W, 500 ), wxDefaultSize ); | 72 this->SetSizeHints( wxSize( WINL_W, 500 ), wxDefaultSize ); |
| 73 this->SetMinSize( wxSize( WINL_W, 500 ) ); | |
| 89 this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) ); | 74 this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) ); |
| 90 //this->SetBackgroundColour( wxColour(wxT("WHEAT")) ); | 75 //this->SetBackgroundColour( wxColour(wxT("WHEAT")) ); |
| 91 | 76 |
| 92 // set the frame icon | 77 // set the frame icon |
| 93 SetIcon(wxICON(sample)); | 78 SetIcon(wxICON(sample)); |
| 94 | 79 |
| 95 // メニューバー Menu | 80 // メニューバー Menu |
| 96 m_menubar = new wxMenuBar( 0 ); | 81 m_menubar = new wxMenuBar( 0 ); |
| 97 m_menuFile = new wxMenu(); | 82 m_menuFile = new wxMenu(); |
| 98 | 83 |
| 99 wxMenuItem* m_menuItemViewMode = new wxMenuItem( m_menuFile, ID_MNVIEW, wxString( wxT("ビューモード") ) , wxT("Toggle ViewMode"), wxITEM_CHECK ); | 84 wxMenuItem* m_menuItemBPrintMode = new wxMenuItem( m_menuFile, ID_MNBPNT, wxString( wxT("バッチ印刷モード\tF12") ) , wxT("Batch Print Mode"), wxITEM_NORMAL ); |
| 100 m_menuFile->Append( m_menuItemViewMode ); | 85 m_menuFile->Append( m_menuItemBPrintMode ); |
| 86 | |
| 87 wxMenuItem* m_menuItemIndex = new wxMenuItem( m_menuFile, ID_MNINDEX, wxString( wxT("インデックス\tF11") ) , wxT("Update index"), wxITEM_NORMAL ); | |
| 88 m_menuFile->Append( m_menuItemIndex ); | |
| 101 | 89 |
| 102 m_menuFile->AppendSeparator(); // ---- | 90 m_menuFile->AppendSeparator(); // ---- |
| 103 | 91 |
| 104 wxMenuItem* m_menuItemIndex = new wxMenuItem( m_menuFile, ID_MNINDEX, wxString( wxT("インデックス") ) , wxT("Update index"), wxITEM_NORMAL ); | 92 wxMenuItem* m_menuItemViewStyle = new wxMenuItem( m_menuFile, ID_MNVIEW, wxString( wxT("ビュースタイル\tF10") ) , wxT("Toggle ViewStyle"), wxITEM_CHECK ); |
| 105 m_menuFile->Append( m_menuItemIndex ); | 93 m_menuFile->Append( m_menuItemViewStyle ); |
| 106 | 94 |
| 107 wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuFile, ID_MNMASKPARAM, wxString( wxT("マスクパラメータ") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); | 95 m_menuFile->AppendSeparator(); // ---- |
| 96 | |
| 97 wxMenuItem* m_menuItemBkup = new wxMenuItem( m_menuFile, ID_MNDBBKUP, wxString( wxT("DBバックアップ(&B)") ) , wxT("Backup databases"), wxITEM_NORMAL ); | |
| 98 m_menuFile->Append( m_menuItemBkup ); | |
| 99 | |
| 100 wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuFile, ID_MNMASKPARAM, wxString( wxT("マスクパラメータ(&M)") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); | |
| 108 m_menuFile->Append( m_menuItemMask ); | 101 m_menuFile->Append( m_menuItemMask ); |
| 109 | 102 |
| 110 wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く") ) , wxT("Open application directory"), wxITEM_NORMAL ); | 103 wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く(&O)") ) , wxT("Open application directory"), wxITEM_NORMAL ); |
| 111 m_menuFile->Append( m_menuItemAppDir ); | 104 m_menuFile->Append( m_menuItemAppDir ); |
| 112 | 105 |
| 113 m_menuFile->AppendSeparator(); // ---- | 106 m_menuFile->AppendSeparator(); // ---- |
| 114 | 107 |
| 115 wxMenuItem* m_menuItemAbout = new wxMenuItem( m_menuFile, ID_MNABOUT, wxString( wxT("&About...\tF1") ) , wxT("Show about dialog"), wxITEM_NORMAL ); | 108 wxMenuItem* m_menuItemAbout = new wxMenuItem( m_menuFile, ID_MNABOUT, wxString( wxT("&About...\tF1") ) , wxT("Show about dialog"), wxITEM_NORMAL ); |
| 121 | 114 |
| 122 // | 115 // |
| 123 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); | 116 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); |
| 124 | 117 |
| 125 m_splitter = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); | 118 m_splitter = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); |
| 126 wxBoxSizer* bSizerL = new wxBoxSizer( wxVERTICAL ); | 119 wxBoxSizer* bSizerMain = new wxBoxSizer( wxVERTICAL ); |
| 127 | 120 |
| 128 // left-pane | 121 // left-pane |
| 129 m_panelL = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); | 122 m_panelMain = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); |
| 130 | 123 |
| 131 wxString logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("logo.png"); | 124 wxString logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("logo.png"); |
| 132 wxBitmap bmp = wxBitmap( logo, wxBITMAP_TYPE_PNG ); | 125 wxBitmap bmp = wxBitmap( logo, wxBITMAP_TYPE_PNG ); |
| 133 m_bitmap = new wxStaticBitmap( m_panelL, wxID_ANY, bmp, wxDefaultPosition, wxSize( LOGO_W, LOGO_H ), 0 ); | 126 m_bitmap = new wxStaticBitmap( m_panelMain, wxID_ANY, bmp, wxDefaultPosition, wxSize( LOGO_W, LOGO_H ), 0 ); |
| 134 bSizerL->Add( m_bitmap, 0, wxALL, 5 ); | 127 bSizerMain->Add( m_bitmap, 0, wxALL, 5 ); |
| 135 | 128 |
| 136 m_textCtrlName = new wxTextCtrl( m_panelL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 200, -1 ), 0 ); | 129 m_textCtrlName = new wxTextCtrl( m_panelMain, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 200, -1 ), 0 ); |
| 137 bSizerL->Add( m_textCtrlName, 0, wxALL, 5 ); | 130 bSizerMain->Add( m_textCtrlName, 0, wxALL, 5 ); |
| 138 | 131 |
| 139 m_textCtrlAddr = new wxTextCtrl( m_panelL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 380, -1 ), 0 ); | 132 m_textCtrlAddr = new wxTextCtrl( m_panelMain, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 380, -1 ), 0 ); |
| 140 bSizerL->Add( m_textCtrlAddr, 0, wxALL, 5 ); | 133 bSizerMain->Add( m_textCtrlAddr, 0, wxALL, 5 ); |
| 141 | 134 |
| 142 m_listCtrl = new wxListCtrl( m_panelL, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT ); | 135 m_listCtrl = new wxListCtrl( m_panelMain, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT ); |
| 143 wxListItem itemCol; | 136 wxListItem itemCol; |
| 144 itemCol.SetText( wxT("通番") ); | 137 itemCol.SetText( wxT("通番") ); |
| 145 m_listCtrl->InsertColumn( 0, itemCol ); | 138 m_listCtrl->InsertColumn( 0, itemCol ); |
| 146 m_listCtrl->SetColumnWidth( 0, 50 ); | 139 m_listCtrl->SetColumnWidth( 0, 50 ); |
| 147 itemCol.SetText( wxT("年月日") ); | 140 itemCol.SetText( wxT("年月日") ); |
| 148 m_listCtrl->InsertColumn( 1, itemCol ); | 141 m_listCtrl->InsertColumn( 1, itemCol ); |
| 149 m_listCtrl->SetColumnWidth( 1, 80 ); | 142 m_listCtrl->SetColumnWidth( 1, 80 ); |
| 150 itemCol.SetText( wxT("場所") ); | 143 itemCol.SetText( wxT("場所") ); |
| 151 m_listCtrl->InsertColumn( 2, itemCol ); | 144 m_listCtrl->InsertColumn( 2, itemCol ); |
| 152 m_listCtrl->SetColumnWidth( 2, 300 ); | 145 m_listCtrl->SetColumnWidth( 2, 300 ); |
| 153 bSizerL->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); | 146 bSizerMain->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); |
| 154 | 147 |
| 155 wxBoxSizer* bSizerCmd = new wxBoxSizer( wxHORIZONTAL ); | 148 wxBoxSizer* bSizerCmd = new wxBoxSizer( wxHORIZONTAL ); |
| 156 | 149 |
| 157 m_staticText = new wxStaticText( m_panelL, wxID_ANY, wxT("コマンド?"), wxDefaultPosition, wxDefaultSize, 0 ); | 150 m_staticText = new wxStaticText( m_panelMain, wxID_ANY, wxT("コマンド?"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 158 bSizerCmd->Add( m_staticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 151 bSizerCmd->Add( m_staticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 159 | 152 |
| 160 m_searchBox = new MySearchBox( m_panelL, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); | 153 m_searchBox = new MySearchBox( m_panelMain, ID_SEARCH, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); |
| 161 #ifndef __WXMAC__ | 154 #ifndef __WXMAC__ |
| 162 m_searchBox->ShowSearchButton( true ); | 155 m_searchBox->ShowSearchButton( true ); |
| 163 #endif | 156 #endif |
| 164 m_searchBox->ShowCancelButton( false ); | 157 m_searchBox->ShowCancelButton( false ); |
| 165 m_searchBox->SetFocus(); | 158 m_searchBox->SetFocus(); |
| 166 bSizerCmd->Add( m_searchBox, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 159 bSizerCmd->Add( m_searchBox, 1, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 ); |
| 167 | 160 |
| 168 m_buttonKana = new wxButton( m_panelL, ID_KANA, wxT("カナ検索"), wxDefaultPosition, wxSize( 65, -1 ), 0 ); | 161 m_buttonKana = new wxButton( m_panelMain, ID_KANA, wxT("カナ検索"), wxDefaultPosition, wxSize( 65, -1 ), 0 ); |
| 169 bSizerCmd->Add( m_buttonKana, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 20 ); | 162 bSizerCmd->Add( m_buttonKana, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 20 ); |
| 170 | 163 |
| 171 m_buttonHist = new wxButton( m_panelL, ID_HIST, wxT("検索履歴"), wxDefaultPosition, wxSize( 65, -1 ), 0 ); | 164 m_buttonHist = new wxButton( m_panelMain, ID_HIST, wxT("検索履歴"), wxDefaultPosition, wxSize( 65, -1 ), 0 ); |
| 172 bSizerCmd->Add( m_buttonHist, 0, wxALL, 5 ); | 165 bSizerCmd->Add( m_buttonHist, 0, wxALL, 5 ); |
| 173 | 166 |
| 174 bSizerL->Add( bSizerCmd, 0, wxEXPAND, 5 ); | 167 bSizerMain->Add( bSizerCmd, 0, wxEXPAND, 5 ); |
| 175 | 168 |
| 176 m_panelL->SetSizer( bSizerL ); | 169 m_panelMain->SetSizer( bSizerMain ); |
| 177 m_panelL->Layout(); | 170 m_panelMain->Layout(); |
| 178 bSizerL->Fit( m_panelL ); | 171 bSizerMain->Fit( m_panelMain ); |
| 179 | 172 |
| 180 // right-pane | 173 // right-pane |
| 181 m_panelR = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); | 174 m_panelView = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); |
| 182 wxBoxSizer* bSizerR = new wxBoxSizer( wxHORIZONTAL ); | 175 wxBoxSizer* bSizerView = new wxBoxSizer( wxHORIZONTAL ); |
| 183 | 176 |
| 184 m_bitmapView = new wxStaticBitmap( m_panelR, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); | 177 m_bitmapView = new wxStaticBitmap( m_panelView, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); |
| 185 bSizerR->Add( m_bitmapView, 1, wxALL|wxEXPAND, 5 ); | 178 bSizerView->Add( m_bitmapView, 1, wxALL|wxEXPAND, 5 ); |
| 186 | 179 |
| 187 m_listCtrlThumb = new wxListCtrl( m_panelR, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_ICON ); | 180 m_listCtrlThumb = new wxListCtrl( m_panelView, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_ICON ); |
| 188 bSizerR->Add( m_listCtrlThumb, 0, wxALL|wxEXPAND, 5 ); | 181 bSizerView->Add( m_listCtrlThumb, 0, wxALL|wxEXPAND, 5 ); |
| 189 | 182 |
| 190 m_panelR->SetSizer( bSizerR ); | 183 m_panelView->SetSizer( bSizerView ); |
| 191 m_panelR->Layout(); | 184 m_panelView->Layout(); |
| 192 bSizerR->Fit( m_panelR ); | 185 bSizerView->Fit( m_panelView ); |
| 193 | 186 |
| 194 m_panelR->Show( false ); | 187 m_panelView->Show( false ); |
| 195 m_splitter->Initialize( m_panelL ); | 188 // |
| 189 m_splitter->Initialize( m_panelMain ); | |
| 196 bSizerTop->Add( m_splitter, 1, wxEXPAND, 5 ); | 190 bSizerTop->Add( m_splitter, 1, wxEXPAND, 5 ); |
| 197 | 191 |
| 198 this->SetSizer( bSizerTop ); | 192 this->SetSizer( bSizerTop ); |
| 199 this->Layout(); | 193 this->Layout(); |
| 200 | 194 |
| 201 // ステータスバー Statusbar | 195 // ステータスバー Statusbar |
| 202 m_statusBar = new wxStatusBar( this, wxID_ANY, wxST_SIZEGRIP ); | 196 m_statusBar = new wxStatusBar( this, wxID_ANY, wxST_SIZEGRIP ); |
| 203 int widths[] = { 200, 100, -1, 90 }; | 197 int widths[] = { 200, -1, 10, 90 }; |
| 204 m_statusBar->SetFieldsCount( 4, widths ); | 198 m_statusBar->SetFieldsCount( 4, widths ); |
| 205 this->SetStatusBar( m_statusBar ); | 199 this->SetStatusBar( m_statusBar ); |
| 206 SetStatusText( wxT("被保番を入力してスタート!") ); | 200 SetStatusText( wxT("被保番を入力してスタート!") ); |
| 207 | 201 |
| 208 this->Centre( wxBOTH ); | 202 this->Centre( wxBOTH ); |
| 215 | 209 |
| 216 // Event Table | 210 // Event Table |
| 217 BEGIN_EVENT_TABLE( MyFrame, wxFrame ) | 211 BEGIN_EVENT_TABLE( MyFrame, wxFrame ) |
| 218 EVT_MENU( ID_MNABOUT, MyFrame::OnAbout ) | 212 EVT_MENU( ID_MNABOUT, MyFrame::OnAbout ) |
| 219 EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) | 213 EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) |
| 220 EVT_MENU( ID_MNVIEW, MyFrame::OnViewMode ) | 214 EVT_MENU( ID_MNBPNT, MyFrame::OnBPrintMode ) |
| 215 EVT_MENU( ID_MNVIEW, MyFrame::OnViewStyle ) | |
| 221 EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) | 216 EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) |
| 217 EVT_MENU( ID_MNDBBKUP, MyFrame::OnDBBackup ) | |
| 222 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) | 218 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) |
| 223 EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) | 219 EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) |
| 224 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir ) | 220 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnSelectHhsDir ) |
| 225 EVT_BUTTON( ID_KANA, MyFrame::OnKana ) | 221 EVT_BUTTON( ID_KANA, MyFrame::OnKana ) |
| 226 EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) | 222 EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) |
| 227 EVT_SIZE( MyFrame::OnWinSize ) | 223 EVT_SIZE( MyFrame::OnWinSize ) |
| 228 EVT_MOVE( MyFrame::OnWinMove ) | 224 EVT_MOVE( MyFrame::OnWinMove ) |
| 229 EVT_CLOSE( MyFrame::SaveConfig ) | 225 EVT_CLOSE( MyFrame::SaveConfig ) |
| 226 EVT_TEXT_ENTER( ID_SEARCH, MyFrame::OnCommand ) | |
| 230 END_EVENT_TABLE() | 227 END_EVENT_TABLE() |
| 231 | 228 |
| 232 // Event Handlers & Functions | 229 // Event Handlers & Functions |
| 233 /* インデックス作成ダイアログ */ | 230 /* エンターキーフック */ |
| 234 void MyFrame::OnIndex( wxCommandEvent& WXUNUSED(event) ) | 231 void MyFrame::OnCommand( wxCommandEvent& event ) |
| 235 { | 232 { |
| 236 IndexDialog* index = new IndexDialog( this, wxID_ANY, wxT("インデックス作成"), wxDefaultPosition, wxSize( 500, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 233 wxString s = m_searchBox->GetValue(); |
| 237 index->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 234 |
| 238 index->ShowModal(); | 235 if ( s.IsSameAs( wxT("99") ) ) { |
| 236 Close(); | |
| 237 return; | |
| 238 } | |
| 239 | |
| 240 if ( s.IsSameAs( wxT("+") ) ) { | |
| 241 PrintImages( m_hhsno ); | |
| 242 return; | |
| 243 } | |
| 244 | |
| 245 wxRegEx reHhs( wxT("^0[1238][0-9]{8}$") ); | |
| 246 if ( reHhs.Matches( s ) ) { | |
| 247 m_hhsno = s; | |
| 248 UpdateList( m_hhsno ); | |
| 249 return; | |
| 250 } | |
| 251 | |
| 252 wxRegEx reNo( wxT("^[0-9]{1,2}$") ); | |
| 253 if ( reNo.Matches( s ) ) { | |
| 254 long n; | |
| 255 s.ToLong( &n, 10 ); | |
| 256 n--; | |
| 257 OpenHhsDir( (int)n ); | |
| 258 return; | |
| 259 } | |
| 260 | |
| 261 SetStatusMessage( wxT("不適切な入力です."), 0 ); | |
| 262 return; | |
| 263 | |
| 264 event.Skip(); | |
| 239 } | 265 } |
| 240 /* マスクパラメータを設定ファイルから読み込む */ | 266 /* マスクパラメータを設定ファイルから読み込む */ |
| 241 void MyFrame::LoadMaskParam( void ) | 267 void MyFrame::LoadMaskParam( void ) |
| 242 { | 268 { |
| 243 conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("app.conf"); | 269 conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("app.conf"); |
| 266 config->Read( wxT("w3"), &w ); | 292 config->Read( wxT("w3"), &w ); |
| 267 config->Read( wxT("h3"), &h ); | 293 config->Read( wxT("h3"), &h ); |
| 268 m_mask3.SetPosition( wxPoint( x, y ) ); | 294 m_mask3.SetPosition( wxPoint( x, y ) ); |
| 269 m_mask3.SetSize( wxSize( w, h ) ); | 295 m_mask3.SetSize( wxSize( w, h ) ); |
| 270 | 296 |
| 297 config->Read( wxT("x1o"), &x ); | |
| 298 config->Read( wxT("y1o"), &y ); | |
| 299 config->Read( wxT("w1o"), &w ); | |
| 300 config->Read( wxT("h1o"), &h ); | |
| 301 m_mask1old.SetPosition( wxPoint( x, y ) ); | |
| 302 m_mask1old.SetSize( wxSize( w, h ) ); | |
| 303 | |
| 304 config->Read( wxT("x2o"), &x ); | |
| 305 config->Read( wxT("y2o"), &y ); | |
| 306 config->Read( wxT("w2o"), &w ); | |
| 307 config->Read( wxT("h2o"), &h ); | |
| 308 m_mask2old.SetPosition( wxPoint( x, y ) ); | |
| 309 m_mask2old.SetSize( wxSize( w, h ) ); | |
| 310 | |
| 311 config->Read( wxT("x3o"), &x ); | |
| 312 config->Read( wxT("y3o"), &y ); | |
| 313 config->Read( wxT("w3o"), &w ); | |
| 314 config->Read( wxT("h3o"), &h ); | |
| 315 m_mask3old.SetPosition( wxPoint( x, y ) ); | |
| 316 m_mask3old.SetSize( wxSize( w, h ) ); | |
| 317 } | |
| 318 /* 印刷 */ | |
| 319 void MyFrame::PrintImages( wxString hhsno ) | |
| 320 { | |
| 321 // 印刷用の html を作成 | |
| 322 wxArrayString path = GetPathByHhsNo( hhsno ); | |
| 323 if ( path.IsEmpty() ) return; | |
| 324 | |
| 325 wxDir dir( path[0] ); | |
| 326 if ( !dir.IsOpened() ) return; | |
| 327 | |
| 328 wxString html; | |
| 329 html = html + wxT("<html><body>\n"); | |
| 330 | |
| 331 wxString file; | |
| 332 bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); | |
| 333 int n = 0; | |
| 334 wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; | |
| 335 while ( cout ) { | |
| 336 file = path[0] + wxFILE_SEP_PATH + file; | |
| 337 file.Replace( wxFILE_SEP_PATH, wxT("/") ); | |
| 338 wxString tmpjpg = wxString::Format( wxT("%stmp%d.jpg"), tmpdir, n ); | |
| 339 | |
| 340 if ( n == 0 ) { // 1枚目はマスクする | |
| 341 wxImage img_org( file, wxBITMAP_TYPE_JPEG ); | |
| 342 int ver = GetMarksheetVersion( file ); | |
| 343 if ( ver == 2 ) { | |
| 344 img_org.SetRGB( m_mask1, 255, 255, 255 ); // cm name | |
| 345 img_org.SetRGB( m_mask2, 255, 255, 255 ); // cm no. | |
| 346 img_org.SetRGB( m_mask3, 255, 255, 255 ); // barcode | |
| 347 } | |
| 348 else { // 古いマークシート ver == 1 | |
| 349 img_org.SetRGB( m_mask1old, 255, 255, 255 ); // cm name | |
| 350 img_org.SetRGB( m_mask2old, 255, 255, 255 ); // cm no. | |
| 351 img_org.SetRGB( m_mask3old, 255, 255, 255 ); // barcode | |
| 352 } | |
| 353 img_org.SaveFile( tmpjpg ); | |
| 354 } | |
| 355 else { | |
| 356 wxCopyFile( file, tmpjpg, true ); | |
| 357 } | |
| 358 html = html + wxT("<img src=\"") + tmpjpg + wxT("\" width=\"750\" height=\"1060\"/>"); | |
| 359 cout = dir.GetNext( &file ); | |
| 360 n++; | |
| 361 } | |
| 362 html = html + wxT("</body></html>"); | |
| 363 | |
| 364 // start printing | |
| 365 wxHtmlPrintout hpout( wxT("Searcher03") ); | |
| 366 hpout.SetMargins( 0, 0, 0, 0, 0 ); | |
| 367 wxPrintDialogData pd; | |
| 368 wxPrinter p( &pd ); | |
| 369 | |
| 370 hpout.SetHtmlText( html, wxEmptyString, false ); | |
| 371 p.Print( NULL, &hpout, true ); | |
| 372 | |
| 373 // end | |
| 374 SetStatusMessage( wxT("被保番かフォルダ番号を."), 0 ); | |
| 375 } | |
| 376 /* 一括印刷モード */ | |
| 377 void MyFrame::OnBPrintMode( wxCommandEvent& WXUNUSED(event) ) | |
| 378 { | |
| 379 FrameBatchPrint* bp = new FrameBatchPrint( this, wxID_ANY, wxT("一括印刷"), wxDefaultPosition, wxSize( 640, 500 ), wxCAPTION|wxFRAME_NO_TASKBAR ); | |
| 380 bp->SetMask1( m_mask1 ); | |
| 381 bp->SetMask2( m_mask2 ); | |
| 382 bp->SetMask3( m_mask3 ); | |
| 383 bp->SetMask1Old( m_mask1old ); | |
| 384 bp->SetMask2Old( m_mask2old ); | |
| 385 bp->SetMask3Old( m_mask3old ); | |
| 386 bp->Show( true ); | |
| 387 } | |
| 388 /* インデックス作成ダイアログ */ | |
| 389 void MyFrame::OnIndex( wxCommandEvent& WXUNUSED(event) ) | |
| 390 { | |
| 391 wxString rootdir; | |
| 392 config->SetPath( wxT("/Index") ); | |
| 393 config->Read( wxT("rootdir"), &rootdir ); | |
| 394 | |
| 395 IndexDialog* index = new IndexDialog( this, wxID_ANY, wxT("インデックス作成"), wxDefaultPosition, wxSize( 700, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
| 396 index->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | |
| 397 index->SetRootdir( rootdir ); | |
| 398 index->ShowModal(); | |
| 271 } | 399 } |
| 272 /* マスクパラメータ設定ダイアログ */ | 400 /* マスクパラメータ設定ダイアログ */ |
| 273 void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) | 401 void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) |
| 274 { | 402 { |
| 275 MaskDialog* mask = new MaskDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 400, 210 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 403 MaskDialog* mask = new MaskDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); |
| 276 mask->SetMask1( m_mask1 ); | 404 mask->SetMask1( m_mask1 ); |
| 277 mask->SetMask2( m_mask2 ); | 405 mask->SetMask2( m_mask2 ); |
| 278 mask->SetMask3( m_mask3 ); | 406 mask->SetMask3( m_mask3 ); |
| 407 mask->SetMask1Old( m_mask1old ); | |
| 408 mask->SetMask2Old( m_mask2old ); | |
| 409 mask->SetMask3Old( m_mask3old ); | |
| 279 mask->LoadParams(); | 410 mask->LoadParams(); |
| 280 mask->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 411 mask->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); |
| 281 | 412 |
| 282 if ( mask->ShowModal() == wxID_OK ) { | 413 if ( mask->ShowModal() == wxID_OK ) { |
| 283 m_mask1 = mask->GetMask1(); | 414 m_mask1 = mask->GetMask1(); |
| 284 m_mask2 = mask->GetMask2(); | 415 m_mask2 = mask->GetMask2(); |
| 285 m_mask3 = mask->GetMask3(); | 416 m_mask3 = mask->GetMask3(); |
| 417 m_mask1old = mask->GetMask1Old(); | |
| 418 m_mask2old = mask->GetMask2Old(); | |
| 419 m_mask3old = mask->GetMask3Old(); | |
| 286 | 420 |
| 287 config->SetPath( wxT("/Mask") ); | 421 config->SetPath( wxT("/Mask") ); |
| 288 | 422 |
| 289 config->Write( wxT("x1"), m_mask1.GetX() ); | 423 config->Write( wxT("x1"), m_mask1.GetX() ); |
| 290 config->Write( wxT("y1"), m_mask1.GetY() ); | 424 config->Write( wxT("y1"), m_mask1.GetY() ); |
| 299 config->Write( wxT("x3"), m_mask3.GetX() ); | 433 config->Write( wxT("x3"), m_mask3.GetX() ); |
| 300 config->Write( wxT("y3"), m_mask3.GetY() ); | 434 config->Write( wxT("y3"), m_mask3.GetY() ); |
| 301 config->Write( wxT("w3"), m_mask3.GetWidth() ); | 435 config->Write( wxT("w3"), m_mask3.GetWidth() ); |
| 302 config->Write( wxT("h3"), m_mask3.GetHeight() ); | 436 config->Write( wxT("h3"), m_mask3.GetHeight() ); |
| 303 | 437 |
| 304 delete config; | 438 config->Write( wxT("x1o"), m_mask1old.GetX() ); |
| 305 } | 439 config->Write( wxT("y1o"), m_mask1old.GetY() ); |
| 440 config->Write( wxT("w1o"), m_mask1old.GetWidth() ); | |
| 441 config->Write( wxT("h1o"), m_mask1old.GetHeight() ); | |
| 442 | |
| 443 config->Write( wxT("x2o"), m_mask2old.GetX() ); | |
| 444 config->Write( wxT("y2o"), m_mask2old.GetY() ); | |
| 445 config->Write( wxT("w2o"), m_mask2old.GetWidth() ); | |
| 446 config->Write( wxT("h2o"), m_mask2old.GetHeight() ); | |
| 447 | |
| 448 config->Write( wxT("x3o"), m_mask3old.GetX() ); | |
| 449 config->Write( wxT("y3o"), m_mask3old.GetY() ); | |
| 450 config->Write( wxT("w3o"), m_mask3old.GetWidth() ); | |
| 451 config->Write( wxT("h3o"), m_mask3old.GetHeight() ); | |
| 452 | |
| 453 config->Flush( false ); | |
| 454 } | |
| 455 } | |
| 456 /* データベースファイルのバックアップ */ | |
| 457 void MyFrame::OnDBBackup( wxCommandEvent& WXUNUSED(event) ) | |
| 458 { | |
| 459 wxDateTime now = wxDateTime::Now(); | |
| 460 wxString str = now.Format( wxT("%Y%m%d%H%M%S") ); | |
| 461 | |
| 462 wxString org, bk; | |
| 463 wxString dbdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("db"); | |
| 464 | |
| 465 org = dbdir + wxFILE_SEP_PATH + wxT("hhs.db"); | |
| 466 bk = dbdir + wxFILE_SEP_PATH + str + wxT("_hhs.db"); | |
| 467 wxCopyFile( org, bk, false ); | |
| 468 | |
| 469 org = dbdir + wxFILE_SEP_PATH + wxT("ccn.db"); | |
| 470 bk = dbdir + wxFILE_SEP_PATH + str + wxT("_ccn.db"); | |
| 471 wxCopyFile( org, bk, false ); | |
| 472 | |
| 473 wxMessageBox( wxT("バックアップ終了.") ); | |
| 474 return; | |
| 306 } | 475 } |
| 307 /* アプリフォルダを開く */ | 476 /* アプリフォルダを開く */ |
| 308 void MyFrame::OnOpenAppDir( wxCommandEvent& WXUNUSED(event) ) | 477 void MyFrame::OnOpenAppDir( wxCommandEvent& WXUNUSED(event) ) |
| 309 { | 478 { |
| 310 wxString appdir = wxGetCwd(); | 479 wxString appdir = wxGetCwd(); |
| 311 wxString execmd = wxT("explorer ") + appdir; | 480 wxString execmd = wxT("explorer ") + appdir; |
| 312 wxExecute( execmd ); | 481 wxExecute( execmd ); |
| 313 } | 482 } |
| 314 /* ビューモードの切替え */ | 483 /* ビューの切替え */ |
| 315 void MyFrame::OnViewMode( wxCommandEvent& event ) | 484 void MyFrame::OnViewStyle( wxCommandEvent& event ) |
| 316 { | 485 { |
| 317 if ( event.IsChecked() ) { | 486 if ( event.IsChecked() ) { |
| 318 int x, y; | 487 int x, y; |
| 319 GetSize( &x, &y ); | 488 GetSize( &x, &y ); |
| 320 SetSize( WINL_W + 500, y ); | 489 SetSize( WINL_W + 500, y ); |
| 321 m_splitter->SplitVertically( m_panelL, m_panelR, 0 ); | 490 m_splitter->SplitVertically( m_panelMain, m_panelView, 0 ); |
| 322 } | 491 } |
| 323 else { | 492 else { |
| 324 m_splitter->Unsplit(); | 493 m_splitter->Unsplit(); |
| 325 SetSize( WINL_W, -1 ); | 494 SetSize( WINL_W, -1 ); |
| 326 } | 495 } |
| 327 } | 496 } |
| 328 /* 被保険者フォルダを開く */ | 497 /* 被保険者フォルダを開く */ |
| 329 void MyFrame::OnOpenHhsDir( wxListEvent& event ) | 498 void MyFrame::OnSelectHhsDir( wxListEvent& event ) |
| 330 { | 499 { |
| 331 wxString hhsdir; | |
| 332 /* | |
| 333 hhsdir = m_textCtrlDist->GetValue() + wxFILE_SEP_PATH; | |
| 334 | |
| 335 int i = event.GetIndex(); | 500 int i = event.GetIndex(); |
| 501 OpenHhsDir( i ); | |
| 502 } | |
| 503 /* 番号で指定したフォルダを開く */ | |
| 504 void MyFrame::OpenHhsDir( int n ) | |
| 505 { | |
| 336 wxListItem item; | 506 wxListItem item; |
| 337 item.SetId(i); | 507 item.SetId( n ); |
| 338 | 508 item.SetColumn( 2 ); |
| 339 item.SetColumn(1); | 509 item.SetMask( wxLIST_MASK_TEXT ); |
| 340 item.SetMask(wxLIST_MASK_TEXT); | 510 m_listCtrl->GetItem( item ); |
| 341 m_listCtrlHhsDir->GetItem( item ); | 511 wxString dir = item.GetText(); |
| 342 hhsdir.Append( item.GetText() ); | 512 wxString execmd = wxT("explorer ") + dir; |
| 343 | 513 wxExecute( execmd ); |
| 344 DirViewFrame* dvf = new DirViewFrame( (wxWindow*)this, wxID_ANY, wxEmptyString ); | |
| 345 dvf->m_dir = hhsdir; | |
| 346 dvf->LoadListImage(); | |
| 347 dvf->Show(true); | |
| 348 */ | |
| 349 } | 514 } |
| 350 | 515 |
| 351 /* カナ検索ダイアログ */ | 516 /* カナ検索ダイアログ */ |
| 352 void MyFrame::OnKana( wxCommandEvent& WXUNUSED(event) ) | 517 void MyFrame::OnKana( wxCommandEvent& WXUNUSED(event) ) |
| 353 { | 518 { |
| 354 KanaDialog* kana = new KanaDialog( this, wxID_ANY, wxT("カナ氏名で被保番を検索"), wxDefaultPosition, wxSize( 600, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 519 KanaDialog* kana = new KanaDialog( this, wxID_ANY, wxT("カナ氏名で被保番を検索"), wxDefaultPosition, wxSize( 640, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); |
| 355 kana->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 520 kana->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); |
| 356 | 521 |
| 357 if ( kana->ShowModal() == wxID_OK ) { | 522 if ( kana->ShowModal() == wxID_OK ) { |
| 358 wxMessageBox( kana->GetHhsNo() ); | 523 m_hhsno = kana->GetHhsNo(); |
| 359 } | 524 UpdateList( m_hhsno ); |
| 360 | 525 } |
| 361 UpdateList(); | |
| 362 } | 526 } |
| 363 /* 検索履歴検索ダイアログ */ | 527 /* 検索履歴検索ダイアログ */ |
| 364 void MyFrame::OnHistory( wxCommandEvent& WXUNUSED(event) ) | 528 void MyFrame::OnHistory( wxCommandEvent& WXUNUSED(event) ) |
| 365 { | 529 { |
| 366 HistDialog* hist = new HistDialog( this, wxID_ANY, wxT("検索履歴"), wxDefaultPosition, wxSize( 550, 500 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 530 HistDialog* hist = new HistDialog( this, wxID_ANY, wxT("検索履歴"), wxDefaultPosition, wxSize( 600, 500 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); |
| 367 hist->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 531 hist->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); |
| 368 | 532 |
| 369 if ( hist->ShowModal() == wxID_OK ) { | 533 if ( hist->ShowModal() == wxID_OK ) { |
| 370 | 534 m_hhsno = hist->GetHhsNo(); |
| 371 } | 535 UpdateList( m_hhsno ); |
| 372 | 536 } |
| 373 UpdateList(); | |
| 374 } | 537 } |
| 375 | 538 |
| 376 /* 検索結果をリストアップ */ | 539 /* 検索結果をリストアップ */ |
| 377 void MyFrame::UpdateList( void ) | 540 void MyFrame::UpdateList( wxString hhsno ) |
| 378 { | 541 { |
| 379 m_listCtrl->DeleteAllItems(); | 542 m_listCtrl->DeleteAllItems(); |
| 380 } | 543 for ( int i = 0; i < m_statusBar->GetFieldsCount(); i++ ) { |
| 381 | 544 SetStatusMessage( wxEmptyString, i ); |
| 545 } | |
| 546 | |
| 547 // | |
| 548 wxArrayString s = wxSplit( GetHhsInfoByHhsNo( hhsno ), '_', '\\' ); | |
| 549 wxString history; | |
| 550 if ( s.IsEmpty() ) { | |
| 551 SetStatusMessage( wxT("データベースに存在しない被保険者です."), 0 ); | |
| 552 history = hhsno + wxT("###"); | |
| 553 } | |
| 554 else { | |
| 555 m_textCtrlName->SetValue( s[0] ); | |
| 556 m_textCtrlAddr->SetValue( s[1] ); | |
| 557 history = hhsno + wxT("#") + s[0] + wxT("#") + s[1] + wxT("#"); | |
| 558 } | |
| 559 m_searchBox->SetValue( hhsno ); | |
| 560 m_searchBox->SelectAll(); | |
| 561 m_searchBox->SetFocus(); | |
| 562 | |
| 563 wxArrayString path = GetPathByHhsNo( hhsno ); | |
| 564 if ( path.IsEmpty() ) { | |
| 565 SetStatusMessage( wxT("審査会履歴がありません."), 1 ); | |
| 566 return; | |
| 567 } | |
| 568 | |
| 569 wxRegEx reDate(wxT("(^.*20[0-9]{2}.)(20[0-9]{2})([0-2][0-9])([0-9]{2})(.*$)")); | |
| 570 for ( int i = 0; i < path.GetCount(); i++ ) { | |
| 571 wxString date = path[i]; | |
| 572 reDate.ReplaceAll( &date, wxT("\\2-\\3-\\4") ); | |
| 573 | |
| 574 m_listCtrl->InsertItem( i, -1 ); | |
| 575 m_listCtrl->SetItem( i, 0,wxString::Format( wxT("%d"), i + 1 ) , -1 ); // No | |
| 576 m_listCtrl->SetItem( i, 1, date, -1 ); | |
| 577 m_listCtrl->SetItem( i, 2, path[i], -1 ); | |
| 578 | |
| 579 if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour( wxT("WHEAT") ) ); | |
| 580 } | |
| 581 | |
| 582 SetStatusMessage( wxT("「+」キーで通番1を印刷."), 0 ); | |
| 583 | |
| 584 // | |
| 585 wxString filename = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH + wxT("history"); | |
| 586 wxDateTime now = wxDateTime::Now(); | |
| 587 history = history + now.Format( wxT("%Y-%m-%d %H:%M:%S") ); | |
| 588 | |
| 589 wxTextFile hist( filename ); | |
| 590 hist.Open(); | |
| 591 hist.RemoveLine( 20 ); | |
| 592 hist.InsertLine( history, 0 ); | |
| 593 hist.Write(); | |
| 594 hist.Close(); | |
| 595 } | |
| 382 /* ステータスバーにメッセージを出力 */ | 596 /* ステータスバーにメッセージを出力 */ |
| 383 void MyFrame::SetStatusMessage( wxString msg, long n ) | 597 void MyFrame::SetStatusMessage( wxString msg, long n ) |
| 384 { | 598 { |
| 385 if ( GetStatusBar() ) | 599 if ( GetStatusBar() ) |
| 386 SetStatusText( msg, n ); | 600 SetStatusText( msg, n ); |
