Mercurial > mercurial > hgweb_searcher03.cgi
comparison src/myframe.cpp @ 0:0c0701a935f8
Start Development.
| author | pyon@macmini |
|---|---|
| date | Sun, 21 Jul 2013 16:07:19 +0900 |
| parents | |
| children | 7b6dab24f4b8 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:0c0701a935f8 |
|---|---|
| 1 // Filename : myframe.cpp | |
| 2 // Last Change: 21-Jul-2013. | |
| 3 // | |
| 4 #include "main.h" | |
| 5 #include "myframe.h" | |
| 6 #include "about.h" | |
| 7 #include "kana.h" | |
| 8 #include "hist.h" | |
| 9 #include "index.h" | |
| 10 #include "mask.h" | |
| 11 | |
| 12 #define WINL_W 400 | |
| 13 #define LOGO_W 200 | |
| 14 #define LOGO_H 92 | |
| 15 | |
| 16 // resources | |
| 17 #if !defined(__WXMSW__) && !defined(__WXPM__) | |
| 18 #include "sample.xpm" | |
| 19 #endif | |
| 20 | |
| 21 | |
| 22 MyFrame::MyFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) | |
| 23 : wxFrame( parent, id, title, pos, size, style ) | |
| 24 { | |
| 25 this->SetSizeHints( wxSize( WINL_W, 500 ), wxDefaultSize ); | |
| 26 this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) ); | |
| 27 //this->SetBackgroundColour( wxColour(wxT("WHEAT")) ); | |
| 28 | |
| 29 // set the frame icon | |
| 30 SetIcon(wxICON(sample)); | |
| 31 | |
| 32 // メニューバー Menu | |
| 33 m_menubar = new wxMenuBar( 0 ); | |
| 34 m_menuFile = new wxMenu(); | |
| 35 | |
| 36 wxMenuItem* m_menuItemViewMode = new wxMenuItem( m_menuFile, ID_MNVIEW, wxString( wxT("ビューモード") ) , wxT("Toggle ViewMode"), wxITEM_CHECK ); | |
| 37 m_menuFile->Append( m_menuItemViewMode ); | |
| 38 | |
| 39 m_menuFile->AppendSeparator(); // ---- | |
| 40 | |
| 41 wxMenuItem* m_menuItemIndex = new wxMenuItem( m_menuFile, ID_MNINDEX, wxString( wxT("インデックス") ) , wxT("Update index"), wxITEM_NORMAL ); | |
| 42 m_menuFile->Append( m_menuItemIndex ); | |
| 43 | |
| 44 wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuFile, ID_MNMASKPARAM, wxString( wxT("マスクパラメータ") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); | |
| 45 m_menuFile->Append( m_menuItemMask ); | |
| 46 | |
| 47 wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く") ) , wxT("Open application directory"), wxITEM_NORMAL ); | |
| 48 m_menuFile->Append( m_menuItemAppDir ); | |
| 49 | |
| 50 m_menuFile->AppendSeparator(); // ---- | |
| 51 | |
| 52 wxMenuItem* m_menuItemAbout = new wxMenuItem( m_menuFile, ID_MNABOUT, wxString( wxT("&About...\tF1") ) , wxT("Show about dialog"), wxITEM_NORMAL ); | |
| 53 m_menuFile->Append( m_menuItemAbout ); | |
| 54 | |
| 55 m_menubar->Append( m_menuFile, wxT("ファイル(&F)") ); | |
| 56 | |
| 57 this->SetMenuBar( m_menubar ); | |
| 58 | |
| 59 // | |
| 60 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); | |
| 61 | |
| 62 m_splitter = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); | |
| 63 //m_splitter->Connect( wxEVT_IDLE, wxIdleEventHandler( MyFrame::m_splitterOnIdle ), NULL, this ); | |
| 64 | |
| 65 m_panelL = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); | |
| 66 wxBoxSizer* bSizerL = new wxBoxSizer( wxVERTICAL ); | |
| 67 | |
| 68 wxString logo = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("logo.png"); | |
| 69 wxBitmap bmp = wxBitmap( logo, wxBITMAP_TYPE_PNG ); | |
| 70 m_bitmap = new wxStaticBitmap( m_panelL, wxID_ANY, bmp, wxDefaultPosition, wxSize( LOGO_W, LOGO_H ), 0 ); | |
| 71 bSizerL->Add( m_bitmap, 0, wxALL, 5 ); | |
| 72 | |
| 73 m_textCtrlName = new wxTextCtrl( m_panelL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 200, -1 ), 0 ); | |
| 74 bSizerL->Add( m_textCtrlName, 0, wxALL, 5 ); | |
| 75 | |
| 76 m_textCtrlAddr = new wxTextCtrl( m_panelL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 380, -1 ), 0 ); | |
| 77 bSizerL->Add( m_textCtrlAddr, 0, wxALL, 5 ); | |
| 78 | |
| 79 m_listCtrl = new wxListCtrl( m_panelL, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT ); | |
| 80 wxListItem itemCol; | |
| 81 itemCol.SetText( wxT("通番") ); | |
| 82 m_listCtrl->InsertColumn( 0, itemCol ); | |
| 83 m_listCtrl->SetColumnWidth( 0, 50 ); | |
| 84 itemCol.SetText( wxT("年月日") ); | |
| 85 m_listCtrl->InsertColumn( 1, itemCol ); | |
| 86 m_listCtrl->SetColumnWidth( 1, 80 ); | |
| 87 itemCol.SetText( wxT("場所") ); | |
| 88 m_listCtrl->InsertColumn( 2, itemCol ); | |
| 89 m_listCtrl->SetColumnWidth( 2, 300 ); | |
| 90 bSizerL->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); | |
| 91 | |
| 92 wxBoxSizer* bSizerCmd = new wxBoxSizer( wxHORIZONTAL ); | |
| 93 | |
| 94 //m_staticText = new wxStaticText( m_panelL, wxID_ANY, wxT("コマンド?"), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 95 //bSizerCmd->Add( m_staticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | |
| 96 | |
| 97 m_searchCtrl = new wxSearchCtrl( m_panelL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); | |
| 98 #ifndef __WXMAC__ | |
| 99 m_searchCtrl->ShowSearchButton( true ); | |
| 100 #endif | |
| 101 m_searchCtrl->ShowCancelButton( false ); | |
| 102 bSizerCmd->Add( m_searchCtrl, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); | |
| 103 | |
| 104 m_buttonKana = new wxButton( m_panelL, ID_KANA, wxT("カナ検索"), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 105 bSizerCmd->Add( m_buttonKana, 0, wxALL, 5 ); | |
| 106 | |
| 107 m_buttonHist = new wxButton( m_panelL, ID_HIST, wxT("検索履歴"), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 108 bSizerCmd->Add( m_buttonHist, 0, wxALL, 5 ); | |
| 109 | |
| 110 bSizerL->Add( bSizerCmd, 0, wxEXPAND, 5 ); | |
| 111 | |
| 112 m_panelL->SetSizer( bSizerL ); | |
| 113 m_panelL->Layout(); | |
| 114 bSizerL->Fit( m_panelL ); | |
| 115 | |
| 116 m_panelR = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); | |
| 117 wxBoxSizer* bSizerR = new wxBoxSizer( wxHORIZONTAL ); | |
| 118 | |
| 119 m_bitmapView = new wxStaticBitmap( m_panelR, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); | |
| 120 bSizerR->Add( m_bitmapView, 1, wxALL|wxEXPAND, 5 ); | |
| 121 | |
| 122 m_listCtrlThumb = new wxListCtrl( m_panelR, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_ICON ); | |
| 123 bSizerR->Add( m_listCtrlThumb, 0, wxALL|wxEXPAND, 5 ); | |
| 124 | |
| 125 m_panelR->SetSizer( bSizerR ); | |
| 126 m_panelR->Layout(); | |
| 127 bSizerR->Fit( m_panelR ); | |
| 128 | |
| 129 m_panelR->Show( false ); | |
| 130 bSizerTop->Add( m_splitter, 1, wxEXPAND, 5 ); | |
| 131 | |
| 132 this->SetSizer( bSizerTop ); | |
| 133 this->Layout(); | |
| 134 | |
| 135 // ステータスバー Statusbar | |
| 136 m_statusBar = this->CreateStatusBar( 4, wxST_SIZEGRIP, wxID_ANY ); | |
| 137 int widths[] = { 200, 100, -1, 90 }; | |
| 138 m_statusBar->SetStatusWidths( WXSIZEOF(widths), widths ); | |
| 139 | |
| 140 this->Centre( wxBOTH ); | |
| 141 } | |
| 142 | |
| 143 MyFrame::~MyFrame() | |
| 144 { | |
| 145 } | |
| 146 | |
| 147 // Event Table | |
| 148 BEGIN_EVENT_TABLE( MyFrame, wxFrame ) | |
| 149 EVT_MENU( ID_MNABOUT, MyFrame::OnAbout ) | |
| 150 EVT_MENU( wxID_EXIT, MyFrame::OnQuit ) | |
| 151 EVT_MENU( ID_MNVIEW, MyFrame::OnViewMode ) | |
| 152 EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) | |
| 153 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) | |
| 154 EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) | |
| 155 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir ) | |
| 156 EVT_BUTTON( ID_KANA, MyFrame::OnKana ) | |
| 157 EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) | |
| 158 EVT_SIZE( MyFrame::OnWinSize ) | |
| 159 EVT_MOVE( MyFrame::OnWinMove ) | |
| 160 EVT_CLOSE( MyFrame::SaveConfig ) | |
| 161 END_EVENT_TABLE() | |
| 162 | |
| 163 // Event Handlers & Functions | |
| 164 /* インデックス作成ダイアログ */ | |
| 165 void MyFrame::OnIndex( wxCommandEvent& WXUNUSED(event) ) | |
| 166 { | |
| 167 IndexDialog* index = new IndexDialog( this, wxID_ANY, wxT("インデックス作成"), wxDefaultPosition, wxSize( 500, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
| 168 index->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | |
| 169 index->ShowModal(); | |
| 170 } | |
| 171 /* マスクパラメータ設定ダイアログ */ | |
| 172 void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) | |
| 173 { | |
| 174 MaskDialog* mask = new MaskDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 400, 210 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
| 175 mask->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | |
| 176 mask->ShowModal(); | |
| 177 } | |
| 178 /* アプリフォルダを開く */ | |
| 179 void MyFrame::OnOpenAppDir( wxCommandEvent& WXUNUSED(event) ) | |
| 180 { | |
| 181 wxString appdir = wxGetCwd(); | |
| 182 wxString execmd = wxT("explorer ") + appdir; | |
| 183 wxExecute( execmd ); | |
| 184 } | |
| 185 /* ビューモードの切替え */ | |
| 186 void MyFrame::OnViewMode( wxCommandEvent& event ) | |
| 187 { | |
| 188 if ( event.IsChecked() ) { | |
| 189 int x, y; | |
| 190 GetSize( &x, &y ); | |
| 191 SetSize( WINL_W + 500, y ); | |
| 192 m_splitter->SplitVertically( m_panelL, m_panelR, 0 ); | |
| 193 } | |
| 194 else { | |
| 195 m_splitter->Unsplit(); | |
| 196 SetSize( WINL_W, -1 ); | |
| 197 } | |
| 198 } | |
| 199 /* 被保険者フォルダを開く */ | |
| 200 void MyFrame::OnOpenHhsDir( wxListEvent& event ) | |
| 201 { | |
| 202 wxString hhsdir; | |
| 203 /* | |
| 204 hhsdir = m_textCtrlDist->GetValue() + wxFILE_SEP_PATH; | |
| 205 | |
| 206 int i = event.GetIndex(); | |
| 207 wxListItem item; | |
| 208 item.SetId(i); | |
| 209 | |
| 210 item.SetColumn(1); | |
| 211 item.SetMask(wxLIST_MASK_TEXT); | |
| 212 m_listCtrlHhsDir->GetItem( item ); | |
| 213 hhsdir.Append( item.GetText() ); | |
| 214 | |
| 215 DirViewFrame* dvf = new DirViewFrame( (wxWindow*)this, wxID_ANY, wxEmptyString ); | |
| 216 dvf->m_dir = hhsdir; | |
| 217 dvf->LoadListImage(); | |
| 218 dvf->Show(true); | |
| 219 */ | |
| 220 } | |
| 221 /* カナ検索ダイアログ */ | |
| 222 void MyFrame::OnKana( wxCommandEvent& WXUNUSED(event) ) | |
| 223 { | |
| 224 KanaDialog* kana = new KanaDialog( this, wxID_ANY, wxT("カナ氏名で被保番を検索"), wxDefaultPosition, wxSize( 500, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
| 225 kana->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | |
| 226 kana->ShowModal(); | |
| 227 } | |
| 228 /* 検索履歴検索ダイアログ */ | |
| 229 void MyFrame::OnHistory( wxCommandEvent& WXUNUSED(event) ) | |
| 230 { | |
| 231 HistDialog* hist = new HistDialog( this, wxID_ANY, wxT("検索履歴"), wxDefaultPosition, wxSize( 550, 500 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
| 232 hist->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | |
| 233 hist->ShowModal(); | |
| 234 } | |
| 235 | |
| 236 /* サイズ変更 */ | |
| 237 void MyFrame::OnWinSize( wxSizeEvent& event ) | |
| 238 { | |
| 239 this->Refresh( true, NULL ); | |
| 240 TellLocation(); | |
| 241 event.Skip(); | |
| 242 } | |
| 243 /* ウィンドウ移動 */ | |
| 244 void MyFrame::OnWinMove( wxMoveEvent& WXUNUSED(event) ) | |
| 245 { | |
| 246 TellLocation(); | |
| 247 return; | |
| 248 } | |
| 249 /* ウィンドウ位置とサイズを表示 */ | |
| 250 void MyFrame::TellLocation( void ) | |
| 251 { | |
| 252 wxRect r = this->GetRect(); | |
| 253 int x = r.GetX(); | |
| 254 int y = r.GetY(); | |
| 255 int w = r.GetWidth(); | |
| 256 int h = r.GetHeight(); | |
| 257 //SetStatusText( wxString::Format(wxT("(%d,%d) %dx%d"),x,y,w,h), 3 ); | |
| 258 } | |
| 259 /* 終了 */ | |
| 260 void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) ) | |
| 261 { | |
| 262 Close( true ); | |
| 263 } | |
| 264 /* 設定を保存 */ | |
| 265 void MyFrame::SaveConfig( wxCloseEvent& WXUNUSED(event) ) | |
| 266 { | |
| 267 if ( !IsIconized() && !IsMaximized() ) { | |
| 268 wxGetApp().rect = this->GetRect(); | |
| 269 } | |
| 270 Destroy(); | |
| 271 } | |
| 272 /* アバウトダイアログ */ | |
| 273 void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) | |
| 274 { | |
| 275 AboutDialog* aboutDlg = new AboutDialog( this, wxID_ANY, wxT("About this Software"), wxDefaultPosition, wxSize(320,280), wxDEFAULT_DIALOG_STYLE|wxSTAY_ON_TOP ); | |
| 276 aboutDlg->ShowModal(); | |
| 277 } | |
| 278 |
