--- a/PLCOpenEditor.py Thu Mar 19 18:10:12 2009 +0100
+++ b/PLCOpenEditor.py Fri Mar 20 16:05:57 2009 +0100
@@ -188,7 +188,9 @@
def _init_coll_MenuBar_Menus(self, parent):
parent.Append(menu=self.FileMenu, title=u'File')
- parent.Append(menu=self.EditMenu, title=u'Edit')
+ if not self.Debug:
+ parent.Append(menu=self.EditMenu, title=u'Edit')
+ parent.Append(menu=self.DisplayMenu, title=u'Display')
parent.Append(menu=self.HelpMenu, title=u'Help')
def _init_coll_FileMenu_Items(self, parent):
@@ -253,61 +255,69 @@
self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_STOP)
def _init_coll_EditMenu_Items(self, parent):
+ AppendMenu(parent, help='', id=wx.ID_UNDO,
+ 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')
+ parent.AppendSeparator()
+ AppendMenu(parent, help='', id=wx.ID_CUT,
+ kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
+ AppendMenu(parent, help='', id=wx.ID_COPY,
+ kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
+ AppendMenu(parent, help='', id=wx.ID_PASTE,
+ kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
+ parent.AppendSeparator()
+ addmenu = wx.Menu(title='')
+ parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu)
+ AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE,
+ kind=wx.ITEM_NORMAL, text=u'Data Type')
+ AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION,
+ kind=wx.ITEM_NORMAL, text=u'Function')
+ AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK,
+ kind=wx.ITEM_NORMAL, text=u'Function Block')
+ AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM,
+ kind=wx.ITEM_NORMAL, text=u'Program')
+ AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION,
+ kind=wx.ITEM_NORMAL, text=u'Configuration')
+ AppendMenu(parent, help='', id=wx.ID_SELECTALL,
+ kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A')
+ AppendMenu(parent, help='', id=wx.ID_DELETE,
+ 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.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)
+ self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu,
+ id=ID_PLCOPENEDITOREDITMENUADDDATATYPE)
+ self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"),
+ id=ID_PLCOPENEDITOREDITMENUADDFUNCTION)
+ self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"),
+ id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK)
+ self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"),
+ id=ID_PLCOPENEDITOREDITMENUADDPROGRAM)
+ self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
+ id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
+ self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
+ self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
+
+ def _init_coll_DisplayMenu_Items(self, parent):
AppendMenu(parent, help='', id=wx.ID_REFRESH,
- kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R')
- if not self.Debug:
- if not self.ModeSolo:
- AppendMenu(parent, help='', id=wx.ID_CLEAR,
- kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K')
- AppendMenu(parent, help='', id=wx.ID_UNDO,
- 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')
- parent.AppendSeparator()
- AppendMenu(parent, help='', id=wx.ID_CUT,
- kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
- AppendMenu(parent, help='', id=wx.ID_COPY,
- kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
- AppendMenu(parent, help='', id=wx.ID_PASTE,
- kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
- parent.AppendSeparator()
- addmenu = wx.Menu(title='')
- parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu)
- AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE,
- kind=wx.ITEM_NORMAL, text=u'Data Type')
- AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION,
- kind=wx.ITEM_NORMAL, text=u'Function')
- AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK,
- kind=wx.ITEM_NORMAL, text=u'Function Block')
- AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM,
- kind=wx.ITEM_NORMAL, text=u'Program')
- AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION,
- kind=wx.ITEM_NORMAL, text=u'Configuration')
- AppendMenu(parent, help='', id=wx.ID_SELECTALL,
- kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A')
- AppendMenu(parent, help='', id=wx.ID_DELETE,
- kind=wx.ITEM_NORMAL, text=u'Delete')
+ kind=wx.ITEM_NORMAL, text=u'Refresh\tF5')
+ if not self.Debug and not self.ModeSolo:
+ AppendMenu(parent, help='', id=wx.ID_CLEAR,
+ kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K')
+ parent.AppendSeparator()
+ zoommenu = wx.Menu(title='')
+ parent.AppendMenu(wx.ID_ZOOM_FIT, "ZOOM", zoommenu)
+ for idx, value in enumerate(ZOOM_FACTORS):
+ new_id = wx.NewId()
+ AppendMenu(zoommenu, help='', id=new_id,
+ kind=wx.ITEM_RADIO, text=str(int(round(value * 100))) + "%")
+ self.Bind(wx.EVT_MENU, self.GenerateZoomFunction(idx), id=new_id)
self.Bind(wx.EVT_MENU, self.OnRefreshMenu, id=wx.ID_REFRESH)
- if not self.Debug:
- if not self.ModeSolo:
- self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR)
- 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.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)
- self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu,
- id=ID_PLCOPENEDITOREDITMENUADDDATATYPE)
- self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"),
- id=ID_PLCOPENEDITOREDITMENUADDFUNCTION)
- self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"),
- id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK)
- self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"),
- id=ID_PLCOPENEDITOREDITMENUADDPROGRAM)
- self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
- id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
- self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
- self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
+ if not self.Debug and not self.ModeSolo:
+ self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR)
def _init_coll_HelpMenu_Items(self, parent):
AppendMenu(parent, help='', id=wx.ID_HELP,
@@ -327,12 +337,16 @@
self.MenuBar = wx.MenuBar()
self.FileMenu = wx.Menu(title='')
- self.EditMenu = wx.Menu(title='')
+ if not self.Debug:
+ self.EditMenu = wx.Menu(title='')
+ self.DisplayMenu = wx.Menu(title='')
self.HelpMenu = wx.Menu(title='')
self._init_coll_MenuBar_Menus(self.MenuBar)
self._init_coll_FileMenu_Items(self.FileMenu)
- self._init_coll_EditMenu_Items(self.EditMenu)
+ if not self.Debug:
+ self._init_coll_EditMenu_Items(self.EditMenu)
+ self._init_coll_DisplayMenu_Items(self.DisplayMenu)
self._init_coll_HelpMenu_Items(self.HelpMenu)
def _init_coll_MainLibrarySizer_Items(self, parent):
@@ -622,6 +636,7 @@
self.RefreshFileMenu()
self.RefreshEditMenu()
+ self.RefreshDisplayMenu()
self.RefreshTitle()
self.RefreshToolBar()
@@ -643,6 +658,7 @@
self.RefreshTitle()
self.RefreshFileMenu()
self.RefreshEditMenu()
+ self.RefreshDisplayMenu()
self.RefreshToolBar()
event.Skip()
@@ -682,6 +698,7 @@
self.RefreshTitle()
self.RefreshFileMenu()
self.RefreshEditMenu()
+ self.RefreshDisplayMenu()
self.RefreshTypesTree()
self.RefreshScaling()
dialog.Destroy()
@@ -993,16 +1010,12 @@
#-------------------------------------------------------------------------------
-# Edit Project Menu Functions
+# Edit Menu Functions
#-------------------------------------------------------------------------------
def RefreshEditMenu(self):
- if self.Controler.HasOpenedProject():
- if self.TabsOpened.GetPageCount() > 0:
- self.EditMenu.Enable(wx.ID_REFRESH, True)
- else:
- self.EditMenu.Enable(wx.ID_REFRESH, False)
- if not self.Debug:
+ if not self.Debug:
+ if self.Controler.HasOpenedProject():
undo, redo = self.Controler.GetBufferState()
self.EditMenu.Enable(wx.ID_UNDO, undo)
self.EditMenu.Enable(wx.ID_REDO, redo)
@@ -1021,9 +1034,7 @@
self.EditMenu.Enable(wx.ID_COPY, False)
self.EditMenu.Enable(wx.ID_PASTE, False)
self.EditMenu.Enable(wx.ID_SELECTALL, False)
- else:
- self.EditMenu.Enable(wx.ID_REFRESH, False)
- if not self.Debug:
+ else:
self.EditMenu.Enable(wx.ID_UNDO, False)
self.EditMenu.Enable(wx.ID_REDO, False)
self.EditMenu.Enable(wx.ID_CUT, False)
@@ -1033,19 +1044,6 @@
self.EditMenu.Enable(wx.ID_ADD, False)
self.EditMenu.Enable(wx.ID_DELETE, False)
- def OnRefreshMenu(self, event):
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- window = self.TabsOpened.GetPage(selected)
- window.RefreshView()
- if not self.Debug:
- self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName())
- event.Skip()
-
- def OnClearErrorsMenu(self, event):
- self.ClearErrors()
- event.Skip()
-
def OnUndoMenu(self, event):
self.Controler.LoadPrevious()
idxs = range(self.TabsOpened.GetPageCount())
@@ -1193,6 +1191,58 @@
#-------------------------------------------------------------------------------
+# Display Menu Functions
+#-------------------------------------------------------------------------------
+
+ def RefreshDisplayMenu(self):
+ if self.Controler.HasOpenedProject():
+ if self.TabsOpened.GetPageCount() > 0:
+ self.DisplayMenu.Enable(wx.ID_REFRESH, True)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ window = self.TabsOpened.GetPage(selected)
+ if isinstance(window, Viewer):
+ self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, True)
+ zoommenu = self.DisplayMenu.FindItemById(wx.ID_ZOOM_FIT).GetSubMenu()
+ zoomitem = zoommenu.FindItemByPosition(window.GetScale())
+ zoomitem.Check(True)
+ else:
+ self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
+ else:
+ self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
+ else:
+ self.DisplayMenu.Enable(wx.ID_REFRESH, False)
+ self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
+ self.DisplayMenu.Enable(wx.ID_CLEAR, True)
+ else:
+ self.DisplayMenu.Enable(wx.ID_REFRESH, False)
+ self.DisplayMenu.Enable(wx.ID_CLEAR, False)
+ self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
+
+ def OnRefreshMenu(self, event):
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ window = self.TabsOpened.GetPage(selected)
+ window.RefreshView()
+ if not self.Debug:
+ self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName())
+ event.Skip()
+
+ def OnClearErrorsMenu(self, event):
+ self.ClearErrors()
+ event.Skip()
+
+ def GenerateZoomFunction(self, idx):
+ def ZoomFunction(event):
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ window = self.TabsOpened.GetPage(selected)
+ window.SetScale(idx)
+ event.Skip()
+ return ZoomFunction
+
+
+#-------------------------------------------------------------------------------
# Project Editor Panels Management Functions
#-------------------------------------------------------------------------------
@@ -1215,6 +1265,7 @@
self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName())
self.RefreshFileMenu()
self.RefreshEditMenu()
+ self.RefreshDisplayMenu()
self.RefreshToolBar()
event.Skip()
@@ -4214,9 +4265,14 @@
new_row["Class"] = self.DefaultTypes[self.Filter]
else:
new_row["Class"] = self.Filter
- self.Values.append(new_row)
+ if self.Filter == "All" and len(self.Values) > 0:
+ row_index = self.VariablesGrid.GetGridCursorRow() + 1
+ self.Values.insert(row_index, new_row)
+ else:
+ row_index = -1
+ self.Values.append(new_row)
self.SaveValues()
- self.RefreshValues()
+ self.RefreshValues(row_index)
self.RefreshButtons()
event.Skip()
@@ -4353,7 +4409,7 @@
self.RefreshValues()
self.VariablesGrid.SetGridCursor(new_index, self.VariablesGrid.GetGridCursorCol())
- def RefreshValues(self):
+ def RefreshValues(self, select=0):
if len(self.Table.data) > 0:
self.VariablesGrid.SetGridCursor(0, 1)
data = []
@@ -4362,6 +4418,11 @@
variable["Number"] = num + 1
data.append(variable)
self.Table.SetData(data)
+ if len(self.Table.data) > 0:
+ if select == -1:
+ select = len(self.Table.data) - 1
+ self.VariablesGrid.SetGridCursor(select, 1)
+ self.VariablesGrid.MakeCellVisible(select, 1)
self.Table.ResetView(self.VariablesGrid)
def SaveValues(self, buffer = True):