comparison src/myframe.cpp @ 4:a505f7417742

v0.1 release
author pyon@macmini
date Thu, 06 Oct 2011 07:56:12 +0900
parents a5bddd859104
children 3b734fd6ee2b
comparison
equal deleted inserted replaced
3:a5bddd859104 4:a505f7417742
1 // Filename : mainframe.cpp 1 // Filename : mainframe.cpp
2 // Last Change: 03-Oct-2011. 2 // Last Change: 05-Oct-2011.
3 // 3 //
4 #include "symbol.h" 4 #include "symbol.h"
5 #include "common.h" 5 #include "common.h"
6 #include "myframe.h" 6 #include "myframe.h"
7 #include "delwhite.h" 7 #include "delwhite.h"
8 #include "marksheet.h"
8 #include "main.h" 9 #include "main.h"
9 10
10 // resources 11 // resources
11 // the application icon (under Windows and OS/2 it is in resources and even 12 // the application icon (under Windows and OS/2 it is in resources and even
12 // though we could still include the XPM here it would be unused) 13 // though we could still include the XPM here it would be unused)
45 46
46 // メニューバー 47 // メニューバー
47 m_menubar = new wxMenuBar(); 48 m_menubar = new wxMenuBar();
48 49
49 m_menuFile = new wxMenu(); 50 m_menuFile = new wxMenu();
51 m_menuFile->Append( ID_OPWORK, wxT("作業フォルダを開く"), wxT("Open work folder") );
52 m_menuFile->AppendSeparator(); //----
50 m_menuFile->Append( wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog") ); 53 m_menuFile->Append( wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog") );
51 //m_menuFile->AppendSeparator(); //---- 54 m_menuFile->AppendSeparator(); //----
52 m_menuFile->Append( wxID_EXIT, wxT("終了(&X)\tAlt-X"), wxT("Quit this program") ); 55 m_menuFile->Append( wxID_EXIT, wxT("終了(&X)\tAlt-X"), wxT("Quit this program") );
53 56
54 m_menubar->Append( m_menuFile, wxT("ファイル(&F)") ); 57 m_menubar->Append( m_menuFile, wxT("ファイル(&F)") );
55 58
56 this->SetMenuBar( m_menubar ); 59 this->SetMenuBar( m_menubar );
124 m_textCtrlMoveDir->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_INACTIVEBORDER ) ); 127 m_textCtrlMoveDir->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_INACTIVEBORDER ) );
125 128
126 bSizerDoMove->Add( m_textCtrlMoveDir, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 129 bSizerDoMove->Add( m_textCtrlMoveDir, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
127 130
128 m_buttonDoMove = new wxButton( this, ID_DOMOVE, wxT("画像移動"), wxDefaultPosition, wxDefaultSize, 0 ); 131 m_buttonDoMove = new wxButton( this, ID_DOMOVE, wxT("画像移動"), wxDefaultPosition, wxDefaultSize, 0 );
129 m_buttonDoMove->Enable( false );
130 132
131 bSizerDoMove->Add( m_buttonDoMove, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); 133 bSizerDoMove->Add( m_buttonDoMove, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 );
132 134
133 bSizerTop->Add( bSizerDoMove, 0, wxEXPAND, 5 ); 135 bSizerTop->Add( bSizerDoMove, 0, wxEXPAND, 5 );
134 136
135 m_listCtrl = new wxListCtrl( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); 137 m_listCtrl = new wxListCtrl( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );
138 wxListItem itemCol;
139 itemCol.SetText( wxT("通番") );
140 m_listCtrl->InsertColumn( 0, itemCol );
141 m_listCtrl->SetColumnWidth( 0, 100 );
142 itemCol.SetText( wxT("被保険者番号") );
143 m_listCtrl->InsertColumn( 1, itemCol );
144 m_listCtrl->SetColumnWidth( 1, 180 );
145 itemCol.SetText( wxT("ファイル数") );
146 m_listCtrl->InsertColumn( 2, itemCol );
147 m_listCtrl->SetColumnWidth( 1, 100 );
136 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); 148 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );
137 149
138 this->SetSizer( bSizerTop ); 150 this->SetSizer( bSizerTop );
139 this->Layout(); 151 this->Layout();
140 152
141 this->Centre( wxBOTH ); 153 this->Centre( wxBOTH );
142 //this->SetDefaultItem(m_buttonDetWhite);
143 m_buttonDetWhite->SetFocus(); 154 m_buttonDetWhite->SetFocus();
144 } 155 }
145 156
146 // destructor 157 // destructor
147 MyFrame::~MyFrame() 158 MyFrame::~MyFrame()
152 BEGIN_EVENT_TABLE( MyFrame, wxFrame ) 163 BEGIN_EVENT_TABLE( MyFrame, wxFrame )
153 EVT_SIZE( MyFrame::OnSize ) 164 EVT_SIZE( MyFrame::OnSize )
154 EVT_MOVE( MyFrame::OnMove ) 165 EVT_MOVE( MyFrame::OnMove )
155 EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) 166 EVT_MENU( wxID_EXIT, MyFrame::OnQuit )
156 EVT_MENU( wxID_ABOUT, MyFrame::OnAbout ) 167 EVT_MENU( wxID_ABOUT, MyFrame::OnAbout )
168 EVT_MENU( ID_OPWORK, MyFrame::OnOpenWorkDir )
157 EVT_BUTTON( ID_DTWHITE, MyFrame::OnDetectWhite ) 169 EVT_BUTTON( ID_DTWHITE, MyFrame::OnDetectWhite )
158 EVT_BUTTON( ID_STDIR, MyFrame::SetDir ) 170 EVT_BUTTON( ID_STDIR, MyFrame::SetDir )
159 EVT_BUTTON( ID_MKDIR, MyFrame::MakeDir ) 171 EVT_BUTTON( ID_MKDIR, MyFrame::MakeDir )
172 EVT_BUTTON( ID_DOMOVE, MyFrame::MoveImages )
160 EVT_CLOSE( MyFrame::SaveConfig ) 173 EVT_CLOSE( MyFrame::SaveConfig )
161 END_EVENT_TABLE() 174 END_EVENT_TABLE()
162 175
163 // Event Handlers 176 // Event Handlers
164 /* サイズ変更 */ 177 /* サイズ変更 */
227 dir.Append( wxFILE_SEP_PATH ); 240 dir.Append( wxFILE_SEP_PATH );
228 dir.Append( m_comboBoxCcn->GetValue() ); 241 dir.Append( m_comboBoxCcn->GetValue() );
229 m_textCtrlMoveDir->SetValue( dir ); 242 m_textCtrlMoveDir->SetValue( dir );
230 } 243 }
231 244
245 /* 移動先フォルダ作成 */
232 void MyFrame::MakeDir(wxCommandEvent& WXUNUSED(event)) 246 void MyFrame::MakeDir(wxCommandEvent& WXUNUSED(event))
233 { 247 {
234 } 248 wxString dirname = m_textCtrlMoveDir->GetValue();
235 249 wxString ccn = m_comboBoxCcn->GetValue();
236 /* アプリケーションフォルダを開く */ 250 if ( dirname.Len() < 15 || ccn.IsEmpty() ) {
237 /* 251 wxMessageBox(wxT("フォルダを指定してください."));
238 void MyFrame::OnOpenAppDir(wxCommandEvent& WXUNUSED(event)) 252 return;
239 { 253 }
240 wxStandardPaths appdir; 254
241 wxString execmd = wxT("explorer ") + appdir.GetDataDir(); 255 wxStringTokenizer tkz( dirname, wxFILE_SEP_PATH );
256 wxString d;
257 while ( tkz.HasMoreTokens() ) {
258 d.Append( tkz.GetNextToken() );
259 d.Append( wxFILE_SEP_PATH );
260 if ( !wxDirExists( d ) ) wxMkdir( d );
261 }
262 }
263
264 /* 画像移動 */
265 void MyFrame::MoveImages(wxCommandEvent& WXUNUSED(event))
266 {
267 wxString dirname = m_textCtrlMoveDir->GetValue();
268 wxString ccn = m_comboBoxCcn->GetValue();
269 if ( dirname.IsEmpty() || ccn.IsEmpty() ) {
270 wxMessageBox(wxT("フォルダを指定してください."));
271 return;
272 }
273
274 dirname.Append( wxFILE_SEP_PATH );
275 if ( !wxDirExists( dirname ) ) {
276 wxMessageBox(wxT("フォルダが存在しません."));
277 return;
278 }
279
280 wxString workdir = m_dirPickerWork->GetPath();
281 wxDir dir( workdir );
282 if ( !dir.IsOpened() ) return;
283
284 wxString filename;
285 bool cout = dir.GetFirst( &filename, wxT("*.jpg"), wxDIR_FILES );
286
287 int cnt=0, r=0;
288 wxString hhs;
289 m_listCtrl->DeleteAllItems();
290 while ( cout ) {
291 wxString from = workdir + wxFILE_SEP_PATH + filename;
292 if ( IsMarksheet( from ) ) {
293 hhs = GuessHhs( from );
294 wxString d = dirname + hhs;
295 wxMkdir( d );
296 m_listCtrl->InsertItem( r, wxString::Format(wxT("%d"),r+1) );
297 m_listCtrl->SetItem( r, 1, hhs, -1 ); // 被保険者番号
298 m_listCtrl->SetItem( r-1, 2, wxString::Format(wxT("%d"),cnt), -1 ); // ファイル数
299 if ( r % 2 ) m_listCtrl->SetItemBackgroundColour( r, wxColour(wxT("WHEAT")) );
300 r++;
301 cnt=0;
302 }
303 if ( hhs.IsEmpty() ) {
304 wxMessageBox(wxT("マークシートの画像ファイルを確認してください."));
305 return;
306 }
307 wxString to = dirname + wxFILE_SEP_PATH + hhs + wxFILE_SEP_PATH + filename;
308 wxRenameFile( from, to, false );
309 // write log
310 cout = dir.GetNext( &filename );
311 cnt++;
312 }
313 m_listCtrl->SetItem( r-1, 2, wxString::Format(wxT("%d"),cnt), -1 ); // ファイル数
314 if ( cnt < 5 ) m_listCtrl->SetItemTextColour( r, *wxRED );
315
316 wxString cmd = wxT("explorer ") + dirname;
317 wxExecute( cmd );
318 }
319
320 /* 作業フォルダを開く */
321 void MyFrame::OnOpenWorkDir(wxCommandEvent& WXUNUSED(event))
322 {
323 wxString workdir = m_dirPickerWork->GetPath();
324 wxString execmd = wxT("explorer ") + workdir;
242 wxExecute( execmd ); 325 wxExecute( execmd );
243 return; 326 return;
244 } 327 }
245 */
246 328
247 329
248 /* 設定を保存 */ 330 /* 設定を保存 */
249 void MyFrame::SaveConfig(wxCloseEvent& WXUNUSED(event)) 331 void MyFrame::SaveConfig(wxCloseEvent& WXUNUSED(event))
250 { 332 {