rendered paste body#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<wxEraseEvent &>(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<Werkzeug>::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)
{
}