00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "../include/MainFrm.h"
00010
00011
00012
00013
00015 #include "../icons/MainFrm_XPM.xpm"
00016 #include "../icons/BtnUpdateTree_XPM.xpm"
00017 #include "../icons/BtnElimina_XPM.xpm"
00018 #include "../icons/BtnNewEti_XPM.xpm"
00019 #include "../icons/BtnModifica_XPM.xpm"
00020 #include "../icons/BtnNuovo3D_XPM.xpm"
00021 #include "../icons/BtnNuovo2D_XPM.xpm"
00022 #include "../icons/BtnAvanti_XPM.xpm"
00023 #include "../icons/BtnIndietro_XPM.xpm"
00024 #include "../icons/BtnChiudiFoglio_XPM.xpm"
00025 #include "../icons/BtnNuovoFoglio_XPM.xpm"
00027
00028
00029
00030
00031
00032
00033
00035 BEGIN_EVENT_TABLE(MainFrm,wxFrame)
00037
00039 EVT_CLOSE(MainFrm::MainFrmClose)
00040 EVT_MENU(ID_BTNUPDATETREE,MainFrm::BtnUpdateTreeClick)
00041 EVT_MENU(ID_BTNELIMINA,MainFrm::BtnEliminaClick)
00042 EVT_MENU(ID_BTNNEWETI,MainFrm::BtnNewEtiClick)
00043 EVT_MENU(ID_BTNMODIFICA,MainFrm::BtnModificaClick)
00044 EVT_MENU(ID_BTNNUOVO3D,MainFrm::BtnNuovo3DClick)
00045 EVT_MENU(ID_BTNNUOVO2D,MainFrm::BtnNuovo2DClick)
00046 EVT_MENU(ID_BTNAVANTI,MainFrm::BtnAvantiClick)
00047 EVT_MENU(ID_BTNINDIETRO,MainFrm::BtnIndietroClick)
00048 EVT_MENU(ID_BTNCHIUDIFOGLIO,MainFrm::BtnChiudiFoglioClick)
00049 EVT_MENU(ID_BTNNUOVOFOGLIO,MainFrm::BtnNuovoFoglioClick1)
00050 EVT_MENU_RANGE(WINDOW_MENU_START, WINDOW_MENU_END, MainFrm::OnMenu)
00051 EVT_MENU(WINDOW_MENU_SHOW_ALL, MainFrm::OnShowAll)
00052 EVT_MENU(WINDOW_MENU_HIDE_ALL, MainFrm::OnShowAll)
00053 EVT_MENU_OPEN(MainFrm::OnMenuOpen)
00054 EVT_SIZE(MainFrm::OnSize)
00055
00056 END_EVENT_TABLE()
00058
00059
00060 MainFrm::MainFrm( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style )
00061 : wxFrame( parent, id, title, position, size, style), m_ifm(NULL), count(0)
00062 {
00063 ident=1200;
00064 CreateGUIControls();
00065
00066
00067
00068 }
00069
00070
00071 MainFrm::~MainFrm()
00072 {}
00073
00074
00075 void MainFrm::CreateGUIControls(void)
00076 {
00077
00078 m_ifm = new wxInterfaceManager(this);
00079
00080 m_ifm->Initialize(true);
00081
00082
00083
00084 m_ifm->SetStatusMessagePane(0);
00085
00086
00087
00088
00089
00090 wxIFMDefaultChildData data;
00091
00092 wxMenuBar *mb = new wxMenuBar;
00093 wxMenu *menu1 = new wxMenu;
00094 menu1->Append(WINDOW_MENU_SHOW_ALL, wxT("Show All Windows"));
00095 menu1->Append(WINDOW_MENU_HIDE_ALL, wxT("Hide All Windows"));
00096 mb->Append(menu1, wxT("View"));
00097 SetMenuBar(mb);
00098
00099 StbMain = new wxStatusBar(this, ID_STBMAIN);
00100
00101 int sizes[5];
00102 sizes[0]=-1;
00103 sizes[1]=-2;
00104 sizes[2]=-2;
00105 sizes[3]=-1;
00106 sizes[4]=-1;
00107
00108 StbMain->SetFieldsCount(5,sizes);
00109
00110 TlbFogli = new wxToolBar(this, ID_TLBFOGLI, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL | wxTB_FLAT);
00111
00112
00113 wxBitmap BtnNuovoFoglio_BITMAP (BtnNuovoFoglio_XPM);
00114 wxBitmap BtnNuovoFoglio_DISABLE_BITMAP (wxNullBitmap);
00115 TlbFogli->AddTool(ID_BTNNUOVOFOGLIO, wxT(""), BtnNuovoFoglio_BITMAP, BtnNuovoFoglio_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Nuovo Foglio"), wxT(""));
00116
00117 wxBitmap BtnChiudiFoglio_BITMAP (BtnChiudiFoglio_XPM);
00118 wxBitmap BtnChiudiFoglio_DISABLE_BITMAP (wxNullBitmap);
00119 TlbFogli->AddTool(ID_BTNCHIUDIFOGLIO, wxT(""), BtnChiudiFoglio_BITMAP, BtnChiudiFoglio_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Chiudi Foglio"), wxT(""));
00120
00121 wxBitmap BtnIndietro_BITMAP (BtnIndietro_XPM);
00122 wxBitmap BtnIndietro_DISABLE_BITMAP (wxNullBitmap);
00123 TlbFogli->AddTool(ID_BTNINDIETRO, wxT(""), BtnIndietro_BITMAP, BtnIndietro_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Foglio Precedente"), wxT(""));
00124
00125 wxBitmap BtnAvanti_BITMAP (BtnAvanti_XPM);
00126 wxBitmap BtnAvanti_DISABLE_BITMAP (wxNullBitmap);
00127 TlbFogli->AddTool(ID_BTNAVANTI, wxT(""), BtnAvanti_BITMAP, BtnAvanti_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Foglio Successivo"), wxT(""));
00128
00129 TlbFogli->SetToolBitmapSize(wxSize(32,32));
00130 TlbFogli->Realize();
00131
00132
00133 TlbOggetti = new wxToolBar(this, ID_TLBOGGETTI, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL | wxTB_FLAT);
00134
00135 wxBitmap BtnNuovo2D_BITMAP (BtnNuovo2D_XPM);
00136 wxBitmap BtnNuovo2D_DISABLE_BITMAP (wxNullBitmap);
00137 TlbOggetti->AddTool(ID_BTNNUOVO2D, wxT(""), BtnNuovo2D_BITMAP, BtnNuovo2D_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Inserisci Grafico 2D"), wxT(""));
00138
00139 wxBitmap BtnNuovo3D_BITMAP (BtnNuovo3D_XPM);
00140 wxBitmap BtnNuovo3D_DISABLE_BITMAP (wxNullBitmap);
00141 TlbOggetti->AddTool(ID_BTNNUOVO3D, wxT(""), BtnNuovo3D_BITMAP, BtnNuovo3D_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Inserisci Grafico 3D"), wxT(""));
00142
00143 wxBitmap BtnNewEti_BITMAP (BtnNewEti_XPM);
00144 wxBitmap BtnNewEti_DISABLE_BITMAP (wxNullBitmap);
00145 TlbOggetti->AddTool(ID_BTNNEWETI, wxT(""), BtnNewEti_BITMAP, BtnNewEti_DISABLE_BITMAP, wxITEM_NORMAL, wxT("inserisci nuova etichetta"), wxT(""));
00146
00147 TlbOggetti->AddSeparator();
00148
00149 wxBitmap BtnModifica_BITMAP (BtnModifica_XPM);
00150 wxBitmap BtnModifica_DISABLE_BITMAP (wxNullBitmap);
00151 TlbOggetti->AddTool(ID_BTNMODIFICA, wxT(""), BtnModifica_BITMAP, BtnModifica_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Finestra Proprietà"), wxT(""));
00152
00153 wxBitmap BtnElimina_BITMAP (BtnElimina_XPM);
00154 wxBitmap BtnElimina_DISABLE_BITMAP (wxNullBitmap);
00155 TlbOggetti->AddTool(ID_BTNELIMINA, wxT(""), BtnElimina_BITMAP, BtnElimina_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Elimina Elemento Selezionato"), wxT(""));
00156
00157 TlbOggetti->AddSeparator();
00158
00159 wxBitmap BtnUpdateTree_BITMAP (BtnUpdateTree_XPM);
00160 wxBitmap BtnUpdateTree_DISABLE_BITMAP (wxNullBitmap);
00161 TlbOggetti->AddTool(ID_BTNUPDATETREE, wxT(""), BtnUpdateTree_BITMAP, BtnUpdateTree_DISABLE_BITMAP, wxITEM_NORMAL, wxT("Aggiornal'albero dei widget"), wxT(""));
00162
00163 TlbOggetti->SetToolBitmapSize(wxSize(32,32));
00164 TlbOggetti->Realize();
00165
00166
00167
00168
00169 this->SetStatusBar(StbMain);
00170
00171 data.m_name = wxT("Oggetti");
00172 data.m_type = IFM_CHILD_TOOLBAR;
00173 data.m_desiredSize.Set(40,40);
00174 data.m_minSize.Set(0,0);
00175 data.m_tabify = true;
00176 data.m_orientation = IFM_ORIENTATION_TOP;
00177 m_windows.insert(wxWindowMap::value_type(count, TlbOggetti));
00178 GetMenuBar()->GetMenu(0)->AppendCheckItem(count, wxString::Format(wxT("Show Toolbar Oggetti")));
00179
00180 TlbOggetti->SetSizeHints(0,0);
00181 data.m_child = m_windows[count++];
00182 data.m_hideable = true;
00183 m_ifm->AddChild(&data);
00184
00185
00186 data.m_name = wxT("Fogli");
00187 data.m_type = IFM_CHILD_TOOLBAR;
00188 data.m_desiredSize.Set(40,40);
00189 data.m_minSize.Set(0,0);
00190 data.m_orientation = IFM_ORIENTATION_TOP;
00191 m_windows.insert(wxWindowMap::value_type(count, TlbFogli));
00192 GetMenuBar()->GetMenu(0)->AppendCheckItem(count, wxString::Format(wxT("Show Toolbar Fogli")));
00193
00194 TlbFogli->SetSizeHints(0,0);
00195 data.m_child = m_windows[count++];
00196 data.m_hideable = true;
00197 m_ifm->AddChild(&data);
00198
00199 TabFogli = new NtbSheet(this, ID_TABFOGLI);
00200
00201 TabFogli->SetSizeHints(0,0);
00202
00203 m_ifm->SetContentWindow(TabFogli);
00204 this->SetTitle(wxT("MatOCAD"));
00205 this->Center();
00206 wxIcon MainFrm_ICON (MainFrm_XPM);
00207 this->SetIcon(MainFrm_XPM);
00208
00209
00210
00211
00212
00213 data.m_name = wxT("Object tree");
00214 data.m_type = IFM_CHILD_GENERIC;
00215 data.m_desiredSize.Set(150, 150);
00216 data.m_minSize.Set(60,20);
00217 data.m_tabify = false;
00218 data.m_orientation = IFM_ORIENTATION_LEFT;
00219 data.m_child = CreateTreeView();
00220 data.m_hideable = true;
00221
00222
00223
00224
00225 m_ifm->AddChild(&data);
00226 m_ifm->HideChild(m_windows[2]);
00227
00228
00229
00230 m_ifm->Update();
00231
00233
00234
00235
00236
00237 }
00238
00239
00240
00241
00242 void MainFrm::TabFogliPageChanged(wxNotebookEvent& event)
00243 {
00244
00245
00246
00247
00248 if(TabFogli->GetSelection()!=-1)
00249 {
00250
00251 this->GetStatusBar()->SetStatusText(TabFogli->GetPageText(TabFogli->GetSelection()),1);
00252 }
00253 event.Skip();
00254 }
00255
00256 void MainFrm::MainFrmClose(wxCloseEvent& event)
00257 {
00258
00259
00260 m_ifm->Shutdown();
00261
00262
00263 delete m_ifm;
00264
00265 event.Skip();
00266 Destroy();
00267 }
00268
00269
00270
00271
00272
00273
00274
00275 void MainFrm::BtnNuovoFoglioClick1(wxCommandEvent& event)
00276 {
00277
00278
00279 TabFogli->InsertPage();
00280
00281 event.Skip();
00282 }
00283
00284
00285
00286
00287 void MainFrm::BtnModificaClick(wxCommandEvent& event)
00288 {
00289
00290 wxCommandEvent c;
00291 PnlFoglio* foglio;
00292 PnlGraphFrame* graf2d;
00293 Graph3DFrame* graf3d;
00294 if(TabFogli->GetPageCount())
00295 {
00296 foglio=(PnlFoglio*)TabFogli->GetCurrentPage();
00297 if(*(foglio->gestionepannello->IdentSelezione)==2)
00298 {
00299 graf2d=(PnlGraphFrame*)(foglio->gestionepannello->Selezione);
00300 graf2d->Grafico->SettingsClick(c);
00301 }
00302
00303 if(*(foglio->gestionepannello->IdentSelezione)==3)
00304 {
00305 graf3d=(Graph3DFrame*)(foglio->gestionepannello->Selezione);
00306 graf3d->Grafico->click_menu_popup_opz(c);
00307 }
00308 }
00309 else
00310 {
00311 wxMessageDialog messaggio(this,_T("Inserire almeno un foglio di lavoro"),_T("Matocad"),wxICON_HAND);
00312 messaggio.ShowModal();
00313
00314 }
00315 event.Skip();
00316 }
00317
00318
00319
00320
00321 void MainFrm::BtnIndietroClick(wxCommandEvent& event)
00322 {
00323
00324 TabFogli->SetSelection(TabFogli->GetSelection()-1);
00325 event.Skip();
00326
00327 }
00328
00329
00330
00331
00332 void MainFrm::BtnEliminaClick(wxCommandEvent& event)
00333 {
00334
00335 PnlFoglio* foglio;
00336
00337 if(TabFogli->GetPageCount())
00338 {
00339 foglio=(PnlFoglio*)TabFogli->GetCurrentPage();
00340 if(*(foglio->gestionepannello->IdentSelezione)!=0)
00341
00342 foglio->Elimina();
00343
00344 }
00345 else
00346 {
00347 wxMessageDialog messaggio(this,_T("Inserire almeno un foglio di lavoro"),_T("Matocad"),wxICON_HAND);
00348 messaggio.ShowModal();
00349 }
00350 event.Skip();
00351
00352 }
00353
00354
00355
00356
00357 void MainFrm::BtnAvantiClick(wxCommandEvent& event)
00358 {
00359
00360 TabFogli->SetSelection(TabFogli->GetSelection()+1);
00361 event.Skip();
00362 }
00363
00364
00365
00366
00367 void MainFrm::BtnNuovo2DClick(wxCommandEvent& event)
00368 {
00369
00370 wxCommandEvent c;
00371 PnlFoglio* foglio;
00372 if(TabFogli->GetPageCount())
00373 {
00374 foglio=(PnlFoglio*)TabFogli->GetCurrentPage();
00375 foglio->MnuAggiungiGrafico2DClick(c);
00376 event.Skip();
00377 }
00378 else
00379 {
00380 wxMessageDialog messaggio(this,_T("Inserire almeno un foglio di lavoro"),_T("Matocad"),wxICON_HAND);
00381 messaggio.ShowModal();
00382 }
00383
00384 }
00385
00386
00387
00388
00389 void MainFrm::BtnChiudiFoglioClick(wxCommandEvent& event)
00390 {
00391
00392 TabFogli->DeletePage(TabFogli->GetSelection());
00393 event.Skip();
00394 }
00395
00396
00397
00398
00399 void MainFrm::BtnNuovo3DClick(wxCommandEvent& event)
00400 {
00401 wxCommandEvent c;
00402 PnlFoglio* foglio;
00403 if(TabFogli->GetPageCount())
00404 {
00405 foglio=(PnlFoglio*)TabFogli->GetCurrentPage();
00406 foglio->MnuAggiungiGrafico3DClick(c);
00407 event.Skip();
00408 }
00409 else
00410 {
00411 wxMessageDialog messaggio(this,_T("Inserire almeno un foglio di lavoro"),_T("Matocad"),wxICON_HAND);
00412 messaggio.ShowModal();
00413 }
00414 event.Skip();
00415 }
00416
00417
00418
00419
00420 void MainFrm::BtnNewEtiClick(wxCommandEvent& event)
00421 {
00422
00423 event.Skip();
00424 wxCommandEvent c;
00425 PnlFoglio* foglio;
00426 if(TabFogli->GetPageCount())
00427 {
00428 foglio=(PnlFoglio*)TabFogli->GetCurrentPage();
00429 foglio->MnuAggiungiEtichettaClick(c);
00430 event.Skip();
00431 }
00432 else
00433 {
00434 wxMessageDialog messaggio(this,_T("Inserire almeno un foglio di lavoro"),_T("Matocad"),wxICON_HAND);
00435 messaggio.ShowModal();
00436 }
00437 event.Skip();
00438 }
00439
00440
00441
00442
00443 void MainFrm::BtnUpdateTreeClick(wxCommandEvent& event)
00444 {
00445
00446 if(!m_ifm->IsChildVisible(m_windows[2]))
00447 m_ifm->ShowChild(m_windows[2],true,true);
00448 WxPanel1->Fill();
00449 }
00450
00451 void MainFrm::OnMenu(wxCommandEvent &event)
00452 {
00453
00454 m_ifm->ShowChild(m_windows[event.GetId()], event.IsChecked(), true);
00455 }
00456
00457 void MainFrm::OnMenuOpen(wxMenuEvent &event)
00458 {
00459 wxMenu *menu = GetMenuBar()->GetMenu(0);
00460 for(int i = 0; i < count; i++)
00461 menu->Check(i, m_ifm->IsChildVisible(m_windows[i]));
00462 }
00463
00464 wxWindow *MainFrm::CreateTreeView(bool visible)
00465 {
00466 WxPanel1 = new PnlObjTree(this, ID_WXPANEL1, TabFogli);
00467 m_windows.insert(wxWindowMap::value_type(count, WxPanel1));
00468 GetMenuBar()->GetMenu(0)->AppendCheckItem(count, wxString::Format(wxT("Show Tree View")));
00469
00470 WxPanel1->SetSizeHints(0,0);
00471 return m_windows[count++];
00472 }
00473
00474 void MainFrm::OnShowAll(wxCommandEvent &event)
00475 {
00476 bool show;
00477 if( event.GetId() == WINDOW_MENU_SHOW_ALL )
00478 show = true;
00479 else
00480 show = false;
00481
00482
00483 for( wxWindowMap::iterator i = m_windows.begin(), end = m_windows.end(); i != end; i++ )
00484 {
00485 m_ifm->ShowChild(i->second, show, false);
00486
00487 }
00488
00489
00490 m_ifm->Update(IFM_DEFAULT_RECT, true);
00491 }
00492
00493 void MainFrm::OnSize(wxSizeEvent& event)
00494 {
00495 if(m_ifm!=NULL)
00496 m_ifm->Update();
00497 event.Skip();
00498 }