--- a/plugger.py Mon Sep 17 07:33:40 2007 +0200
+++ b/plugger.py Mon Sep 17 10:12:35 2007 +0200
@@ -444,10 +444,10 @@
from PLCControler import PLCControler
from PLCOpenEditor import PLCOpenEditor, ProjectDialog
from TextViewer import TextViewer
-from plcopen.structures import IEC_KEYWORDS
+from plcopen.structures import IEC_KEYWORDS, AddPluginBlockList, ClearPluginTypes, PluginTypes -class PluginsRoot(PlugTemplate):
+class PluginsRoot(PlugTemplate, PLCControler): This class define Root object of the plugin tree.
@@ -517,7 +517,8 @@
def __init__(self, frame):
+ PLCControler.__init__(self) self.MandatoryParams = None
@@ -534,7 +535,6 @@
# After __init__ root plugin is not valid
def HasProjectOpened(self):
@@ -577,15 +577,15 @@
return "Project not created"
- # Create Controler for PLCOpen program
- self.PLCManager = PLCControler()
- self.PLCManager.CreateNewProject(values.pop("projectName"))
- self.PLCManager.SetProjectProperties(properties = values)
+ # Create PLCOpen program + self.CreateNewProject(values.pop("projectName")) + self.SetProjectProperties(properties = values) # Change XSD into class members
# Keep track of the root plugin (i.e. project path)
self.ProjectPath = ProjectPath
+ self.RefreshPluginsBlockLists() def LoadProject(self, ProjectPath, logger):
@@ -597,10 +597,8 @@
plc_file = os.path.join(ProjectPath, "plc.xml")
if not os.path.isfile(plc_file):
return "Folder choosen doesn't contain a program. It's not a valid project!"
- # Create Controler for PLCOpen program
- self.PLCManager = PLCControler()
- result = self.PLCManager.OpenXMLFile(plc_file)
+ result = self.OpenXMLFile(plc_file) # Change XSD into class members
@@ -616,15 +614,23 @@
#Load and init all the childs
+ self.RefreshPluginsBlockLists() - if not self.PLCManager.SaveXMLFile():
- self.PLCManager.SaveXMLFile(os.path.join(self.ProjectPath, 'plc.xml'))
+ if not self.SaveXMLFile(): + self.SaveXMLFile(os.path.join(self.ProjectPath, 'plc.xml')) self.PLCEditor.RefreshTitle()
+ # Update PLCOpenEditor Plugin Block types from loaded plugins + def RefreshPluginsBlockLists(self): + AddPluginBlockList(self.BlockTypesFactory()) + for child in self.IterChilds(): + AddPluginBlockList(child.BlockTypesFactory()) def PlugPath(self, PlugName=None):
@@ -655,12 +661,15 @@
@param logger: the log pseudo file
+ # Update PLCOpenEditor Plugin Block types before generate ST code + self.RefreshPluginsBlockLists() 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.PLCManager.GenerateProgram(plc_file)
+ result = self.GenerateProgram(plc_file) logger.write_error("Error : ST/IL/SFC code generator returned %d\n"%result)
@@ -763,11 +772,12 @@
def _EditPLC(self, logger):
+ self.RefreshPluginsBlockLists() - self.PLCEditor = PLCOpenEditor(self.AppFrame, self.PLCManager)
+ self.PLCEditor = PLCOpenEditor(self.AppFrame, self) self.PLCEditor.RefreshProjectTree()
self.PLCEditor.RefreshFileMenu()
self.PLCEditor.RefreshEditMenu()