--- a/PLCOpenEditor.py Sat Mar 31 15:03:50 2012 +0200
+++ b/PLCOpenEditor.py Sat Mar 31 15:08:18 2012 +0200
@@ -384,12 +384,14 @@
self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
- self.AddToMenuToolBar([(wx.ID_UNDO, wx.ART_UNDO, _(u'Undo'), None),
- (wx.ID_REDO, wx.ART_REDO, _(u'Redo'), None),
+ self.AddToMenuToolBar([(wx.ID_UNDO, "undo.png", _(u'Undo'), None),
+ (wx.ID_REDO, "redo.png", _(u'Redo'), None),
None,
- (wx.ID_CUT, wx.ART_CUT, _(u'Cut'), None),
- (wx.ID_COPY, wx.ART_COPY, _(u'Copy'), None),
- (wx.ID_PASTE, wx.ART_PASTE, _(u'Paste'), None)])
+ (wx.ID_CUT, "cut.png", _(u'Cut'), None),
+ (wx.ID_COPY, "copy.png", _(u'Copy'), None),
+ (wx.ID_PASTE, "paste.png", _(u'Paste'), None),
+ None,
+ (ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, "find.png", _(u'Search in Project'), None)])
def _init_coll_DisplayMenu_Items(self, parent):
AppendMenu(parent, help='', id=wx.ID_REFRESH,
@@ -441,12 +443,13 @@
self._init_coll_MainLibrarySizer_Items(self.MainLibrarySizer)
self.LibraryPanel.SetSizer(self.MainLibrarySizer)
-
+
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name='IDEFrame',
parent=prnt, pos=wx.DefaultPosition, size=wx.Size(1000, 600),
style=wx.DEFAULT_FRAME_STYLE)
self.SetClientSize(wx.Size(1000, 600))
+ self.Bind(wx.EVT_ACTIVATE, self.OnActivated)
self.TabsImageList = wx.ImageList(31, 16)
self.TabsImageListIndexes = {}
@@ -605,6 +608,16 @@
#-----------------------------------------------------------------------
if USE_AUI:
+ MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
+ wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
+ MenuToolBar.SetToolBitmapSize(wx.Size(25, 25))
+ MenuToolBar.Realize()
+ self.Panes["MenuToolBar"] = MenuToolBar
+ self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo().
+ Name("MenuToolBar").Caption(_("Menu ToolBar")).
+ ToolbarPane().Top().
+ LeftDockable(False).RightDockable(False))
+
EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
EditorToolBar.SetToolBitmapSize(wx.Size(25, 25))
@@ -614,17 +627,7 @@
self.Panes["EditorToolBar"] = EditorToolBar
self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo().
Name("EditorToolBar").Caption(_("Editor ToolBar")).
- ToolbarPane().Top().
- LeftDockable(False).RightDockable(False))
-
- MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize,
- wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER)
- MenuToolBar.SetToolBitmapSize(wx.Size(25, 25))
- MenuToolBar.Realize()
- self.Panes["MenuToolBar"] = MenuToolBar
- self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo().
- Name("MenuToolBar").Caption(_("Menu ToolBar")).
- ToolbarPane().Top().
+ ToolbarPane().Top().Position(1).
LeftDockable(False).RightDockable(False))
else:
@@ -749,6 +752,11 @@
wx.Frame.Show(self)
wx.CallAfter(self.RestoreFrameSize)
+ def OnActivated(self, event):
+ if event.GetActive():
+ wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
+ event.Skip()
+
def RestoreFrameSize(self):
frame_size = None
if self.Config.HasEntry("framesize"):
@@ -1046,6 +1054,7 @@
#self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO,
# self.Controler.IsProjectBufferEnabled())
self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
+ MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
self.EditMenu.Enable(wx.ID_ADD, True)
self.EditMenu.Enable(wx.ID_DELETE, True)
if self.TabsOpened.GetPageCount() > 0:
@@ -1082,6 +1091,7 @@
MenuToolBar.EnableTool(wx.ID_PASTE, False)
self.EditMenu.Enable(wx.ID_SELECTALL, False)
self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
+ MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
self.EditMenu.Enable(wx.ID_ADD, False)
self.EditMenu.Enable(wx.ID_DELETE, False)
@@ -1666,62 +1676,17 @@
self.TypesTreeItemSelect(item)
name = self.TypesTree.GetItemText(item)
type = self.TypesTree.GetPyData(item)
- if type == ITEM_POU:
- menu = wx.Menu(title='')
- if self.Controler.GetPouBodyType(name) == "SFC":
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
- self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
- self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
- menu.AppendSeparator()
-
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU"))
- self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id)
-
- pou_type = self.Controler.GetPouType(name)
- if pou_type in ["function", "functionBlock"]:
- change_menu = wx.Menu(title='')
- if pou_type == "function":
- new_id = wx.NewId()
- AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block"))
- self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id)
- new_id = wx.NewId()
- AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program"))
- self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
- menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu)
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename"))
- self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
- self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
- self.PopupMenu(menu)
- elif type == ITEM_CONFIGURATION:
- menu = wx.Menu(title='')
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
- self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
- self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
- self.PopupMenu(menu)
- elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
- menu = wx.Menu(title='')
- new_id = wx.NewId()
- AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
- self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
- self.PopupMenu(menu)
- elif type in ITEMS_UNEDITABLE:
+
+ menu = None
+ if type in ITEMS_UNEDITABLE:
name = UNEDITABLE_NAMES_DICT[name]
+
if name == "Data Types":
menu = wx.Menu(title='')
new_id = wx.NewId()
AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
- self.PopupMenu(menu)
+
elif name in ["Functions", "Function Blocks", "Programs"]:
menu = wx.Menu(title='')
@@ -1735,13 +1700,12 @@
if self.GetCopyBuffer() is None:
menu.Enable(new_id, False)
- self.PopupMenu(menu)
elif name == "Configurations":
menu = wx.Menu(title='')
new_id = wx.NewId()
AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id)
- self.PopupMenu(menu)
+
elif name == "Transitions":
menu = wx.Menu(title='')
new_id = wx.NewId()
@@ -1752,7 +1716,7 @@
parent = self.TypesTree.GetItemParent(parent)
parent_type = self.TypesTree.GetPyData(parent)
self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
- self.PopupMenu(menu)
+
elif name == "Actions":
menu = wx.Menu(title='')
new_id = wx.NewId()
@@ -1763,7 +1727,7 @@
parent = self.TypesTree.GetItemParent(parent)
parent_type = self.TypesTree.GetPyData(parent)
self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id)
- self.PopupMenu(menu)
+
elif name == "Resources":
menu = wx.Menu(title='')
new_id = wx.NewId()
@@ -1774,7 +1738,56 @@
parent = self.TypesTree.GetItemParent(parent)
parent_type = self.TypesTree.GetPyData(parent)
self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id)
- self.PopupMenu(menu)
+
+ else:
+ if type == ITEM_POU:
+ menu = wx.Menu(title='')
+ if self.Controler.GetPouBodyType(name) == "SFC":
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
+ self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
+ self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
+ menu.AppendSeparator()
+
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU"))
+ self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id)
+
+ pou_type = self.Controler.GetPouType(name)
+ if pou_type in ["function", "functionBlock"]:
+ change_menu = wx.Menu(title='')
+ if pou_type == "function":
+ new_id = wx.NewId()
+ AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block"))
+ self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id)
+ new_id = wx.NewId()
+ AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program"))
+ self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
+ menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu)
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename"))
+ self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
+
+ elif type == ITEM_CONFIGURATION:
+ menu = wx.Menu(title='')
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
+ self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
+
+ elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
+ menu = wx.Menu(title='')
+
+ if menu is not None:
+ new_id = wx.NewId()
+ AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
+ self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
+
+ if menu is not None:
+ self.PopupMenu(menu)
+ menu.Destroy()
+
event.Skip()
@@ -2094,9 +2107,7 @@
MenuToolBar.AddSeparator()
else:
id, bitmap, help, callback = toolbar_item
- if not isinstance(bitmap, wx.Bitmap):
- bitmap = wx.ArtProvider.GetBitmap(bitmap, wx.ART_TOOLBAR, (24, 24))
- MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=bitmap)
+ MenuToolBar.AddSimpleTool(id=id, shortHelpString=help, bitmap=wx.Bitmap(os.path.join(CWD, 'Images', bitmap)))
if callback is not None:
self.Bind(wx.EVT_TOOL, callback, id=id)
MenuToolBar.Realize()
@@ -2628,11 +2639,11 @@
self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES)
self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
- self.AddToMenuToolBar([(wx.ID_NEW, wx.ART_NEW, _(u'New'), None),
- (wx.ID_OPEN, wx.ART_FILE_OPEN, _(u'Open'), None),
- (wx.ID_SAVE, wx.ART_FILE_SAVE, _(u'Save'), None),
- (wx.ID_SAVEAS, wx.ART_FILE_SAVE_AS, _(u'Save As...'), None),
- (wx.ID_PRINT, wx.ART_PRINT, _(u'Print'), None)])
+ self.AddToMenuToolBar([(wx.ID_NEW, "new.png", _(u'New'), None),
+ (wx.ID_OPEN, "open.png", _(u'Open'), None),
+ (wx.ID_SAVE, "save.png", _(u'Save'), None),
+ (wx.ID_SAVEAS, "saveas.png", _(u'Save As...'), None),
+ (wx.ID_PRINT, "print.png", _(u'Print'), None)])
def _init_coll_HelpMenu_Items(self, parent):
AppendMenu(parent, help='', id=wx.ID_HELP,
@@ -4249,6 +4260,7 @@
else:
menu.Enable(new_id, False)
self.PopupMenu(menu)
+ menu.Destroy()
event.Skip()
def InsertValue(self, iec_path, idx = None):