Mercurial > mercurial > hgweb_searcher03.cgi
view 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 source
// Filename : kana.cpp // Last Change: 04-Aug-2013. // #include "kana.h" #include "db.h" KanaDialog::KanaDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); // wxBoxSizer* bSizerSearch = new wxBoxSizer( wxHORIZONTAL ); 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, ID_FUZZY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerSearch->Add( m_checkBox, 0, wxALL|wxEXPAND, 5 ); bSizerTop->Add( bSizerSearch, 0, wxALL|wxEXPAND, 5 ); // m_listCtrl = new wxListCtrl( this, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); wxListItem itemCol; itemCol.SetText( wxT("通番") ); m_listCtrl->InsertColumn( 0, itemCol ); m_listCtrl->SetColumnWidth( 0, 40 ); itemCol.SetText( wxT("被保険者番号") ); m_listCtrl->InsertColumn( 1, itemCol ); m_listCtrl->SetColumnWidth( 1, 90 ); itemCol.SetText( wxT("カナ") ); m_listCtrl->InsertColumn( 2, itemCol ); m_listCtrl->SetColumnWidth( 2, 100 ); itemCol.SetText( wxT("氏名") ); m_listCtrl->InsertColumn( 3, itemCol ); m_listCtrl->SetColumnWidth( 3, 100 ); itemCol.SetText( wxT("生年月日") ); m_listCtrl->InsertColumn( 4, itemCol ); m_listCtrl->SetColumnWidth( 4, 60 ); itemCol.SetText( wxT("住所") ); m_listCtrl->InsertColumn( 5, itemCol ); m_listCtrl->SetColumnWidth( 5, 180 ); bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); // wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); 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, ID_SETKANA, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); this->SetSizer( bSizerTop ); this->Layout(); this->Centre( wxBOTH ); m_searchCtrl->SetFocus(); m_searchCtrl->SetValue( wxT("全角で入力してネ! (性と名の間は全角スペースで)") ); m_searchCtrl->SelectAll(); } KanaDialog::~KanaDialog() { } // Event Table BEGIN_EVENT_TABLE( KanaDialog, wxDialog ) 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::OnSearch( wxCommandEvent& WXUNUSED(event) ) { UpdateList(); } void KanaDialog::OnFuzzyCheck( wxCommandEvent& WXUNUSED(event) ) { UpdateList(); } void KanaDialog::OnSelectItem( wxListEvent& WXUNUSED(event) ) { m_hhsno = wxT("hoge"); if ( IsModal() ) EndModal( wxID_OK ); else { SetReturnCode( wxID_OK ); Show( false ); } } void KanaDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) { m_hhsno = wxT("hoge"); if ( IsModal() ) EndModal( wxID_OK ); else { SetReturnCode( wxID_OK ); Show( false ); } } void KanaDialog::UpdateList( void ) { m_listCtrl->DeleteAllItems(); 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 ); 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")) ); } }