Mercurial > mercurial > hgweb_searcher03.cgi
diff src/kana.cpp @ 1:7b6dab24f4b8
Gui parts complete.
author | pyon@macmini |
---|---|
date | Sun, 04 Aug 2013 21:42:49 +0900 |
parents | 0c0701a935f8 |
children | c066fde99517 |
line wrap: on
line diff
--- a/src/kana.cpp Sun Jul 21 16:07:19 2013 +0900 +++ b/src/kana.cpp Sun Aug 04 21:42:49 2013 +0900 @@ -1,5 +1,5 @@ // Filename : kana.cpp -// Last Change: 21-Jul-2013. +// Last Change: 04-Aug-2013. // #include "kana.h" @@ -15,14 +15,14 @@ // wxBoxSizer* bSizerSearch = new wxBoxSizer( wxHORIZONTAL ); - m_searchCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); + m_searchCtrl = new wxSearchCtrl( this, ID_SEARCHKANA, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); #ifndef __WXMAC__ m_searchCtrl->ShowSearchButton( true ); #endif m_searchCtrl->ShowCancelButton( false ); bSizerSearch->Add( m_searchCtrl, 1, wxALL|wxEXPAND, 5 ); - m_checkBox = new wxCheckBox( this, wxID_ANY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBox = new wxCheckBox( this, ID_FUZZY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerSearch->Add( m_checkBox, 0, wxALL|wxEXPAND, 5 ); bSizerTop->Add( bSizerSearch, 0, wxALL|wxEXPAND, 5 ); @@ -31,21 +31,24 @@ m_listCtrl = new wxListCtrl( this, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); wxListItem itemCol; - itemCol.SetText( wxT("被保険者番号") ); + itemCol.SetText( wxT("通番") ); m_listCtrl->InsertColumn( 0, itemCol ); - m_listCtrl->SetColumnWidth( 0, 80 ); + m_listCtrl->SetColumnWidth( 0, 40 ); + itemCol.SetText( wxT("被保険者番号") ); + m_listCtrl->InsertColumn( 1, itemCol ); + m_listCtrl->SetColumnWidth( 1, 90 ); itemCol.SetText( wxT("カナ") ); - m_listCtrl->InsertColumn( 1, itemCol ); - m_listCtrl->SetColumnWidth( 1, 100 ); - itemCol.SetText( wxT("氏名") ); m_listCtrl->InsertColumn( 2, itemCol ); m_listCtrl->SetColumnWidth( 2, 100 ); - itemCol.SetText( wxT("生年月日") ); + itemCol.SetText( wxT("氏名") ); m_listCtrl->InsertColumn( 3, itemCol ); - m_listCtrl->SetColumnWidth( 3, 60 ); + m_listCtrl->SetColumnWidth( 3, 100 ); + itemCol.SetText( wxT("生年月日") ); + m_listCtrl->InsertColumn( 4, itemCol ); + m_listCtrl->SetColumnWidth( 4, 60 ); itemCol.SetText( wxT("住所") ); - m_listCtrl->InsertColumn( 4, itemCol ); - m_listCtrl->SetColumnWidth( 4, 180 ); + m_listCtrl->InsertColumn( 5, itemCol ); + m_listCtrl->SetColumnWidth( 5, 180 ); bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); @@ -55,7 +58,7 @@ m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerBtn->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_buttonSet = new wxButton( this, wxID_OK, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSet = new wxButton( this, ID_SETKANA, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); @@ -64,6 +67,10 @@ this->Layout(); this->Centre( wxBOTH ); + + m_searchCtrl->SetFocus(); + m_searchCtrl->SetValue( wxT("全角で入力してネ! (性と名の間は全角スペースで)") ); + m_searchCtrl->SelectAll(); } KanaDialog::~KanaDialog() @@ -72,37 +79,90 @@ // Event Table BEGIN_EVENT_TABLE( KanaDialog, wxDialog ) - //EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir ) - //EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) + EVT_TEXT_ENTER( ID_SEARCHKANA, KanaDialog::OnSearch ) + EVT_CHECKBOX( ID_FUZZY, KanaDialog::OnFuzzyCheck ) + EVT_LIST_ITEM_ACTIVATED( ID_LISTKANA, KanaDialog::OnSelectItem ) + EVT_BUTTON( ID_SETKANA, KanaDialog::OnSet ) END_EVENT_TABLE() // Event Handlers & Functions -/* -void KanaDialog::Search( void ) { +void KanaDialog::OnSearch( wxCommandEvent& WXUNUSED(event) ) +{ + UpdateList(); +} + +void KanaDialog::OnFuzzyCheck( wxCommandEvent& WXUNUSED(event) ) +{ + UpdateList(); +} - wxTextFile file; - wxString filename = wxGetCwd() + wxFILE_SEP_PATH + wxT(".history"); - wxString buf; +void KanaDialog::OnSelectItem( wxListEvent& WXUNUSED(event) ) +{ + m_hhsno = wxT("hoge"); + if ( IsModal() ) + EndModal( wxID_OK ); + else { + SetReturnCode( wxID_OK ); + Show( false ); + } +} - if ( file.Open( filename ) ) { +void KanaDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) +{ + m_hhsno = wxT("hoge"); + if ( IsModal() ) + EndModal( wxID_OK ); + else { + SetReturnCode( wxID_OK ); + Show( false ); + } +} - for ( size_t i = 0; i<file.GetLineCount(); i++ ) { +void KanaDialog::UpdateList( void ) +{ + m_listCtrl->DeleteAllItems(); - int col = 0; - m_listCtrl->InsertItem( i, -1 ); - buf.Printf( wxT("%02d"), i + 1 ); - m_listCtrl->SetItem( i, col, buf, -1 ); // No + wxString s = m_searchCtrl->GetValue(); + if ( s.Len() < 3 ) { + wxMessageBox( wxT("指定する文字列は 3文字以上としてください.") ); + return; + } + + /* + wxRegEx reKana( "^[アイウエオカキクケコサシスセソナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョ ]+$" ); + if ( !reKana.Matches( s ) ) { + wxMessageBox( wxT("カタカナで入力してください.") ); + return; + } + */ + + bool fuzzy = m_checkBox->IsChecked(); + m_hhs = GetHhsInfoByKana( s, fuzzy ); - wxStringTokenizer tkz( file[i], wxT(":") ); - while ( tkz.HasMoreTokens() ) { - col++; - wxString token = tkz.GetNextToken(); - m_listCtrl->SetItem( i, col, token, -1 ); - } - if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) ); + if ( m_hhs.GetCount() > 200 ) { + wxMessageBox( wxT("該当件数が 200 件を超えました.\n条件を変えてみてください.") ); + return; + } + else if ( m_hhs.IsEmpty() ){ + wxMessageBox( wxT("該当なし.") ); + return; + } + + wxString buf; + for ( int i = 0; i < m_hhs.GetCount(); i++ ) { + int col = 0; + m_listCtrl->InsertItem( i, -1 ); + buf.Printf( wxT("%02d"), i + 1 ); + m_listCtrl->SetItem( i, col, buf, -1 ); // No + + wxStringTokenizer tkz( m_hhs[i], wxT("_") ); + while ( tkz.HasMoreTokens() ) { + col++; + wxString token = tkz.GetNextToken(); + m_listCtrl->SetItem( i, col, token, -1 ); } + if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) ); } - file.Close(); } -*/ +