# HG changeset patch # User greg # Date 1241422547 -7200 # Node ID f7958989e055360004ac661dd7d21a1be035830d # Parent 96cc6179b918d88b7e4515a22843c08ba556317e Adding support for Enable/Disable Undo/Redo diff -r 96cc6179b918 -r f7958989e055 PLCOpenEditor.py --- a/PLCOpenEditor.py Mon May 04 09:35:17 2009 +0200 +++ b/PLCOpenEditor.py Mon May 04 09:35:47 2009 +0200 @@ -67,10 +67,10 @@ [ID_PLCOPENEDITORFILEMENUGENERATE, ] = [wx.NewId() for _init_coll_FileMenu_Items in range(1)] -[ID_PLCOPENEDITOREDITMENUADDDATATYPE, ID_PLCOPENEDITOREDITMENUADDFUNCTION, - ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, ID_PLCOPENEDITOREDITMENUADDPROGRAM, - ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, -] = [wx.NewId() for _init_coll_EditMenu_Items in range(5)] +[ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, ID_PLCOPENEDITOREDITMENUADDDATATYPE, + ID_PLCOPENEDITOREDITMENUADDFUNCTION, ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, + ID_PLCOPENEDITOREDITMENUADDPROGRAM, ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, +] = [wx.NewId() for _init_coll_EditMenu_Items in range(6)] #------------------------------------------------------------------------------- @@ -259,6 +259,8 @@ kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z') AppendMenu(parent, help='', id=wx.ID_REDO, kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y') + AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, + kind=wx.ITEM_CHECK, text=u'Enable Undo/Redo') parent.AppendSeparator() AppendMenu(parent, help='', id=wx.ID_CUT, kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X') @@ -285,6 +287,7 @@ kind=wx.ITEM_NORMAL, text=u'Delete') self.Bind(wx.EVT_MENU, self.OnUndoMenu, id=wx.ID_UNDO) self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO) + self.Bind(wx.EVT_MENU, self.OnEnableUndoRedoMenu, id=ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO) self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT) self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY) self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE) @@ -1057,6 +1060,8 @@ def RefreshEditMenu(self): if not self.Debug: + self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, + self.Controler.IsProjectBufferEnabled()) if self.Controler.HasOpenedProject(): undo, redo = self.Controler.GetBufferState() self.EditMenu.Enable(wx.ID_UNDO, undo) @@ -1095,7 +1100,7 @@ if self.Controler.GetEditedElement(tagname, self.Debug) is None: self.VariablePanelIndexer.RemoveVariablePanel(tagname) self.TabsOpened.DeletePage(idx) - selected = self.TabsOpened.GetSelection() + selected = self.TabsOpened.GetSelection() if selected != -1: window = self.TabsOpened.GetPage(selected) window.RefreshView() @@ -1130,6 +1135,11 @@ self.RefreshScaling() event.Skip() + def OnEnableUndoRedoMenu(self, event): + self.Controler.EnableProjectBuffer(event.IsChecked()) + self.RefreshEditMenu() + event.Skip() + def OnCutMenu(self, event): control = self.FindFocus() if isinstance(control, (Viewer, TextViewer)): @@ -1177,7 +1187,7 @@ self.Controler.ProjectRemoveDataType(name) tagname = self.Controler.ComputeDataTypeName(name) else: - message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) + message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() elif type == ITEM_POU: @@ -1186,7 +1196,7 @@ self.Controler.ProjectRemovePou(name) tagname = self.Controler.ComputePouName(name) else: - message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) + message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() elif type in [ITEM_TRANSITION, ITEM_ACTION]: @@ -1603,9 +1613,10 @@ event.Veto() else: wx.CallAfter(self.RefreshTypesTree) - selected = self.TabsOpened.GetSelection() - if selected != -1: - self.TabsOpened.GetPage(selected).RefreshView() + self.RefreshEditor() + self.RefreshFileMenu() + self.RefreshEditMenu() + self.RefreshTitle() event.Skip() def OnTypesTreeItemActivated(self, event): @@ -1747,7 +1758,6 @@ window = self.TabsOpened.GetPage(i) if window.GetTagName() == tagname: self.TabsOpened.SetSelection(i) - window.RefreshView() window.SetFocus() self.RefreshPageTitles() self.RefreshFileMenu() @@ -1940,7 +1950,6 @@ if old_selected >= 0: self.TabsOpened.GetPage(old_selected).ResetBuffer() self.TabsOpened.SetSelection(openedidx) - self.TabsOpened.GetPage(openedidx).RefreshView() elif selected_infos[1] is not None: bodytype = self.Controler.GetEditedElementBodyType(selected_infos[1], self.Debug) if bodytype == "FBD": @@ -1960,7 +1969,6 @@ else: new_window.SetKeywords(ST_KEYWORDS) self.AddPage(new_window, "") - new_window.RefreshView() new_window.SetFocus() self.RefreshPageTitles() if selected_item is not None and selected_infos[0] in ITEMS_VARIABLE: @@ -2351,9 +2359,6 @@ if dialog.ShowModal() == wx.ID_OK: values = dialog.GetValues() self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"]) - selected = self.TabsOpened.GetSelection() - if selected != -1: - self.TabsOpened.GetPage(selected).RefreshView() self.RefreshTitle() self.RefreshEditMenu() self.RefreshTypesTree() @@ -2468,7 +2473,7 @@ self.RefreshTypesTree() self.RefreshToolBar() else: - message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) + message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() event.Skip() @@ -2497,7 +2502,7 @@ self.RefreshLibraryTree() self.RefreshToolBar() else: - message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) + message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() event.Skip()