--- a/ConfigTreeNode.py Thu Jun 14 18:50:28 2012 +0200
+++ b/ConfigTreeNode.py Fri Jun 15 18:08:26 2012 +0200
@@ -406,25 +406,30 @@
def _OpenView(self, name=None):
- if self.EditorType is not None and self._View is None:
- app_frame = self.GetCTRoot().AppFrame
- self._View = self.EditorType(app_frame.TabsOpened, self, app_frame)
- app_frame.EditProjectElement(self._View, self.CTNName())
+ if self.EditorType is not None: + app_frame = self.GetCTRoot().AppFrame + self._View = self.EditorType(app_frame.TabsOpened, self, app_frame) + app_frame.EditProjectElement(self._View, self.CTNName()) + def _CloseView(self, view): + app_frame = self.GetCTRoot().AppFrame + if app_frame is not None: + app_frame.DeletePage(view) def OnCloseEditor(self, view):
if self._View is not None:
- app_frame = self.GetCTRoot().AppFrame
- if app_frame is not None:
- app_frame.DeletePage(self._View)
+ self._CloseView(self.View) def _doRemoveChild(self, CTNInstance):
--- a/ProjectController.py Thu Jun 14 18:50:28 2012 +0200
+++ b/ProjectController.py Fri Jun 15 18:08:26 2012 +0200
@@ -805,6 +805,7 @@
if self.AppFrame is not None:
self.AppFrame.ClearErrors()
+ self._CloseView(self._IECCodeView) buildpath = self._getBuildPath()
@@ -924,49 +925,62 @@
#print from_location, to_location, start_row, start_col, start, end
if self.AppFrame is not None:
self.AppFrame.ShowError(infos, start, end)
self._OpenView("IEC code")
def _editIECrawcode(self):
self._OpenView("IEC raw code")
def _OpenView(self, name=None):
- plc_file = self._getIECcodepath()
- IEC_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, None, instancepath=name)
- #IEC_code_viewer.Enable(False)
- IEC_code_viewer.SetTextSyntax("ALL")
- IEC_code_viewer.SetKeywords(IEC_KEYWORDS)
- text = file(plc_file).read()
- text = '(* No IEC code have been generated at that time ! *)'
- IEC_code_viewer.SetText(text = text)
- IEC_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST"))
+ if self._IEC_code_viewer is None: + plc_file = self._getIECcodepath() + self._IECCodeView = TextViewer(self.AppFrame.TabsOpened, "", None, None, instancepath=name) + #self._IECCodeViewr.Enable(False) + self._IECCodeView.SetTextSyntax("ALL") + self._IECCodeView.SetKeywords(IEC_KEYWORDS) + text = file(plc_file).read() + text = '(* No IEC code have been generated at that time ! *)' + self._IECCodeView.SetText(text = text) + self._IECCodeView.SetIcon(self.AppFrame.GenerateBitmap("ST")) + self.AppFrame.EditProjectElement(self._IECCodeView, name) - self.AppFrame.EditProjectElement(IEC_code_viewer, name)
+ return self._IECCodeView elif name == "IEC raw code":
- controler = MiniTextControler(self._getIECrawcodepath())
- IEC_raw_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, controler, instancepath=name)
- #IEC_raw_code_viewer.Enable(False)
- IEC_raw_code_viewer.SetTextSyntax("ALL")
- IEC_raw_code_viewer.SetKeywords(IEC_KEYWORDS)
- IEC_raw_code_viewer.RefreshView()
- IEC_raw_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST"))
+ if self.IEC_raw_code_viewer is None: + controler = MiniTextControler(self._getIECrawcodepath()) - self.AppFrame.EditProjectElement(IEC_raw_code_viewer, name)
+ self.IEC_raw_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, controler, instancepath=name) + #self.IEC_raw_code_viewer.Enable(False) + self.IEC_raw_code_viewer.SetTextSyntax("ALL") + self.IEC_raw_code_viewer.SetKeywords(IEC_KEYWORDS) + self.IEC_raw_code_viewer.RefreshView() + self.IEC_raw_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST")) + self.AppFrame.EditProjectElement(self.IEC_raw_code_viewer, name) - return IEC_raw_code_viewer
+ return self.IEC_raw_code_viewer return ConfigTreeNode._OpenView(self, name)
+ def OnCloseEditor(self, view): + ConfigTreeNode.OnCloseEditor(self, view) + if self._IECCodeView == view: + self._IECCodeView = None + if self._IECRawCodeView == view: + self._IECRawCodeView = None + self._CloseView(self._IECCodeView) if os.path.isdir(os.path.join(self._getBuildPath())):
self.logger.write(_("Cleaning the build directory\n"))
shutil.rmtree(os.path.join(self._getBuildPath()))
--- 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())
{"bitmap" : "NetworkEdit",
@@ -120,10 +121,6 @@
def CTNTestModified(self):
return self.ChangesToSave or self.OneFileHasChanged()
@@ -201,6 +198,8 @@
def GetBufferState(self):
return self.GetCurrentBufferState()
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 @@
- ConfigTreeNode._OpenView(self)
- if self._View is not None:
- self._View.SetBusId(self.GetCurrentLocation())
- 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"))
+ _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")) + masterpath = os.path.join(buildpath, "MasterGenerated.od") + if not os.path.exists(masterpath): + self.GetCTRoot().logger.write_error(_("Error: No Master generated\n")) + 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"))
- 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 + ConfigTreeNode._OpenView(self) + if self._View is not None: + self._View.SetBusId(self.GetCurrentLocation()) {"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 ConfigTreeNode.OnCTNClose(self)
- self._CloseGenerateView()
+ self._CloseView(self._GeneratedMasterView) 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))