Mercurial > mercurial > hgweb_searcher03.cgi
comparison src/kana.cpp @ 1:7b6dab24f4b8
Gui parts complete.
| author | pyon@macmini |
|---|---|
| date | Sun, 04 Aug 2013 21:42:49 +0900 |
| parents | 0c0701a935f8 |
| children | c066fde99517 |
comparison
equal
deleted
inserted
replaced
| 0:0c0701a935f8 | 1:7b6dab24f4b8 |
|---|---|
| 1 // Filename : kana.cpp | 1 // Filename : kana.cpp |
| 2 // Last Change: 21-Jul-2013. | 2 // Last Change: 04-Aug-2013. |
| 3 // | 3 // |
| 4 | 4 |
| 5 #include "kana.h" | 5 #include "kana.h" |
| 6 #include "db.h" | 6 #include "db.h" |
| 7 | 7 |
| 13 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); | 13 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); |
| 14 | 14 |
| 15 // | 15 // |
| 16 wxBoxSizer* bSizerSearch = new wxBoxSizer( wxHORIZONTAL ); | 16 wxBoxSizer* bSizerSearch = new wxBoxSizer( wxHORIZONTAL ); |
| 17 | 17 |
| 18 m_searchCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); | 18 m_searchCtrl = new wxSearchCtrl( this, ID_SEARCHKANA, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); |
| 19 #ifndef __WXMAC__ | 19 #ifndef __WXMAC__ |
| 20 m_searchCtrl->ShowSearchButton( true ); | 20 m_searchCtrl->ShowSearchButton( true ); |
| 21 #endif | 21 #endif |
| 22 m_searchCtrl->ShowCancelButton( false ); | 22 m_searchCtrl->ShowCancelButton( false ); |
| 23 bSizerSearch->Add( m_searchCtrl, 1, wxALL|wxEXPAND, 5 ); | 23 bSizerSearch->Add( m_searchCtrl, 1, wxALL|wxEXPAND, 5 ); |
| 24 | 24 |
| 25 m_checkBox = new wxCheckBox( this, wxID_ANY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 ); | 25 m_checkBox = new wxCheckBox( this, ID_FUZZY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 26 bSizerSearch->Add( m_checkBox, 0, wxALL|wxEXPAND, 5 ); | 26 bSizerSearch->Add( m_checkBox, 0, wxALL|wxEXPAND, 5 ); |
| 27 | 27 |
| 28 bSizerTop->Add( bSizerSearch, 0, wxALL|wxEXPAND, 5 ); | 28 bSizerTop->Add( bSizerSearch, 0, wxALL|wxEXPAND, 5 ); |
| 29 | 29 |
| 30 // | 30 // |
| 31 m_listCtrl = new wxListCtrl( this, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); | 31 m_listCtrl = new wxListCtrl( this, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); |
| 32 | 32 |
| 33 wxListItem itemCol; | 33 wxListItem itemCol; |
| 34 itemCol.SetText( wxT("通番") ); | |
| 35 m_listCtrl->InsertColumn( 0, itemCol ); | |
| 36 m_listCtrl->SetColumnWidth( 0, 40 ); | |
| 34 itemCol.SetText( wxT("被保険者番号") ); | 37 itemCol.SetText( wxT("被保険者番号") ); |
| 35 m_listCtrl->InsertColumn( 0, itemCol ); | 38 m_listCtrl->InsertColumn( 1, itemCol ); |
| 36 m_listCtrl->SetColumnWidth( 0, 80 ); | 39 m_listCtrl->SetColumnWidth( 1, 90 ); |
| 37 itemCol.SetText( wxT("カナ") ); | 40 itemCol.SetText( wxT("カナ") ); |
| 38 m_listCtrl->InsertColumn( 1, itemCol ); | |
| 39 m_listCtrl->SetColumnWidth( 1, 100 ); | |
| 40 itemCol.SetText( wxT("氏名") ); | |
| 41 m_listCtrl->InsertColumn( 2, itemCol ); | 41 m_listCtrl->InsertColumn( 2, itemCol ); |
| 42 m_listCtrl->SetColumnWidth( 2, 100 ); | 42 m_listCtrl->SetColumnWidth( 2, 100 ); |
| 43 itemCol.SetText( wxT("氏名") ); | |
| 44 m_listCtrl->InsertColumn( 3, itemCol ); | |
| 45 m_listCtrl->SetColumnWidth( 3, 100 ); | |
| 43 itemCol.SetText( wxT("生年月日") ); | 46 itemCol.SetText( wxT("生年月日") ); |
| 44 m_listCtrl->InsertColumn( 3, itemCol ); | 47 m_listCtrl->InsertColumn( 4, itemCol ); |
| 45 m_listCtrl->SetColumnWidth( 3, 60 ); | 48 m_listCtrl->SetColumnWidth( 4, 60 ); |
| 46 itemCol.SetText( wxT("住所") ); | 49 itemCol.SetText( wxT("住所") ); |
| 47 m_listCtrl->InsertColumn( 4, itemCol ); | 50 m_listCtrl->InsertColumn( 5, itemCol ); |
| 48 m_listCtrl->SetColumnWidth( 4, 180 ); | 51 m_listCtrl->SetColumnWidth( 5, 180 ); |
| 49 | 52 |
| 50 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); | 53 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); |
| 51 | 54 |
| 52 // | 55 // |
| 53 wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); | 56 wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); |
| 54 | 57 |
| 55 m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 ); | 58 m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 56 bSizerBtn->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 59 bSizerBtn->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 57 | 60 |
| 58 m_buttonSet = new wxButton( this, wxID_OK, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); | 61 m_buttonSet = new wxButton( this, ID_SETKANA, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 59 bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | 62 bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); |
| 60 | 63 |
| 61 bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); | 64 bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); |
| 62 | 65 |
| 63 this->SetSizer( bSizerTop ); | 66 this->SetSizer( bSizerTop ); |
| 64 this->Layout(); | 67 this->Layout(); |
| 65 | 68 |
| 66 this->Centre( wxBOTH ); | 69 this->Centre( wxBOTH ); |
| 70 | |
| 71 m_searchCtrl->SetFocus(); | |
| 72 m_searchCtrl->SetValue( wxT("全角で入力してネ! (性と名の間は全角スペースで)") ); | |
| 73 m_searchCtrl->SelectAll(); | |
| 67 } | 74 } |
| 68 | 75 |
| 69 KanaDialog::~KanaDialog() | 76 KanaDialog::~KanaDialog() |
| 70 { | 77 { |
| 71 } | 78 } |
| 72 | 79 |
| 73 // Event Table | 80 // Event Table |
| 74 BEGIN_EVENT_TABLE( KanaDialog, wxDialog ) | 81 BEGIN_EVENT_TABLE( KanaDialog, wxDialog ) |
| 75 //EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir ) | 82 EVT_TEXT_ENTER( ID_SEARCHKANA, KanaDialog::OnSearch ) |
| 76 //EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) | 83 EVT_CHECKBOX( ID_FUZZY, KanaDialog::OnFuzzyCheck ) |
| 84 EVT_LIST_ITEM_ACTIVATED( ID_LISTKANA, KanaDialog::OnSelectItem ) | |
| 85 EVT_BUTTON( ID_SETKANA, KanaDialog::OnSet ) | |
| 77 END_EVENT_TABLE() | 86 END_EVENT_TABLE() |
| 78 | 87 |
| 79 // Event Handlers & Functions | 88 // Event Handlers & Functions |
| 80 /* | 89 void KanaDialog::OnSearch( wxCommandEvent& WXUNUSED(event) ) |
| 81 void KanaDialog::Search( void ) { | 90 { |
| 91 UpdateList(); | |
| 92 } | |
| 82 | 93 |
| 83 wxTextFile file; | 94 void KanaDialog::OnFuzzyCheck( wxCommandEvent& WXUNUSED(event) ) |
| 84 wxString filename = wxGetCwd() + wxFILE_SEP_PATH + wxT(".history"); | 95 { |
| 96 UpdateList(); | |
| 97 } | |
| 98 | |
| 99 void KanaDialog::OnSelectItem( wxListEvent& WXUNUSED(event) ) | |
| 100 { | |
| 101 m_hhsno = wxT("hoge"); | |
| 102 if ( IsModal() ) | |
| 103 EndModal( wxID_OK ); | |
| 104 else { | |
| 105 SetReturnCode( wxID_OK ); | |
| 106 Show( false ); | |
| 107 } | |
| 108 } | |
| 109 | |
| 110 void KanaDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) | |
| 111 { | |
| 112 m_hhsno = wxT("hoge"); | |
| 113 if ( IsModal() ) | |
| 114 EndModal( wxID_OK ); | |
| 115 else { | |
| 116 SetReturnCode( wxID_OK ); | |
| 117 Show( false ); | |
| 118 } | |
| 119 } | |
| 120 | |
| 121 void KanaDialog::UpdateList( void ) | |
| 122 { | |
| 123 m_listCtrl->DeleteAllItems(); | |
| 124 | |
| 125 wxString s = m_searchCtrl->GetValue(); | |
| 126 if ( s.Len() < 3 ) { | |
| 127 wxMessageBox( wxT("指定する文字列は 3文字以上としてください.") ); | |
| 128 return; | |
| 129 } | |
| 130 | |
| 131 /* | |
| 132 wxRegEx reKana( "^[アイウエオカキクケコサシスセソナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョ ]+$" ); | |
| 133 if ( !reKana.Matches( s ) ) { | |
| 134 wxMessageBox( wxT("カタカナで入力してください.") ); | |
| 135 return; | |
| 136 } | |
| 137 */ | |
| 138 | |
| 139 bool fuzzy = m_checkBox->IsChecked(); | |
| 140 m_hhs = GetHhsInfoByKana( s, fuzzy ); | |
| 141 | |
| 142 if ( m_hhs.GetCount() > 200 ) { | |
| 143 wxMessageBox( wxT("該当件数が 200 件を超えました.\n条件を変えてみてください.") ); | |
| 144 return; | |
| 145 } | |
| 146 else if ( m_hhs.IsEmpty() ){ | |
| 147 wxMessageBox( wxT("該当なし.") ); | |
| 148 return; | |
| 149 } | |
| 150 | |
| 85 wxString buf; | 151 wxString buf; |
| 152 for ( int i = 0; i < m_hhs.GetCount(); i++ ) { | |
| 153 int col = 0; | |
| 154 m_listCtrl->InsertItem( i, -1 ); | |
| 155 buf.Printf( wxT("%02d"), i + 1 ); | |
| 156 m_listCtrl->SetItem( i, col, buf, -1 ); // No | |
| 86 | 157 |
| 87 if ( file.Open( filename ) ) { | 158 wxStringTokenizer tkz( m_hhs[i], wxT("_") ); |
| 159 while ( tkz.HasMoreTokens() ) { | |
| 160 col++; | |
| 161 wxString token = tkz.GetNextToken(); | |
| 162 m_listCtrl->SetItem( i, col, token, -1 ); | |
| 163 } | |
| 164 if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) ); | |
| 165 } | |
| 166 } | |
| 88 | 167 |
| 89 for ( size_t i = 0; i<file.GetLineCount(); i++ ) { | |
| 90 | 168 |
| 91 int col = 0; | |
| 92 m_listCtrl->InsertItem( i, -1 ); | |
| 93 buf.Printf( wxT("%02d"), i + 1 ); | |
| 94 m_listCtrl->SetItem( i, col, buf, -1 ); // No | |
| 95 | |
| 96 wxStringTokenizer tkz( file[i], wxT(":") ); | |
| 97 while ( tkz.HasMoreTokens() ) { | |
| 98 col++; | |
| 99 wxString token = tkz.GetNextToken(); | |
| 100 m_listCtrl->SetItem( i, col, token, -1 ); | |
| 101 } | |
| 102 if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) ); | |
| 103 } | |
| 104 } | |
| 105 file.Close(); | |
| 106 } | |
| 107 */ | |
| 108 |
