Mercurial > mercurial > hgweb_searcher2.cgi
comparison src/ccnframe.cpp @ 22:05f76f9f9186
index buttons move to main-frame.
author | pyon@macmini |
---|---|
date | Wed, 27 Jul 2011 19:01:09 +0900 |
parents | eb3f5c7c990f |
children |
comparison
equal
deleted
inserted
replaced
21:eb3f5c7c990f | 22:05f76f9f9186 |
---|---|
1 // Filename : ccnframe.cpp | 1 // Filename : ccnframe.cpp |
2 // Last Change: 23-Jul-2011. | 2 // Last Change: 27-Jul-2011. |
3 // | 3 // |
4 | 4 |
5 #include "common.h" | 5 #include "common.h" |
6 #include "main.h" | 6 #include "main.h" |
7 #include "ccnframe.h" | 7 #include "ccnframe.h" |
15 | 15 |
16 wxBoxSizer* bSizer; | 16 wxBoxSizer* bSizer; |
17 bSizer = new wxBoxSizer( wxHORIZONTAL ); | 17 bSizer = new wxBoxSizer( wxHORIZONTAL ); |
18 | 18 |
19 // DB表示 | 19 // DB表示 |
20 wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 5, 0, 0 ); | 20 wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 6, 0, 0 ); |
21 fgSizer->AddGrowableRow(1); | 21 fgSizer->AddGrowableRow(1); |
22 | 22 |
23 m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 ); | 23 m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 ); |
24 fgSizer->Add( m_staticText1, 0, wxALL, 5 ); | 24 fgSizer->Add( m_staticText1, 0, wxALL, 5 ); |
25 | |
26 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); | 25 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); |
27 | 26 |
28 m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 ); | 27 m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 ); |
29 fgSizer->Add( m_staticText2, 0, wxALL, 5 ); | 28 fgSizer->Add( m_staticText2, 0, wxALL, 5 ); |
30 | |
31 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); | 29 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); |
32 | 30 |
33 m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 ); | 31 m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 ); |
34 fgSizer->Add( m_staticText3, 0, wxALL, 5 ); | 32 fgSizer->Add( m_staticText3, 0, wxALL, 5 ); |
35 | 33 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); |
36 m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); | 34 |
35 m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 300, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); | |
37 fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 ); | 36 fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 ); |
38 | 37 |
39 m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 ); | 38 m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 ); |
40 fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); | 39 fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); |
41 | 40 |
46 fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); | 45 fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); |
47 | 46 |
48 m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); | 47 m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); |
49 fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 ); | 48 fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 ); |
50 | 49 |
50 m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); | |
51 fgSizer->Add( m_btnClose, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5 ); | |
52 m_btnClose->SetFocus(); | |
53 | |
51 bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 ); | 54 bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 ); |
52 | |
53 // Index作成 | |
54 wxGridBagSizer* gbSizer = new wxGridBagSizer( 0, 0 ); | |
55 gbSizer->SetFlexibleDirection( wxVERTICAL ); | |
56 gbSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); | |
57 gbSizer->AddGrowableRow(3); | |
58 | |
59 m_btnPrevThu = new wxButton( m_Panel, ID_PRVTHU, wxT("<< 前木"), wxDefaultPosition, wxDefaultSize, 0 ); | |
60 gbSizer->Add( m_btnPrevThu, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALL, 5 ); | |
61 | |
62 m_btnNextThu = new wxButton( m_Panel, ID_NXTTHU, wxT("次木 >>"), wxDefaultPosition, wxDefaultSize, 0 ); | |
63 gbSizer->Add( m_btnNextThu, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 ); | |
64 | |
65 m_datePicker = new wxDatePickerCtrl( m_Panel, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN|wxDP_SHOWCENTURY ); | |
66 gbSizer->Add( m_datePicker, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER|wxALL, 5 ); | |
67 | |
68 m_btnMkIdX = new wxButton( m_Panel, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); | |
69 gbSizer->Add( m_btnMkIdX, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 ); | |
70 | |
71 m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); | |
72 gbSizer->Add( m_btnClose, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_BOTTOM|wxALL, 5 ); | |
73 | |
74 bSizer->Add( gbSizer, 0, wxEXPAND|wxALL, 5 ); | |
75 | 55 |
76 m_Panel->SetSizer( bSizer ); | 56 m_Panel->SetSizer( bSizer ); |
77 m_Panel->Layout(); | 57 m_Panel->Layout(); |
78 | 58 |
79 this->SetSize( 1000, 400 ); | 59 this->SetSize( 1000, 500 ); |
80 this->Centre( wxBOTH ); | 60 this->Centre( wxBOTH ); |
81 InitListCtrl(); | 61 InitListCtrl(); |
82 } | 62 } |
83 | 63 |
84 // Destructor | 64 // Destructor |
88 | 68 |
89 // Event Table | 69 // Event Table |
90 BEGIN_EVENT_TABLE( FrameCcn, wxFrame ) | 70 BEGIN_EVENT_TABLE( FrameCcn, wxFrame ) |
91 EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd ) | 71 EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd ) |
92 EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn ) | 72 EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn ) |
93 EVT_BUTTON( ID_PRVTHU, FrameCcn::OnPrevThu ) | |
94 EVT_BUTTON( ID_NXTTHU, FrameCcn::OnNextThu ) | |
95 EVT_BUTTON( ID_MKIDX, FrameCcn::OnMkIndex ) | |
96 EVT_BUTTON( ID_CLOSE, FrameCcn::OnClose ) | 73 EVT_BUTTON( ID_CLOSE, FrameCcn::OnClose ) |
97 END_EVENT_TABLE() | 74 END_EVENT_TABLE() |
98 | 75 |
99 // Event Handlers | 76 // Event Handlers |
100 void FrameCcn::OnSelectYmd(wxListEvent& WXUNUSED(event)) | 77 void FrameCcn::OnSelectYmd(wxListEvent& event) |
101 { | 78 { |
102 m_listCtrlCcn->DeleteAllItems(); | 79 long i = event.GetIndex(); |
80 wxString ymd = m_listCtrlYmd->GetItemText( i ); | |
81 ymd.Replace( wxT("-"), wxEmptyString, true ); | |
103 | 82 |
104 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); | 83 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); |
105 wxSQLite3Database ccndb; | 84 wxSQLite3Database ccndb; |
106 ccndb.Open( gszFile ); | 85 ccndb.Open( gszFile ); |
107 | 86 |
108 wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT path FROM path WHERE hhsno = ?"); | 87 wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT hhsno, path FROM path WHERE path LIKE ?"); |
109 stmt.Bind( 1, wxT("0300012345") ); | 88 stmt.Bind( 1, wxT("08") ); |
110 wxSQLite3ResultSet q = stmt.ExecuteQuery(); | 89 wxSQLite3ResultSet q = stmt.ExecuteQuery(); |
111 if ( q.IsNull(0) ) { | 90 if ( q.IsNull(0) ) { |
112 return; | 91 return; |
113 } | 92 } |
93 | |
114 long r=0; | 94 long r=0; |
115 while ( q.NextRow() ) { | 95 while ( q.NextRow() ) { |
116 wxString ccn = q.GetString(0); | 96 wxMessageBox(wxT("aaa")); |
97 wxString hhsno = q.GetString(0); | |
117 //wxString cnt = q.GetString(1); | 98 //wxString cnt = q.GetString(1); |
118 m_listCtrlCcn->InsertItem( r, ccn ); | 99 m_listCtrlHhs->InsertItem( r, hhsno ); |
119 //m_listCtrlCcn->SetItem( r, 1, cnt, -1 ); | 100 //m_listCtrlCcn->SetItem( r, 1, cnt, -1 ); |
120 r++; | 101 r++; |
121 } | 102 } |
122 stmt.Finalize(); | 103 stmt.Finalize(); |
123 ccndb.Close(); | 104 ccndb.Close(); |
144 | 125 |
145 stmt.Finalize(); | 126 stmt.Finalize(); |
146 ccndb.Close(); | 127 ccndb.Close(); |
147 } | 128 } |
148 | 129 |
149 // 前木 | |
150 void FrameCcn::OnPrevThu(wxCommandEvent& WXUNUSED(event)) | |
151 { | |
152 wxDateTime dt = m_datePicker->GetValue(); | |
153 wxDateSpan ds( 0, 0, 0, 1 ); | |
154 dt -= ds; | |
155 dt.SetToPrevWeekDay( wxDateTime::Thu ); | |
156 m_datePicker->SetValue( dt ); | |
157 | |
158 } | |
159 // 次木 | |
160 void FrameCcn::OnNextThu(wxCommandEvent& WXUNUSED(event)) | |
161 { | |
162 wxDateTime dt = m_datePicker->GetValue(); | |
163 wxDateSpan ds( 0, 0, 0, 1 ); | |
164 dt += ds; | |
165 dt.SetToNextWeekDay( wxDateTime::Thu ); | |
166 m_datePicker->SetValue( dt ); | |
167 } | |
168 | |
169 /* インデックス作成 */ | |
170 void FrameCcn::OnMkIndex(wxCommandEvent& WXUNUSED(event)) | |
171 { | |
172 wxDateTime dt = m_datePicker->GetValue(); | |
173 wxString month = dt.Format(wxT("%m")); | |
174 wxString year = dt.Format(wxT("%Y")); | |
175 if ( month.IsSameAs(wxT("01")) || month.IsSameAs(wxT("02")) || month.IsSameAs(wxT("03")) ) { | |
176 long y; | |
177 year.ToLong( &y, 10 ); | |
178 y--; | |
179 year = wxString::Format(wxT("%d"),y); | |
180 } | |
181 wxString pathroot = wxGetApp().rootdir + wxFILE_SEP_PATH + year + dt.Format(wxT("\\%Y%m%d")); | |
182 wxDir rootd(pathroot); | |
183 if ( !wxDir::Exists(pathroot) ) { | |
184 wxMessageBox( wxT("フォルダが存在しません.")+pathroot ); | |
185 return; | |
186 } | |
187 | |
188 wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), 200, this, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE ); | |
189 pd.SetSize( wxSize(320,140) ); | |
190 int count=0; | |
191 | |
192 wxString ccndir; | |
193 bool cont = rootd.GetFirst( &ccndir, wxT("*.*"), wxDIR_DIRS ); | |
194 while ( cont ) { | |
195 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); | |
196 wxSQLite3Database ccndb; | |
197 ccndb.Open( gszFile ); | |
198 | |
199 wxSQLite3Statement stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO ccn VALUES( ?, datetime('now','localtime') )"); | |
200 stmt.Bind( 1, dt.Format(wxT("%Y-%m-%d")) ); | |
201 stmt.ExecuteQuery(); | |
202 | |
203 stmt.Finalize(); | |
204 | |
205 wxDir ccnd( pathroot + wxFILE_SEP_PATH + ccndir ); | |
206 if ( !ccnd.IsOpened() ) return; | |
207 wxString hhsdir; | |
208 bool c = ccnd.GetFirst( &hhsdir, wxT("*.*"), wxDIR_DIRS ); | |
209 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック | |
210 while ( c ) { | |
211 if ( reHhs.Matches(hhsdir) ) { | |
212 wxString path = pathroot + wxFILE_SEP_PATH + ccndir + wxFILE_SEP_PATH + hhsdir; | |
213 | |
214 stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO path VALUES( ?, ? )"); | |
215 stmt.Bind( 1, hhsdir ); | |
216 stmt.Bind( 2, path ); | |
217 stmt.ExecuteQuery(); | |
218 | |
219 stmt.Finalize(); | |
220 } | |
221 c = ccnd.GetNext(&hhsdir); | |
222 pd.Update( count++, hhsdir+wxT("@")+ccndir+wxT("を処理しました.") ); | |
223 } | |
224 ccndb.Close(); | |
225 | |
226 cont = rootd.GetNext(&ccndir); | |
227 } | |
228 wxMessageBox(wxT("インデックス作成が終了しました.")); | |
229 } | |
230 | |
231 // 閉じる | 130 // 閉じる |
232 void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event)) | 131 void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event)) |
233 { | 132 { |
234 this->Close(); | 133 this->Close(); |
235 } | 134 } |
241 itemCol.SetText( wxT("年-月-日") ); | 140 itemCol.SetText( wxT("年-月-日") ); |
242 m_listCtrlYmd->InsertColumn( 0, itemCol ); | 141 m_listCtrlYmd->InsertColumn( 0, itemCol ); |
243 m_listCtrlYmd->SetColumnWidth( 0, 100 ); | 142 m_listCtrlYmd->SetColumnWidth( 0, 100 ); |
244 itemCol.SetText( wxT("更新時刻") ); | 143 itemCol.SetText( wxT("更新時刻") ); |
245 m_listCtrlYmd->InsertColumn( 1, itemCol ); | 144 m_listCtrlYmd->InsertColumn( 1, itemCol ); |
246 m_listCtrlYmd->SetColumnWidth( 1, 200 ); | 145 m_listCtrlYmd->SetColumnWidth( 1, 180 ); |
247 | 146 |
248 itemCol.SetText( wxT("合議体名") ); | 147 itemCol.SetText( wxT("合議体名") ); |
249 m_listCtrlCcn->InsertColumn( 0, itemCol ); | 148 m_listCtrlCcn->InsertColumn( 0, itemCol ); |
250 m_listCtrlCcn->SetColumnWidth( 0, 100 ); | 149 m_listCtrlCcn->SetColumnWidth( 0, 100 ); |
251 itemCol.SetText( wxT("件数") ); | 150 itemCol.SetText( wxT("件数") ); |
257 m_listCtrlHhs->SetColumnWidth( 0, 100 ); | 156 m_listCtrlHhs->SetColumnWidth( 0, 100 ); |
258 itemCol.SetText( wxT("氏名") ); | 157 itemCol.SetText( wxT("氏名") ); |
259 m_listCtrlHhs->InsertColumn( 1, itemCol ); | 158 m_listCtrlHhs->InsertColumn( 1, itemCol ); |
260 m_listCtrlHhs->SetColumnWidth( 1, 100 ); | 159 m_listCtrlHhs->SetColumnWidth( 1, 100 ); |
261 | 160 |
262 // read from db | 161 // Ymd: read from db |
263 m_listCtrlCcn->DeleteAllItems(); | 162 m_listCtrlCcn->DeleteAllItems(); |
264 | 163 |
265 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); | 164 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); |
266 wxSQLite3Database ccndb; | 165 wxSQLite3Database ccndb; |
267 ccndb.Open( gszFile ); | 166 ccndb.Open( gszFile ); |
272 while ( q.NextRow() ) { | 171 while ( q.NextRow() ) { |
273 wxString ymd = q.GetString(0); | 172 wxString ymd = q.GetString(0); |
274 wxString time = q.GetString(1); | 173 wxString time = q.GetString(1); |
275 m_listCtrlYmd->InsertItem( r, ymd ); | 174 m_listCtrlYmd->InsertItem( r, ymd ); |
276 m_listCtrlYmd->SetItem( r, 1, time, -1 ); | 175 m_listCtrlYmd->SetItem( r, 1, time, -1 ); |
176 if ( r % 2 ) | |
177 m_listCtrlYmd->SetItemBackgroundColour( r, wxColour(wxT("WHEAT")) ); | |
277 r++; | 178 r++; |
278 } | 179 } |
279 | 180 |
280 stmt.Finalize(); | 181 stmt.Finalize(); |
281 ccndb.Close(); | 182 ccndb.Close(); |
282 } | 183 |
283 | 184 // Ccn |
185 m_listCtrlCcn->InsertItem( 0, wxT("六郷1") ); | |
186 m_listCtrlCcn->InsertItem( 1, wxT("六郷2") ); | |
187 m_listCtrlCcn->InsertItem( 2, wxT("六郷3") ); | |
188 m_listCtrlCcn->InsertItem( 3, wxT("千畑1") ); | |
189 m_listCtrlCcn->InsertItem( 4, wxT("千畑2") ); | |
190 m_listCtrlCcn->InsertItem( 5, wxT("千畑3") ); | |
191 m_listCtrlCcn->InsertItem( 6, wxT("大曲1") ); | |
192 m_listCtrlCcn->InsertItem( 7, wxT("大曲2") ); | |
193 m_listCtrlCcn->InsertItem( 8, wxT("大曲3") ); | |
194 m_listCtrlCcn->InsertItem( 9, wxT("大曲4") ); | |
195 m_listCtrlCcn->InsertItem( 10, wxT("大曲5") ); | |
196 m_listCtrlCcn->InsertItem( 11, wxT("大曲6") ); | |
197 m_listCtrlCcn->InsertItem( 12, wxT("西仙1") ); | |
198 m_listCtrlCcn->InsertItem( 13, wxT("西仙2") ); | |
199 m_listCtrlCcn->InsertItem( 14, wxT("西仙3") ); | |
200 m_listCtrlCcn->InsertItem( 15, wxT("角館1") ); | |
201 m_listCtrlCcn->InsertItem( 16, wxT("角館2") ); | |
202 m_listCtrlCcn->InsertItem( 17, wxT("角館3") ); | |
203 m_listCtrlCcn->InsertItem( 18, wxT("角館4") ); | |
204 m_listCtrlCcn->InsertItem( 19, wxT("合計") ); | |
205 } | |
206 |