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 else: |
1224 else: |
1225 wx.CallAfter(self.SelectInstancesTreeItem, self.InstancesTree.GetRootItem(), window.GetInstancePath()) |
1225 wx.CallAfter(self.SelectInstancesTreeItem, window.GetInstancePath()) |
1226 window.RefreshView() |
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): |
1321 self.TypesTree.Delete(item) |
1321 self.TypesTree.Delete(item) |
1322 |
1322 |
1323 def SelectTypesTreeItem(self, tagname): |
1323 def SelectTypesTreeItem(self, tagname): |
1324 if self.TypesTree is not None: |
1324 if self.TypesTree is not None: |
1325 root = self.TypesTree.GetRootItem() |
1325 root = self.TypesTree.GetRootItem() |
1326 words = tagname.split("::") |
1326 if root.IsOk(): |
1327 if words[0] == "D": |
1327 words = tagname.split("::") |
1328 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1328 if words[0] == "D": |
1329 elif words[0] == "P": |
1329 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1330 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1330 elif words[0] == "P": |
1331 elif words[0] == "T": |
1331 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1332 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1332 elif words[0] == "T": |
1333 elif words[0] == "A": |
1333 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1334 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1334 elif words[0] == "A": |
1335 elif words[0] == "C": |
1335 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1336 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1336 elif words[0] == "C": |
1337 elif words[0] == "R": |
1337 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1338 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1338 elif words[0] == "R": |
|
1339 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1339 return False |
1340 return False |
1340 |
1341 |
1341 def RecursiveTypesTreeItemSelection(self, root, items): |
1342 def RecursiveTypesTreeItemSelection(self, root, items): |
1342 found = False |
1343 found = False |
1343 if self.TypesTree is not None: |
1344 if wx.VERSION >= (2, 6, 0): |
1344 if wx.VERSION >= (2, 6, 0): |
1345 item, root_cookie = self.TypesTree.GetFirstChild(root) |
1345 item, root_cookie = self.TypesTree.GetFirstChild(root) |
1346 else: |
|
1347 item, root_cookie = self.TypesTree.GetFirstChild(root, 0) |
|
1348 while item.IsOk() and not found: |
|
1349 if (self.TypesTree.GetItemText(item), self.TypesTree.GetPyData(item)) == items[0]: |
|
1350 if len(items) == 1: |
|
1351 self.SelectedItem = item |
|
1352 self.TypesTree.SelectItem(item) |
|
1353 wx.CallAfter(self.ResetSelectedItem) |
|
1354 return True |
|
1355 else: |
|
1356 found = self.RecursiveTypesTreeItemSelection(item, items[1:]) |
1346 else: |
1357 else: |
1347 item, root_cookie = self.TypesTree.GetFirstChild(root, 0) |
1358 found = self.RecursiveTypesTreeItemSelection(item, items) |
1348 while item.IsOk() and not found: |
1359 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
1349 if (self.TypesTree.GetItemText(item), self.TypesTree.GetPyData(item)) == items[0]: |
|
1350 if len(items) == 1: |
|
1351 self.SelectedItem = item |
|
1352 self.TypesTree.SelectItem(item) |
|
1353 wx.CallAfter(self.ResetSelectedItem) |
|
1354 return True |
|
1355 else: |
|
1356 found = self.RecursiveTypesTreeItemSelection(item, items[1:]) |
|
1357 else: |
|
1358 found = self.RecursiveTypesTreeItemSelection(item, items) |
|
1359 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
|
1360 return found |
1360 return found |
1361 |
1361 |
1362 def OnTypesTreeBeginDrag(self, event): |
1362 def OnTypesTreeBeginDrag(self, event): |
1363 if wx.Platform == '__WXMSW__': |
1363 if wx.Platform == '__WXMSW__': |
1364 self.SelectedItem = event.GetItem() |
1364 self.SelectedItem = event.GetItem() |
1900 def AddVariableGraphic(event): |
1900 def AddVariableGraphic(event): |
1901 self.OpenGraphicViewer(iec_path) |
1901 self.OpenGraphicViewer(iec_path) |
1902 event.Skip() |
1902 event.Skip() |
1903 return AddVariableGraphic |
1903 return AddVariableGraphic |
1904 |
1904 |
1905 def SelectInstancesTreeItem(self, root, instancepath): |
1905 def RecursiveInstancesTreeItemSelection(self, root, instancepath): |
1906 found = False |
1906 found = False |
|
1907 paths = instancepath.split(".", 1) |
|
1908 if wx.VERSION >= (2, 6, 0): |
|
1909 item, root_cookie = self.InstancesTree.GetFirstChild(root) |
|
1910 else: |
|
1911 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0) |
|
1912 while item.IsOk() and not found: |
|
1913 name = self.InstancesTree.GetItemText(item).split(" (")[0] |
|
1914 if name == paths[0]: |
|
1915 if len(paths) == 1: |
|
1916 self.InstancesTree.SelectItem(item) |
|
1917 return True |
|
1918 else: |
|
1919 found = self.SelectInstancesTreeItem(item, paths[1]) |
|
1920 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
|
1921 return found |
|
1922 |
|
1923 def SelectInstancesTreeItem(self, instancepath): |
1907 if self.InstancesTree is not None: |
1924 if self.InstancesTree is not None: |
1908 paths = instancepath.split(".", 1) |
1925 root = self.InstancesTree.GetRootItem() |
1909 if wx.VERSION >= (2, 6, 0): |
1926 if root.IsOk(): |
1910 item, root_cookie = self.InstancesTree.GetFirstChild(root) |
1927 return self.RecursiveInstancesTreeItemSelection(root, instancepath) |
1911 else: |
1928 return False |
1912 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0) |
1929 |
1913 while item.IsOk() and not found: |
|
1914 name = self.InstancesTree.GetItemText(item).split(" (")[0] |
|
1915 if name == paths[0]: |
|
1916 if len(paths) == 1: |
|
1917 self.InstancesTree.SelectItem(item) |
|
1918 return True |
|
1919 else: |
|
1920 found = self.SelectInstancesTreeItem(item, paths[1]) |
|
1921 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
|
1922 return found |
|
1923 |
|
1924 def ResetGraphicViewers(self): |
1930 def ResetGraphicViewers(self): |
1925 for i in xrange(self.TabsOpened.GetPageCount()): |
1931 for i in xrange(self.TabsOpened.GetPageCount()): |
1926 editor = self.TabsOpened.GetPage(i) |
1932 editor = self.TabsOpened.GetPage(i) |
1927 if isinstance(editor, GraphicViewer): |
1933 if isinstance(editor, GraphicViewer): |
1928 editor.ResetView() |
1934 editor.ResetView() |