251 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT) |
253 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT) |
252 else: |
254 else: |
253 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_STOP) |
255 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_STOP) |
254 |
256 |
255 def _init_coll_EditMenu_Items(self, parent): |
257 def _init_coll_EditMenu_Items(self, parent): |
|
258 AppendMenu(parent, help='', id=wx.ID_UNDO, |
|
259 kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z') |
|
260 AppendMenu(parent, help='', id=wx.ID_REDO, |
|
261 kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y') |
|
262 parent.AppendSeparator() |
|
263 AppendMenu(parent, help='', id=wx.ID_CUT, |
|
264 kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X') |
|
265 AppendMenu(parent, help='', id=wx.ID_COPY, |
|
266 kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C') |
|
267 AppendMenu(parent, help='', id=wx.ID_PASTE, |
|
268 kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V') |
|
269 parent.AppendSeparator() |
|
270 addmenu = wx.Menu(title='') |
|
271 parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu) |
|
272 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
|
273 kind=wx.ITEM_NORMAL, text=u'Data Type') |
|
274 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION, |
|
275 kind=wx.ITEM_NORMAL, text=u'Function') |
|
276 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, |
|
277 kind=wx.ITEM_NORMAL, text=u'Function Block') |
|
278 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM, |
|
279 kind=wx.ITEM_NORMAL, text=u'Program') |
|
280 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, |
|
281 kind=wx.ITEM_NORMAL, text=u'Configuration') |
|
282 AppendMenu(parent, help='', id=wx.ID_SELECTALL, |
|
283 kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A') |
|
284 AppendMenu(parent, help='', id=wx.ID_DELETE, |
|
285 kind=wx.ITEM_NORMAL, text=u'Delete') |
|
286 self.Bind(wx.EVT_MENU, self.OnUndoMenu, id=wx.ID_UNDO) |
|
287 self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO) |
|
288 self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT) |
|
289 self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY) |
|
290 self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE) |
|
291 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, |
|
292 id=ID_PLCOPENEDITOREDITMENUADDDATATYPE) |
|
293 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"), |
|
294 id=ID_PLCOPENEDITOREDITMENUADDFUNCTION) |
|
295 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"), |
|
296 id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK) |
|
297 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"), |
|
298 id=ID_PLCOPENEDITOREDITMENUADDPROGRAM) |
|
299 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, |
|
300 id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION) |
|
301 self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL) |
|
302 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE) |
|
303 |
|
304 def _init_coll_DisplayMenu_Items(self, parent): |
256 AppendMenu(parent, help='', id=wx.ID_REFRESH, |
305 AppendMenu(parent, help='', id=wx.ID_REFRESH, |
257 kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R') |
306 kind=wx.ITEM_NORMAL, text=u'Refresh\tF5') |
258 if not self.Debug: |
307 if not self.Debug and not self.ModeSolo: |
259 if not self.ModeSolo: |
308 AppendMenu(parent, help='', id=wx.ID_CLEAR, |
260 AppendMenu(parent, help='', id=wx.ID_CLEAR, |
309 kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K') |
261 kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K') |
310 parent.AppendSeparator() |
262 AppendMenu(parent, help='', id=wx.ID_UNDO, |
311 zoommenu = wx.Menu(title='') |
263 kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z') |
312 parent.AppendMenu(wx.ID_ZOOM_FIT, "ZOOM", zoommenu) |
264 AppendMenu(parent, help='', id=wx.ID_REDO, |
313 for idx, value in enumerate(ZOOM_FACTORS): |
265 kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y') |
314 new_id = wx.NewId() |
266 parent.AppendSeparator() |
315 AppendMenu(zoommenu, help='', id=new_id, |
267 AppendMenu(parent, help='', id=wx.ID_CUT, |
316 kind=wx.ITEM_RADIO, text=str(int(round(value * 100))) + "%") |
268 kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X') |
317 self.Bind(wx.EVT_MENU, self.GenerateZoomFunction(idx), id=new_id) |
269 AppendMenu(parent, help='', id=wx.ID_COPY, |
|
270 kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C') |
|
271 AppendMenu(parent, help='', id=wx.ID_PASTE, |
|
272 kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V') |
|
273 parent.AppendSeparator() |
|
274 addmenu = wx.Menu(title='') |
|
275 parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu) |
|
276 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
|
277 kind=wx.ITEM_NORMAL, text=u'Data Type') |
|
278 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION, |
|
279 kind=wx.ITEM_NORMAL, text=u'Function') |
|
280 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, |
|
281 kind=wx.ITEM_NORMAL, text=u'Function Block') |
|
282 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM, |
|
283 kind=wx.ITEM_NORMAL, text=u'Program') |
|
284 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, |
|
285 kind=wx.ITEM_NORMAL, text=u'Configuration') |
|
286 AppendMenu(parent, help='', id=wx.ID_SELECTALL, |
|
287 kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A') |
|
288 AppendMenu(parent, help='', id=wx.ID_DELETE, |
|
289 kind=wx.ITEM_NORMAL, text=u'Delete') |
|
290 self.Bind(wx.EVT_MENU, self.OnRefreshMenu, id=wx.ID_REFRESH) |
318 self.Bind(wx.EVT_MENU, self.OnRefreshMenu, id=wx.ID_REFRESH) |
291 if not self.Debug: |
319 if not self.Debug and not self.ModeSolo: |
292 if not self.ModeSolo: |
320 self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR) |
293 self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR) |
|
294 self.Bind(wx.EVT_MENU, self.OnUndoMenu, id=wx.ID_UNDO) |
|
295 self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO) |
|
296 self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT) |
|
297 self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY) |
|
298 self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE) |
|
299 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, |
|
300 id=ID_PLCOPENEDITOREDITMENUADDDATATYPE) |
|
301 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"), |
|
302 id=ID_PLCOPENEDITOREDITMENUADDFUNCTION) |
|
303 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"), |
|
304 id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK) |
|
305 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"), |
|
306 id=ID_PLCOPENEDITOREDITMENUADDPROGRAM) |
|
307 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, |
|
308 id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION) |
|
309 self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL) |
|
310 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE) |
|
311 |
321 |
312 def _init_coll_HelpMenu_Items(self, parent): |
322 def _init_coll_HelpMenu_Items(self, parent): |
313 AppendMenu(parent, help='', id=wx.ID_HELP, |
323 AppendMenu(parent, help='', id=wx.ID_HELP, |
314 kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1') |
324 kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1') |
315 #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS, |
325 #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS, |
1019 else: |
1032 else: |
1020 self.EditMenu.Enable(wx.ID_CUT, False) |
1033 self.EditMenu.Enable(wx.ID_CUT, False) |
1021 self.EditMenu.Enable(wx.ID_COPY, False) |
1034 self.EditMenu.Enable(wx.ID_COPY, False) |
1022 self.EditMenu.Enable(wx.ID_PASTE, False) |
1035 self.EditMenu.Enable(wx.ID_PASTE, False) |
1023 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
1036 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
1024 else: |
1037 else: |
1025 self.EditMenu.Enable(wx.ID_REFRESH, False) |
|
1026 if not self.Debug: |
|
1027 self.EditMenu.Enable(wx.ID_UNDO, False) |
1038 self.EditMenu.Enable(wx.ID_UNDO, False) |
1028 self.EditMenu.Enable(wx.ID_REDO, False) |
1039 self.EditMenu.Enable(wx.ID_REDO, False) |
1029 self.EditMenu.Enable(wx.ID_CUT, False) |
1040 self.EditMenu.Enable(wx.ID_CUT, False) |
1030 self.EditMenu.Enable(wx.ID_COPY, False) |
1041 self.EditMenu.Enable(wx.ID_COPY, False) |
1031 self.EditMenu.Enable(wx.ID_PASTE, False) |
1042 self.EditMenu.Enable(wx.ID_PASTE, False) |
1032 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
1043 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
1033 self.EditMenu.Enable(wx.ID_ADD, False) |
1044 self.EditMenu.Enable(wx.ID_ADD, False) |
1034 self.EditMenu.Enable(wx.ID_DELETE, False) |
1045 self.EditMenu.Enable(wx.ID_DELETE, False) |
1035 |
1046 |
1036 def OnRefreshMenu(self, event): |
|
1037 selected = self.TabsOpened.GetSelection() |
|
1038 if selected != -1: |
|
1039 window = self.TabsOpened.GetPage(selected) |
|
1040 window.RefreshView() |
|
1041 if not self.Debug: |
|
1042 self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName()) |
|
1043 event.Skip() |
|
1044 |
|
1045 def OnClearErrorsMenu(self, event): |
|
1046 self.ClearErrors() |
|
1047 event.Skip() |
|
1048 |
|
1049 def OnUndoMenu(self, event): |
1047 def OnUndoMenu(self, event): |
1050 self.Controler.LoadPrevious() |
1048 self.Controler.LoadPrevious() |
1051 idxs = range(self.TabsOpened.GetPageCount()) |
1049 idxs = range(self.TabsOpened.GetPageCount()) |
1052 idxs.reverse() |
1050 idxs.reverse() |
1053 for idx in idxs: |
1051 for idx in idxs: |
1191 window.ProcessEvent(event) |
1189 window.ProcessEvent(event) |
1192 event.Skip() |
1190 event.Skip() |
1193 |
1191 |
1194 |
1192 |
1195 #------------------------------------------------------------------------------- |
1193 #------------------------------------------------------------------------------- |
|
1194 # Display Menu Functions |
|
1195 #------------------------------------------------------------------------------- |
|
1196 |
|
1197 def RefreshDisplayMenu(self): |
|
1198 if self.Controler.HasOpenedProject(): |
|
1199 if self.TabsOpened.GetPageCount() > 0: |
|
1200 self.DisplayMenu.Enable(wx.ID_REFRESH, True) |
|
1201 selected = self.TabsOpened.GetSelection() |
|
1202 if selected != -1: |
|
1203 window = self.TabsOpened.GetPage(selected) |
|
1204 if isinstance(window, Viewer): |
|
1205 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, True) |
|
1206 zoommenu = self.DisplayMenu.FindItemById(wx.ID_ZOOM_FIT).GetSubMenu() |
|
1207 zoomitem = zoommenu.FindItemByPosition(window.GetScale()) |
|
1208 zoomitem.Check(True) |
|
1209 else: |
|
1210 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False) |
|
1211 else: |
|
1212 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False) |
|
1213 else: |
|
1214 self.DisplayMenu.Enable(wx.ID_REFRESH, False) |
|
1215 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False) |
|
1216 self.DisplayMenu.Enable(wx.ID_CLEAR, True) |
|
1217 else: |
|
1218 self.DisplayMenu.Enable(wx.ID_REFRESH, False) |
|
1219 self.DisplayMenu.Enable(wx.ID_CLEAR, False) |
|
1220 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False) |
|
1221 |
|
1222 def OnRefreshMenu(self, event): |
|
1223 selected = self.TabsOpened.GetSelection() |
|
1224 if selected != -1: |
|
1225 window = self.TabsOpened.GetPage(selected) |
|
1226 window.RefreshView() |
|
1227 if not self.Debug: |
|
1228 self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName()) |
|
1229 event.Skip() |
|
1230 |
|
1231 def OnClearErrorsMenu(self, event): |
|
1232 self.ClearErrors() |
|
1233 event.Skip() |
|
1234 |
|
1235 def GenerateZoomFunction(self, idx): |
|
1236 def ZoomFunction(event): |
|
1237 selected = self.TabsOpened.GetSelection() |
|
1238 if selected != -1: |
|
1239 window = self.TabsOpened.GetPage(selected) |
|
1240 window.SetScale(idx) |
|
1241 event.Skip() |
|
1242 return ZoomFunction |
|
1243 |
|
1244 |
|
1245 #------------------------------------------------------------------------------- |
1196 # Project Editor Panels Management Functions |
1246 # Project Editor Panels Management Functions |
1197 #------------------------------------------------------------------------------- |
1247 #------------------------------------------------------------------------------- |
1198 |
1248 |
1199 def OnPouSelectedChanged(self, event): |
1249 def OnPouSelectedChanged(self, event): |
1200 old_selected = self.TabsOpened.GetSelection() |
1250 old_selected = self.TabsOpened.GetSelection() |