Mercurial > mercurial > hgweb_searcher2.cgi
changeset 21:eb3f5c7c990f
small changes.
author | pyon@macmini |
---|---|
date | Mon, 25 Jul 2011 05:20:55 +0900 |
parents | 39f9f1c7618c |
children | 05f76f9f9186 |
files | include/ccnframe.h include/common.h makefile src/ccnframe.cpp src/myframe.cpp |
diffstat | 5 files changed, 250 insertions(+), 122 deletions(-) [+] |
line wrap: on
line diff
--- a/include/ccnframe.h Thu Jul 21 05:38:27 2011 +0900 +++ b/include/ccnframe.h Mon Jul 25 05:20:55 2011 +0900 @@ -1,9 +1,9 @@ // Filename : ccnframe.h -// Last Change: 18-Jul-2011. +// Last Change: 22-Jul-2011. // -#ifndef __ccnframe__ -#define __ccnframe__ +#ifndef __CCNFRAME__ +#define __CCNFRAME__ #include "wx/wxprec.h" #ifndef WX_PRECOMP @@ -13,6 +13,10 @@ #include <wx/button.h> #include <wx/datectrl.h> #include <wx/gbsizer.h> + #include "wx/dir.h" + #include "wx/regex.h" + #include "wx/progdlg.h" + #include "wx/stdpaths.h" #endif /////////////////////////////////////////////////////////////////////////// @@ -44,7 +48,14 @@ ~FrameCcn(); void InitListCtrl(void); + + void OnSelectYmd(wxListEvent&); + void OnSelectCcn(wxListEvent&); + void OnPrevThu(wxCommandEvent&); + void OnNextThu(wxCommandEvent&); + void OnMkIndex(wxCommandEvent&); + void OnClose(wxCommandEvent&); }; -#endif //__ccnframe__ +#endif //__CCNFRAME__
--- a/include/common.h Thu Jul 21 05:38:27 2011 +0900 +++ b/include/common.h Mon Jul 25 05:20:55 2011 +0900 @@ -1,5 +1,5 @@ // Filename : common.h -// Last Change: 14-Jul-2011. +// Last Change: 23-Jul-2011. // #ifndef __COMMON__ #define __COMMON__ @@ -14,64 +14,64 @@ // mainframe ID_MAIN = wxID_HIGHEST + 1, - ID_MUPHHS = wxID_HIGHEST + 2, - ID_MLSCCN = wxID_HIGHEST + 3, - ID_MCHKHHS = wxID_HIGHEST + 4, - ID_MDBBKUP = wxID_HIGHEST + 5, - ID_MDBOPT = wxID_HIGHEST + 6, - ID_MOAD = wxID_HIGHEST + 7, - ID_MODD = wxID_HIGHEST + 8, - ID_MHELP = wxID_HIGHEST + 9, + ID_MUPHHS, + ID_MLSCCN, + ID_MCHKHHS, + ID_MDBBKUP, + ID_MDBOPT, + ID_MOAD, + ID_MODD, + ID_MHELP, - ID_SRCHHHS = wxID_HIGHEST + 20, - ID_DTIDX = wxID_HIGHEST + 21, - ID_MKIDXx = wxID_HIGHEST + 22, + ID_SRCHHHS, + ID_DTIDX, + ID_MKIDXx, - ID_SPLT = wxID_HIGHEST + 23, - ID_HTML = wxID_HIGHEST + 24, - ID_HLST = wxID_HIGHEST + 25, - ID_CCNx = wxID_HIGHEST + 26, + ID_SPLT, + ID_HTML, + ID_HLST, + ID_CCNx, - ID_CMD = wxID_HIGHEST + 27, + ID_CMD, // ccn - ID_FRAMECCN = wxID_HIGHEST + 30, - ID_YMD = wxID_HIGHEST + 31, - ID_CCN = wxID_HIGHEST + 32, - ID_HHS = wxID_HIGHEST + 33, - ID_PRVTHU = wxID_HIGHEST + 34, - ID_NXTTHU = wxID_HIGHEST + 35, - ID_DTPICKER = wxID_HIGHEST + 36, - ID_MKIDX = wxID_HIGHEST + 37, - ID_CLOSE = wxID_HIGHEST + 38, + ID_FRAMECCN, + ID_YMD, + ID_CCN, + ID_HHS, + ID_PRVTHU, + ID_NXTTHU, + ID_DTPICKER, + ID_MKIDX, + ID_CLOSE, // hhs-db - ID_HHSDB = wxID_HIGHEST + 50, - ID_CSVPK = wxID_HIGHEST + 51, - ID_HHSUP = wxID_HIGHEST + 52, - ID_PSWD = wxID_HIGHEST + 53, + ID_HHSDB, + ID_CSVPK, + ID_HHSUP, + ID_PSWD, // html-help - ID_HELP = wxID_HIGHEST + 60, + ID_HELP, - // preview - ID_IMGFRM = wxID_HIGHEST + 70, - ID_LSTCTRL = wxID_HIGHEST + 71, - ID_IMG1 = wxID_HIGHEST + 72, - ID_IMG2 = wxID_HIGHEST + 73, - ID_IMG3 = wxID_HIGHEST + 74, - ID_IMG4 = wxID_HIGHEST + 75, - ID_IMG5 = wxID_HIGHEST + 76, - ID_IMG = wxID_HIGHEST + 77, - ID_MGNFY = wxID_HIGHEST + 78, - ID_SLDR = wxID_HIGHEST + 79, - ID_EDIT = wxID_HIGHEST + 80, - ID_MASK = wxID_HIGHEST + 81, - ID_PRINT = wxID_HIGHEST + 82, - ID_PRTALL = wxID_HIGHEST + 83, - ID_CLSFRM = wxID_HIGHEST + 84, + ID_IMGFRM, + ID_LSTCTRL, + ID_IMG1, + ID_IMG2, + ID_IMG3, + ID_IMG4, + ID_IMG5, + ID_IMG, + ID_MGNFY, + ID_SLDR, + ID_EDIT, + ID_MASK, + ID_PRINT, + ID_PRTALL, + ID_CLSFRM, + }; -#endif +#endif // __COMMON__
--- a/makefile Thu Jul 21 05:38:27 2011 +0900 +++ b/makefile Mon Jul 25 05:20:55 2011 +0900 @@ -1,6 +1,6 @@ # # Makefile for wxWidgets Application -# Last Change: 19-Jul-2011. +# Last Change: 23-Jul-2011. # by Takayuki Mutoh # @@ -102,7 +102,7 @@ endif $(OBJDIR)/main.o: main.cpp main.h myframe.h common.h - -mkdir $(OBJDIR) + -mkdir -p $(OBJDIR) $(CXX) -c $< -o $@ $(CPPFLAGS) $(OBJDIR)/myframe.o: myframe.cpp myframe.h symbol.h common.h
--- a/src/ccnframe.cpp Thu Jul 21 05:38:27 2011 +0900 +++ b/src/ccnframe.cpp Mon Jul 25 05:20:55 2011 +0900 @@ -1,9 +1,11 @@ // Filename : ccnframe.cpp -// Last Change: 18-Jul-2011. +// Last Change: 23-Jul-2011. // #include "common.h" +#include "main.h" #include "ccnframe.h" +#include "wx/wxsqlite3.h" FrameCcn::FrameCcn( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) @@ -31,22 +33,22 @@ m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText3, 0, wxALL, 5 ); - m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); + m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 ); m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_listCtrlCcn = new wxListCtrl( m_Panel, ID_CCN, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); + m_listCtrlCcn = new wxListCtrl( m_Panel, ID_CCN, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); fgSizer->Add( m_listCtrlCcn, 1, wxALL|wxEXPAND, 5 ); m_staticText5 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL ); + m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 ); - bSizer->Add( fgSizer, 1, wxEXPAND, 5 ); + bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 ); // Index作成 wxGridBagSizer* gbSizer = new wxGridBagSizer( 0, 0 ); @@ -60,7 +62,7 @@ m_btnNextThu = new wxButton( m_Panel, ID_NXTTHU, wxT("次木 >>"), wxDefaultPosition, wxDefaultSize, 0 ); gbSizer->Add( m_btnNextThu, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 ); - m_datePicker = new wxDatePickerCtrl( m_Panel, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT|wxDP_SHOWCENTURY ); + m_datePicker = new wxDatePickerCtrl( m_Panel, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN|wxDP_SHOWCENTURY ); gbSizer->Add( m_datePicker, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER|wxALL, 5 ); m_btnMkIdX = new wxButton( m_Panel, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); @@ -69,11 +71,12 @@ m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); gbSizer->Add( m_btnClose, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_BOTTOM|wxALL, 5 ); - bSizer->Add( gbSizer, 0, wxEXPAND, 5 ); + bSizer->Add( gbSizer, 0, wxEXPAND|wxALL, 5 ); m_Panel->SetSizer( bSizer ); m_Panel->Layout(); + this->SetSize( 1000, 400 ); this->Centre( wxBOTH ); InitListCtrl(); } @@ -85,10 +88,151 @@ // Event Table BEGIN_EVENT_TABLE( FrameCcn, wxFrame ) - //EVT_TEXT_ENTER( ID_CMD, MyCmdBox::OnCmd ) + EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd ) + EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn ) + EVT_BUTTON( ID_PRVTHU, FrameCcn::OnPrevThu ) + EVT_BUTTON( ID_NXTTHU, FrameCcn::OnNextThu ) + EVT_BUTTON( ID_MKIDX, FrameCcn::OnMkIndex ) + EVT_BUTTON( ID_CLOSE, FrameCcn::OnClose ) END_EVENT_TABLE() // Event Handlers +void FrameCcn::OnSelectYmd(wxListEvent& WXUNUSED(event)) +{ + m_listCtrlCcn->DeleteAllItems(); + + wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); + wxSQLite3Database ccndb; + ccndb.Open( gszFile ); + + wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT path FROM path WHERE hhsno = ?"); + stmt.Bind( 1, wxT("0300012345") ); + wxSQLite3ResultSet q = stmt.ExecuteQuery(); + if ( q.IsNull(0) ) { + return; + } + long r=0; + while ( q.NextRow() ) { + wxString ccn = q.GetString(0); + //wxString cnt = q.GetString(1); + m_listCtrlCcn->InsertItem( r, ccn ); + //m_listCtrlCcn->SetItem( r, 1, cnt, -1 ); + r++; + } + stmt.Finalize(); + ccndb.Close(); +} + +void FrameCcn::OnSelectCcn(wxListEvent& WXUNUSED(event)) +{ + m_listCtrlHhs->DeleteAllItems(); + + wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); + wxSQLite3Database ccndb; + ccndb.Open( gszFile ); + + wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, MAX(time) FROM ccn GROUP BY ymd ORDER BY ymd DESC, time DESC"); + wxSQLite3ResultSet q = stmt.ExecuteQuery(); + long r=0; + while ( q.NextRow() ) { + wxString ymd = q.GetString(0); + wxString time = q.GetString(1); + m_listCtrlHhs->InsertItem( r, wxEmptyString ); + m_listCtrlHhs->SetItemText( r, ymd ); + r++; + } + + stmt.Finalize(); + ccndb.Close(); +} + +// 前木 +void FrameCcn::OnPrevThu(wxCommandEvent& WXUNUSED(event)) +{ + wxDateTime dt = m_datePicker->GetValue(); + wxDateSpan ds( 0, 0, 0, 1 ); + dt -= ds; + dt.SetToPrevWeekDay( wxDateTime::Thu ); + m_datePicker->SetValue( dt ); + +} +// 次木 +void FrameCcn::OnNextThu(wxCommandEvent& WXUNUSED(event)) +{ + wxDateTime dt = m_datePicker->GetValue(); + wxDateSpan ds( 0, 0, 0, 1 ); + dt += ds; + dt.SetToNextWeekDay( wxDateTime::Thu ); + m_datePicker->SetValue( dt ); +} + +/* インデックス作成 */ +void FrameCcn::OnMkIndex(wxCommandEvent& WXUNUSED(event)) +{ + wxDateTime dt = m_datePicker->GetValue(); + wxString month = dt.Format(wxT("%m")); + wxString year = dt.Format(wxT("%Y")); + if ( month.IsSameAs(wxT("01")) || month.IsSameAs(wxT("02")) || month.IsSameAs(wxT("03")) ) { + long y; + year.ToLong( &y, 10 ); + y--; + year = wxString::Format(wxT("%d"),y); + } + wxString pathroot = wxGetApp().rootdir + wxFILE_SEP_PATH + year + dt.Format(wxT("\\%Y%m%d")); + wxDir rootd(pathroot); + if ( !wxDir::Exists(pathroot) ) { + wxMessageBox( wxT("フォルダが存在しません.")+pathroot ); + return; + } + + wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), 200, this, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE ); + pd.SetSize( wxSize(320,140) ); + int count=0; + + wxString ccndir; + bool cont = rootd.GetFirst( &ccndir, wxT("*.*"), wxDIR_DIRS ); + while ( cont ) { + wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); + wxSQLite3Database ccndb; + ccndb.Open( gszFile ); + + wxSQLite3Statement stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO ccn VALUES( ?, datetime('now','localtime') )"); + stmt.Bind( 1, dt.Format(wxT("%Y-%m-%d")) ); + stmt.ExecuteQuery(); + + stmt.Finalize(); + + wxDir ccnd( pathroot + wxFILE_SEP_PATH + ccndir ); + if ( !ccnd.IsOpened() ) return; + wxString hhsdir; + bool c = ccnd.GetFirst( &hhsdir, wxT("*.*"), wxDIR_DIRS ); + wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック + while ( c ) { + if ( reHhs.Matches(hhsdir) ) { + wxString path = pathroot + wxFILE_SEP_PATH + ccndir + wxFILE_SEP_PATH + hhsdir; + + stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO path VALUES( ?, ? )"); + stmt.Bind( 1, hhsdir ); + stmt.Bind( 2, path ); + stmt.ExecuteQuery(); + + stmt.Finalize(); + } + c = ccnd.GetNext(&hhsdir); + pd.Update( count++, hhsdir+wxT("@")+ccndir+wxT("を処理しました.") ); + } + ccndb.Close(); + + cont = rootd.GetNext(&ccndir); + } + wxMessageBox(wxT("インデックス作成が終了しました.")); +} + +// 閉じる +void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event)) +{ + this->Close(); +} // Functions void FrameCcn::InitListCtrl() @@ -97,6 +241,9 @@ itemCol.SetText( wxT("年-月-日") ); m_listCtrlYmd->InsertColumn( 0, itemCol ); m_listCtrlYmd->SetColumnWidth( 0, 100 ); + itemCol.SetText( wxT("更新時刻") ); + m_listCtrlYmd->InsertColumn( 1, itemCol ); + m_listCtrlYmd->SetColumnWidth( 1, 200 ); itemCol.SetText( wxT("合議体名") ); m_listCtrlCcn->InsertColumn( 0, itemCol ); @@ -104,9 +251,6 @@ itemCol.SetText( wxT("件数") ); m_listCtrlCcn->InsertColumn( 1, itemCol ); m_listCtrlCcn->SetColumnWidth( 1, 100 ); - itemCol.SetText( wxT("更新時刻") ); - m_listCtrlCcn->InsertColumn( 2, itemCol ); - m_listCtrlCcn->SetColumnWidth( 2, 100 ); itemCol.SetText( wxT("被保険者番号") ); m_listCtrlHhs->InsertColumn( 0, itemCol ); @@ -115,6 +259,25 @@ m_listCtrlHhs->InsertColumn( 1, itemCol ); m_listCtrlHhs->SetColumnWidth( 1, 100 ); - m_listCtrlYmd->InsertItem( 0, wxT("aaa") ); + // read from db + m_listCtrlCcn->DeleteAllItems(); + + wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); + wxSQLite3Database ccndb; + ccndb.Open( gszFile ); + + wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, MAX(time) FROM ccn GROUP BY ymd ORDER BY ymd DESC, time DESC"); + wxSQLite3ResultSet q = stmt.ExecuteQuery(); + long r=0; + while ( q.NextRow() ) { + wxString ymd = q.GetString(0); + wxString time = q.GetString(1); + m_listCtrlYmd->InsertItem( r, ymd ); + m_listCtrlYmd->SetItem( r, 1, time, -1 ); + r++; + } + + stmt.Finalize(); + ccndb.Close(); }
--- a/src/myframe.cpp Thu Jul 21 05:38:27 2011 +0900 +++ b/src/myframe.cpp Mon Jul 25 05:20:55 2011 +0900 @@ -1,5 +1,5 @@ // Filename : mainframe.cpp -// Last Change: 06-Jul-2011. +// Last Change: 22-Jul-2011. // #include "wx/html/htmprint.h" #include "wx/print.h" @@ -7,6 +7,7 @@ #include "symbol.h" #include "common.h" #include "myframe.h" +#include "ccnframe.h" #include "hhsdb.h" #include "htmlhelp.h" #include "main.h" @@ -714,63 +715,16 @@ /* インデックス作成 */ void MyFrame::OnMkIndex(wxCommandEvent& WXUNUSED(event)) { - wxDateTime dt = m_datePicker->GetValue(); - wxString month = dt.Format(wxT("%m")); - wxString year = dt.Format(wxT("%Y")); - if ( month.IsSameAs(wxT("01")) || month.IsSameAs(wxT("02")) || month.IsSameAs(wxT("03")) ) { - long y; - year.ToLong( &y, 10 ); - y--; - year = wxString::Format(wxT("%d"),y); - } - wxString pathroot = wxGetApp().rootdir + wxFILE_SEP_PATH + year + dt.Format(wxT("\\%Y%m%d")); - wxDir rootd(pathroot); - if ( !wxDir::Exists(pathroot) ) { - wxMessageBox( wxT("フォルダが存在しません.")+pathroot ); - return; - } - - wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), 200, this, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE ); - pd.SetSize( wxSize(320,140) ); - int count=0; - - wxString ccndir; - bool cont = rootd.GetFirst( &ccndir, wxT("*.*"), wxDIR_DIRS ); - while ( cont ) { - wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); - wxSQLite3Database ccndb; - ccndb.Open( gszFile ); + FrameHhsDB *f = (FrameHhsDB*)FindWindowById( ID_HHSDB ); - wxSQLite3Statement stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO ccn VALUES( ?, datetime('now','localtime') )"); - stmt.Bind( 1, dt.Format(wxT("%Y-%m-%d")) ); - stmt.ExecuteQuery(); - - stmt.Finalize(); - - wxDir ccnd( pathroot + wxFILE_SEP_PATH + ccndir ); - if ( !ccnd.IsOpened() ) return; - wxString hhsdir; - bool c = ccnd.GetFirst( &hhsdir, wxT("*.*"), wxDIR_DIRS ); - wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック - while ( c ) { - if ( reHhs.Matches(hhsdir) ) { - wxString path = pathroot + wxFILE_SEP_PATH + ccndir + wxFILE_SEP_PATH + hhsdir; - - stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO path VALUES( ?, ? )"); - stmt.Bind( 1, hhsdir ); - stmt.Bind( 2, path ); - stmt.ExecuteQuery(); - - stmt.Finalize(); - } - c = ccnd.GetNext(&hhsdir); - pd.Update( count++, hhsdir+wxT("@")+ccndir+wxT("を処理しました.") ); - } - ccndb.Close(); - - cont = rootd.GetNext(&ccndir); + if ( f == NULL ) { + FrameHhsDB *hhsdb = new FrameHhsDB( this, ID_HHSDB ); + hhsdb->Show(true); } - wxMessageBox(wxT("インデックス作成が終了しました.")); + else { + f->Raise(); + } + return; } /* インデックス更新一覧 */