plugins/canfestival/canfestival.py
changeset 13 f1f0edbeb313
parent 12 a1f9e514f708
child 15 7a473efc4530
--- a/plugins/canfestival/canfestival.py	Tue Aug 21 17:21:26 2007 +0200
+++ b/plugins/canfestival/canfestival.py	Mon Aug 27 17:54:55 2007 +0200
@@ -4,12 +4,14 @@
 import config_utils, gen_cfile
 from networkedit import networkedit
 
-class _NetworkEditPlugg(networkedit):
+class _NetworkEdit(networkedit):
+    " Overload some of CanFestival Network Editor methods "
     def OnCloseFrame(self, event):
-        self.OnPluggClose()
+        " Do reset _NodeListPlug.View when closed"
+        self._onclose()
         event.Skip()
 
-class BusController(NodeList):
+class _NodeListPlug(NodeList):
     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="CanFestivalNode">
@@ -20,17 +22,29 @@
     </xsd:schema>
     """
 
-    ViewClass = _NetworkEditPlugg
-    
     def __init__(self, buspath):
         manager = NodeManager()
         NodeList.__init__(self, manager)
         self.LoadProject(buspath)
 
-    def TestModified(self):
+    _View = None
+    def _OpenView(self):
+        if not self._View:
+            def _onclose():
+                self.View = None
+            self._View = _NetworkEdit()
+            self._View._onclose = _onclose
+        return self.View
+    PluginMethods = [("NetworkEdit",_OpenView)]
+
+    def OnPlugClose(self):
+        if self._View:
+            self._View.Close()
+
+    def PlugTestModified(self):
         return self.HasChanged()
         
-    def ReqSave(self):
+    def PlugRequestSave(self):
         self.SaveProject()
         return True
 
@@ -43,14 +57,14 @@
         res = gen_cfile.GenerateFile(filepath, master)
         if not res:
              s = str(self.BaseParams.BusId)+"_IN(){}\n"
-             s += "CanOpen(str(\""+self.CanFestivalNode.CAN_Device)+"\")"
+             s += "CanOpen(\""+self.CanFestivalNode.CAN_Device+"\")"
              f = file(filepath, 'a')
              f.write(s)
         else:
              pass # error
         return {"headers":["master.h"],"sources":["master.c"]}
     
-class PluginController:
+class RootClass:
     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="CanFestivalInstance">
@@ -61,6 +75,8 @@
     </xsd:schema>
     """
 
+    PlugChildsTypes = [("CanOpenNode",_NodeListPlug)]
+
     def Generate_C(self, filepath, locations):
         """
         return C code for network dictionnary
@@ -69,7 +85,7 @@
         res = gen_cfile.GenerateFile(filepath, master)
         if not res:
              s = str(self.BaseParams.BusId)+"_IN(){}\n"
-             s += "CanOpen(str(\""+self.CanFestivalNode.CAN_Device)+"\")"
+             s += "CanOpen(str(\""+self.CanFestivalNode.CAN_Device+"\")"
              f = file(filepath, 'a')
              f.write(s)
         else: