All pastes #445506 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-17 22:18 UTC
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)
{


}