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