831 self.RestoreLastOrganization() |
831 self.RestoreLastOrganization() |
832 self.Starting = False |
832 self.Starting = False |
833 self.RefreshEditor() |
833 self.RefreshEditor() |
834 event.Skip() |
834 event.Skip() |
835 |
835 |
|
836 def GetProjectConfiguration(self): |
|
837 if self.Config.HasEntry("projects"): |
|
838 projects = cPickle.loads(str(self.Config.Read("projects"))) |
|
839 else: |
|
840 projects = {} |
|
841 |
|
842 return projects.setdefault(os.path.realpath(self.Controler.GetFilePath()), {}) |
|
843 |
|
844 def SavePageState(self, page): |
|
845 state = page.GetState() |
|
846 if state is not None: |
|
847 if self.Config.HasEntry("projects"): |
|
848 projects = cPickle.loads(str(self.Config.Read("projects"))) |
|
849 else: |
|
850 projects = {} |
|
851 |
|
852 project_infos = projects.setdefault(os.path.realpath(self.Controler.GetFilePath()), {}) |
|
853 editors_state = project_infos.setdefault("editors_state", {}) |
|
854 |
|
855 if page.IsDebugging(): |
|
856 editors_state[page.GetInstancePath()] = state |
|
857 else: |
|
858 editors_state[page.GetTagName()] = state |
|
859 |
|
860 self.Config.Write("projects", cPickle.dumps(projects)) |
|
861 self.Config.Flush() |
|
862 |
836 def GetTabInfos(self, tab): |
863 def GetTabInfos(self, tab): |
837 if isinstance(tab, EditorPanel): |
864 if isinstance(tab, EditorPanel): |
838 if tab.IsDebugging(): |
865 if tab.IsDebugging(): |
839 return ("debug", tab.GetInstancePath()) |
866 return ("debug", tab.GetInstancePath()) |
840 else: |
867 else: |
842 else: |
869 else: |
843 for page_name, (page_ref, page_title) in self.MainTabs.iteritems(): |
870 for page_name, (page_ref, page_title) in self.MainTabs.iteritems(): |
844 if page_ref == tab: |
871 if page_ref == tab: |
845 return ("main", page_name) |
872 return ("main", page_name) |
846 return None |
873 return None |
847 |
874 |
848 def SaveTabOrganization(self, notebook): |
875 def SaveTabOrganization(self, notebook): |
849 tabs = [] |
876 tabs = [] |
850 for child in notebook.GetChildren(): |
877 for child in notebook.GetChildren(): |
851 if isinstance(child, wx.aui.AuiTabCtrl): |
878 if isinstance(child, wx.aui.AuiTabCtrl): |
852 pos = child.GetPosition() |
879 pos = child.GetPosition() |
972 |
999 |
973 self.Config.Write("perspective", self.AUIManager.SavePerspective()) |
1000 self.Config.Write("perspective", self.AUIManager.SavePerspective()) |
974 |
1001 |
975 self.SaveProjectOrganization() |
1002 self.SaveProjectOrganization() |
976 |
1003 |
|
1004 for i in xrange(self.TabsOpened.GetPageCount()): |
|
1005 self.SavePageState(self.TabsOpened.GetPage(i)) |
|
1006 |
977 self.Config.Flush() |
1007 self.Config.Flush() |
978 |
1008 |
979 def SaveProjectOrganization(self): |
1009 def SaveProjectOrganization(self): |
980 if USE_AUI and self.Controler is not None: |
1010 if USE_AUI and self.Controler is not None: |
981 tabs = [] |
1011 tabs = [] |
983 if self.Config.HasEntry("projects"): |
1013 if self.Config.HasEntry("projects"): |
984 projects = cPickle.loads(str(self.Config.Read("projects"))) |
1014 projects = cPickle.loads(str(self.Config.Read("projects"))) |
985 else: |
1015 else: |
986 projects = {} |
1016 projects = {} |
987 |
1017 |
988 project_infos = { |
1018 project_infos = projects.setdefault(os.path.realpath(self.Controler.GetFilePath()), {}) |
989 "tabs": self.SaveTabOrganization(self.TabsOpened) |
1019 project_infos["tabs"] = self.SaveTabOrganization(self.TabsOpened) |
990 } |
|
991 if self.EnableDebug: |
1020 if self.EnableDebug: |
992 project_infos["debug_vars"] = self.DebugVariablePanel.GetDebugVariables() |
1021 project_infos["debug_vars"] = self.DebugVariablePanel.GetDebugVariables() |
993 |
1022 |
994 projects[os.path.realpath(self.Controler.GetFilePath())] = project_infos |
|
995 |
|
996 self.Config.Write("projects", cPickle.dumps(projects)) |
1023 self.Config.Write("projects", cPickle.dumps(projects)) |
997 self.Config.Flush() |
1024 self.Config.Flush() |
998 |
1025 |
999 def LoadProjectOrganization(self): |
1026 def LoadProjectOrganization(self): |
1000 if USE_AUI and self.Controler is not None and self.Config.HasEntry("projects"): |
1027 if USE_AUI and self.Controler is not None and self.Config.HasEntry("projects"): |
1032 self.RefreshFunctions[element]() |
1059 self.RefreshFunctions[element]() |
1033 |
1060 |
1034 ## Callback function when AUINotebook Page closed with CloseButton |
1061 ## Callback function when AUINotebook Page closed with CloseButton |
1035 # @param event AUINotebook Event. |
1062 # @param event AUINotebook Event. |
1036 def OnPageClose(self, event): |
1063 def OnPageClose(self, event): |
|
1064 selected = self.TabsOpened.GetSelection() |
|
1065 if selected > -1: |
|
1066 self.SavePageState(self.TabsOpened.GetPage(selected)) |
|
1067 |
1037 # Refresh all window elements that have changed |
1068 # Refresh all window elements that have changed |
1038 wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU) |
1069 wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU) |
1039 wx.CallAfter(self.RefreshTabCtrlEvent) |
1070 wx.CallAfter(self.RefreshTabCtrlEvent) |
1040 event.Skip() |
1071 event.Skip() |
1041 |
1072 |
1907 self.AddPage(new_window, "") |
1938 self.AddPage(new_window, "") |
1908 elif isinstance(element, EditorPanel): |
1939 elif isinstance(element, EditorPanel): |
1909 new_window = element |
1940 new_window = element |
1910 self.AddPage(element, "") |
1941 self.AddPage(element, "") |
1911 if new_window is not None: |
1942 if new_window is not None: |
|
1943 project_infos = self.GetProjectConfiguration() |
|
1944 if project_infos.has_key("editors_state"): |
|
1945 state = project_infos["editors_state"].get(tagname) |
|
1946 if state is not None: |
|
1947 wx.CallAfter(new_window.SetState, state) |
|
1948 |
1912 openedidx = self.IsOpened(tagname) |
1949 openedidx = self.IsOpened(tagname) |
1913 old_selected = self.TabsOpened.GetSelection() |
1950 old_selected = self.TabsOpened.GetSelection() |
1914 if old_selected != openedidx: |
1951 if old_selected != openedidx: |
1915 if old_selected >= 0: |
1952 if old_selected >= 0: |
1916 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
1953 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
2161 if bodytype == "IL": |
2198 if bodytype == "IL": |
2162 new_window.SetKeywords(IL_KEYWORDS) |
2199 new_window.SetKeywords(IL_KEYWORDS) |
2163 else: |
2200 else: |
2164 new_window.SetKeywords(ST_KEYWORDS) |
2201 new_window.SetKeywords(ST_KEYWORDS) |
2165 if new_window is not None: |
2202 if new_window is not None: |
|
2203 project_infos = self.GetProjectConfiguration() |
|
2204 if project_infos.has_key("editors_state"): |
|
2205 state = project_infos["editors_state"].get(instance_path) |
|
2206 if state is not None: |
|
2207 wx.CallAfter(new_window.SetState, state) |
|
2208 |
2166 if instance_category in [ITEM_FUNCTIONBLOCK, ITEM_PROGRAM]: |
2209 if instance_category in [ITEM_FUNCTIONBLOCK, ITEM_PROGRAM]: |
2167 pou_type = self.Controler.GetEditedElementType(instance_type, True)[1].upper() |
2210 pou_type = self.Controler.GetEditedElementType(instance_type, True)[1].upper() |
2168 icon = self.GenerateBitmap(pou_type, bodytype) |
2211 icon = self.GenerateBitmap(pou_type, bodytype) |
2169 elif instance_category == ITEM_TRANSITION: |
2212 elif instance_category == ITEM_TRANSITION: |
2170 icon = self.GenerateBitmap("TRANSITION", bodytype) |
2213 icon = self.GenerateBitmap("TRANSITION", bodytype) |