Mercurial > mercurial > hgweb_searcher2.cgi
changeset 22:05f76f9f9186
index buttons move to main-frame.
author | pyon@macmini |
---|---|
date | Wed, 27 Jul 2011 19:01:09 +0900 |
parents | eb3f5c7c990f |
children | a10c2fe880f8 |
files | html/start.html include/ccnframe.h include/common.h include/myframe.h include/symbol.h src/ccnframe.cpp src/main.cpp src/myframe.cpp |
diffstat | 8 files changed, 208 insertions(+), 344 deletions(-) [+] |
line wrap: on
line diff
--- a/html/start.html Mon Jul 25 05:20:55 2011 +0900 +++ b/html/start.html Wed Jul 27 19:01:09 2011 +0900 @@ -17,8 +17,11 @@ <table border="1"> <tr bgcolor="#ffcc33"> <th>年月日</th> <th>バージョン</th> <th>内容</th> </tr> <!-- - <tr> <td>2011.12.11</td> <td align="center">2.11</td> <td>プレビューモード搭載</td> </tr> + <tr> <td>2011.12.11</td> <td align="center">2.13</td> <td>プレビューモード搭載</td> </tr> --> + <tr> <td>2011.08.02</td> <td align="center">2.12</td> <td>木曜日簡単選択ボタン追加</td> </tr> + <tr> <td> </td> <td align="center"> </td> <td>審査会一覧を別フォームで表示</td> </tr> + <tr> <td>2011.07.08</td> <td align="center">2.11</td> <td>細かい修正</td> </tr> <tr> <td>2011.07.01</td> <td align="center">2.10</td> <td>イージープリント機能搭載</td> </tr> <tr> <td>2011.06.30</td> <td align="center">2.9</td> <td>のぞき窓搭載</td> </tr> <tr> <td>2011.04.01</td> <td align="center">2.8</td> <td>細かい機能追加</td> </tr>
--- a/include/ccnframe.h Mon Jul 25 05:20:55 2011 +0900 +++ b/include/ccnframe.h Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : ccnframe.h -// Last Change: 22-Jul-2011. +// Last Change: 26-Jul-2011. // #ifndef __CCNFRAME__ @@ -37,10 +37,6 @@ wxListCtrl* m_listCtrlCcn; wxStaticText* m_staticText5; wxListCtrl* m_listCtrlHhs; - wxButton* m_btnPrevThu; - wxButton* m_btnNextThu; - wxDatePickerCtrl* m_datePicker; - wxButton* m_btnMkIdX; wxButton* m_btnClose; public: @@ -51,9 +47,6 @@ void OnSelectYmd(wxListEvent&); void OnSelectCcn(wxListEvent&); - void OnPrevThu(wxCommandEvent&); - void OnNextThu(wxCommandEvent&); - void OnMkIndex(wxCommandEvent&); void OnClose(wxCommandEvent&); };
--- a/include/common.h Mon Jul 25 05:20:55 2011 +0900 +++ b/include/common.h Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : common.h -// Last Change: 23-Jul-2011. +// Last Change: 26-Jul-2011. // #ifndef __COMMON__ #define __COMMON__ @@ -15,23 +15,20 @@ ID_MAIN = wxID_HIGHEST + 1, ID_MUPHHS, - ID_MLSCCN, ID_MCHKHHS, ID_MDBBKUP, ID_MDBOPT, - ID_MOAD, - ID_MODD, + ID_MOPAD, + ID_MOPDD, ID_MHELP, - ID_SRCHHHS, - ID_DTIDX, - ID_MKIDXx, + ID_PRVTHU, + ID_NXTTHU, + ID_DTPICKER, + ID_MKIDX, + ID_LSCCN, - ID_SPLT, ID_HTML, - ID_HLST, - ID_CCNx, - ID_CMD, // ccn @@ -39,10 +36,6 @@ ID_YMD, ID_CCN, ID_HHS, - ID_PRVTHU, - ID_NXTTHU, - ID_DTPICKER, - ID_MKIDX, ID_CLOSE, // hhs-db @@ -70,8 +63,6 @@ ID_PRINT, ID_PRTALL, ID_CLSFRM, - - }; #endif // __COMMON__
--- a/include/myframe.h Mon Jul 25 05:20:55 2011 +0900 +++ b/include/myframe.h Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : myframe.h -// Last Change: 06-Jul-2011. +// Last Change: 27-Jul-2011. // #ifndef MYFRAME #define MYFRAME @@ -24,6 +24,7 @@ ////////////////////////////////////////////////////////////////////////// class MyCmdBox : public wxTextCtrl { +private: DECLARE_EVENT_TABLE() public: MyCmdBox( wxWindow *parent, wxWindowID id, const wxString value, const wxPoint pos, const wxSize size, long style ); @@ -54,30 +55,31 @@ wxToolBar* m_toolBar; wxStatusBar* m_statusBar; + wxPanel* m_panel; wxPanel* m_panelHead; wxStaticText* m_staticTextHname; - wxSearchCtrl* m_searchCtrlHname; wxStaticText* m_staticTextIdx; - wxStaticBitmap* m_bitmapMkidx; + wxButton* m_btnPrevThu; + wxButton* m_btnNextThu; wxDatePickerCtrl* m_datePicker; - wxButton* m_buttonMkidx; + wxButton* m_btnMkIdx; + wxButton* m_btnLsCcn; - wxSplitterWindow* m_splitter; wxHtmlWindow* m_html; - wxGrid* m_gridHhs; - wxGrid* m_gridCcn; wxPanel* m_panelCmd; wxStaticText* m_staticTextCmd; MyCmdBox* m_cmdbox; - MyFrame( wxWindow* parent, wxWindowID id, const wxString& title ); ~MyFrame(); + void OnSize( wxSizeEvent& event ); + void OnMove( wxMoveEvent& event ); void OnQuit( wxCommandEvent& event ); void OnAbout( wxCommandEvent& event ); void OnHelp( wxCommandEvent& event ); + void SaveConfig( wxCloseEvent& event ); void OnListCcn( wxCommandEvent& event ); void OnCheckHhs( wxCommandEvent& event ); void OnBackupDB( wxCommandEvent& event ); @@ -85,10 +87,9 @@ void OnOpenAppDir( wxCommandEvent& event ); void OnOpenDataDir( wxCommandEvent& event ); void OnUpdateHhsDb( wxCommandEvent& event ); - - //void OnHhsSearch( wxCommandEvent& event ); after version 2.11 + void OnPrevThu( wxCommandEvent& event ); + void OnNextThu( wxCommandEvent& event ); void OnMkIndex( wxCommandEvent& event ); - void SaveConfig( wxCloseEvent& event ); }; #endif
--- a/include/symbol.h Mon Jul 25 05:20:55 2011 +0900 +++ b/include/symbol.h Wed Jul 27 19:01:09 2011 +0900 @@ -1,10 +1,10 @@ // Filename : symbol.h -// Last Change: 06-Jul-2011. +// Last Change: 26-Jul-2011. // #define MYAPPNAME wxT("Searcher2") #define VER 2 -#define REV 11 -#define BLD 20110708 +#define REV 12 +#define BLD 20110802
--- a/src/ccnframe.cpp Mon Jul 25 05:20:55 2011 +0900 +++ b/src/ccnframe.cpp Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : ccnframe.cpp -// Last Change: 23-Jul-2011. +// Last Change: 27-Jul-2011. // #include "common.h" @@ -17,23 +17,22 @@ bSizer = new wxBoxSizer( wxHORIZONTAL ); // DB表示 - wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 5, 0, 0 ); + wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 6, 0, 0 ); fgSizer->AddGrowableRow(1); m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText1, 0, wxALL, 5 ); - fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText2, 0, wxALL, 5 ); - fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer->Add( m_staticText3, 0, wxALL, 5 ); + fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); - m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); + m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 300, -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 ); @@ -48,35 +47,16 @@ 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|wxALL, 5 ); - - // Index作成 - wxGridBagSizer* gbSizer = new wxGridBagSizer( 0, 0 ); - gbSizer->SetFlexibleDirection( wxVERTICAL ); - gbSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - gbSizer->AddGrowableRow(3); - - m_btnPrevThu = new wxButton( m_Panel, ID_PRVTHU, wxT("<< 前木"), wxDefaultPosition, wxDefaultSize, 0 ); - gbSizer->Add( m_btnPrevThu, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALL, 5 ); + m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_btnClose, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5 ); + m_btnClose->SetFocus(); - 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_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 ); - gbSizer->Add( m_btnMkIdX, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 ); - - 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|wxALL, 5 ); + bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 ); m_Panel->SetSizer( bSizer ); m_Panel->Layout(); - this->SetSize( 1000, 400 ); + this->SetSize( 1000, 500 ); this->Centre( wxBOTH ); InitListCtrl(); } @@ -90,32 +70,33 @@ BEGIN_EVENT_TABLE( FrameCcn, wxFrame ) 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)) +void FrameCcn::OnSelectYmd(wxListEvent& event) { - m_listCtrlCcn->DeleteAllItems(); + long i = event.GetIndex(); + wxString ymd = m_listCtrlYmd->GetItemText( i ); + ymd.Replace( wxT("-"), wxEmptyString, true ); 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") ); + wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT hhsno, path FROM path WHERE path LIKE ?"); + stmt.Bind( 1, wxT("08") ); wxSQLite3ResultSet q = stmt.ExecuteQuery(); if ( q.IsNull(0) ) { return; } + long r=0; while ( q.NextRow() ) { - wxString ccn = q.GetString(0); + wxMessageBox(wxT("aaa")); + wxString hhsno = q.GetString(0); //wxString cnt = q.GetString(1); - m_listCtrlCcn->InsertItem( r, ccn ); + m_listCtrlHhs->InsertItem( r, hhsno ); //m_listCtrlCcn->SetItem( r, 1, cnt, -1 ); r++; } @@ -146,88 +127,6 @@ 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)) { @@ -243,7 +142,7 @@ m_listCtrlYmd->SetColumnWidth( 0, 100 ); itemCol.SetText( wxT("更新時刻") ); m_listCtrlYmd->InsertColumn( 1, itemCol ); - m_listCtrlYmd->SetColumnWidth( 1, 200 ); + m_listCtrlYmd->SetColumnWidth( 1, 180 ); itemCol.SetText( wxT("合議体名") ); m_listCtrlCcn->InsertColumn( 0, itemCol ); @@ -259,7 +158,7 @@ m_listCtrlHhs->InsertColumn( 1, itemCol ); m_listCtrlHhs->SetColumnWidth( 1, 100 ); - // read from db + // Ymd: read from db m_listCtrlCcn->DeleteAllItems(); wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); @@ -274,10 +173,34 @@ wxString time = q.GetString(1); m_listCtrlYmd->InsertItem( r, ymd ); m_listCtrlYmd->SetItem( r, 1, time, -1 ); + if ( r % 2 ) + m_listCtrlYmd->SetItemBackgroundColour( r, wxColour(wxT("WHEAT")) ); r++; } stmt.Finalize(); ccndb.Close(); + + // Ccn + m_listCtrlCcn->InsertItem( 0, wxT("六郷1") ); + m_listCtrlCcn->InsertItem( 1, wxT("六郷2") ); + m_listCtrlCcn->InsertItem( 2, wxT("六郷3") ); + m_listCtrlCcn->InsertItem( 3, wxT("千畑1") ); + m_listCtrlCcn->InsertItem( 4, wxT("千畑2") ); + m_listCtrlCcn->InsertItem( 5, wxT("千畑3") ); + m_listCtrlCcn->InsertItem( 6, wxT("大曲1") ); + m_listCtrlCcn->InsertItem( 7, wxT("大曲2") ); + m_listCtrlCcn->InsertItem( 8, wxT("大曲3") ); + m_listCtrlCcn->InsertItem( 9, wxT("大曲4") ); + m_listCtrlCcn->InsertItem( 10, wxT("大曲5") ); + m_listCtrlCcn->InsertItem( 11, wxT("大曲6") ); + m_listCtrlCcn->InsertItem( 12, wxT("西仙1") ); + m_listCtrlCcn->InsertItem( 13, wxT("西仙2") ); + m_listCtrlCcn->InsertItem( 14, wxT("西仙3") ); + m_listCtrlCcn->InsertItem( 15, wxT("角館1") ); + m_listCtrlCcn->InsertItem( 16, wxT("角館2") ); + m_listCtrlCcn->InsertItem( 17, wxT("角館3") ); + m_listCtrlCcn->InsertItem( 18, wxT("角館4") ); + m_listCtrlCcn->InsertItem( 19, wxT("合計") ); }
--- a/src/main.cpp Mon Jul 25 05:20:55 2011 +0900 +++ b/src/main.cpp Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : main.cpp -// Last Change: 18-Jul-2011. +// Last Change: 26-Jul-2011. // #include "common.h" @@ -26,15 +26,9 @@ ConfInit(); - /* MyFrame *mainframe = new MyFrame( NULL, ID_MAIN, wxT("Searcher v2") ); mainframe->SetSize( rect ); mainframe->Show(true); - */ - - //FrameCcn *a = new FrameCcn( NULL, ID_CCN, wxEmptyString, wxDefaultPosition, wxSize( 512,394 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxTAB_TRAVERSAL ); - FrameCcn *a = new FrameCcn( NULL, ID_CCN, wxEmptyString ); - a->Show(true); return true; }
--- a/src/myframe.cpp Mon Jul 25 05:20:55 2011 +0900 +++ b/src/myframe.cpp Wed Jul 27 19:01:09 2011 +0900 @@ -1,5 +1,5 @@ // Filename : mainframe.cpp -// Last Change: 22-Jul-2011. +// Last Change: 27-Jul-2011. // #include "wx/html/htmprint.h" #include "wx/print.h" @@ -157,13 +157,6 @@ void MyCmdBox::OnCmd( wxCommandEvent& event ) { - wxHtmlWindow *h = (wxHtmlWindow*)FindWindowById( ID_HTML ); - wxGrid *g = (wxGrid*)FindWindowById( ID_CCN ); - wxSplitterWindow *s = (wxSplitterWindow*)FindWindowById( ID_SPLT ); - s->ReplaceWindow( h, g ); - h->Show(true); - g->Show(false); - wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 1:被保番チェック wxRegEx reCno(wxT("^[0-9]{1,2}$")); // 2:開くフォルダの番号 wxRegEx rePrint(wxT("^\\+$")); // 3:印刷するフォルダの番号 @@ -448,11 +441,9 @@ m_menubar = new wxMenuBar(); m_menuFile = new wxMenu(); - m_menuFile->Append( ID_MUPHHS, wxT("被保険者DB更新"), wxT("Update hhs-db") ); - m_menuFile->Append( ID_MLSCCN, wxT("インデックス更新一覧"), wxT("List index") ); - m_menuFile->AppendSeparator(); //---- wxMenu *menuMaintain = new wxMenu(); m_menuFile->AppendSubMenu( menuMaintain, wxT("メンテナンス") ); + menuMaintain->Append( ID_MUPHHS, wxT("被保険者DB更新"), wxT("Update hhs-db") ); menuMaintain->Append( ID_MDBBKUP, wxT("データベースバックアップ"), wxT("Backup DBs") ); menuMaintain->Append( ID_MDBOPT, wxT("データベース最適化"), wxT("Optimize DBs") ); menuMaintain->Enable( ID_MDBOPT, false ); @@ -460,8 +451,8 @@ m_menuFile->AppendSeparator(); //---- wxMenu *menuOpendir = new wxMenu(); m_menuFile->AppendSubMenu( menuOpendir, wxT("フォルダを開く") ); - menuOpendir->Append( ID_MOAD, wxT("アプリケーションフォルダ"), wxT("Open App Folder") ); - menuOpendir->Append( ID_MODD, wxT("データフォルダ"), wxT("Open Data Folder") ); + menuOpendir->Append( ID_MOPAD, wxT("アプリケーションフォルダ"), wxT("Open App Folder") ); + menuOpendir->Append( ID_MOPDD, wxT("データフォルダ"), wxT("Open Data Folder") ); m_menuFile->AppendSeparator(); //---- m_menuFile->Append( wxID_EXIT, wxT("終了(&X)\tAlt-X"), wxT("Quit this program") ); @@ -488,102 +479,45 @@ wxBoxSizer* bSizer; bSizer = new wxBoxSizer( wxVERTICAL ); + m_panel = new wxPanel( this ); + wxBoxSizer* bSizerPanel; + bSizerPanel = new wxBoxSizer( wxVERTICAL ); + // controls here - m_panelHead = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize ); + m_panelHead = new wxPanel( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize ); wxBoxSizer* bSizerHead; bSizerHead = new wxBoxSizer( wxHORIZONTAL ); - /* after version 2.11 - m_staticTextHname = new wxStaticText( m_panelHead, wxID_ANY, wxT("氏名カナ検索"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerHead->Add( m_staticTextHname, 0, wxALL, 5 ); - - m_searchCtrlHname = new wxSearchCtrl( m_panelHead, ID_SRCHHHS, wxT("3字以上入力"), wxDefaultPosition, wxSize(200,20), 0 ); - #ifndef __WXMAC__ - m_searchCtrlHname->ShowSearchButton( true ); - #endif - bSizerHead->Add( m_searchCtrlHname, 0, wxALL, 1 ); - - m_bitmapMkidx = new wxStaticBitmap( m_panelHead, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerHead->Add( m_bitmapMkidx, 0, wxALL, 1 ); - */ - bSizerHead->AddStretchSpacer( 1 ); // spacer - m_staticTextIdx = new wxStaticText( m_panelHead, wxID_ANY, wxT("インデックス"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerHead->Add( m_staticTextIdx, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_datePicker = new wxDatePickerCtrl( m_panelHead, ID_DTIDX, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_SHOWCENTURY|wxDP_DROPDOWN ); - bSizerHead->Add( m_datePicker, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_btnLsCcn = new wxButton( m_panelHead, ID_LSCCN, wxT("一覧"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerHead->Add( m_btnLsCcn, 0, wxALL, 5 ); + + m_btnPrevThu = new wxButton( m_panelHead, ID_PRVTHU, wxT("<< 前木"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerHead->Add( m_btnPrevThu, 0, wxALL, 5 ); - m_buttonMkidx = new wxButton( m_panelHead, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxSize(50,25), 0 ); - bSizerHead->Add( m_buttonMkidx, 0, wxALL, 5 ); + m_datePicker = new wxDatePickerCtrl( m_panelHead, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN|wxDP_SHOWCENTURY ); + bSizerHead->Add( m_datePicker, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_btnNextThu = new wxButton( m_panelHead, ID_NXTTHU, wxT("次木 >>"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerHead->Add( m_btnNextThu, 0, wxALL, 5 ); + m_btnMkIdx = new wxButton( m_panelHead, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerHead->Add( m_btnMkIdx, 0, wxALL, 5 ); + m_panelHead->SetSizer( bSizerHead ); m_panelHead->Layout(); bSizerHead->Fit( m_panelHead ); - // メインペイン - wxBoxSizer* bSizerHtml; - bSizerHtml = new wxBoxSizer( wxVERTICAL ); - m_splitter = new wxSplitterWindow( this, ID_SPLT, wxDefaultPosition, wxDefaultSize, 0 ); - // 検索結果Html - m_html = new wxHtmlWindow( m_splitter, ID_HTML, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); + m_html = new wxHtmlWindow( m_panel, ID_HTML, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); m_html->LoadPage( wxT("html/start.html") ); - /* after version 2.11 - // 被保険者カナ検索Grid - m_gridHhs = new wxGrid( m_panelHtml, ID_HLST, wxDefaultPosition, wxDefaultSize, 0 ); - m_gridHhs->CreateGrid( 0, 5 ); - m_gridHhs->EnableEditing( true ); - m_gridHhs->EnableGridLines( true ); - m_gridHhs->EnableDragGridSize( false ); - m_gridHhs->SetMargins( 0, 0 ); - - // Columns - m_gridHhs->AutoSizeColumns(); - m_gridHhs->EnableDragColMove( false ); - m_gridHhs->SetColLabelValue( 0, wxT("番号") ); - m_gridHhs->SetColLabelValue( 1, wxT("氏名") ); - m_gridHhs->SetColLabelValue( 2, wxT("カナ") ); - m_gridHhs->SetColLabelValue( 3, wxT("生年月日") ); - m_gridHhs->SetColLabelValue( 4, wxT("住所") ); - m_gridHhs->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE ); - - // Cell Defaults - m_gridHhs->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_BOTTOM ); - m_gridHhs->Hide(); - - bSizerHtml->Add( m_gridHhs, 0, wxALL, 5 ); - */ - - // 審査会合議体表示Grid - m_gridCcn = new wxGrid( m_splitter, ID_CCN, wxDefaultPosition, wxDefaultSize, 0 ); - m_gridCcn->CreateGrid( 0, 2 ); - m_gridCcn->EnableEditing( true ); - m_gridCcn->EnableGridLines( true ); - m_gridCcn->EnableDragGridSize( false ); - m_gridCcn->SetMargins( 0, 0 ); - m_gridCcn->SetDefaultCellAlignment( wxALIGN_CENTRE, wxALIGN_BOTTOM ); - m_gridCcn->Show(false); - - // Columns - m_gridCcn->AutoSizeColumns(); - m_gridCcn->EnableDragColMove( false ); - m_gridCcn->SetColLabelValue( 0, wxT("審査会年月日") ); - m_gridCcn->SetColLabelValue( 1, wxT("DB更新時刻") ); - m_gridCcn->SetColSize( 0, 100 ); - m_gridCcn->SetColSize( 1, 200 ); - m_gridCcn->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE ); - - m_splitter->Initialize( m_html ); - m_splitter->SetSizer( bSizerHtml ); - m_splitter->Layout(); - bSizerHtml->Fit( m_splitter ); - // コマンドライン - m_panelCmd = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize ); + m_panelCmd = new wxPanel( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize ); wxBoxSizer* bSizerCmd; bSizerCmd = new wxBoxSizer( wxHORIZONTAL ); @@ -598,13 +532,18 @@ m_panelCmd->Layout(); bSizerCmd->Fit( m_panelCmd ); + bSizerPanel->Add( m_panelHead, 0, wxEXPAND|wxTOP, 1 ); + bSizerPanel->Add( m_html, 1, wxEXPAND|wxALL, 1 ); + bSizerPanel->Add( m_panelCmd, 0, wxEXPAND|wxALL, 0 ); + + m_panel->SetSizer( bSizerPanel ); + m_panel->Layout(); + bSizerPanel->Fit( m_panel ); - bSizer->Add( m_panelHead, 0, wxEXPAND|wxTOP, 1 ); - bSizer->Add( m_splitter, 1, wxEXPAND|wxALL, 1 ); - bSizer->Add( m_panelCmd, 0, wxEXPAND|wxALL, 0 ); - + bSizer->Add( m_panel, 1, wxEXPAND|wxALL, 0 ); this->SetSizer( bSizer ); this->Layout(); + this->SetMinSize( wxSize( 550, 600 ) ); } // destructor @@ -614,24 +553,43 @@ // Event Table BEGIN_EVENT_TABLE( MyFrame, wxFrame ) + EVT_SIZE( MyFrame::OnSize ) + EVT_MOVE( MyFrame::OnMove ) EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) EVT_MENU( wxID_ABOUT, MyFrame::OnAbout ) EVT_MENU( ID_MUPHHS, MyFrame::OnUpdateHhsDb ) - EVT_MENU( ID_MLSCCN, MyFrame::OnListCcn ) EVT_MENU( ID_MDBBKUP, MyFrame::OnBackupDB ) EVT_MENU( ID_MDBOPT, MyFrame::OnOptimizeDB ) EVT_MENU( ID_MCHKHHS, MyFrame::OnCheckHhs ) - EVT_MENU( ID_MOAD, MyFrame::OnOpenAppDir ) - EVT_MENU( ID_MODD, MyFrame::OnOpenDataDir ) + EVT_MENU( ID_MOPAD, MyFrame::OnOpenAppDir ) + EVT_MENU( ID_MOPDD, MyFrame::OnOpenDataDir ) EVT_MENU( ID_MHELP, MyFrame::OnHelp ) - - //EVT_TEXT_ENTER( ID_SRCHHHS, MyFrame::OnHhsSearch ) after version 2.11 - EVT_BUTTON( ID_MKIDX, MyFrame::OnMkIndex ) - + EVT_BUTTON( ID_PRVTHU, MyFrame::OnPrevThu ) + EVT_BUTTON( ID_NXTTHU, MyFrame::OnNextThu ) + EVT_BUTTON( ID_MKIDX, MyFrame::OnMkIndex ) + EVT_BUTTON( ID_LSCCN, MyFrame::OnListCcn ) EVT_CLOSE( MyFrame::SaveConfig ) END_EVENT_TABLE() // Event Handlers +/* サイズ変更 */ +void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event)) +{ + wxRect r = this->GetRect(); + int w = r.GetWidth(); + int h = r.GetHeight(); + SetStatusText( wxString::Format(wxT("%dx%d"),w,h), 2 ); + return; +} +/* ウィンドウ移動 */ +void MyFrame::OnMove(wxMoveEvent& WXUNUSED(event)) +{ + wxRect r = this->GetRect(); + int x = r.GetX(); + int y = r.GetY(); + SetStatusText( wxString::Format(wxT("(%d,%d)"),x,y), 2 ); + return; +} /* 終了 */ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { @@ -669,91 +627,92 @@ wxT("About this program"), wxOK | wxICON_INFORMATION, this ); } -/* 被保険者検索 */ -/* after version 2.11 -void MyFrame::OnHhsSearch(wxCommandEvent& WXUNUSED(event)) +// 前木 +void MyFrame::OnPrevThu(wxCommandEvent& WXUNUSED(event)) { - this->m_html->Hide(); - this->m_gridCcn->Hide(); - this->m_gridHhs->Show(true); - - wxString gszFile = wxGetCwd() + wxT("/db/hhs.db"); - wxSQLite3Database hhsdb; - hhsdb.Open( gszFile ); - - wxSQLite3Statement stmt = hhsdb.PrepareStatement("SELECT count(*) FROM hhs_master WHERE kana LIKE ?"); - stmt.Bind( 1, this->m_searchCtrlHname->GetValue() ); - wxSQLite3ResultSet q = stmt.ExecuteQuery(); - wxString cnt = q.GetString(0); - - if ( cnt.Cmp(wxT("0")) == '0' ) { - wxString msg = cnt + wxT("指定した条件の被保険者はいませんでした."); - } - else { - wxString msg = cnt + wxT("件マッチしました."); - return ; // test now - - stmt = hhsdb.PrepareStatement("SELECT hhs, name, kana, addr, birth, sex FROM hhs_master ORDER BY birth DESC"); - q = stmt.ExecuteQuery(); - wxSQLite3ResultSet q = stmt.ExecuteQuery(); - while ( q.NextRow() ) { - wxString hhs = q.GetString(0); - wxString name = q.GetString(1); - wxString kana = q.GetString(2); - wxString addr = q.GetString(3); - wxString birth = q.GetString(4); - wxString sex = q.GetString(5); - // ここに gridに 追加するコード - } - } - - stmt.Finalize(); - hhsdb.Close(); + wxDateTime dt = m_datePicker->GetValue(); + wxDateSpan ds( 0, 0, 0, 1 ); + dt -= ds; + dt.SetToPrevWeekDay( wxDateTime::Thu ); + m_datePicker->SetValue( dt ); } -*/ +// 次木 +void MyFrame::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 MyFrame::OnMkIndex(wxCommandEvent& WXUNUSED(event)) { - FrameHhsDB *f = (FrameHhsDB*)FindWindowById( ID_HHSDB ); + 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 ); - if ( f == NULL ) { - FrameHhsDB *hhsdb = new FrameHhsDB( this, ID_HHSDB ); - hhsdb->Show(true); + 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); } - else { - f->Raise(); - } - return; + wxMessageBox(wxT("インデックス作成が終了しました.")); } -/* インデックス更新一覧 */ +/* インデックス一覧 */ void MyFrame::OnListCcn(wxCommandEvent& WXUNUSED(event)) { - this->m_splitter->ReplaceWindow( this->m_html, this->m_gridCcn ); - this->m_gridCcn->Show(true); - this->m_html->Show(false); - MyCmdBox *c = (MyCmdBox*)FindWindowById( ID_CMD ); - c->Clear(); - - wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); - wxSQLite3Database ccndb; - ccndb.Open( gszFile ); - - wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, time FROM ccn ORDER BY ymd DESC, time DESC"); - wxSQLite3ResultSet q = stmt.ExecuteQuery(); - int r=0; - while ( q.NextRow() ) { - wxString ymd = q.GetString(0); - wxString time = q.GetString(1); - this->m_gridCcn->AppendRows(1); - this->m_gridCcn->SetCellValue(r,0,ymd); - this->m_gridCcn->SetCellValue(r,1,time); - r++; - } - - stmt.Finalize(); - ccndb.Close(); + FrameCcn *fc = new FrameCcn( NULL, ID_CCN, wxT("Index Viewer"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxFRAME_NO_TASKBAR|wxTAB_TRAVERSAL ); + fc->Show(true); } /* 被保険者DB更新 */