--- a/PLCOpenEditor.py Tue Oct 02 18:00:13 2007 +0200
+++ b/PLCOpenEditor.py Tue Oct 02 18:07:59 2007 +0200
@@ -286,23 +286,6 @@
self._init_coll_SFCMenu_Items(self.SFCMenu)
self._init_coll_ConfigMenu_Items(self.ConfigMenu)
- def _init_coll_EditorGridSizer_Items(self, parent):
- parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
-
- def _init_coll_EditorGridSizer_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableRow(1)
-
- def _init_sizers(self):
- if wx.Platform != '__WXMSW__':
- self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
-
- self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer)
- self._init_coll_EditorGridSizer_Items(self.EditorGridSizer)
-
- self.EditorPanel.SetSizer(self.EditorGridSizer)
-
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor',
parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600),
@@ -339,48 +322,23 @@
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
id=ID_PLCOPENEDITORPROJECTTREE)
- if wx.Platform == '__WXMSW__':
- self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER,
- ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
- self.ToolBar.SetToolBitmapSize(wx.Size(25, 25))
- self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION,
- wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
- self.ToolBar.Realize()
- self.Bind(wx.EVT_TOOL, self.OnSelectionTool,
- id=ID_PLCOPENEDITORTOOLBARSELECTION)
-
- self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
- name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
- 0), size=wx.Size(0, 0), style=0)
- self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
- self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
-
- self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
-
- else:
- self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL,
- name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
- parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
- style=wx.TB_HORIZONTAL|wx.NO_BORDER)
- self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION,
- wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
- self.ToolBar.Realize()
- self.Bind(wx.EVT_TOOL, self.OnSelectionTool,
- id=ID_PLCOPENEDITORTOOLBARSELECTION)
-
- self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
- name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
- 0), size=wx.Size(0, 0), style=0)
- self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
- self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
-
- self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel, 200)
-
- self._init_sizers()
-
+ self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER,
+ ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
+ self.ToolBar.SetToolBitmapSize(wx.Size(25, 25))
+ self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION,
+ wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
+ self.ToolBar.Realize()
+ self.Bind(wx.EVT_TOOL, self.OnSelectionTool,
+ id=ID_PLCOPENEDITORTOOLBARSELECTION)
+
+ self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
+ name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
+ 0), size=wx.Size(0, 0), style=0)
+ self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
+ self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
+
+ self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
+
def __init__(self, parent, controler = None, fileOpen = None):
self.ModeSolo = controler == None
self._init_ctrls(parent)
@@ -561,9 +519,9 @@
event.Skip()
def OnCloseProjectMenu(self, event):
- self.Controler.Reset()
self.TabsOpened.DeleteAllPages()
self.ProjectTree.DeleteAllItems()
+ self.Controler.Reset()
self.RefreshTitle()
self.RefreshFileMenu()
self.RefreshEditMenu()
@@ -898,67 +856,103 @@
data = self.ProjectTree.GetPyData(selected)
if name == "Properties":
self.ShowProperties()
- elif data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE, ITEM_CONFIGURATION]:
- idx = None
- if data == ITEM_CONFIGURATION:
- idx = self.Controler.OpenConfigurationEditing(name)
+ if data in [ITEM_POU, ITEM_CONFIGURATION]:
+ self.EditProjectElement(data, name)
+ elif data == ITEM_RESOURCE:
+ item = self.ProjectTree.GetItemParent(selected)
+ item_type = self.ProjectTree.GetPyData(item)
+ while item_type != ITEM_CONFIGURATION:
+ item = self.ProjectTree.GetItemParent(item)
+ item_type = self.ProjectTree.GetPyData(item)
+ config_name = self.ProjectTree.GetItemText(item)
+ self.EditProjectElement(data, "%s::%s"%(config_name, name))
+ elif data in [ITEM_TRANSITION, ITEM_ACTION]:
+ item = self.ProjectTree.GetItemParent(selected)
+ item_type = self.ProjectTree.GetPyData(item)
+ while item_type != ITEM_POU:
+ item = self.ProjectTree.GetItemParent(item)
+ item_type = self.ProjectTree.GetPyData(item)
+ pou_name = self.ProjectTree.GetItemText(item)
+ self.EditProjectElement(data, "%s::%s"%(pou_name, name))
+
+ def OnProjectTreeItemSelected(self, event):
+ selected = event.GetItem()
+ name = self.ProjectTree.GetItemText(selected)
+ data = self.ProjectTree.GetPyData(selected)
+ if data in [ITEM_POU, ITEM_CONFIGURATION]:
+ self.EditProjectElement(data, name, True)
+ elif data == ITEM_RESOURCE:
+ item = self.ProjectTree.GetItemParent(selected)
+ item_type = self.ProjectTree.GetPyData(item)
+ while item_type != ITEM_CONFIGURATION:
+ item = self.ProjectTree.GetItemParent(item)
+ item_type = self.ProjectTree.GetPyData(item)
+ config_name = self.ProjectTree.GetItemText(item)
+ self.EditProjectElement(data, "%s::%s"%(config_name, name), True)
+ elif data in [ITEM_TRANSITION, ITEM_ACTION]:
+ item = self.ProjectTree.GetItemParent(selected)
+ item_type = self.ProjectTree.GetPyData(item)
+ while item_type != ITEM_POU:
+ item = self.ProjectTree.GetItemParent(item)
+ item_type = self.ProjectTree.GetPyData(item)
+ pou_name = self.ProjectTree.GetItemText(item)
+ self.EditProjectElement(data, "%s::%s"%(pou_name, name), True)
+ event.Skip()
+
+ def EditProjectElement(self, elementtype, elementname, onlyopened = False):
+ idx = None
+ names = elementname.split("::")
+ if elementtype == ITEM_CONFIGURATION and len(names) == 1:
+ if not onlyopened:
+ idx = self.Controler.OpenConfigurationEditing(*names)
+ if idx is not None:
+ new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = names[0])
+ self.TabsOpened.AddPage(new_window, "")
+ if idx is None:
+ idx = self.Controler.ChangeConfigurationEditing(*names)
+ elif elementtype == ITEM_RESOURCE and len(names) == 2:
+ if not onlyopened:
+ idx = self.Controler.OpenConfigurationResourceEditing(*names)
+ if idx is not None:
+ new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = names[0], resource_name = names[1])
+ self.TabsOpened.AddPage(new_window, "")
+ if idx is None:
+ idx = self.Controler.ChangeConfigurationResourceEditing(*names)
+ elif elementtype == ITEM_POU and len(names) == 1:
+ if not onlyopened:
+ idx = self.Controler.OpenPouEditing(*names)
if idx != None:
- new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = name)
+ new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(names[0]), pou_name = names[0])
self.TabsOpened.AddPage(new_window, "")
- else:
- idx = self.Controler.ChangeConfigurationEditing(name)
- elif data == ITEM_RESOURCE:
- item = self.ProjectTree.GetItemParent(selected)
- item_type = self.ProjectTree.GetPyData(item)
- while item_type != ITEM_CONFIGURATION:
- item = self.ProjectTree.GetItemParent(item)
- item_type = self.ProjectTree.GetPyData(item)
- config_name = self.ProjectTree.GetItemText(item)
- idx = self.Controler.OpenConfigurationResourceEditing(config_name, name)
- if idx != None:
- new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = config_name, resource_name = name)
+ if idx is None:
+ idx = self.Controler.ChangePouEditing(*names)
+ elif elementtype == ITEM_TRANSITION and len(names) == 2:
+ if not onlyopened:
+ idx = self.Controler.OpenPouTransitionEditing(*names)
+ if idx is not None:
+ new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = names[0], transition_name = names[1])
self.TabsOpened.AddPage(new_window, "")
- else:
- idx = self.Controler.ChangeConfigurationResourceEditing(config_name, name)
- elif data == ITEM_POU:
- idx = self.Controler.OpenPouEditing(name)
- if idx != None:
- new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(name), pou_name = name)
+ if idx is None:
+ idx = self.Controler.ChangePouTransitionEditing(*names)
+ elif elementtype == ITEM_ACTION and len(names) == 2:
+ if not onlyopened:
+ idx = self.Controler.OpenPouActionEditing(*names)
+ if idx is not None:
+ new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = names[0], action_name = names[1])
self.TabsOpened.AddPage(new_window, "")
- else:
- idx = self.Controler.ChangePouEditing(name)
- else:
- item = self.ProjectTree.GetItemParent(selected)
- item_type = self.ProjectTree.GetPyData(item)
- while item_type != ITEM_POU:
- item = self.ProjectTree.GetItemParent(item)
- item_type = self.ProjectTree.GetPyData(item)
- pou_name = self.ProjectTree.GetItemText(item)
- if data == ITEM_TRANSITION:
- idx = self.Controler.OpenPouTransitionEditing(pou_name, name)
- if idx != None:
- new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = pou_name, transition_name = name)
- self.TabsOpened.AddPage(new_window, "")
- else:
- idx = self.Controler.ChangePouTransitionEditing(pou_name, name)
- elif data == ITEM_ACTION:
- idx = self.Controler.OpenPouActionEditing(pou_name, name)
- if idx != None:
- new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = pou_name, action_name = name)
- self.TabsOpened.AddPage(new_window, "")
- else:
- idx = self.Controler.ChangePouActionEditing(pou_name, name)
- if idx != None:
- old_selected = self.TabsOpened.GetSelection()
- if old_selected >= 0:
- self.TabsOpened.GetPage(old_selected).ResetBuffer()
- self.TabsOpened.SetSelection(idx)
- window = self.TabsOpened.GetPage(idx)
- window.RefreshView()
- self.RefreshTabsOpenedTitles()
- self.RefreshFileMenu()
- self.RefreshEditMenu()
- self.RefreshToolBar()
+ if idx is None:
+ idx = self.Controler.ChangePouActionEditing(*names)
+ if idx != None:
+ old_selected = self.TabsOpened.GetSelection()
+ if old_selected >= 0:
+ self.TabsOpened.GetPage(old_selected).ResetBuffer()
+ self.TabsOpened.SetSelection(idx)
+ window = self.TabsOpened.GetPage(idx)
+ window.RefreshView()
+ self.RefreshTabsOpenedTitles()
+ self.RefreshFileMenu()
+ self.RefreshEditMenu()
+ self.RefreshToolBar()
def OnProjectTreeRightUp(self, event):
selected = self.ProjectTree.GetSelection()
@@ -969,53 +963,6 @@
elif self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
self.PopupMenu(self.ConfigMenu)
event.Skip()
-
- def OnProjectTreeItemSelected(self, event):
- selected = event.GetItem()
- name = self.ProjectTree.GetItemText(selected)
- data = self.ProjectTree.GetPyData(selected)
- if data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE, ITEM_CONFIGURATION]:
- idx = None
- if data == ITEM_CONFIGURATION:
- if self.Controler.IsConfigurationEditing(name):
- idx = self.Controler.ChangeConfigurationEditing(name)
- elif data == ITEM_RESOURCE:
- item = self.ProjectTree.GetItemParent(selected)
- item_type = self.ProjectTree.GetPyData(item)
- while item_type != ITEM_CONFIGURATION:
- item = self.ProjectTree.GetItemParent(item)
- item_type = self.ProjectTree.GetPyData(item)
- config_name = self.ProjectTree.GetItemText(item)
- if self.Controler.IsConfigurationResourceEditing(config_name, name):
- idx = self.Controler.ChangeConfigurationResourceEditing(config_name, name)
- elif data == ITEM_POU:
- if self.Controler.IsPouEditing(name):
- idx = self.Controler.ChangePouEditing(name)
- else:
- item = self.ProjectTree.GetItemParent(selected)
- item_type = self.ProjectTree.GetPyData(item)
- while item_type != ITEM_POU:
- item = self.ProjectTree.GetItemParent(item)
- item_type = self.ProjectTree.GetPyData(item)
- pou_name = self.ProjectTree.GetItemText(item)
- if data == ITEM_TRANSITION:
- if self.Controler.IsPouTransitionEditing(pou_name, name):
- idx = self.Controler.ChangePouTransitionEditing(pou_name, name)
- elif data == ITEM_ACTION:
- if self.Controler.IsPouActionEditing(pou_name, name):
- idx = self.Controler.ChangePouActionEditing(pou_name, name)
- if idx != None:
- old_selected = self.TabsOpened.GetSelection()
- if old_selected >= 0:
- self.TabsOpened.GetPage(old_selected).ResetBuffer()
- self.TabsOpened.SetSelection(idx)
- window = self.TabsOpened.GetPage(idx)
- window.RefreshView()
- self.RefreshTabsOpenedTitles()
- self.RefreshFileMenu()
- self.RefreshEditMenu()
- self.RefreshToolBar()
- event.Skip()
def RefreshProjectTree(self):
infos = self.Controler.GetProjectInfos()
@@ -1035,7 +982,7 @@
for values in infos["values"]:
if not item.IsOk():
item = self.ProjectTree.AppendItem(root, "")
- if wx.VERSION < (2, 7, 0):
+ if wx.Platform != '__WXMSW__':
item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
self.GenerateTreeBranch(item, values)
item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
@@ -2526,7 +2473,7 @@
self.ClassList = [self.Filter]
def RefreshButtons(self):
- if self.Table:
+ if getattr(self, "Table", None):
table_length = len(self.Table.data)
row_class = None
if table_length and self.PouIsUsed: