etisserant@13: import os etisserant@13: import plugins etisserant@13: from plugins import PlugTemplate etisserant@13: etisserant@13: etisserant@13: class PluginsRoot(PlugTemplate): etisserant@13: etisserant@13: # A special PlugChildsTypes etisserant@13: PlugChildsTypes = [(name,lambda : getattr(__import__("plugins." + name), name).RootClass) for name in plugins.__all__] etisserant@13: etisserant@13: XSD = """ etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: etisserant@13: """ etisserant@13: etisserant@13: def __init__(self, ProjectPath): etisserant@13: # self is the parent etisserant@13: self.PlugParent = None etisserant@13: # Keep track of the plugin type name etisserant@13: self.PlugType = "Beremiz" etisserant@13: # Keep track of the root plugin (i.e. project path) etisserant@13: self.ProjectPath = ProjectPath etisserant@13: # Change XSD into class members etisserant@13: self._AddParamsMembers() etisserant@13: self.PluggedChilds = {} etisserant@13: # No IEC channel, name, etc... etisserant@13: self.MandatoryParams = [] etisserant@13: # If dir have already be made, and file exist etisserant@13: if os.path.isdir(_self.PlugPath(PlugName)) and os.path.isfile(_self.PluginXmlFilePath(PlugName)): etisserant@13: #Load the plugin.xml file into parameters members etisserant@13: _self.LoadXMLParams() etisserant@13: #Load and init all the childs etisserant@13: _self.LoadChilds() etisserant@13: etisserant@13: def PlugPath(self,PlugName=None): etisserant@13: return self.ProjectPath etisserant@13: etisserant@13: def PluginXmlFilePath(self, PlugName=None): etisserant@13: return os.path.join(self.PlugPath(PlugName), "beremiz.xml") etisserant@13: etisserant@13: