comparison src/myframe.cpp @ 22:05f76f9f9186

index buttons move to main-frame.
author pyon@macmini
date Wed, 27 Jul 2011 19:01:09 +0900
parents eb3f5c7c990f
children a10c2fe880f8
comparison
equal deleted inserted replaced
21:eb3f5c7c990f 22:05f76f9f9186
1 // Filename : mainframe.cpp 1 // Filename : mainframe.cpp
2 // Last Change: 22-Jul-2011. 2 // Last Change: 27-Jul-2011.
3 // 3 //
4 #include "wx/html/htmprint.h" 4 #include "wx/html/htmprint.h"
5 #include "wx/print.h" 5 #include "wx/print.h"
6 6
7 #include "symbol.h" 7 #include "symbol.h"
155 event.Skip(); 155 event.Skip();
156 } 156 }
157 157
158 void MyCmdBox::OnCmd( wxCommandEvent& event ) 158 void MyCmdBox::OnCmd( wxCommandEvent& event )
159 { 159 {
160 wxHtmlWindow *h = (wxHtmlWindow*)FindWindowById( ID_HTML );
161 wxGrid *g = (wxGrid*)FindWindowById( ID_CCN );
162 wxSplitterWindow *s = (wxSplitterWindow*)FindWindowById( ID_SPLT );
163 s->ReplaceWindow( h, g );
164 h->Show(true);
165 g->Show(false);
166
167 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 1:被保番チェック 160 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 1:被保番チェック
168 wxRegEx reCno(wxT("^[0-9]{1,2}$")); // 2:開くフォルダの番号 161 wxRegEx reCno(wxT("^[0-9]{1,2}$")); // 2:開くフォルダの番号
169 wxRegEx rePrint(wxT("^\\+$")); // 3:印刷するフォルダの番号 162 wxRegEx rePrint(wxT("^\\+$")); // 3:印刷するフォルダの番号
170 163
171 wxString cmd; 164 wxString cmd;
446 439
447 // メニューバー 440 // メニューバー
448 m_menubar = new wxMenuBar(); 441 m_menubar = new wxMenuBar();
449 442
450 m_menuFile = new wxMenu(); 443 m_menuFile = new wxMenu();
451 m_menuFile->Append( ID_MUPHHS, wxT("被保険者DB更新"), wxT("Update hhs-db") );
452 m_menuFile->Append( ID_MLSCCN, wxT("インデックス更新一覧"), wxT("List index") );
453 m_menuFile->AppendSeparator(); //----
454 wxMenu *menuMaintain = new wxMenu(); 444 wxMenu *menuMaintain = new wxMenu();
455 m_menuFile->AppendSubMenu( menuMaintain, wxT("メンテナンス") ); 445 m_menuFile->AppendSubMenu( menuMaintain, wxT("メンテナンス") );
446 menuMaintain->Append( ID_MUPHHS, wxT("被保険者DB更新"), wxT("Update hhs-db") );
456 menuMaintain->Append( ID_MDBBKUP, wxT("データベースバックアップ"), wxT("Backup DBs") ); 447 menuMaintain->Append( ID_MDBBKUP, wxT("データベースバックアップ"), wxT("Backup DBs") );
457 menuMaintain->Append( ID_MDBOPT, wxT("データベース最適化"), wxT("Optimize DBs") ); 448 menuMaintain->Append( ID_MDBOPT, wxT("データベース最適化"), wxT("Optimize DBs") );
458 menuMaintain->Enable( ID_MDBOPT, false ); 449 menuMaintain->Enable( ID_MDBOPT, false );
459 menuMaintain->Append( ID_MCHKHHS, wxT("被保者整合性チェック"), wxT("Check hhs") ); 450 menuMaintain->Append( ID_MCHKHHS, wxT("被保者整合性チェック"), wxT("Check hhs") );
460 m_menuFile->AppendSeparator(); //---- 451 m_menuFile->AppendSeparator(); //----
461 wxMenu *menuOpendir = new wxMenu(); 452 wxMenu *menuOpendir = new wxMenu();
462 m_menuFile->AppendSubMenu( menuOpendir, wxT("フォルダを開く") ); 453 m_menuFile->AppendSubMenu( menuOpendir, wxT("フォルダを開く") );
463 menuOpendir->Append( ID_MOAD, wxT("アプリケーションフォルダ"), wxT("Open App Folder") ); 454 menuOpendir->Append( ID_MOPAD, wxT("アプリケーションフォルダ"), wxT("Open App Folder") );
464 menuOpendir->Append( ID_MODD, wxT("データフォルダ"), wxT("Open Data Folder") ); 455 menuOpendir->Append( ID_MOPDD, wxT("データフォルダ"), wxT("Open Data Folder") );
465 m_menuFile->AppendSeparator(); //---- 456 m_menuFile->AppendSeparator(); //----
466 m_menuFile->Append( wxID_EXIT, wxT("終了(&X)\tAlt-X"), wxT("Quit this program") ); 457 m_menuFile->Append( wxID_EXIT, wxT("終了(&X)\tAlt-X"), wxT("Quit this program") );
467 458
468 m_menuHelp = new wxMenu(); 459 m_menuHelp = new wxMenu();
469 m_menuHelp->Append( ID_MHELP, wxT("&Help"), wxT("Show help") ); 460 m_menuHelp->Append( ID_MHELP, wxT("&Help"), wxT("Show help") );
486 m_statusBar->SetStatusWidths( WXSIZEOF(widths), widths ); 477 m_statusBar->SetStatusWidths( WXSIZEOF(widths), widths );
487 m_statusBar->SetStatusText( wxEmptyString, 0 ); 478 m_statusBar->SetStatusText( wxEmptyString, 0 );
488 479
489 wxBoxSizer* bSizer; 480 wxBoxSizer* bSizer;
490 bSizer = new wxBoxSizer( wxVERTICAL ); 481 bSizer = new wxBoxSizer( wxVERTICAL );
491 482 m_panel = new wxPanel( this );
483
484 wxBoxSizer* bSizerPanel;
485 bSizerPanel = new wxBoxSizer( wxVERTICAL );
486
492 // controls here 487 // controls here
493 m_panelHead = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize ); 488 m_panelHead = new wxPanel( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize );
494 wxBoxSizer* bSizerHead; 489 wxBoxSizer* bSizerHead;
495 bSizerHead = new wxBoxSizer( wxHORIZONTAL ); 490 bSizerHead = new wxBoxSizer( wxHORIZONTAL );
496 491
497 /* after version 2.11
498 m_staticTextHname = new wxStaticText( m_panelHead, wxID_ANY, wxT("氏名カナ検索"), wxDefaultPosition, wxDefaultSize, 0 );
499 bSizerHead->Add( m_staticTextHname, 0, wxALL, 5 );
500
501 m_searchCtrlHname = new wxSearchCtrl( m_panelHead, ID_SRCHHHS, wxT("3字以上入力"), wxDefaultPosition, wxSize(200,20), 0 );
502 #ifndef __WXMAC__
503 m_searchCtrlHname->ShowSearchButton( true );
504 #endif
505 bSizerHead->Add( m_searchCtrlHname, 0, wxALL, 1 );
506
507 m_bitmapMkidx = new wxStaticBitmap( m_panelHead, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
508 bSizerHead->Add( m_bitmapMkidx, 0, wxALL, 1 );
509 */
510
511 bSizerHead->AddStretchSpacer( 1 ); // spacer 492 bSizerHead->AddStretchSpacer( 1 ); // spacer
512
513 m_staticTextIdx = new wxStaticText( m_panelHead, wxID_ANY, wxT("インデックス"), wxDefaultPosition, wxDefaultSize, 0 ); 493 m_staticTextIdx = new wxStaticText( m_panelHead, wxID_ANY, wxT("インデックス"), wxDefaultPosition, wxDefaultSize, 0 );
514 bSizerHead->Add( m_staticTextIdx, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 494 bSizerHead->Add( m_staticTextIdx, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
515 495
516 m_datePicker = new wxDatePickerCtrl( m_panelHead, ID_DTIDX, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_SHOWCENTURY|wxDP_DROPDOWN ); 496 m_btnLsCcn = new wxButton( m_panelHead, ID_LSCCN, wxT("一覧"), wxDefaultPosition, wxDefaultSize, 0 );
497 bSizerHead->Add( m_btnLsCcn, 0, wxALL, 5 );
498
499 m_btnPrevThu = new wxButton( m_panelHead, ID_PRVTHU, wxT("<< 前木"), wxDefaultPosition, wxDefaultSize, 0 );
500 bSizerHead->Add( m_btnPrevThu, 0, wxALL, 5 );
501
502 m_datePicker = new wxDatePickerCtrl( m_panelHead, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN|wxDP_SHOWCENTURY );
517 bSizerHead->Add( m_datePicker, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 503 bSizerHead->Add( m_datePicker, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
518 504
519 m_buttonMkidx = new wxButton( m_panelHead, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxSize(50,25), 0 ); 505 m_btnNextThu = new wxButton( m_panelHead, ID_NXTTHU, wxT("次木 >>"), wxDefaultPosition, wxDefaultSize, 0 );
520 bSizerHead->Add( m_buttonMkidx, 0, wxALL, 5 ); 506 bSizerHead->Add( m_btnNextThu, 0, wxALL, 5 );
521 507
508 m_btnMkIdx = new wxButton( m_panelHead, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 );
509 bSizerHead->Add( m_btnMkIdx, 0, wxALL, 5 );
510
522 m_panelHead->SetSizer( bSizerHead ); 511 m_panelHead->SetSizer( bSizerHead );
523 m_panelHead->Layout(); 512 m_panelHead->Layout();
524 bSizerHead->Fit( m_panelHead ); 513 bSizerHead->Fit( m_panelHead );
525 514
526 // メインペイン
527 wxBoxSizer* bSizerHtml;
528 bSizerHtml = new wxBoxSizer( wxVERTICAL );
529 m_splitter = new wxSplitterWindow( this, ID_SPLT, wxDefaultPosition, wxDefaultSize, 0 );
530
531 // 検索結果Html 515 // 検索結果Html
532 m_html = new wxHtmlWindow( m_splitter, ID_HTML, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); 516 m_html = new wxHtmlWindow( m_panel, ID_HTML, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
533 m_html->LoadPage( wxT("html/start.html") ); 517 m_html->LoadPage( wxT("html/start.html") );
534 518
535 /* after version 2.11
536 // 被保険者カナ検索Grid
537 m_gridHhs = new wxGrid( m_panelHtml, ID_HLST, wxDefaultPosition, wxDefaultSize, 0 );
538 m_gridHhs->CreateGrid( 0, 5 );
539 m_gridHhs->EnableEditing( true );
540 m_gridHhs->EnableGridLines( true );
541 m_gridHhs->EnableDragGridSize( false );
542 m_gridHhs->SetMargins( 0, 0 );
543
544 // Columns
545 m_gridHhs->AutoSizeColumns();
546 m_gridHhs->EnableDragColMove( false );
547 m_gridHhs->SetColLabelValue( 0, wxT("番号") );
548 m_gridHhs->SetColLabelValue( 1, wxT("氏名") );
549 m_gridHhs->SetColLabelValue( 2, wxT("カナ") );
550 m_gridHhs->SetColLabelValue( 3, wxT("生年月日") );
551 m_gridHhs->SetColLabelValue( 4, wxT("住所") );
552 m_gridHhs->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
553
554 // Cell Defaults
555 m_gridHhs->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_BOTTOM );
556 m_gridHhs->Hide();
557
558 bSizerHtml->Add( m_gridHhs, 0, wxALL, 5 );
559 */
560
561 // 審査会合議体表示Grid
562 m_gridCcn = new wxGrid( m_splitter, ID_CCN, wxDefaultPosition, wxDefaultSize, 0 );
563 m_gridCcn->CreateGrid( 0, 2 );
564 m_gridCcn->EnableEditing( true );
565 m_gridCcn->EnableGridLines( true );
566 m_gridCcn->EnableDragGridSize( false );
567 m_gridCcn->SetMargins( 0, 0 );
568 m_gridCcn->SetDefaultCellAlignment( wxALIGN_CENTRE, wxALIGN_BOTTOM );
569 m_gridCcn->Show(false);
570
571 // Columns
572 m_gridCcn->AutoSizeColumns();
573 m_gridCcn->EnableDragColMove( false );
574 m_gridCcn->SetColLabelValue( 0, wxT("審査会年月日") );
575 m_gridCcn->SetColLabelValue( 1, wxT("DB更新時刻") );
576 m_gridCcn->SetColSize( 0, 100 );
577 m_gridCcn->SetColSize( 1, 200 );
578 m_gridCcn->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
579
580 m_splitter->Initialize( m_html );
581 m_splitter->SetSizer( bSizerHtml );
582 m_splitter->Layout();
583 bSizerHtml->Fit( m_splitter );
584
585 // コマンドライン 519 // コマンドライン
586 m_panelCmd = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize ); 520 m_panelCmd = new wxPanel( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize );
587 wxBoxSizer* bSizerCmd; 521 wxBoxSizer* bSizerCmd;
588 bSizerCmd = new wxBoxSizer( wxHORIZONTAL ); 522 bSizerCmd = new wxBoxSizer( wxHORIZONTAL );
589 523
590 m_staticTextCmd = new wxStaticText( m_panelCmd, wxID_ANY, wxT("コマンド?"), wxDefaultPosition, wxDefaultSize, 0 ); 524 m_staticTextCmd = new wxStaticText( m_panelCmd, wxID_ANY, wxT("コマンド?"), wxDefaultPosition, wxDefaultSize, 0 );
591 bSizerCmd->Add( m_staticTextCmd, 0, wxALL, 5 ); 525 bSizerCmd->Add( m_staticTextCmd, 0, wxALL, 5 );
596 530
597 m_panelCmd->SetSizer( bSizerCmd ); 531 m_panelCmd->SetSizer( bSizerCmd );
598 m_panelCmd->Layout(); 532 m_panelCmd->Layout();
599 bSizerCmd->Fit( m_panelCmd ); 533 bSizerCmd->Fit( m_panelCmd );
600 534
601 535 bSizerPanel->Add( m_panelHead, 0, wxEXPAND|wxTOP, 1 );
602 bSizer->Add( m_panelHead, 0, wxEXPAND|wxTOP, 1 ); 536 bSizerPanel->Add( m_html, 1, wxEXPAND|wxALL, 1 );
603 bSizer->Add( m_splitter, 1, wxEXPAND|wxALL, 1 ); 537 bSizerPanel->Add( m_panelCmd, 0, wxEXPAND|wxALL, 0 );
604 bSizer->Add( m_panelCmd, 0, wxEXPAND|wxALL, 0 ); 538
605 539 m_panel->SetSizer( bSizerPanel );
540 m_panel->Layout();
541 bSizerPanel->Fit( m_panel );
542
543 bSizer->Add( m_panel, 1, wxEXPAND|wxALL, 0 );
606 this->SetSizer( bSizer ); 544 this->SetSizer( bSizer );
607 this->Layout(); 545 this->Layout();
546 this->SetMinSize( wxSize( 550, 600 ) );
608 } 547 }
609 548
610 // destructor 549 // destructor
611 MyFrame::~MyFrame() 550 MyFrame::~MyFrame()
612 { 551 {
613 } 552 }
614 553
615 // Event Table 554 // Event Table
616 BEGIN_EVENT_TABLE( MyFrame, wxFrame ) 555 BEGIN_EVENT_TABLE( MyFrame, wxFrame )
556 EVT_SIZE( MyFrame::OnSize )
557 EVT_MOVE( MyFrame::OnMove )
617 EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) 558 EVT_MENU( wxID_EXIT, MyFrame::OnQuit )
618 EVT_MENU( wxID_ABOUT, MyFrame::OnAbout ) 559 EVT_MENU( wxID_ABOUT, MyFrame::OnAbout )
619 EVT_MENU( ID_MUPHHS, MyFrame::OnUpdateHhsDb ) 560 EVT_MENU( ID_MUPHHS, MyFrame::OnUpdateHhsDb )
620 EVT_MENU( ID_MLSCCN, MyFrame::OnListCcn )
621 EVT_MENU( ID_MDBBKUP, MyFrame::OnBackupDB ) 561 EVT_MENU( ID_MDBBKUP, MyFrame::OnBackupDB )
622 EVT_MENU( ID_MDBOPT, MyFrame::OnOptimizeDB ) 562 EVT_MENU( ID_MDBOPT, MyFrame::OnOptimizeDB )
623 EVT_MENU( ID_MCHKHHS, MyFrame::OnCheckHhs ) 563 EVT_MENU( ID_MCHKHHS, MyFrame::OnCheckHhs )
624 EVT_MENU( ID_MOAD, MyFrame::OnOpenAppDir ) 564 EVT_MENU( ID_MOPAD, MyFrame::OnOpenAppDir )
625 EVT_MENU( ID_MODD, MyFrame::OnOpenDataDir ) 565 EVT_MENU( ID_MOPDD, MyFrame::OnOpenDataDir )
626 EVT_MENU( ID_MHELP, MyFrame::OnHelp ) 566 EVT_MENU( ID_MHELP, MyFrame::OnHelp )
627 567 EVT_BUTTON( ID_PRVTHU, MyFrame::OnPrevThu )
628 //EVT_TEXT_ENTER( ID_SRCHHHS, MyFrame::OnHhsSearch ) after version 2.11 568 EVT_BUTTON( ID_NXTTHU, MyFrame::OnNextThu )
629 EVT_BUTTON( ID_MKIDX, MyFrame::OnMkIndex ) 569 EVT_BUTTON( ID_MKIDX, MyFrame::OnMkIndex )
630 570 EVT_BUTTON( ID_LSCCN, MyFrame::OnListCcn )
631 EVT_CLOSE( MyFrame::SaveConfig ) 571 EVT_CLOSE( MyFrame::SaveConfig )
632 END_EVENT_TABLE() 572 END_EVENT_TABLE()
633 573
634 // Event Handlers 574 // Event Handlers
575 /* サイズ変更 */
576 void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event))
577 {
578 wxRect r = this->GetRect();
579 int w = r.GetWidth();
580 int h = r.GetHeight();
581 SetStatusText( wxString::Format(wxT("%dx%d"),w,h), 2 );
582 return;
583 }
584 /* ウィンドウ移動 */
585 void MyFrame::OnMove(wxMoveEvent& WXUNUSED(event))
586 {
587 wxRect r = this->GetRect();
588 int x = r.GetX();
589 int y = r.GetY();
590 SetStatusText( wxString::Format(wxT("(%d,%d)"),x,y), 2 );
591 return;
592 }
635 /* 終了 */ 593 /* 終了 */
636 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) 594 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
637 { 595 {
638 Close(true); 596 Close(true);
639 } 597 }
667 wxGetOsDescription().c_str() 625 wxGetOsDescription().c_str()
668 ), 626 ),
669 wxT("About this program"), wxOK | wxICON_INFORMATION, this ); 627 wxT("About this program"), wxOK | wxICON_INFORMATION, this );
670 } 628 }
671 629
672 /* 被保険者検索 */ 630 // 前木
673 /* after version 2.11 631 void MyFrame::OnPrevThu(wxCommandEvent& WXUNUSED(event))
674 void MyFrame::OnHhsSearch(wxCommandEvent& WXUNUSED(event)) 632 {
675 { 633 wxDateTime dt = m_datePicker->GetValue();
676 this->m_html->Hide(); 634 wxDateSpan ds( 0, 0, 0, 1 );
677 this->m_gridCcn->Hide(); 635 dt -= ds;
678 this->m_gridHhs->Show(true); 636 dt.SetToPrevWeekDay( wxDateTime::Thu );
679 637 m_datePicker->SetValue( dt );
680 wxString gszFile = wxGetCwd() + wxT("/db/hhs.db"); 638 }
681 wxSQLite3Database hhsdb; 639 // 次木
682 hhsdb.Open( gszFile ); 640 void MyFrame::OnNextThu(wxCommandEvent& WXUNUSED(event))
683 641 {
684 wxSQLite3Statement stmt = hhsdb.PrepareStatement("SELECT count(*) FROM hhs_master WHERE kana LIKE ?"); 642 wxDateTime dt = m_datePicker->GetValue();
685 stmt.Bind( 1, this->m_searchCtrlHname->GetValue() ); 643 wxDateSpan ds( 0, 0, 0, 1 );
686 wxSQLite3ResultSet q = stmt.ExecuteQuery(); 644 dt += ds;
687 wxString cnt = q.GetString(0); 645 dt.SetToNextWeekDay( wxDateTime::Thu );
688 646 m_datePicker->SetValue( dt );
689 if ( cnt.Cmp(wxT("0")) == '0' ) { 647 }
690 wxString msg = cnt + wxT("指定した条件の被保険者はいませんでした.");
691 }
692 else {
693 wxString msg = cnt + wxT("件マッチしました.");
694 return ; // test now
695
696 stmt = hhsdb.PrepareStatement("SELECT hhs, name, kana, addr, birth, sex FROM hhs_master ORDER BY birth DESC");
697 q = stmt.ExecuteQuery();
698 wxSQLite3ResultSet q = stmt.ExecuteQuery();
699 while ( q.NextRow() ) {
700 wxString hhs = q.GetString(0);
701 wxString name = q.GetString(1);
702 wxString kana = q.GetString(2);
703 wxString addr = q.GetString(3);
704 wxString birth = q.GetString(4);
705 wxString sex = q.GetString(5);
706 // ここに gridに 追加するコード
707 }
708 }
709
710 stmt.Finalize();
711 hhsdb.Close();
712 }
713 */
714 648
715 /* インデックス作成 */ 649 /* インデックス作成 */
716 void MyFrame::OnMkIndex(wxCommandEvent& WXUNUSED(event)) 650 void MyFrame::OnMkIndex(wxCommandEvent& WXUNUSED(event))
717 { 651 {
718 FrameHhsDB *f = (FrameHhsDB*)FindWindowById( ID_HHSDB ); 652 wxDateTime dt = m_datePicker->GetValue();
719 653 wxString month = dt.Format(wxT("%m"));
720 if ( f == NULL ) { 654 wxString year = dt.Format(wxT("%Y"));
721 FrameHhsDB *hhsdb = new FrameHhsDB( this, ID_HHSDB ); 655 if ( month.IsSameAs(wxT("01")) || month.IsSameAs(wxT("02")) || month.IsSameAs(wxT("03")) ) {
722 hhsdb->Show(true); 656 long y;
723 } 657 year.ToLong( &y, 10 );
724 else { 658 y--;
725 f->Raise(); 659 year = wxString::Format(wxT("%d"),y);
726 } 660 }
727 return; 661 wxString pathroot = wxGetApp().rootdir + wxFILE_SEP_PATH + year + dt.Format(wxT("\\%Y%m%d"));
728 } 662 wxDir rootd(pathroot);
729 663 if ( !wxDir::Exists(pathroot) ) {
730 /* インデックス更新一覧 */ 664 wxMessageBox( wxT("フォルダが存在しません.")+pathroot );
665 return;
666 }
667
668 wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), 200, this, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE );
669 pd.SetSize( wxSize(320,140) );
670 int count=0;
671
672 wxString ccndir;
673 bool cont = rootd.GetFirst( &ccndir, wxT("*.*"), wxDIR_DIRS );
674 while ( cont ) {
675 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
676 wxSQLite3Database ccndb;
677 ccndb.Open( gszFile );
678
679 wxSQLite3Statement stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO ccn VALUES( ?, datetime('now','localtime') )");
680 stmt.Bind( 1, dt.Format(wxT("%Y-%m-%d")) );
681 stmt.ExecuteQuery();
682
683 stmt.Finalize();
684
685 wxDir ccnd( pathroot + wxFILE_SEP_PATH + ccndir );
686 if ( !ccnd.IsOpened() ) return;
687 wxString hhsdir;
688 bool c = ccnd.GetFirst( &hhsdir, wxT("*.*"), wxDIR_DIRS );
689 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック
690 while ( c ) {
691 if ( reHhs.Matches(hhsdir) ) {
692 wxString path = pathroot + wxFILE_SEP_PATH + ccndir + wxFILE_SEP_PATH + hhsdir;
693
694 stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO path VALUES( ?, ? )");
695 stmt.Bind( 1, hhsdir );
696 stmt.Bind( 2, path );
697 stmt.ExecuteQuery();
698
699 stmt.Finalize();
700 }
701 c = ccnd.GetNext(&hhsdir);
702 pd.Update( count++, hhsdir+wxT("@")+ccndir+wxT("を処理しました.") );
703 }
704 ccndb.Close();
705
706 cont = rootd.GetNext(&ccndir);
707 }
708 wxMessageBox(wxT("インデックス作成が終了しました."));
709 }
710
711 /* インデックス一覧 */
731 void MyFrame::OnListCcn(wxCommandEvent& WXUNUSED(event)) 712 void MyFrame::OnListCcn(wxCommandEvent& WXUNUSED(event))
732 { 713 {
733 this->m_splitter->ReplaceWindow( this->m_html, this->m_gridCcn ); 714 FrameCcn *fc = new FrameCcn( NULL, ID_CCN, wxT("Index Viewer"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxFRAME_NO_TASKBAR|wxTAB_TRAVERSAL );
734 this->m_gridCcn->Show(true); 715 fc->Show(true);
735 this->m_html->Show(false);
736 MyCmdBox *c = (MyCmdBox*)FindWindowById( ID_CMD );
737 c->Clear();
738
739 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
740 wxSQLite3Database ccndb;
741 ccndb.Open( gszFile );
742
743 wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, time FROM ccn ORDER BY ymd DESC, time DESC");
744 wxSQLite3ResultSet q = stmt.ExecuteQuery();
745 int r=0;
746 while ( q.NextRow() ) {
747 wxString ymd = q.GetString(0);
748 wxString time = q.GetString(1);
749 this->m_gridCcn->AppendRows(1);
750 this->m_gridCcn->SetCellValue(r,0,ymd);
751 this->m_gridCcn->SetCellValue(r,1,time);
752 r++;
753 }
754
755 stmt.Finalize();
756 ccndb.Close();
757 } 716 }
758 717
759 /* 被保険者DB更新 */ 718 /* 被保険者DB更新 */
760 void MyFrame::OnUpdateHhsDb(wxCommandEvent& WXUNUSED(event)) 719 void MyFrame::OnUpdateHhsDb(wxCommandEvent& WXUNUSED(event))
761 { 720 {