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() |