Mercurial > mercurial > hgweb_mover2.cgi
comparison src/myframe.cpp @ 27:d21de4693652 v2.2dev v2.3
add hhsname
| author | pyon@macmini |
|---|---|
| date | Sat, 05 Nov 2011 10:13:41 +0900 |
| parents | 5a934c8e1b95 |
| children | 24283d3a9592 |
comparison
equal
deleted
inserted
replaced
| 26:5a934c8e1b95 | 27:d21de4693652 |
|---|---|
| 1 // Filename : myframe.cpp | 1 // Filename : myframe.cpp |
| 2 // Last Change: 03-Nov-2011. | 2 // Last Change: 05-Nov-2011. |
| 3 // | 3 // |
| 4 | 4 |
| 5 #include "main.h" | 5 #include "main.h" |
| 6 #include "myframe.h" | 6 #include "myframe.h" |
| 7 #include "param.h" | 7 #include "param.h" |
| 8 #include "dndfile.h" | 8 #include "dndfile.h" |
| 9 #include "marksheet.h" | 9 #include "marksheet.h" |
| 10 | |
| 11 #define LOGO_W 288 | |
| 12 #define LOGO_H 86 | |
| 13 #define HHSN_W 288 | |
| 14 #define HHSN_H 49 | |
| 15 #define THUMB_W 160 | |
| 16 #define THUMB_H 226 | |
| 10 | 17 |
| 11 // resources | 18 // resources |
| 12 // the application icon (under Windows and OS/2 it is in resources and even | 19 // the application icon (under Windows and OS/2 it is in resources and even |
| 13 // though we could still include the XPM here it would be unused) | 20 // though we could still include the XPM here it would be unused) |
| 14 #if !defined(__WXMSW__) && !defined(__WXPM__) | 21 #if !defined(__WXMSW__) && !defined(__WXPM__) |
| 104 | 111 |
| 105 bSizerTop->Add( bSizerDist, 0, wxEXPAND, 5 ); | 112 bSizerTop->Add( bSizerDist, 0, wxEXPAND, 5 ); |
| 106 | 113 |
| 107 wxBoxSizer* bSizerManip = new wxBoxSizer( wxHORIZONTAL ); | 114 wxBoxSizer* bSizerManip = new wxBoxSizer( wxHORIZONTAL ); |
| 108 | 115 |
| 109 wxBoxSizer* bSizerGuess = new wxBoxSizer( wxVERTICAL ); | 116 wxBoxSizer* bSizerRecog = new wxBoxSizer( wxVERTICAL ); |
| 110 | 117 |
| 111 m_staticTextName = new wxStaticText( this, wxID_ANY, wxT("氏名"), wxDefaultPosition, wxDefaultSize, 0 ); | 118 m_staticTextName = new wxStaticText( this, wxID_ANY, wxT("氏名"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 112 bSizerGuess->Add( m_staticTextName, 0, wxTOP|wxLEFT, 5 ); | 119 bSizerRecog->Add( m_staticTextName, 0, wxTOP|wxLEFT, 5 ); |
| 113 wxString logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("logo.png"); | 120 wxString logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("logo.png"); |
| 114 wxBitmap bmp = wxBitmap( logo, wxBITMAP_TYPE_PNG ); | 121 wxBitmap bmp = wxBitmap( logo, wxBITMAP_TYPE_PNG ); |
| 115 m_bitmapName = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize(320,95), 0 ); | 122 m_bitmapName = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize(320,95), 0 ); |
| 116 bSizerGuess->Add( m_bitmapName, 0, wxALL, 5 ); | 123 bSizerRecog->Add( m_bitmapName, 0, wxTOP|wxBOTTOM|wxLEFT, 5 ); |
| 117 | 124 |
| 118 m_staticTextHhsno = new wxStaticText( this, wxID_ANY, wxT("被保険者番号"), wxDefaultPosition, wxDefaultSize, 0 ); | 125 m_staticTextHhsno = new wxStaticText( this, wxID_ANY, wxT("被保険者番号"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 119 bSizerGuess->Add( m_staticTextHhsno, 0, wxTOP|wxLEFT, 5 ); | 126 bSizerRecog->Add( m_staticTextHhsno, 0, wxTOP|wxLEFT, 5 ); |
| 120 logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("0123456789.png"); | 127 logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("0123456789.png"); |
| 121 bmp.LoadFile( logo, wxBITMAP_TYPE_PNG ); | 128 bmp.LoadFile( logo, wxBITMAP_TYPE_PNG ); |
| 122 m_bitmapHhsno = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize(320,54), 0 ); | 129 m_bitmapHhsno = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize(320,54), 0 ); |
| 123 bSizerGuess->Add( m_bitmapHhsno, 0, wxALL, 5 ); | 130 bSizerRecog->Add( m_bitmapHhsno, 0, wxTOP|wxBOTTOM|wxLEFT, 5 ); |
| 124 | 131 |
| 125 m_staticTextGuess = new wxStaticText( this, wxID_ANY, wxT("推定値"), wxDefaultPosition, wxDefaultSize, 0 ); | 132 m_staticTextGuess = new wxStaticText( this, wxID_ANY, wxT("推定値"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 126 bSizerGuess->Add( m_staticTextGuess, 0, wxTOP|wxLEFT, 5 ); | 133 bSizerRecog->Add( m_staticTextGuess, 0, wxTOP|wxLEFT, 5 ); |
| 134 | |
| 135 wxBoxSizer* bSizerGuess = new wxBoxSizer( wxHORIZONTAL ); | |
| 136 | |
| 127 m_textCtrlGuess = new wxTextCtrl( this, ID_TEXTCTRLGUESS, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); | 137 m_textCtrlGuess = new wxTextCtrl( this, ID_TEXTCTRLGUESS, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); |
| 128 m_textCtrlGuess->SetMaxLength( 10 ); | 138 m_textCtrlGuess->SetMaxLength( 10 ); |
| 129 bSizerGuess->Add( m_textCtrlGuess, 0, wxALL, 5 ); | 139 bSizerGuess->Add( m_textCtrlGuess, 0, wxALL, 5 ); |
| 130 | 140 |
| 131 bSizerManip->Add( bSizerGuess, 0, wxEXPAND, 5 ); | 141 m_textCtrlName = new wxTextCtrl( this, ID_TEXTCTRLNAME, wxEmptyString, wxDefaultPosition, wxSize(140,-1), 0 ); |
| 142 m_textCtrlName->SetBackgroundColour(wxT("LIGHT GREY")); | |
| 143 bSizerGuess->Add( m_textCtrlName, 0, wxALL, 5 ); | |
| 144 | |
| 145 bSizerRecog->Add( bSizerGuess, 0, wxEXPAND, 5 ); | |
| 146 | |
| 147 bSizerManip->Add( bSizerRecog, 0, wxEXPAND|wxLEFT, 5 ); | |
| 132 | 148 |
| 133 m_listCtrlView = new wxListCtrl( this, ID_LISTCTRLVIEW, wxDefaultPosition, wxDefaultSize, wxLC_ICON ); | 149 m_listCtrlView = new wxListCtrl( this, ID_LISTCTRLVIEW, wxDefaultPosition, wxDefaultSize, wxLC_ICON ); |
| 134 m_listCtrlView->SetBackgroundColour(wxT("LIGHT GREY")); | 150 m_listCtrlView->SetBackgroundColour(wxT("LIGHT GREY")); |
| 135 bSizerManip->Add( m_listCtrlView, 1, wxALL|wxEXPAND, 5 ); | 151 bSizerManip->Add( m_listCtrlView, 1, wxTOP|wxRIGHT|wxBOTTOM|wxEXPAND, 5 ); |
| 136 m_imageList = new wxImageList( 160, 226 ); | 152 m_imageList = new wxImageList( THUMB_W, THUMB_H ); |
| 137 m_listCtrlView->AssignImageList( m_imageList, wxIMAGE_LIST_NORMAL ); | 153 m_listCtrlView->AssignImageList( m_imageList, wxIMAGE_LIST_NORMAL ); |
| 138 //m_listCtrlView->SetDropTarget( new DnDFile(m_dirPickerWork) ); | 154 //m_listCtrlView->SetDropTarget( new DnDFile(m_dirPickerWork) ); |
| 139 this->SetDropTarget( new DnDFile(m_dirPickerWork) ); | 155 this->SetDropTarget( new DnDFile(m_dirPickerWork) ); |
| 140 | 156 |
| 141 wxBoxSizer* bSizerButton = new wxBoxSizer( wxVERTICAL ); | 157 wxBoxSizer* bSizerButton = new wxBoxSizer( wxVERTICAL ); |
| 153 gSizer->Add( m_buttonUndo, 0, wxALL, 5 ); | 169 gSizer->Add( m_buttonUndo, 0, wxALL, 5 ); |
| 154 m_buttonUndo->Enable(false); | 170 m_buttonUndo->Enable(false); |
| 155 | 171 |
| 156 bSizerButton->Add( gSizer, 0, wxALL, 5 ); | 172 bSizerButton->Add( gSizer, 0, wxALL, 5 ); |
| 157 | 173 |
| 158 m_listCtrlHhsDir = new wxListCtrl( this, ID_LISTCTRLDIR, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); | 174 m_listCtrlHhsDir = new wxListCtrl( this, ID_LISTCTRLDIR, wxDefaultPosition, wxSize(280,-1), wxLC_REPORT|wxLC_SINGLE_SEL ); |
| 159 wxListItem itemCol; | 175 wxListItem itemCol; |
| 160 itemCol.SetText( wxT("通番") ); | 176 itemCol.SetText( wxT("通番") ); |
| 161 m_listCtrlHhsDir->InsertColumn( 0, itemCol ); | 177 m_listCtrlHhsDir->InsertColumn( 0, itemCol ); |
| 162 m_listCtrlHhsDir->SetColumnWidth( 0, 50 ); | 178 m_listCtrlHhsDir->SetColumnWidth( 0, 40 ); |
| 163 itemCol.SetText( wxT("被保険者番号") ); | 179 itemCol.SetText( wxT("被保険者番号") ); |
| 164 m_listCtrlHhsDir->InsertColumn( 1, itemCol ); | 180 m_listCtrlHhsDir->InsertColumn( 1, itemCol ); |
| 165 m_listCtrlHhsDir->SetColumnWidth( 1, 100 ); | 181 m_listCtrlHhsDir->SetColumnWidth( 1, 90 ); |
| 166 itemCol.SetText( wxT("ファイル数") ); | 182 itemCol.SetText( wxT("枚数") ); |
| 167 m_listCtrlHhsDir->InsertColumn( 2, itemCol ); | 183 m_listCtrlHhsDir->InsertColumn( 2, itemCol ); |
| 168 m_listCtrlHhsDir->SetColumnWidth( 2, 60 ); | 184 m_listCtrlHhsDir->SetColumnWidth( 2, 40 ); |
| 185 itemCol.SetText( wxT("氏名") ); | |
| 186 m_listCtrlHhsDir->InsertColumn( 3, itemCol ); | |
| 187 m_listCtrlHhsDir->SetColumnWidth( 3, 90 ); | |
| 169 | 188 |
| 170 bSizerButton->Add( m_listCtrlHhsDir, 1, wxEXPAND|wxALL, 5 ); | 189 bSizerButton->Add( m_listCtrlHhsDir, 1, wxEXPAND|wxALL, 5 ); |
| 171 | 190 |
| 172 bSizerManip->Add( bSizerButton, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 ); | 191 bSizerManip->Add( bSizerButton, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 ); |
| 173 | 192 |
| 377 m_listCtrlView->SetItem( i, 0, ci->filename, i ); | 396 m_listCtrlView->SetItem( i, 0, ci->filename, i ); |
| 378 | 397 |
| 379 if ( i == 0 ) { // 1枚目はマークシートのはず | 398 if ( i == 0 ) { // 1枚目はマークシートのはず |
| 380 wxImage marksheet( ci->fullpath, wxBITMAP_TYPE_JPEG ); | 399 wxImage marksheet( ci->fullpath, wxBITMAP_TYPE_JPEG ); |
| 381 | 400 |
| 401 // 氏名画像を表示 | |
| 382 wxImage name_image; | 402 wxImage name_image; |
| 383 name_image = marksheet.GetSubImage( wxRect( wxPoint(300,550), wxSize(640,190) ) ); | 403 name_image = marksheet.GetSubImage( wxRect( wxPoint(300,550), wxSize(640,190) ) ); |
| 384 wxBitmap name_bmp = ( name_image.Scale( 320, 95, wxIMAGE_QUALITY_HIGH ) ); | 404 wxBitmap name_bmp = ( name_image.Scale( LOGO_W, LOGO_H, wxIMAGE_QUALITY_HIGH ) ); |
| 385 m_bitmapName->SetBitmap( name_bmp ); | 405 m_bitmapName->SetBitmap( name_bmp ); |
| 386 | 406 |
| 407 // 被保険者番号画像を表示 | |
| 387 wxImage hhsno_image; | 408 wxImage hhsno_image; |
| 388 hhsno_image = marksheet.GetSubImage( wxRect( wxPoint(1800,210), wxSize(594,100) ) ); | 409 hhsno_image = marksheet.GetSubImage( wxRect( wxPoint(1800,210), wxSize(594,100) ) ); |
| 389 wxBitmap hhsno_bmp = ( hhsno_image.Scale( 320, 54, wxIMAGE_QUALITY_HIGH ) ); | 410 wxBitmap hhsno_bmp = ( hhsno_image.Scale( HHSN_W, HHSN_H, wxIMAGE_QUALITY_HIGH ) ); |
| 390 m_bitmapHhsno->SetBitmap( hhsno_bmp ); | 411 m_bitmapHhsno->SetBitmap( hhsno_bmp ); |
| 391 | 412 |
| 392 wxString hhsno = GuessHhs( ci->fullpath ); | 413 wxString hhsno = GuessHhs( ci->fullpath ); |
| 393 m_textCtrlGuess->SetValue( hhsno ); | 414 m_textCtrlGuess->SetValue( hhsno ); |
| 394 wxString name; | 415 wxString name; |
| 395 int judge = IsHhsno( hhsno, name ); | 416 int judge = IsHhsno( hhsno, name ); |
| 396 if ( judge == 0 ) m_textCtrlGuess->SetBackgroundColour(*wxRED); // not hhsno-style | 417 if ( judge == 0 ) m_textCtrlGuess->SetBackgroundColour(*wxRED); // not hhsno-style |
| 397 //else if ( judge == 1 ) m_textCtrlGuess->SetBackgroundColour(wxT("YELLOW")); // not in DB | 418 else if ( judge == 1 ) m_textCtrlGuess->SetBackgroundColour(wxT("YELLOW")); // not in DB |
| 419 m_textCtrlName->SetValue( name ); | |
| 420 | |
| 398 SetStatusText( wxString::Format(wxT("1st image : z = %f, l = %d"),ci->z,ci->l), 1 ); | 421 SetStatusText( wxString::Format(wxT("1st image : z = %f, l = %d"),ci->z,ci->l), 1 ); |
| 399 m_listCtrlView->SetItemState( i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); | 422 m_listCtrlView->SetItemState( i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); |
| 400 } | 423 } |
| 401 else { // 2枚目以降で初めてマークシートを認識したら,それ以降は選択しない | 424 else { // 2枚目以降で初めてマークシートを認識したら,それ以降は選択しない |
| 402 if ( ci->marksheet ) select = false; | 425 if ( ci->marksheet ) select = false; |
| 510 } | 533 } |
| 511 /* 新しいファイルはキャッシュ */ | 534 /* 新しいファイルはキャッシュ */ |
| 512 //float z; long l; bool m = IsMarksheet( fullpath, &z, &l ); | 535 //float z; long l; bool m = IsMarksheet( fullpath, &z, &l ); |
| 513 float z; long l; bool m = IsMarksheet( fullpath, &z, &l, zmin, zmax, lmin, lmax ); | 536 float z; long l; bool m = IsMarksheet( fullpath, &z, &l, zmin, zmax, lmin, lmax ); |
| 514 wxImage image( fullpath, wxBITMAP_TYPE_JPEG ); | 537 wxImage image( fullpath, wxBITMAP_TYPE_JPEG ); |
| 515 wxImage thumbnail = image.Scale( 160, 226, wxIMAGE_QUALITY_HIGH ); | 538 wxImage thumbnail = image.Scale( THUMB_W, THUMB_H, wxIMAGE_QUALITY_HIGH ); |
| 516 wxBitmap bmp( thumbnail ); | 539 wxBitmap bmp( thumbnail ); |
| 517 unsigned char *data = thumbnail.GetData(); | 540 unsigned char *data = thumbnail.GetData(); |
| 518 for ( int y=0; y<226; y++ ) for ( int x=0; x<160; x++ ) data[(y*160+x)*3+2] = 255; // 文字色:黒(0,0,0)->青(0,0.255) | 541 for ( int y=0; y<THUMB_H; y++ ) for ( int x=0; x<THUMB_W; x++ ) data[(y*THUMB_W+x)*3+2] = 255; // 文字色:黒(0,0,0)->青(0,0.255) |
| 519 wxBitmap bmp_mask( thumbnail ); | 542 wxBitmap bmp_mask( thumbnail ); |
| 520 | 543 |
| 521 ci->filename = file; | 544 ci->filename = file; |
| 522 ci->fullpath = fullpath; | 545 ci->fullpath = fullpath; |
| 523 ci->marksheet = m; | 546 ci->marksheet = m; |
| 578 { | 601 { |
| 579 wxString hhsdir; | 602 wxString hhsdir; |
| 580 hhsdir.Append( m_textCtrlDist->GetValue() ); | 603 hhsdir.Append( m_textCtrlDist->GetValue() ); |
| 581 hhsdir.Append( wxFILE_SEP_PATH ); | 604 hhsdir.Append( wxFILE_SEP_PATH ); |
| 582 | 605 |
| 583 wxListItem item = event.GetItem(); | 606 int i = event.GetIndex(); |
| 607 wxListItem item; | |
| 608 item.SetId(i); | |
| 609 | |
| 584 item.SetColumn(1); | 610 item.SetColumn(1); |
| 585 item.SetMask(wxLIST_MASK_TEXT); | 611 item.SetMask(wxLIST_MASK_TEXT); |
| 586 m_listCtrlHhsDir->GetItem( item ); | 612 m_listCtrlHhsDir->GetItem( item ); |
| 587 hhsdir.Append( item.GetText() ); | 613 hhsdir.Append( item.GetText() ); |
| 588 wxString execmd = wxT("explorer ") + hhsdir; | 614 wxString execmd = wxT("explorer ") + hhsdir; |
| 589 wxExecute( execmd ); | 615 wxExecute( execmd ); |
| 590 //wxMessageBox(hhsdir); | |
| 591 } | 616 } |
| 592 | 617 |
| 593 // 以下,定型もの | 618 // 以下,定型もの |
| 594 void MyFrame::OnTimer(wxTimerEvent& event) | 619 void MyFrame::OnTimer(wxTimerEvent& event) |
| 595 { | 620 { |
