#include "MainWindow.h" BEGIN_EVENT_TABLE(MainWindow, wxDialog) EVT_CLOSE(MainWindow::OnClose) EVT_SIZE(MainWindow::Resize) EVT_BUTTON(0, MainWindow::OnOK) EVT_BUTTON(25, MainWindow::OnNew) EVT_BUTTON(26, MainWindow::OnEdit) EVT_BUTTON(27, MainWindow::OnLoeschen) EVT_BUTTON(1, MainWindow::OnCancel) EVT_LIST_ITEM_SELECTED(19, MainWindow::OnSelectItem) END_EVENT_TABLE() MainWindow::MainWindow() { m_listwerkzeug = NULL; } bool wxBackgroundBitmap::ProcessEvent(wxEvent &Event) { if (Event.GetEventType() == wxEVT_ERASE_BACKGROUND) { wxEraseEvent &EraseEvent = dynamic_cast(Event); wxDC *DC = EraseEvent.GetDC(); DC->DrawBitmap(Bitmap, 0, 0, false); return true; } else return Inherited::ProcessEvent(Event); } bool MainWindow::OnInit() { //SetBackgroundColour("white"); MainWindow = new wxBackgroundBitmap(wxBITMAP("test")); ToolBar->PushEventHandler(MainWindow); m_selection = -1; m_lblAuftrag = new wxStaticText(this, 2, _T("AuftragsNR:"),wxPoint(200,20), wxSize(80,20)); m_txtFilename = new wxTextCtrl(this, 1, _T(""),wxPoint(280,20), wxSize(100,20)); m_txtFilename->SetMaxLength(8); m_lbllaenge = new wxStaticText(this,16, _T("Fertigl�nge:"),wxPoint(30,50), wxSize(100,20)); m_lblbreite = new wxStaticText(this,16, _T("Fertigbreite:"),wxPoint(300,50), wxSize(100,20)); m_txtlaenge = new wxTextCtrl(this, 1, _T("2000"),wxPoint(130,50), wxSize(50,20)); m_txtlaenge->SetMaxLength(7); m_txtlaeschnitt =new wxTextCtrl (this, 1, _T("20"),wxPoint(200,50), wxSize(30,20)); m_txtlaeschnitt->SetMaxLength(2); m_txtbreite = new wxTextCtrl(this, 1, _T("600"),wxPoint(400,50), wxSize(50,20)); m_txtbreite->SetMaxLength(7); m_txtbrschnitt =new wxTextCtrl (this, 1, _T("20"),wxPoint(470,50), wxSize(30,20)); m_txtbrschnitt->SetMaxLength(2); m_oberflae =new wxStaticBox(this,3, _T("Oberflaeche:"),wxPoint(10,430), wxSize(150,80)); m_funier = new wxRadioButton(this,14, _T("Funier"),wxPoint(20,450), wxSize(100,20),wxRB_GROUP); m_funier->SetValue(true); m_schichtstoff = new wxRadioButton(this,14, _T("Schichtstoff"),wxPoint(20,470), wxSize(100,20)); m_raeoubox =new wxStaticBox(this,20, _T("Raender oben/unten"), wxPoint(10,90), wxSize(250,100)); m_butoben =new wxRadioButton(this,15, _T("oben bindend"),wxPoint(20,110), wxSize(120,20),wxRB_GROUP); m_butunten =new wxRadioButton(this,15, _T("unten bindend"),wxPoint(20,130), wxSize(120,20)); m_butousymmetrisch =new wxRadioButton(this,15, _T("symmetrisch"),wxPoint(20,150), wxSize(120,20)); m_butousymmetrisch->SetValue(true); m_lbloben =new wxStaticText (this,11, _T("oben:"),wxPoint(160,110), wxSize(50,20)); m_lblunten =new wxStaticText (this,11, _T("unten:"),wxPoint(160,130), wxSize(50,20)); m_txtoben =new wxTextCtrl (this, 12, _T("50"),wxPoint(210,110), wxSize(30,20)); m_txtunten =new wxTextCtrl (this, 12, _T("50"),wxPoint(210,130), wxSize(30,20)); m_raelrbox =new wxStaticBox(this,20, _T("Raender links/rechts"), wxPoint(280,90), wxSize(250,100)); m_butlinks =new wxRadioButton(this,15, _T("links bindend"),wxPoint(290,110), wxSize(120,20),wxRB_GROUP); m_butrechts =new wxRadioButton(this,15, _T("rechts bindend"),wxPoint(290,130), wxSize(120,20)); m_butrlsymmetrisch =new wxRadioButton(this,15, _T("symmetrisch"),wxPoint(290,150), wxSize(120,20)); m_butrlsymmetrisch->SetValue(true); m_lbllinks =new wxStaticText (this,11, _T("links:"),wxPoint(440,110), wxSize(50,20)); m_lblrechts =new wxStaticText (this,11, _T("rechts:"),wxPoint(440,130), wxSize(50,20)); m_txtlinks =new wxTextCtrl (this, 12, _T("50"),wxPoint(490,110), wxSize(30,20)); m_txtrechts =new wxTextCtrl (this, 12, _T("50"),wxPoint(490,130), wxSize(30,20)); m_listwerkzeug=new wxListCtrl(this,19, wxPoint(10,200), wxSize(520,200),wxLC_REPORT|wxLC_SINGLE_SEL); m_listwerkzeug->InsertColumn(0, _T("Name"), wxLIST_FORMAT_LEFT, 130); m_listwerkzeug->InsertColumn(1, _T("Durchmesser"), wxLIST_FORMAT_LEFT, 90); m_listwerkzeug->InsertColumn(2, _T("L.abstand x"), wxLIST_FORMAT_LEFT, 80); m_listwerkzeug->InsertColumn(3, _T("L.abstand y"), wxLIST_FORMAT_LEFT, 80); m_listwerkzeug->InsertColumn(4, _T("Anzahl"), wxLIST_FORMAT_LEFT, 50); m_listwerkzeug->InsertColumn(5, _T("W.Nummer"), wxLIST_FORMAT_LEFT, 86); m_btnneu = new wxButton(this, 25, _T("Neu"),wxPoint(10,405), wxSize(50,20)); m_btnedit = new wxButton(this, 26, _T("Edit"),wxPoint(65,405), wxSize(50,20)); m_btnloeschen = new wxButton(this, 27, _T("Loeschen"),wxPoint(120,405), wxSize(60,20)); m_stbExporter = new wxStaticBox(this,20, _T("Exporter"),wxPoint(325,400), wxSize(205,70)); m_exportDFT = new wxCheckBox(this,31, _T("schreibe DFT"), wxPoint(330,420), wxSize(100,20)); m_exportDXF = new wxCheckBox(this,32, _T("schreibe DXF"), wxPoint(330,440), wxSize(100,20)); m_exportMPR = new wxCheckBox(this,33, _T("schreibe MPR"), wxPoint(430,420), wxSize(90,20)); m_exportPGM = new wxCheckBox(this,34, _T("schreibe PGM"), wxPoint(430,440), wxSize(90,20)); m_exportPGM->SetValue(true); m_btnOK = new wxButton(this, 0, _T("OK"),wxPoint(430,480), wxSize(100,30)); m_btnCancel = new wxButton(this, 1, _T("Ende"),wxPoint(325,480), wxSize(100,30)); Loadini(); UpdateList(); return true; } void MainWindow::Loadini() { CIniFile ini; ini.Load("werkzeuge.ini"); CIniSection werkzeuge = ini.GetSection("Werkzeuge"); string num = werkzeuge.GetPropertyValue("num"); int number = atoi(num.c_str()); for(int i = 0; i< number; i++) { char buff[128]; sprintf(buff,"Name[%d]",i); string name = werkzeuge.GetPropertyValue(buff); sprintf(buff,"Durchmesser[%d]",i); string durchmesser = werkzeuge.GetPropertyValue(buff); sprintf(buff,"AbstandX[%d]",i); string abstandx = werkzeuge.GetPropertyValue(buff); sprintf(buff,"AbstandY[%d]",i); string abstandy = werkzeuge.GetPropertyValue(buff); sprintf(buff,"Anzahl[%d]",i); string anzahl = werkzeuge.GetPropertyValue(buff); sprintf(buff,"Nummer[%d]",i); string nummer = werkzeuge.GetPropertyValue(buff); Werkzeug nw = Werkzeug(name,atof(durchmesser.c_str()),atof(abstandx.c_str()),atof(abstandy.c_str()),atoi(anzahl.c_str()),nummer); m_werkzeugList.push_back(nw); } } void MainWindow::Saveini() { CIniFile ini; char buff[128]; int num = m_werkzeugList.size(); ini.AddSection("Werkzeuge"); //CIniSection werkzeuge = ini.GetSection("Werkzeuge"); sprintf(buff,"%d",num); ini["Werkzeuge"].AddProperty("num",buff); for(int i = 0; i< num; i++) { char buff2[128]; Werkzeug tool = m_werkzeugList[i]; sprintf(buff2,"Name[%d]",i); ini["Werkzeuge"].AddProperty(buff2,tool.name); sprintf(buff,"%f",tool.durchmesser); sprintf(buff2,"Durchmesser[%d]",i); ini["Werkzeuge"].AddProperty(buff2,buff); sprintf(buff,"%f",tool.abstandx); sprintf(buff2,"AbstandX[%d]",i); ini["Werkzeuge"].AddProperty(buff2,buff); sprintf(buff,"%f",tool.abstandx); sprintf(buff2,"AbstandY[%d]",i); ini["Werkzeuge"].AddProperty(buff2,buff); sprintf(buff,"%d",tool.anzahl); sprintf(buff2,"Anzahl[%d]",i); ini["Werkzeuge"].AddProperty(buff2,buff); sprintf(buff2,"Nummer[%d]",i); ini["Werkzeuge"].AddProperty(buff2,tool.nummer); } ini.Save("werkzeuge.ini"); } void MainWindow::UpdateList() { if(!m_listwerkzeug) return; m_listwerkzeug->DeleteAllItems(); m_selection = -1; std::vector::const_iterator i; char buff[128]; int n = 0; for(i=m_werkzeugList.begin(); i!=m_werkzeugList.end(); ++i){ Werkzeug w = *i; m_listwerkzeug->InsertItem(n, w.name); sprintf(buff,"%f",w.durchmesser); m_listwerkzeug->SetItem(n,1, TrimZero(buff)); sprintf(buff,"%f",w.abstandx); m_listwerkzeug->SetItem(n,2, TrimZero(buff)); sprintf(buff,"%f",w.abstandy); m_listwerkzeug->SetItem(n,3, TrimZero(buff)); sprintf(buff,"%d",w.anzahl); m_listwerkzeug->SetItem(n,4, TrimZero(buff)); m_listwerkzeug->SetItem(n,5, w.nummer); n++; } } void MainWindow::OnLoeschen(wxCommandEvent& event) { if (m_selection == -1){ wxMessageDialog* msg = new wxMessageDialog(this,_T("Bitte Werkzeug zum loeschen auswaehlen!"),_T("Kein Werkzeug Ausgewaehlt!"),wxOK|wxICON_ERROR|wxSTAY_ON_TOP); msg->ShowModal(); return; } if (m_selection != -1){ wxMessageDialog* msg = new wxMessageDialog(this,_T("Soll das markierte Werkzeug wirklich gel�scht werden?" ),_T("Kein Werkzeug zum L�schen Ausgew�hlt!"),wxYES_NO|wxNO_DEFAULT|wxICON_QUESTION|wxSTAY_ON_TOP); if (wxID_YES == msg->ShowModal()){ m_werkzeugList.erase( m_werkzeugList.begin( ) + m_selection); UpdateList(); } return; } } void MainWindow::OnNew(wxCommandEvent& event) { /*ToolEdit *frame = new ToolEdit; frame->Create(NULL, -1, _T("Erstellen/Edit Window"),wxDefaultPosition, wxSize(200,200),wxDEFAULT_FRAME_STYLE); frame->Show(TRUE); // SetTopWindow(frame); frame->OnInit(); */ ToolEdit *dlg = new ToolEdit; dlg->Create(NULL, -1, _T("Erstellen/Edit Window"),wxDefaultPosition, wxSize(200,200),wxDEFAULT_FRAME_STYLE); dlg->OnInit(); if(dlg->ShowModal() == 1) { Werkzeug toolneu = dlg->getTool(); m_werkzeugList.push_back(toolneu); UpdateList(); } } void MainWindow::OnEdit(wxCommandEvent& event) { if (m_selection == -1){ wxMessageDialog* msg = new wxMessageDialog(this,_T("Bitte Werkzeug ausw�hlen!"),_T("Kein Werkzeug Ausgew�hlt!"),wxOK|wxICON_ERROR|wxSTAY_ON_TOP); msg->ShowModal(); return; } Werkzeug sel = m_werkzeugList[m_selection]; ToolEdit *dlg = new ToolEdit; dlg->Create(NULL, -1, _T("Erstellen/Edit Window"),wxDefaultPosition, wxSize(200,200),wxDEFAULT_FRAME_STYLE); dlg->OnInit(); dlg->setTool(sel); if(dlg->ShowModal() == 1) { Werkzeug toolneu = dlg->getTool(); m_werkzeugList[m_selection] = toolneu; UpdateList(); } } void MainWindow::OnOK(wxCommandEvent& event) { if (m_selection == -1){ wxMessageDialog* msg = new wxMessageDialog(this,_T("Bitte Werkzeug ausw�hlen oder erstellen!"),_T("Kein Werkzeug Ausgew�hlt!"),wxOK|wxICON_ERROR|wxSTAY_ON_TOP); msg->ShowModal(); return; } wxString filename = m_txtFilename->GetLineText(0); if(filename.Length()<1) { wxMessageDialog* msg = new wxMessageDialog(this,_T("Bitte Auftragsnummer angeben (max. 8 stellig)!"),_T("Keine Auftragsnummer!"),wxOK|wxICON_ERROR|wxSTAY_ON_TOP); msg->ShowModal(); return; } if(m_exportDFT->IsChecked()) { char buff[1028]; sprintf(buff,"C:\\export\\%s.dft",filename.c_str()); wxString laenge = m_txtlaenge->GetLineText(0); wxString laeschnitt = m_txtlaeschnitt->GetLineText(0); wxString breite = m_txtbreite->GetLineText(0); wxString brschnitt = m_txtbrschnitt->GetLineText(0); wxString roben = m_txtoben->GetLineText(0); wxString runten = m_txtunten->GetLineText(0); wxString rlinks = m_txtlinks->GetLineText(0); wxString rrechts = m_txtrechts->GetLineText(0); float flaenge = atof(laenge.c_str()); float flaeschnitt = atof(laeschnitt.c_str()); float fbreite = atof(breite.c_str()); float fbrschnitt = atof(brschnitt.c_str()); float froben = atof(roben.c_str()); float frunten = atof(runten.c_str()); float frlinks = atof(rlinks.c_str()); float frrechts = atof(rrechts.c_str()); Werkzeug sel = m_werkzeugList[m_selection]; dftExport exp; exp.exportDFT((char*)buff,flaenge,flaeschnitt,fbreite,fbrschnitt,sel.anzahl,sel.abstandx,froben,frrechts,frunten,frlinks); } if(m_exportPGM->IsChecked()) { char buff[1028]; char buff1[1028]; sprintf(buff,"C:\\export\\%s.dft",filename.c_str()); sprintf(buff1,"C:\\export\\%s.tmp",filename.c_str()); wxString laenge = m_txtlaenge->GetLineText(0); wxString laeschnitt = m_txtlaeschnitt->GetLineText(0); wxString breite = m_txtbreite->GetLineText(0); wxString brschnitt = m_txtbrschnitt->GetLineText(0); wxString roben = m_txtoben->GetLineText(0); wxString runten = m_txtunten->GetLineText(0); wxString rlinks = m_txtlinks->GetLineText(0); wxString rrechts = m_txtrechts->GetLineText(0); float flaenge = atof(laenge.c_str()); float flaeschnitt = atof(laeschnitt.c_str()); float fbreite = atof(breite.c_str()); float fbrschnitt = atof(brschnitt.c_str()); float froben = atof(roben.c_str()); float frunten = atof(runten.c_str()); float frlinks = atof(rlinks.c_str()); float frrechts = atof(rrechts.c_str()); Werkzeug sel = m_werkzeugList[m_selection]; dftExport exp; exp.exportDFT((char*)buff,flaenge,flaeschnitt,fbreite,fbrschnitt,sel.anzahl,sel.abstandx,froben,frrechts,frunten,frlinks); tmpExport exp2; exp2.exportTMP((char*)buff1,sel.nummer); // sprintf(buff,"C:\\Programme\\cnckad\\Post_151.exe C:\\export\\%s.dft 0",filename.c_str()); // m_Console.Execute(buff); } /* char buff2[1028]; char buff3[1028]; sprintf(buff2,"C:\\export\\%s.dxf",filename.c_str()); sprintf(buff3,"C:\\export\\%s.mpr",filename.c_str()); wxString laenge = m_txtlaenge->GetLineText(0); wxString laeschnitt = m_txtlaeschnitt->GetLineText(0); wxString breite = m_txtbreite->GetLineText(0); wxString brschnitt = m_txtbrschnitt->GetLineText(0); wxString roben = m_txtoben->GetLineText(0); wxString runten = m_txtunten->GetLineText(0); wxString rlinks = m_txtlinks->GetLineText(0); wxString rrechts = m_txtrechts->GetLineText(0); float flaenge = atof(laenge.c_str()); float flaeschnitt = atof(laeschnitt.c_str()); float fbreite = atof(breite.c_str()); float fbrschnitt = atof(brschnitt.c_str()); float froben = atof(roben.c_str()); float frunten = atof(runten.c_str()); float frlinks = atof(rlinks.c_str()); float frrechts = atof(rrechts.c_str()); Werkzeug sel = m_werkzeugList[m_selection]; */ // mprExport exp4; // exp4.exportMPR((char*)buff3,flaenge,flaeschnitt,fbreite,fbrschnitt,sel.anzahl,sel.abstandx,froben,frrechts,frunten,frlinks); /* sprintf(buff,"C:\\Programme\\cnckad\\Post_151.exe C:\\export\\%s.dft 0",filename.c_str()); m_Console.Execute(buff); */ } void MainWindow::OnSelectItem(wxListEvent &event){ m_selection = event.GetIndex(); } char* MainWindow::TrimZero(char* str) { char* sbuf = "0."; for(int i = strlen(str)-1; i>0; i--) // durchlaufe String von hinten nach vorne { if(str[i] == sbuf[0]) // Fals Zeichen 0 str[i] = 0; // Setze Ende des Strigns auf dieses Zeichen else if(str[i] == sbuf[1]) // Fals Zeichen . { str[i] = 0; // Setze Ende des Strigns auf dieses Zeichen return str; // gebe bereinigten String zurck } else // Bei jedem anderen Zeichen return str; // gib bereinigten String zurck } return str; } void MainWindow::OnClose(wxCloseEvent& event) { Saveini(); exit(0); } void MainWindow::OnCancel(wxCommandEvent& event) { Saveini(); exit(0); } void MainWindow::Resize(wxSizeEvent &event) { }