# HG changeset patch # User lbessard # Date 1174489928 -3600 # Node ID 2de7fd952fdd645dc40dc19726248e23d9ad0406 # Parent 86ccc89d7b0ba3e992eab88bc3f437a3475d71fb Adding File Dialog for choosing path to generated program diff -r 86ccc89d7b0b -r 2de7fd952fdd GenerateProgram.py --- a/GenerateProgram.py Thu Feb 08 17:41:41 2007 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor -#based on the plcopen standard. -# -#Copyright (C): Edouard TISSERANT and Laurent BESSARD -# -#See COPYING file for copyrights details. -# -#This library is free software; you can redistribute it and/or -#modify it under the terms of the GNU Lesser General Public -#License as published by the Free Software Foundation; either -#version 2.1 of the License, or (at your option) any later version. -# -#This library is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -#Lesser General Public License for more details. -# -#You should have received a copy of the GNU Lesser General Public -#License along with this library; if not, write to the Free Software -#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -""" -Class implementing a generator for PLC program code -""" - -class PLCGenerator: - - # Create a rubberband by indicated on which window it must be drawn - def __init__(self, controler): - self.drawingSurface = drawingSurface - self.Reset() diff -r 86ccc89d7b0b -r 2de7fd952fdd PLCControler.py --- a/PLCControler.py Thu Feb 08 17:41:41 2007 +0100 +++ b/PLCControler.py Wed Mar 21 16:12:08 2007 +0100 @@ -350,12 +350,17 @@ return used return False - def GenerateProgram(self): + def GenerateProgram(self, filepath): if self.Project: - program = GenerateCurrentProgram(self.Project) - programfile = open("test.st", "w") - programfile.write(program) - programfile.close() + try: + program = GenerateCurrentProgram(self.Project) + programfile = open(filepath, "w") + programfile.write(program) + programfile.close() + return True + except: + pass + return False #------------------------------------------------------------------------------- # Project Pous management functions diff -r 86ccc89d7b0b -r 2de7fd952fdd PLCGenerator.py --- a/PLCGenerator.py Thu Feb 08 17:41:41 2007 +0100 +++ b/PLCGenerator.py Wed Mar 21 16:12:08 2007 +0100 @@ -445,7 +445,7 @@ program += "\n" for var_type, var_name in variables: program += " %s : %s;\n"%(var_name, var_type) - program += " END_%s\n"%list_type + program += " END_VAR\n" program += "\n" program += self.Program program += "END_%s\n\n"%self.Type diff -r 86ccc89d7b0b -r 2de7fd952fdd PLCOpenEditor.py --- a/PLCOpenEditor.py Thu Feb 08 17:41:41 2007 +0100 +++ b/PLCOpenEditor.py Wed Mar 21 16:12:08 2007 +0100 @@ -582,7 +582,20 @@ event.Skip() def OnGenerateProgramMenu(self, event): - self.Controler.GenerateProgram() + dialog = wxFileDialog(self, "Choose a file", os.getcwd(), "", "ST files (*.st)|*.st|All files|*.*", wxSAVE|wxCHANGE_DIR) + if dialog.ShowModal() == wxID_OK: + filepath = dialog.GetPath() + if os.path.isdir(os.path.dirname(filepath)): + result = self.Controler.GenerateProgram(filepath) + if not result: + message = wxMessageDialog(self, "Can't generate program to file %s!"%filepath, "Error", wxOK|wxICON_ERROR) + message.ShowModal() + message.Destroy() + else: + message = wxMessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR) + message.ShowModal() + message.Destroy() + dialog.Destroy() event.Skip() def SaveProject(self):