canfestival/canfestival.py
changeset 774 78b5fa92dd1c
parent 762 aaacc83aa86b
child 776 c81397b665b6
--- a/canfestival/canfestival.py	Thu Jun 14 18:50:28 2012 +0200
+++ b/canfestival/canfestival.py	Fri Jun 15 18:08:26 2012 +0200
@@ -112,6 +112,7 @@
         ConfigTreeNode._OpenView(self)
         if self._View is not None:
             self._View.SetBusId(self.GetCurrentLocation())
+        return self._View
 
     ConfNodeMethods = [
         {"bitmap" : "NetworkEdit",
@@ -120,10 +121,6 @@
          "method" : "_OpenView"},
     ]
 
-    def OnCTNClose(self):
-        if self._View:
-            self._View.Close()
-
     def CTNTestModified(self):
         return self.ChangesToSave or self.OneFileHasChanged()
         
@@ -201,6 +198,8 @@
     def GetBufferState(self):
         return self.GetCurrentBufferState()
 
+    ConfNodeMethods = []
+
 class _NodeListCTN(NodeList):
     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
@@ -238,37 +237,37 @@
         
         return result
     
-    def _OpenView(self):
-        ConfigTreeNode._OpenView(self)
-        if self._View is not None:
-            self._View.SetBusId(self.GetCurrentLocation())
-    
-    _GeneratedView = None
-    def _ShowMasterGenerated(self):
-        if self._GeneratedView is None:
-            buildpath = self._getBuildPath()
-            # Eventually create build dir
-            if not os.path.exists(buildpath):
-                self.GetCTRoot().logger.write_error(_("Error: No PLC built\n"))
-                return
+    _GeneratedMasterView = None
+    def _ShowGeneratedMaster(self):
+        self._OpenView("Generated master")
+        
+    def _OpenView(self, name=None):
+        if name == "Generated master":
+            if self._GeneratedMasterView is None:
+                buildpath = self._getBuildPath()
+                # Eventually create build dir
+                if not os.path.exists(buildpath):
+                    self.GetCTRoot().logger.write_error(_("Error: No PLC built\n"))
+                    return
+                
+                masterpath = os.path.join(buildpath, "MasterGenerated.od")
+                if not os.path.exists(masterpath):
+                    self.GetCTRoot().logger.write_error(_("Error: No Master generated\n"))
+                    return
+                
+                app_frame = self.GetCTRoot().AppFrame
+                
+                manager = MiniNodeManager(self, masterpath, self.CTNFullName() + ".generated_master")
+                self._GeneratedMasterView = SlaveEditor(app_frame.TabsOpened, manager, app_frame, False)
+                
+                app_frame.EditProjectElement(self._GeneratedMasterView, name)
             
-            masterpath = os.path.join(buildpath, "MasterGenerated.od")
-            if not os.path.exists(masterpath):
-                self.GetCTRoot().logger.write_error(_("Error: No Master generated\n"))
-                return
-            
-            app_frame = self.GetCTRoot().AppFrame
-            
-            manager = MiniNodeManager(self, masterpath, self.CTNFullName() + ".generated_master")
-            self._GeneratedView = SlaveEditor(app_frame.TabsOpened, manager, app_frame, False)
-            
-            app_frame.EditProjectElement(self._GeneratedView, "MasterGenerated")
-    
-    def _CloseGenerateView(self):
-        if self._GeneratedView is not None:
-            app_frame = self.GetCTRoot().AppFrame
-            if app_frame is not None:
-                app_frame.DeletePage(self._GeneratedView)
+            return self._GeneratedMasterView
+        else:
+            ConfigTreeNode._OpenView(self)
+            if self._View is not None:
+                self._View.SetBusId(self.GetCurrentLocation())
+            return self._View
     
     ConfNodeMethods = [
         {"bitmap" : "NetworkEdit",
@@ -278,17 +277,17 @@
         {"bitmap" : "ShowMaster",
          "name" : _("Show Master"), 
          "tooltip" : _("Show Master generated by config_utils"),
-         "method" : "_ShowMasterGenerated"}
+         "method" : "_ShowGeneratedMaster"}
     ]
     
     def OnCloseEditor(self, view):
         ConfigTreeNode.OnCloseEditor(self, view)
-        if self._GeneratedView == view:
-            self._GeneratedView = None
-
+        if self._GeneratedMasterView == view:
+            self._GeneratedMasterView = None
+    
     def OnCTNClose(self):
         ConfigTreeNode.OnCTNClose(self)
-        self._CloseGenerateView()
+        self._CloseView(self._GeneratedMasterView)
         return True
 
     def CTNTestModified(self):
@@ -311,7 +310,7 @@
             }, ...]
         @return: [(C_file_name, CFLAGS),...] , LDFLAGS_TO_APPEND
         """
-        self._CloseGenerateView()
+        self._CloseView(self._GeneratedMasterView)
         current_location = self.GetCurrentLocation()
         # define a unique name for the generated C file
         prefix = "_".join(map(str, current_location))