--- a/PLCOpenEditor.py Tue Jan 13 17:26:37 2009 +0100
+++ b/PLCOpenEditor.py Wed Jan 14 19:45:22 2009 +0100
@@ -35,6 +35,7 @@
from LDViewer import *
from Viewer import *
from TextViewer import *
+from GraphicViewer import *
from RessourceEditor import *
from DataTypeEditor import *
from PLCControler import *
@@ -411,6 +412,10 @@
pos=wx.Point(0, 0), size=wx.Size(0, 0),
style=wx.TR_HAS_BUTTONS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
if self.Debug:
+ if wx.VERSION >= (2, 6, 0):
+ self.InstancesTree.Bind(wx.EVT_RIGHT_UP, self.OnInstancesTreeRightUp)
+ else:
+ wx.EVT_RIGHT_UP(self.InstancesTree, self.OnInstancesTreeRightUp)
self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnInstancesTreeBeginDrag,
id=ID_PLCOPENEDITORINSTANCESTREE)
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnInstancesTreeItemActivated,
@@ -1820,7 +1825,59 @@
new_window.RefreshView()
new_window.SetFocus()
self.RefreshPageTitles()
- event.Skip()
+ if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE:
+ var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (")
+ var_type = var_type.split(")")[0]
+
+ if self.Controler.IsOfType(var_type, "ANY_NUM", self.Debug) or\
+ self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug):
+ parent_item = self.InstancesTree.GetItemParent(selected_item)
+ while self.InstancesTree.GetPyData(parent_item)[0] != ITEM_PROJECT:
+ parent_name = self.InstancesTree.GetItemText(parent_item).split(" (")[0]
+ var_path = "%s.%s"%(parent_name, var_path)
+ parent_item = self.InstancesTree.GetItemParent(parent_item)
+
+ new_window = GraphicViewer(self.TabsOpened, self, self.Controler, var_path)
+ self.TabsOpened.AddPage(new_window, "")
+ new_window.SetFocus()
+ self.RefreshPageTitles()
+ event.Skip()
+
+ def OnInstancesTreeRightUp(self, event):
+ if wx.Platform == '__WXMSW__':
+ selected_item = event.GetItem()
+ else:
+ selected_item = self.InstancesTree.GetSelection()
+ selected_infos = self.InstancesTree.GetPyData(selected_item)
+ if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE:
+ var_path, var_type = self.InstancesTree.GetItemText(selected_item).split(" (")
+ var_type = var_type.split(")")[0]
+
+ if self.Controler.IsOfType(var_type, "ANY_NUM", self.Debug) or\
+ self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug):
+ parent_item = self.InstancesTree.GetItemParent(selected_item)
+ while self.InstancesTree.GetPyData(parent_item)[0] != ITEM_PROJECT:
+ parent_name = self.InstancesTree.GetItemText(parent_item).split(" (")[0]
+ var_path = "%s.%s"%(parent_name, var_path)
+ parent_item = self.InstancesTree.GetItemParent(parent_item)
+
+ menu = wx.Menu(title='')
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Graphic Panel")
+ self.Bind(wx.EVT_MENU, self.AddVariableGraphicFunction(var_path), id=new_id)
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="CSV Log")
+ self.PopupMenu(menu)
+ event.Skip()
+
+ def AddVariableGraphicFunction(self, iec_path):
+ def AddVariableGraphic(event):
+ new_window = GraphicViewer(self.TabsOpened, self, self.Controler, iec_path)
+ self.TabsOpened.AddPage(new_window, "")
+ new_window.SetFocus()
+ self.RefreshPageTitles()
+ event.Skip()
+ return AddVariableGraphic
def SelectInstancesTreeItem(self, root, instancepath):
found = False