1219 selected = self.TabsOpened.GetSelection() |
1219 selected = self.TabsOpened.GetSelection() |
1220 if selected >= 0: |
1220 if selected >= 0: |
1221 window = self.TabsOpened.GetPage(selected) |
1221 window = self.TabsOpened.GetPage(selected) |
1222 if not window.IsDebugging(): |
1222 if not window.IsDebugging(): |
1223 wx.CallAfter(self.SelectTypesTreeItem, window.GetTagName()) |
1223 wx.CallAfter(self.SelectTypesTreeItem, window.GetTagName()) |
|
1224 window.RefreshView() |
1224 else: |
1225 else: |
1225 wx.CallAfter(self.SelectInstancesTreeItem, window.GetInstancePath()) |
1226 wx.CallAfter(self.SelectInstancesTreeItem, window.GetInstancePath()) |
1226 window.RefreshView() |
|
1227 wx.CallAfter(self._Refresh, FILEMENU, EDITMENU, DISPLAYMENU, TOOLBAR) |
1227 wx.CallAfter(self._Refresh, FILEMENU, EDITMENU, DISPLAYMENU, TOOLBAR) |
1228 event.Skip() |
1228 event.Skip() |
1229 |
1229 |
1230 def RefreshEditor(self): |
1230 def RefreshEditor(self): |
1231 selected = self.TabsOpened.GetSelection() |
1231 selected = self.TabsOpened.GetSelection() |
1843 icon = self.GenerateBitmap("TRANSITION", bodytype) |
1843 icon = self.GenerateBitmap("TRANSITION", bodytype) |
1844 elif selected_infos[0] == ITEM_ACTION: |
1844 elif selected_infos[0] == ITEM_ACTION: |
1845 icon = self.GenerateBitmap("ACTION", bodytype) |
1845 icon = self.GenerateBitmap("ACTION", bodytype) |
1846 new_window.SetIcon(icon) |
1846 new_window.SetIcon(icon) |
1847 self.AddPage(new_window, "") |
1847 self.AddPage(new_window, "") |
|
1848 new_window.RefreshView() |
1848 new_window.SetFocus() |
1849 new_window.SetFocus() |
1849 self.RefreshPageTitles() |
1850 self.RefreshPageTitles() |
1850 if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE: |
1851 if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE: |
1851 var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (") |
1852 var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (") |
1852 var_type = var_type.split(")")[0] |
1853 var_type = var_type.split(")")[0] |
1900 def AddVariableGraphic(event): |
1901 def AddVariableGraphic(event): |
1901 self.OpenGraphicViewer(iec_path) |
1902 self.OpenGraphicViewer(iec_path) |
1902 event.Skip() |
1903 event.Skip() |
1903 return AddVariableGraphic |
1904 return AddVariableGraphic |
1904 |
1905 |
1905 def RecursiveInstancesTreeItemSelection(self, root, instancepath): |
1906 def GetInstancesTreeItem(self, root, instancepath): |
1906 found = False |
|
1907 paths = instancepath.split(".", 1) |
1907 paths = instancepath.split(".", 1) |
1908 if wx.VERSION >= (2, 6, 0): |
1908 if wx.VERSION >= (2, 6, 0): |
1909 item, root_cookie = self.InstancesTree.GetFirstChild(root) |
1909 item, root_cookie = self.InstancesTree.GetFirstChild(root) |
1910 else: |
1910 else: |
1911 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0) |
1911 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0) |
1912 while item.IsOk() and not found: |
1912 while item.IsOk(): |
1913 name = self.InstancesTree.GetItemText(item).split(" (")[0] |
1913 name = self.InstancesTree.GetItemText(item).split(" (")[0] |
1914 if name == paths[0]: |
1914 if name == paths[0]: |
1915 if len(paths) == 1: |
1915 if len(paths) == 1: |
1916 self.InstancesTree.SelectItem(item) |
1916 return item |
1917 return True |
|
1918 else: |
1917 else: |
1919 found = self.RecursiveInstancesTreeItemSelection(item, paths[1]) |
1918 return self.GetInstancesTreeItem(item, paths[1]) |
1920 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
1919 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
1921 return found |
1920 return None |
1922 |
1921 |
1923 def SelectInstancesTreeItem(self, instancepath): |
1922 def SelectInstancesTreeItem(self, instancepath): |
1924 if self.InstancesTree is not None: |
1923 if self.InstancesTree is not None: |
1925 root = self.InstancesTree.GetRootItem() |
1924 root = self.InstancesTree.GetRootItem() |
1926 if root.IsOk(): |
1925 if root.IsOk(): |
1927 return self.RecursiveInstancesTreeItemSelection(root, instancepath) |
1926 item = self.GetInstancesTreeItem(root, instancepath) |
|
1927 if item is not None: |
|
1928 self.InstancesTree.SelectItem(item) |
|
1929 return True |
1928 return False |
1930 return False |
1929 |
1931 |
1930 def ResetGraphicViewers(self): |
1932 def ResetGraphicViewers(self): |
1931 for i in xrange(self.TabsOpened.GetPageCount()): |
1933 for i in xrange(self.TabsOpened.GetPageCount()): |
1932 editor = self.TabsOpened.GetPage(i) |
1934 editor = self.TabsOpened.GetPage(i) |
1933 if isinstance(editor, GraphicViewer): |
1935 if isinstance(editor, GraphicViewer): |
1934 editor.ResetView() |
1936 editor.ResetView() |
1935 |
1937 |
1936 def CloseDebugTabs(self): |
1938 def CloseObsoleteDebugTabs(self): |
1937 if self.EnableDebug: |
1939 if self.EnableDebug: |
1938 idxs = range(self.TabsOpened.GetPageCount()) |
1940 idxs = range(self.TabsOpened.GetPageCount()) |
1939 idxs.reverse() |
1941 idxs.reverse() |
|
1942 root = None |
|
1943 if self.InstancesTree is not None: |
|
1944 root = self.InstancesTree.GetRootItem() |
|
1945 if not root.IsOk(): |
|
1946 root = None |
1940 for idx in idxs: |
1947 for idx in idxs: |
1941 window = self.TabsOpened.GetPage(idx) |
1948 editor = self.TabsOpened.GetPage(idx) |
1942 if window.IsDebugging(): |
1949 item = None |
1943 self.TabsOpened.DeletePage(idx) |
1950 if root is not None: |
1944 self.DebugVariablePanel.ResetGrid() |
1951 item = self.GetInstancesTreeItem(root, editor.GetInstancePath()) |
|
1952 if editor.IsDebugging(): |
|
1953 if item is None: |
|
1954 self.TabsOpened.DeletePage(idx) |
|
1955 elif isinstance(editor, GraphicViewer): |
|
1956 editor.ResetView() |
|
1957 else: |
|
1958 editor.RefreshView() |
|
1959 self.DebugVariablePanel.UnregisterObsoleteData() |
1945 |
1960 |
1946 def AddDebugVariable(self, iec_path): |
1961 def AddDebugVariable(self, iec_path): |
1947 if self.EnableDebug: |
1962 if self.EnableDebug: |
1948 self.DebugVariablePanel.InsertValue(iec_path) |
1963 self.DebugVariablePanel.InsertValue(iec_path) |
1949 |
1964 |
4107 self.Freeze() |
4122 self.Freeze() |
4108 self.Table.ResetView(self.VariablesGrid) |
4123 self.Table.ResetView(self.VariablesGrid) |
4109 self.VariablesGrid.RefreshButtons() |
4124 self.VariablesGrid.RefreshButtons() |
4110 self.Thaw() |
4125 self.Thaw() |
4111 |
4126 |
|
4127 def UnregisterObsoleteData(self): |
|
4128 for idx, item in enumerate(self.Table.GetData()): |
|
4129 if self.GetDataType(item.GetVariable()) is None: |
|
4130 self.RemoveDataConsumer(item) |
|
4131 self.Table.RemoveItem(idx) |
|
4132 self.Freeze() |
|
4133 self.Table.ResetView(self.VariablesGrid) |
|
4134 self.VariablesGrid.RefreshButtons() |
|
4135 self.Thaw() |
|
4136 |
4112 def ResetGrid(self): |
4137 def ResetGrid(self): |
4113 self.DeleteDataConsumers() |
4138 self.DeleteDataConsumers() |
4114 self.Table.Empty() |
4139 self.Table.Empty() |
4115 self.Freeze() |
4140 self.Freeze() |
4116 self.Table.ResetView(self.VariablesGrid) |
4141 self.Table.ResetView(self.VariablesGrid) |