PLCOpenEditor.py
changeset 647 2d53c653d8d2
parent 638 2b9ed21d965c
child 648 95d165193770
equal deleted inserted replaced
646:97bed1acd860 647:2d53c653d8d2
  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)