--- a/plugger.py Wed Oct 24 17:40:12 2007 +0200
+++ b/plugger.py Thu Oct 25 16:46:56 2007 +0200
@@ -28,6 +28,33 @@
NameTypeSeparator = '@'
+class MiniTextControler:
+
+ def __init__(self, filepath):
+ self.FilePath = filepath
+
+ def SetCurrentElementEditingText(self, text):
+ file = open(self.FilePath, "w")
+ file.write(text)
+ file.close()
+
+ def GetCurrentElementEditingText(self):
+ if os.path.isfile(self.FilePath):
+ file = open(self.FilePath, "r")
+ text = file.read()
+ file.close()
+ return text
+ return ""
+
+ def StartBuffering(self):
+ pass
+
+ def EndBuffering(self):
+ pass
+
+ def BufferProject(self):
+ pass
+
class PlugTemplate:
"""
This class is the one that define plugins.
@@ -696,6 +723,14 @@
# define name for IEC code file
return os.path.join(self._getBuildPath(), "plc.st")
+ def _getIECgeneratedcodepath(self):
+ # define name for IEC generated code file
+ return os.path.join(self._getBuildPath(), "generated_plc.st")
+
+ def _getIECrawcodepath(self):
+ # define name for IEC raw code file
+ return os.path.join(self._getBuildPath(), "raw_plc.st")
+
def _Generate_SoftPLC(self, logger):
"""
Generate SoftPLC ST/IL/SFC code out of PLCOpenEditor controller, and compile it with IEC2C
@@ -708,18 +743,22 @@
logger.write("Generating SoftPLC IEC-61131 ST/IL/SFC code...\n")
buildpath = self._getBuildPath()
- # define name for IEC code file
- plc_file = self._getIECcodepath()
# ask PLCOpenEditor controller to write ST/IL/SFC code file
- result = self.GenerateProgram(plc_file)
+ result = self.GenerateProgram(self._getIECgeneratedcodepath())
if not result:
# Failed !
logger.write_error("Error : ST/IL/SFC code generator returned %d\n"%result)
return False
+ plc_file = open(self._getIECcodepath(), "w")
+ if os.path.isfile(self._getIECrawcodepath()):
+ plc_file.write(open(self._getIECrawcodepath(), "r").read())
+ plc_file.write("\n")
+ plc_file.write(open(self._getIECgeneratedcodepath(), "r").read())
+ plc_file.close()
logger.write("Compiling IEC Program in to C code...\n")
# Now compile IEC code into many C files
# files are listed to stdout, and errors to stderr.
- status, result, err_result = logger.LogCommand("%s %s -I %s %s"%(iec2c_path, plc_file, ieclib_path, buildpath), no_stdout=True)
+ status, result, err_result = logger.LogCommand("%s %s -I %s %s"%(iec2c_path, self._getIECcodepath(), ieclib_path, buildpath), no_stdout=True)
if status:
# Failed !
logger.write_error("Error : IEC to C compiler returned %d\n"%status)
@@ -869,7 +908,17 @@
text = file(plc_file).read()
except:
text = '(* No IEC code have been generated at that time ! *)'
- ST_viewer.SetText(text)
+ ST_viewer.SetText(text = text)
+
+ new_dialog.Show()
+
+ def _editIECrawcode(self, logger):
+ new_dialog = wx.Frame(None)
+ controler = MiniTextControler(self._getIECrawcodepath())
+ ST_viewer = TextViewer(new_dialog, None, controler)
+ #ST_viewer.Enable(False)
+ ST_viewer.SetKeywords(IEC_KEYWORDS)
+ ST_viewer.RefreshView()
new_dialog.Show()
@@ -895,4 +944,29 @@
def _Run(self, logger):
logger.write_error("Not impl\n")
- PluginMethods = [("EditPLC",_EditPLC), ("Build",_build), ("Clean",_Clean), ("Run",_Run), ("Show IEC code",_showIECcode)]
+ PluginMethods = [
+ {"bitmap" : os.path.join("images", "editPLC.png"),
+ "name" : "Edit PLC",
+ "tooltip" : "Edit PLC program with PLCOpenEditor",
+ "method" : _EditPLC},
+ {"bitmap" : os.path.join("images", "Build.png"),
+ "name" : "Build",
+ "tooltip" : "Build project into build folder",
+ "method" : _build},
+ {"bitmap" : os.path.join("images", "Clean.png"),
+ "name" : "Clean",
+ "tooltip" : "Clean project build folder",
+ "method" : _Clean},
+ {"bitmap" : os.path.join("images", "Run.png"),
+ "name" : "Run",
+ "tooltip" : "Run PLC from build folder",
+ "method" : _Run},
+ {"bitmap" : os.path.join("images", "ShowIECcode.png"),
+ "name" : "Show IEC code",
+ "tooltip" : "Show IEC code generated by PLCGenerator",
+ "method" : _showIECcode},
+ {"name" : "Edit IEC raw code",
+ "tooltip" : "Show IEC code generated by PLCGenerator",
+ "method" : _editIECrawcode}
+ ]
+