diff -r 3f06a178b960 -r 85875dcb7754 PLCOpenEditor.py --- 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: