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更新 */