PLCOpenEditor.py
changeset 301 b5e564608b9e
parent 298 1b1a3ee785da
child 304 2df3d31d8059
equal deleted inserted replaced
300:34d1402c0e24 301:b5e564608b9e
    33 
    33 
    34 from SFCViewer import *
    34 from SFCViewer import *
    35 from LDViewer import *
    35 from LDViewer import *
    36 from Viewer import *
    36 from Viewer import *
    37 from TextViewer import *
    37 from TextViewer import *
       
    38 from GraphicViewer import *
    38 from RessourceEditor import *
    39 from RessourceEditor import *
    39 from DataTypeEditor import *
    40 from DataTypeEditor import *
    40 from PLCControler import *
    41 from PLCControler import *
    41 from plcopen.structures import LOCATIONDATATYPES
    42 from plcopen.structures import LOCATIONDATATYPES
    42 
    43 
   409         self.InstancesTree = wx.TreeCtrl(id=ID_PLCOPENEDITORINSTANCESTREE,
   410         self.InstancesTree = wx.TreeCtrl(id=ID_PLCOPENEDITORINSTANCESTREE,
   410                   name='InstancesTree', parent=self.TreeNoteBook, 
   411                   name='InstancesTree', parent=self.TreeNoteBook, 
   411                   pos=wx.Point(0, 0), size=wx.Size(0, 0),
   412                   pos=wx.Point(0, 0), size=wx.Size(0, 0),
   412                   style=wx.TR_HAS_BUTTONS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   413                   style=wx.TR_HAS_BUTTONS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   413         if self.Debug:
   414         if self.Debug:
       
   415             if wx.VERSION >= (2, 6, 0):
       
   416                 self.InstancesTree.Bind(wx.EVT_RIGHT_UP, self.OnInstancesTreeRightUp)
       
   417             else:
       
   418                 wx.EVT_RIGHT_UP(self.InstancesTree, self.OnInstancesTreeRightUp)
   414             self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnInstancesTreeBeginDrag,
   419             self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnInstancesTreeBeginDrag,
   415                   id=ID_PLCOPENEDITORINSTANCESTREE)
   420                   id=ID_PLCOPENEDITORINSTANCESTREE)
   416             self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnInstancesTreeItemActivated,
   421             self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnInstancesTreeItemActivated,
   417                   id=ID_PLCOPENEDITORINSTANCESTREE)
   422                   id=ID_PLCOPENEDITORINSTANCESTREE)
   418             
   423             
  1818                         new_window.SetKeywords(ST_KEYWORDS)
  1823                         new_window.SetKeywords(ST_KEYWORDS)
  1819                 self.TabsOpened.AddPage(new_window, "")
  1824                 self.TabsOpened.AddPage(new_window, "")
  1820                 new_window.RefreshView()
  1825                 new_window.RefreshView()
  1821                 new_window.SetFocus()
  1826                 new_window.SetFocus()
  1822                 self.RefreshPageTitles()
  1827                 self.RefreshPageTitles()
  1823         event.Skip()
  1828         if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE:
       
  1829             var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (")
       
  1830             var_type = var_type.split(")")[0]
       
  1831             
       
  1832             if self.Controler.IsOfType(var_type, "ANY_NUM", self.Debug) or\
       
  1833                self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug):
       
  1834                 parent_item = self.InstancesTree.GetItemParent(selected_item)
       
  1835                 while self.InstancesTree.GetPyData(parent_item)[0] != ITEM_PROJECT:
       
  1836                     parent_name = self.InstancesTree.GetItemText(parent_item).split(" (")[0]
       
  1837                     var_path = "%s.%s"%(parent_name, var_path)
       
  1838                     parent_item = self.InstancesTree.GetItemParent(parent_item)
       
  1839                 
       
  1840                 new_window = GraphicViewer(self.TabsOpened, self, self.Controler, var_path)
       
  1841                 self.TabsOpened.AddPage(new_window, "")
       
  1842                 new_window.SetFocus()
       
  1843                 self.RefreshPageTitles()
       
  1844         event.Skip()
       
  1845 
       
  1846     def OnInstancesTreeRightUp(self, event):
       
  1847         if wx.Platform == '__WXMSW__':
       
  1848             selected_item = event.GetItem()
       
  1849         else:
       
  1850             selected_item = self.InstancesTree.GetSelection()
       
  1851         selected_infos = self.InstancesTree.GetPyData(selected_item)
       
  1852         if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE:
       
  1853             var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (")
       
  1854             var_type = var_type.split(")")[0]
       
  1855             
       
  1856             if self.Controler.IsOfType(var_type, "ANY_NUM", self.Debug) or\
       
  1857                self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug):
       
  1858                 parent_item = self.InstancesTree.GetItemParent(selected_item)
       
  1859                 while self.InstancesTree.GetPyData(parent_item)[0] != ITEM_PROJECT:
       
  1860                     parent_name = self.InstancesTree.GetItemText(parent_item).split(" (")[0]
       
  1861                     var_path = "%s.%s"%(parent_name, var_path)
       
  1862                     parent_item = self.InstancesTree.GetItemParent(parent_item)
       
  1863                 
       
  1864                 menu = wx.Menu(title='')
       
  1865                 new_id = wx.NewId()
       
  1866                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Graphic Panel")
       
  1867                 self.Bind(wx.EVT_MENU, self.AddVariableGraphicFunction(var_path), id=new_id)
       
  1868                 new_id = wx.NewId()
       
  1869                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="CSV Log")
       
  1870                 self.PopupMenu(menu)
       
  1871         event.Skip()
       
  1872 
       
  1873     def AddVariableGraphicFunction(self, iec_path):
       
  1874         def AddVariableGraphic(event):
       
  1875             new_window = GraphicViewer(self.TabsOpened, self, self.Controler, iec_path)
       
  1876             self.TabsOpened.AddPage(new_window, "")
       
  1877             new_window.SetFocus()
       
  1878             self.RefreshPageTitles()
       
  1879             event.Skip()
       
  1880         return AddVariableGraphic
  1824 
  1881 
  1825     def SelectInstancesTreeItem(self, root, instancepath):
  1882     def SelectInstancesTreeItem(self, root, instancepath):
  1826         found = False
  1883         found = False
  1827         if self.InstancesTree is not None:
  1884         if self.InstancesTree is not None:
  1828             paths = instancepath.split(".", 1)
  1885             paths = instancepath.split(".", 1)