IDEFrame.py
branchsearch_in_CTN
changeset 2524 c80b0d864475
parent 2457 9deec258ab1a
child 2525 9812b332f350
equal deleted inserted replaced
2523:aa7f138648f3 2524:c80b0d864475
  1585         "A": [ITEM_POU, ITEM_ACTION],
  1585         "A": [ITEM_POU, ITEM_ACTION],
  1586         "C": [ITEM_CONFIGURATION],
  1586         "C": [ITEM_CONFIGURATION],
  1587         "R": [ITEM_CONFIGURATION, ITEM_RESOURCE]}
  1587         "R": [ITEM_CONFIGURATION, ITEM_RESOURCE]}
  1588 
  1588 
  1589     def SelectProjectTreeItem(self, tagname):
  1589     def SelectProjectTreeItem(self, tagname):
       
  1590         print("SelectProjectTreeItem", tagname)
  1590         result = False
  1591         result = False
  1591         if self.ProjectTree is not None:
  1592         if self.ProjectTree is not None:
  1592             root = self.ProjectTree.GetRootItem()
  1593             root = self.ProjectTree.GetRootItem()
  1593             if root is not None and root.IsOk():
  1594             if root is not None and root.IsOk():
  1594                 words = tagname.split("::")
  1595                 words = tagname.split("::")
  1595                 result = self.RecursiveProjectTreeItemSelection(
  1596                 result = self.RecursiveProjectTreeItemSelection(
  1596                     root, zip(words[1:], self.TagNamePartsItemTypes.get(words[0], [])))
  1597                     root, zip(words[1:], self.TagNamePartsItemTypes.get(words[0], [])))
  1597         return result
  1598         return result
  1598 
  1599 
  1599     def RecursiveProjectTreeItemSelection(self, root, items):
  1600     def RecursiveProjectTreeItemSelection(self, root, items):
       
  1601         print("RecursiveProjectTreeItemSelection", items)
  1600         found = False
  1602         found = False
  1601         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1603         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1602         while item is not None and item.IsOk() and not found:
  1604         while item is not None and item.IsOk() and not found:
  1603             item_infos = self.ProjectTree.GetPyData(item)
  1605             item_infos = self.ProjectTree.GetPyData(item)
  1604             if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]:
  1606             if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]:
  1817             self.SelectedItem = event.GetItem()
  1819             self.SelectedItem = event.GetItem()
  1818             event.Veto()
  1820             event.Veto()
  1819         else:
  1821         else:
  1820             event.Skip()
  1822             event.Skip()
  1821 
  1823 
       
  1824     def GetProjectElementWindow(self, element, tagname):
       
  1825         print("GetProjectElementWindo", element, tagname)
       
  1826         new_window = None
       
  1827         if self.Controler.GetEditedElement(tagname) is not None:
       
  1828             new_window = None
       
  1829             if element == ITEM_CONFIGURATION:
       
  1830                 new_window = ConfigurationEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1831                 new_window.SetIcon(GetBitmap("CONFIGURATION"))
       
  1832             elif element == ITEM_RESOURCE:
       
  1833                 new_window = ResourceEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1834                 new_window.SetIcon(GetBitmap("RESOURCE"))
       
  1835             elif element in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
       
  1836                 bodytype = self.Controler.GetEditedElementBodyType(tagname)
       
  1837                 if bodytype == "FBD":
       
  1838                     new_window = Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1839                     new_window.RefreshScaling(False)
       
  1840                 elif bodytype == "LD":
       
  1841                     new_window = LD_Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1842                     new_window.RefreshScaling(False)
       
  1843                 elif bodytype == "SFC":
       
  1844                     new_window = SFC_Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1845                     new_window.RefreshScaling(False)
       
  1846                 else:
       
  1847                     new_window = TextViewer(self.TabsOpened, tagname, self, self.Controler)
       
  1848                     new_window.SetTextSyntax(bodytype)
       
  1849                     if bodytype == "IL":
       
  1850                         new_window.SetKeywords(IL_KEYWORDS)
       
  1851                     else:
       
  1852                         new_window.SetKeywords(ST_KEYWORDS)
       
  1853                 if element == ITEM_POU:
       
  1854                     pou_type = self.Controler.GetEditedElementType(tagname)[1].upper()
       
  1855                     icon = GetBitmap(pou_type, bodytype)
       
  1856                 elif element == ITEM_TRANSITION:
       
  1857                     icon = GetBitmap("TRANSITION", bodytype)
       
  1858                 elif element == ITEM_ACTION:
       
  1859                     icon = GetBitmap("ACTION", bodytype)
       
  1860                 new_window.SetIcon(icon)
       
  1861             elif element == ITEM_DATATYPE:
       
  1862                 new_window = DataTypeEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1863                 new_window.SetIcon(GetBitmap("DATATYPE"))
       
  1864         return new_window
       
  1865 
  1822     def EditProjectElement(self, element, tagname, onlyopened=False):
  1866     def EditProjectElement(self, element, tagname, onlyopened=False):
       
  1867         print("EditProjectElement", element, tagname, onlyopened)
  1823         openedidx = self.IsOpened(tagname)
  1868         openedidx = self.IsOpened(tagname)
  1824         if openedidx is not None:
  1869         if openedidx is not None:
  1825             old_selected = self.TabsOpened.GetSelection()
  1870             old_selected = self.TabsOpened.GetSelection()
  1826             if old_selected != openedidx:
  1871             if old_selected != openedidx:
  1827                 if old_selected >= 0:
  1872                 if old_selected >= 0:
  1829                 self.TabsOpened.SetSelection(openedidx)
  1874                 self.TabsOpened.SetSelection(openedidx)
  1830             self._Refresh(FILEMENU, EDITMENU, EDITORTOOLBAR, PAGETITLES)
  1875             self._Refresh(FILEMENU, EDITMENU, EDITORTOOLBAR, PAGETITLES)
  1831         elif not onlyopened:
  1876         elif not onlyopened:
  1832             if isinstance(element, EditorPanel):
  1877             if isinstance(element, EditorPanel):
  1833                 new_window = element
  1878                 new_window = element
  1834                 self.AddPage(element, "")
  1879             else:
  1835             elif self.Controler.GetEditedElement(tagname) is not None:
  1880                 new_window = self.GetProjectElementWindow(element, tagname)
  1836                 new_window = None
  1881 
  1837                 if element == ITEM_CONFIGURATION:
       
  1838                     new_window = ConfigurationEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1839                     new_window.SetIcon(GetBitmap("CONFIGURATION"))
       
  1840                     self.AddPage(new_window, "")
       
  1841                 elif element == ITEM_RESOURCE:
       
  1842                     new_window = ResourceEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1843                     new_window.SetIcon(GetBitmap("RESOURCE"))
       
  1844                     self.AddPage(new_window, "")
       
  1845                 elif element in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
       
  1846                     bodytype = self.Controler.GetEditedElementBodyType(tagname)
       
  1847                     if bodytype == "FBD":
       
  1848                         new_window = Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1849                         new_window.RefreshScaling(False)
       
  1850                     elif bodytype == "LD":
       
  1851                         new_window = LD_Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1852                         new_window.RefreshScaling(False)
       
  1853                     elif bodytype == "SFC":
       
  1854                         new_window = SFC_Viewer(self.TabsOpened, tagname, self, self.Controler)
       
  1855                         new_window.RefreshScaling(False)
       
  1856                     else:
       
  1857                         new_window = TextViewer(self.TabsOpened, tagname, self, self.Controler)
       
  1858                         new_window.SetTextSyntax(bodytype)
       
  1859                         if bodytype == "IL":
       
  1860                             new_window.SetKeywords(IL_KEYWORDS)
       
  1861                         else:
       
  1862                             new_window.SetKeywords(ST_KEYWORDS)
       
  1863                     if element == ITEM_POU:
       
  1864                         pou_type = self.Controler.GetEditedElementType(tagname)[1].upper()
       
  1865                         icon = GetBitmap(pou_type, bodytype)
       
  1866                     elif element == ITEM_TRANSITION:
       
  1867                         icon = GetBitmap("TRANSITION", bodytype)
       
  1868                     elif element == ITEM_ACTION:
       
  1869                         icon = GetBitmap("ACTION", bodytype)
       
  1870                     new_window.SetIcon(icon)
       
  1871                     self.AddPage(new_window, "")
       
  1872                 elif element == ITEM_DATATYPE:
       
  1873                     new_window = DataTypeEditor(self.TabsOpened, tagname, self, self.Controler)
       
  1874                     new_window.SetIcon(GetBitmap("DATATYPE"))
       
  1875                     self.AddPage(new_window, "")
       
  1876             if new_window is not None:
  1882             if new_window is not None:
       
  1883                 self.AddPage(new_window, "")
  1877                 openedidx = self.IsOpened(tagname)
  1884                 openedidx = self.IsOpened(tagname)
  1878                 old_selected = self.TabsOpened.GetSelection()
  1885                 old_selected = self.TabsOpened.GetSelection()
  1879                 if old_selected != openedidx:
  1886                 if old_selected != openedidx:
  1880                     if old_selected >= 0:
  1887                     if old_selected >= 0:
  1881                         self.TabsOpened.GetPage(old_selected).ResetBuffer()
  1888                         self.TabsOpened.GetPage(old_selected).ResetBuffer()
  2552     # -------------------------------------------------------------------------------
  2559     # -------------------------------------------------------------------------------
  2553     #                        Highlights showing functions
  2560     #                        Highlights showing functions
  2554     # -------------------------------------------------------------------------------
  2561     # -------------------------------------------------------------------------------
  2555 
  2562 
  2556     def ShowHighlight(self, infos, start, end, highlight_type):
  2563     def ShowHighlight(self, infos, start, end, highlight_type):
       
  2564         print(infos)
  2557         self.SelectProjectTreeItem(infos[0])
  2565         self.SelectProjectTreeItem(infos[0])
  2558         if infos[1] == "name":
  2566         if infos[1] == "name":
  2559             self.Highlights[infos[0]] = highlight_type
  2567             self.Highlights[infos[0]] = highlight_type
  2560             self.RefreshProjectTree()
  2568             self.RefreshProjectTree()
  2561             self.ProjectTree.Unselect()
  2569             self.ProjectTree.Unselect()