00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DlgOpzioni.h"
00010
00011
00012
00013
00014
00016 #include "DlgOpzioni_XPM.xpm"
00018
00019
00020
00021
00022
00023
00024
00025
00027 BEGIN_EVENT_TABLE(DlgOpzioni,wxDialog)
00030
00031 EVT_CLOSE(DlgOpzioni::DlgOpzioniClose)
00032 EVT_BUTTON(ID_BTNOK,DlgOpzioni::BtnOkClick1)
00033 EVT_BUTTON(ID_BTNANNULLA,DlgOpzioni::BtnAnnullaClick)
00034 EVT_BUTTON(ID_BTNMODIFICA,DlgOpzioni::BtnModificaClick)
00035 EVT_BUTTON(ID_BTNINSERISCI,DlgOpzioni::BtnInserisciClick)
00036 EVT_BUTTON(ID_BTNCLRGRAFICO,DlgOpzioni::BtnClrGraficoClick)
00037 EVT_LISTBOX(ID_LSTFUNZIONI,DlgOpzioni::LstFunzioniEnter)
00038 EVT_BUTTON(ID_BTNRIMUOVI,DlgOpzioni::BtnRimuoviClick)
00039 EVT_BUTTON(ID_BTNCLRSFONDO,DlgOpzioni::BtnClrSfondoClick)
00040 END_EVENT_TABLE()
00042
00043
00044
00045 DlgOpzioni::DlgOpzioni( wxWindow *parent,OpzGrafico* opzioni, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style)
00046 : wxDialog( parent, id, title, position, size, style)
00047 { char str[50];
00048
00049 OpzioniPadre=opzioni;
00050 Padre=(wxPanel*)parent;
00051
00052 CreateGUIControls();
00053 AggiornaList();
00054
00055 sprintf(str,"%f",OpzioniPadre->xmin);
00056 this->EdtXMin->WriteText(str);
00057 sprintf(str,"%f",OpzioniPadre->xmax);
00058 this->EdtXMax->WriteText(str);
00059 sprintf(str,"%f",OpzioniPadre->ymin);
00060 this->EdtYMin->WriteText(str);
00061 sprintf(str,"%f",OpzioniPadre->ymax);
00062 this->EdtYMax->WriteText(str);
00063
00064 this->ChkXVis->SetValue(OpzioniPadre->xaxis);
00065 this->ChkYVis->SetValue(OpzioniPadre->yaxis);
00066 sprintf(str,"%d",OpzioniPadre->nstepsx);
00067 this->EdtNTacX->WriteText(str);
00068 sprintf(str,"%d",OpzioniPadre->nstepsy);
00069 this->EdtNTacY->WriteText(str);
00070 sprintf(str,"%d",OpzioniPadre->height);
00071 this->EdtAltezza->WriteText(str);
00072 sprintf(str,"%d",OpzioniPadre->width);
00073 this->EdtLarghezza->WriteText(str);
00074 this->ChkVisTaccheX->SetValue(OpzioniPadre->showstepsx);
00075 this->ChkVisTaccheY->SetValue(OpzioniPadre->showstepsy);
00076 }
00077
00078 DlgOpzioni::~DlgOpzioni() {}
00079
00080 void DlgOpzioni::CreateGUIControls(void)
00081 {
00082
00083
00084
00085
00087
00088 WxNotebook1 = new wxNotebook(this, ID_WXNOTEBOOK1, wxPoint(1,8),wxSize(443,421) );
00089
00090 WxNoteBookPage1 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE1,wxPoint(4,24),wxSize(435,393) );
00091 WxNotebook1->AddPage(WxNoteBookPage1,_("Proprietà Generali"));
00092
00093 LblClrSfondo = new wxStaticText(WxNoteBookPage1, ID_LBLCLRSFONDO ,_(" ") ,wxPoint(98,267),wxSize(19,17) , wxSIMPLE_BORDER );
00094 LblClrSfondo->SetBackgroundColour(wxColour(*wxWHITE));
00095
00096 BtnClrSfondo = new wxButton(WxNoteBookPage1, ID_BTNCLRSFONDO, _("Modifica") , wxPoint(127,265),wxSize(68,25) );
00097
00098 WxYBox = new wxStaticBox(WxNoteBookPage1, ID_WXYBOX,_("Asse Y"),wxPoint(210,5),wxSize(204,252) );
00099
00100 ChkYGrid = new wxCheckBox(WxNoteBookPage1, ID_CHKYGRID, _("Griglia Y") , wxPoint(235,99),wxSize(65,24) );
00101
00102 ChkYVis = new wxCheckBox(WxNoteBookPage1, ID_CHKYVIS, _("Visualizza Asse Ordinate") , wxPoint(234,129),wxSize(131,24) );
00103
00104 WxStaticText2 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT2 ,_("NUMERO CELLE") ,wxPoint(236,194),wxSize(88,17) );
00105
00106 LblYMin = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT8 ,_("Y Min") ,wxPoint(235,31),wxSize(31,17) );
00107
00108 LblYMax = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT9 ,_("Y Max") ,wxPoint(235,66),wxSize(34,17) );
00109
00110 EdtYMin = new wxTextCtrl(WxNoteBookPage1, ID_EDTYMIN, _("") , wxPoint(293,31),wxSize(37,21) );
00111 EdtYMin->SetMaxLength(0);
00112
00113 EdtYMax = new wxTextCtrl(WxNoteBookPage1, ID_EDTYMAX, _("") , wxPoint(293,62),wxSize(37,21) );
00114 EdtYMax->SetMaxLength(0);
00115
00116 EdtNTacY = new wxTextCtrl(WxNoteBookPage1, ID_EDTNTACY, _("") , wxPoint(235,217),wxSize(37,21) );
00117 EdtNTacY->SetMaxLength(0);
00118
00119 WxStaticText5 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT5 ,_("ColoreSfondo") ,wxPoint(4,268),wxSize(68,17) );
00120
00121 WxStaticText6 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT6 ,_("Larghezza Grafico") ,wxPoint(4,306),wxSize(90,17) );
00122
00123 WxStaticText7 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT7 ,_("Altezza Grafico") ,wxPoint(4,337),wxSize(75,17) );
00124
00125 EdtAltezza = new wxTextCtrl(WxNoteBookPage1, ID_WXEDIT2, _("") , wxPoint(98,332),wxSize(37,21) );
00126 EdtAltezza->SetMaxLength(0);
00127
00128 EdtLarghezza = new wxTextCtrl(WxNoteBookPage1, ID_EDTLARGHEZZA, _("") , wxPoint(98,305),wxSize(37,21) );
00129 EdtLarghezza->SetMaxLength(0);
00130
00131 WxStaticBox1 = new wxStaticBox(WxNoteBookPage1, ID_WXSTATICBOX1,_("Asse Y"),wxPoint(1,5),wxSize(204,252) );
00132
00133 LblXTacche = new wxStaticText(WxNoteBookPage1, ID_LBLXTACCHE ,_("NUMERO CELLE") ,wxPoint(8,193),wxSize(88,17) );
00134
00135 ChkXGrid = new wxCheckBox(WxNoteBookPage1, ID_CHKXGRID, _("Griglia X") , wxPoint(8,98),wxSize(68,24) );
00136
00137 ChkXVis = new wxCheckBox(WxNoteBookPage1, ID_CHKXVIS, _("Visualizza Asse Ascissa") , wxPoint(8,127),wxSize(131,24) );
00138
00139 LblXMax = new wxStaticText(WxNoteBookPage1, ID_LBLXMAX ,_("X Max") ,wxPoint(9,66),wxSize(34,17) );
00140
00141 EdtXMax = new wxTextCtrl(WxNoteBookPage1, ID_EDTXMAX, _("") , wxPoint(90,62),wxSize(37,21) );
00142 EdtXMax->SetMaxLength(0);
00143
00144 EdtXMin = new wxTextCtrl(WxNoteBookPage1, ID_EDTXMIN, _("") , wxPoint(90,29),wxSize(37,21) );
00145 EdtXMin->SetMaxLength(0);
00146
00147 LblXMin = new wxStaticText(WxNoteBookPage1, ID_LBLXMIN ,_("X Min") ,wxPoint(9,29),wxSize(31,17) );
00148
00149 EdtNTacX = new wxTextCtrl(WxNoteBookPage1, ID_EDTNTACX, _("") , wxPoint(8,216),wxSize(37,21) );
00150 EdtNTacX->SetMaxLength(0);
00151
00152 ChkVisTaccheY = new wxCheckBox(WxNoteBookPage1, ID_CHKVISTACCHEY, _("Visualizza Tacche Asse Y") , wxPoint(234,161),wxSize(142,24) );
00153
00154 ChkVisTaccheX = new wxCheckBox(WxNoteBookPage1, ID_CHKVISTACCHEX, _("Visualizza Tacche Asse X") , wxPoint(8,158),wxSize(148,24) );
00155
00156 WxNoteBookPage2 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE2,wxPoint(4,24),wxSize(435,393) );
00157 WxNotebook1->AddPage(WxNoteBookPage2,_("Funzioni"));
00158
00159 LblFunzione = new wxStaticText(WxNoteBookPage2, ID_LBLFUNZIONE ,_("Funzioni") ,wxPoint(13,5),wxSize(43,17) );
00160
00161 BtnRimuovi = new wxButton(WxNoteBookPage2, ID_BTNRIMUOVI, _("Rimuovi Funzioni Selezionate") , wxPoint(222,239),wxSize(149,25) );
00162
00163 LstFunzioni = new wxCheckListBox(WxNoteBookPage2, ID_LSTFUNZIONI ,wxPoint(12,22),wxSize(359,212));
00164
00165 WxStaticBox2 = new wxStaticBox(WxNoteBookPage2, ID_WXSTATICBOX2,_("Nuova Funzione"),wxPoint(10,268),wxSize(414,110) );
00166
00167 EdtNuovaFx = new wxTextCtrl(WxNoteBookPage2, ID_EDTNUOVAFX, _("") , wxPoint(102,291),wxSize(315,21) );
00168 EdtNuovaFx->SetMaxLength(0);
00169
00170 WxStaticText9 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT9 ,_("DESCRIZIONE") ,wxPoint(17,294),wxSize(77,17) );
00171
00172 LblClrGrafico = new wxStaticText(WxNoteBookPage2, ID_LBLCLRGRAFICO ,_(" ") ,wxPoint(123,319),wxSize(19,17) );
00173 LblClrGrafico->SetForegroundColour(*wxRED);
00174 LblClrGrafico->SetBackgroundColour(*wxRED);
00175
00176 BtnClrGrafico = new wxButton(WxNoteBookPage2, ID_BTNCLRGRAFICO, _("Cambia Colore") , wxPoint(154,316),wxSize(81,25) );
00177
00178 WxStaticText1 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT1 ,_("COLORE") ,wxPoint(17,321),wxSize(48,17) );
00179
00180 WxStaticText8 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT8 ,_("SPESSORE DISEGNO") ,wxPoint(18,350),wxSize(114,17) );
00181
00182 wxArrayString arrayStringFor_CmbSpessore;
00183 arrayStringFor_CmbSpessore.Add(_("1"));
00184 arrayStringFor_CmbSpessore.Add(_("2"));
00185 arrayStringFor_CmbSpessore.Add(_("3"));
00186 arrayStringFor_CmbSpessore.Add(_("4"));
00187 arrayStringFor_CmbSpessore.Add(_("5"));
00188 CmbSpessore = new wxComboBox(WxNoteBookPage2, ID_CMBSPESSORE ,_("1") ,wxPoint(139,349),wxSize(62,21), arrayStringFor_CmbSpessore );
00189
00190 BtnInserisci = new wxButton(WxNoteBookPage2, ID_BTNINSERISCI, _("Aggiungi Funzione") , wxPoint(215,349),wxSize(97,25) );
00191
00192 BtnModifica = new wxButton(WxNoteBookPage2, ID_BTNMODIFICA, _("Modifica") , wxPoint(320,350),wxSize(100,24) );
00193
00194 BtnAnnulla = new wxButton(this, ID_BTNANNULLA, _("Annulla") , wxPoint(78,440),wxSize(64,27) );
00195
00196 BtnOk = new wxButton(this, ID_BTNOK, _("Ok") , wxPoint(8,440),wxSize(67,27) );
00197
00198 ClrDlgGrafico = new wxColourDialog(this);
00199
00200 this->SetSize(8,8,457,512);
00201 this->SetTitle(_("Opzioni Grafico 2D"));
00202 this->Center();
00203 wxIcon DlgOpzioni_ICON (DlgOpzioni_XPM);
00204 this->SetIcon(DlgOpzioni_XPM);
00205
00207
00208
00209
00210
00211 LblClrSfondo->SetBackgroundColour(OpzioniPadre->bgcolor);
00212
00213
00214
00215 ChkXGrid->SetValue(OpzioniPadre->xgrid);
00216
00217 ChkYGrid->SetValue(OpzioniPadre->ygrid);
00218 BtnModifica->Enable(0);
00219
00220 }
00221
00222 void DlgOpzioni::DlgOpzioniClose(wxCloseEvent& event)
00223 {
00224
00225
00226 Destroy();
00227 }
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240 void DlgOpzioni::BtnClrGraficoClick(wxCommandEvent& event)
00241 {
00242
00243
00244
00245
00246 if(ClrDlgGrafico->ShowModal()==wxID_OK)
00247 {
00248 LblClrGrafico->SetBackgroundColour(ClrDlgGrafico->GetColourData().GetColour());
00249
00250
00251
00252
00253
00254 LblClrGrafico->Refresh();
00255 }
00256
00257 event.Skip();
00258 }
00259
00260
00261
00262
00263
00264 void DlgOpzioni::BtnClrSfondoClick(wxCommandEvent& event)
00265 {
00266
00267
00268 if(ClrDlgGrafico->ShowModal()==wxID_OK)
00269 {
00270 LblClrSfondo->SetBackgroundColour(ClrDlgGrafico->GetColourData().GetColour());
00271 LblClrSfondo->Refresh();
00272
00273 }
00274 event.Skip();
00275 }
00276
00277
00278
00279
00280 void DlgOpzioni::BtnOkClick1(wxCommandEvent& event)
00281 { int i;
00282
00283 if((atoi(EdtNTacX->GetValue())>0)&&(atoi(EdtNTacY->GetValue())>0)&&(atof(EdtXMin->GetValue())<(atof(EdtXMax->GetValue())))&&((EdtYMin->GetValue())<(EdtYMax->GetValue()))&&(atoi(EdtLarghezza->GetValue()))&&(atoi(EdtAltezza->GetValue())))
00284 {
00285 OpzioniPadre->xgrid=ChkXGrid->GetValue();
00286 OpzioniPadre->ygrid=ChkYGrid->GetValue();
00287 OpzioniPadre->xaxis=ChkXVis->GetValue();
00288 OpzioniPadre->yaxis=ChkYVis->GetValue();
00289 OpzioniPadre->nstepsx=atoi(EdtNTacX->GetValue());
00290 OpzioniPadre->nstepsy=atoi(EdtNTacY->GetValue());
00291 OpzioniPadre->showstepsx=ChkVisTaccheX->GetValue();
00292 OpzioniPadre->showstepsy=ChkVisTaccheY->GetValue();
00293
00294 for (i=1;i<=OpzioniPadre->functions.nelements;i++)
00295 {
00296 if(this->LstFunzioni->IsChecked(i-1))
00297
00298 OpzioniPadre->functions.ModifyNode(i,OpzioniPadre->functions.ExtractColor(i),OpzioniPadre->functions.ExtractFunction(i),OpzioniPadre->functions.ExtractStructure(i),1,OpzioniPadre->functions.ExtractWidth(i));
00299 else
00300 OpzioniPadre->functions.ModifyNode(i,OpzioniPadre->functions.ExtractFunction(i),OpzioniPadre->functions.ExtractFunction(i),OpzioniPadre->functions.ExtractStructure(i),0,OpzioniPadre->functions.ExtractWidth(i));
00301
00302
00303 }
00304
00305 OpzioniPadre->bgcolor= LblClrSfondo->GetBackgroundColour();
00306
00307
00308 OpzioniPadre->xmin=atof(this->EdtXMin->GetValue());
00309 OpzioniPadre->xmax=atof(this->EdtXMax->GetValue());
00310
00311 OpzioniPadre->ymin=atof(this->EdtYMin->GetValue());
00312 OpzioniPadre->ymax=atof(this->EdtYMax->GetValue());
00313 OpzioniPadre->width=atoi(this->EdtLarghezza->GetValue());
00314 OpzioniPadre->height=atoi(this->EdtAltezza->GetValue());
00315 Padre->Refresh();
00316 this->Destroy();
00317 }else
00318 {
00319 wxMessageDialog messaggio(this,"Inserire correttamente i valori","Matocad",wxICON_HAND);
00320 messaggio.ShowModal();
00321 }
00322
00323
00324
00325 event.Skip();
00326 }
00327
00328 void DlgOpzioni::AggiornaList()
00329 {int i;
00330
00331 LstFunzioni->Clear();
00332 for (i=1;i<=OpzioniPadre->functions.nelements;i++)
00333 {
00334 LstFunzioni->AppendString(OpzioniPadre->functions.ExtractFunction(i));
00335 if(OpzioniPadre->functions.ExtractDrawFlag(i)==1)
00336 LstFunzioni->Check(i-1,1);
00337 }
00338
00339 }
00340
00341
00342
00343
00344 void DlgOpzioni::BtnInserisciClick(wxCommandEvent& event)
00345 {
00346
00347 rif* pointstructure;
00348 TParserScomponi compila;
00349 char funzione[900];
00350
00351
00352
00353
00354 strcpy(funzione,EdtNuovaFx->GetValue().GetData());
00355 pointstructure=compila.Traduci_funzione(funzione);
00356
00357 if(strcmp(funzione,"err")!=0)
00358 {
00359
00360
00361 OpzioniPadre->functions.NewNode( LblClrGrafico->GetBackgroundColour(),funzione,pointstructure,0,atoi(CmbSpessore->GetValue()));
00362 AggiornaList();
00363 } else
00364 {
00365 wxMessageDialog messaggio(this,"Errori di sintassi nella funzione, reinserirla correttamente","Matocad",wxICON_HAND);
00366 messaggio.ShowModal();
00367 }
00368
00369 event.Skip();
00370
00371 }
00372
00373
00374
00375
00376
00377 void DlgOpzioni::BtnRimuoviClick(wxCommandEvent& event)
00378 {
00379
00380
00381 int i=1;
00382 int nelements=OpzioniPadre->functions.nelements;
00383
00384
00385
00386 for (i=nelements;i>=1;i--)
00387 {if(LstFunzioni->IsChecked(i-1))
00388 { OpzioniPadre->functions.RemoveNode(i);
00389
00390 }
00391 }
00392 AggiornaList();
00393 event.Skip();
00394 }
00395
00396
00397
00398
00399
00400 void DlgOpzioni::BtnModificaClick(wxCommandEvent& event)
00401 {
00402
00403
00404 rif* pointstructure;
00405 TParserScomponi compila;
00406 char funzione[255];
00407 int posizionefunzione=LstFunzioni->GetSelection()+1;
00408
00409
00410
00411
00412 strcpy(funzione,this->EdtNuovaFx->GetLineText(0));
00413 pointstructure=compila.Traduci_funzione(funzione);
00414
00415 if(strcmp(funzione,"err")!=0)
00416 {
00417
00418 BtnModifica->Enable(0);
00419 OpzioniPadre->functions.ModifyNode(posizionefunzione, LblClrGrafico->GetBackgroundColour(),funzione,pointstructure,OpzioniPadre->functions.ExtractDrawFlag(posizionefunzione),atoi(CmbSpessore->GetValue()));
00420 AggiornaList();
00421 }else
00422 {
00423 wxMessageDialog messaggio(this,"Errori di sintassi nella funzione, reinserirla correttamente","Matocad",wxICON_HAND);
00424 messaggio.ShowModal();
00425
00426
00427 }
00428 event.Skip();
00429
00430 }
00431
00432
00433
00434
00435
00436
00437
00438
00439 void DlgOpzioni::LstFunzioniEnter(wxCommandEvent& event)
00440 {
00441
00442 int posfunzione=LstFunzioni->GetSelection()+1;
00443 char str[2];
00444 if(posfunzione==0)
00445 BtnModifica->Enable(0);
00446 else
00447 BtnModifica->Enable(1);
00448 sprintf(str,"%d",OpzioniPadre->functions.ExtractWidth(posfunzione));
00449
00450 this->LblClrGrafico->SetBackgroundColour(OpzioniPadre->functions.ExtractColor(posfunzione));
00451 this->LblClrGrafico->Refresh();
00452 this->CmbSpessore->SetValue(str);
00453 this->CmbSpessore->Refresh();
00454
00455
00456
00457 this->EdtNuovaFx->Clear();
00458 this->EdtNuovaFx->WriteText(LstFunzioni->GetString(posfunzione-1));
00459
00460 event.Skip();
00461 }
00462
00463
00464
00465
00466 void DlgOpzioni::BtnAnnullaClick(wxCommandEvent& event)
00467 {
00468
00469 this->Destroy();
00470 event.Skip();
00471 }