124 ID_OBJDICTEDITADDMENUMAPVARIABLE, ID_OBJDICTEDITADDMENUUSERTYPE, |
124 ID_OBJDICTEDITADDMENUMAPVARIABLE, ID_OBJDICTEDITADDMENUUSERTYPE, |
125 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)] |
125 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)] |
126 |
126 |
127 class objdictedit(wx.Frame): |
127 class objdictedit(wx.Frame): |
128 def _init_coll_MenuBar_Menus(self, parent): |
128 def _init_coll_MenuBar_Menus(self, parent): |
129 parent.Append(menu=self.FileMenu, title='File') |
129 if self.ModeSolo: |
|
130 parent.Append(menu=self.FileMenu, title='File') |
130 parent.Append(menu=self.EditMenu, title='Edit') |
131 parent.Append(menu=self.EditMenu, title='Edit') |
131 parent.Append(menu=self.AddMenu, title='Add') |
132 parent.Append(menu=self.AddMenu, title='Add') |
132 parent.Append(menu=self.HelpMenu, title='Help') |
133 parent.Append(menu=self.HelpMenu, title='Help') |
133 |
134 |
134 def _init_coll_FileMenu_Items(self, parent): |
135 def _init_coll_FileMenu_Items(self, parent): |
226 kind=wx.ITEM_NORMAL, text='DS-301 Standard\tF1') |
227 kind=wx.ITEM_NORMAL, text='DS-301 Standard\tF1') |
227 self.Bind(wx.EVT_MENU, self.OnHelpDS301Menu, id=wx.ID_HELP) |
228 self.Bind(wx.EVT_MENU, self.OnHelpDS301Menu, id=wx.ID_HELP) |
228 parent.Append(help='', id=wx.ID_HELP_CONTEXT, |
229 parent.Append(help='', id=wx.ID_HELP_CONTEXT, |
229 kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2') |
230 kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2') |
230 self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenu, id=wx.ID_HELP_CONTEXT) |
231 self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenu, id=wx.ID_HELP_CONTEXT) |
231 if Html_Window: |
232 if Html_Window and self.ModeSolo: |
232 parent.Append(help='', id=wx.ID_ABOUT, |
233 parent.Append(help='', id=wx.ID_ABOUT, |
233 kind=wx.ITEM_NORMAL, text='About') |
234 kind=wx.ITEM_NORMAL, text='About') |
234 self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT) |
235 self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT) |
235 |
236 |
236 def _init_coll_HelpBar_Fields(self, parent): |
237 def _init_coll_HelpBar_Fields(self, parent): |
244 |
245 |
245 def _init_utils(self): |
246 def _init_utils(self): |
246 self.MenuBar = wx.MenuBar() |
247 self.MenuBar = wx.MenuBar() |
247 self.MenuBar.SetEvtHandlerEnabled(True) |
248 self.MenuBar.SetEvtHandlerEnabled(True) |
248 |
249 |
249 self.FileMenu = wx.Menu(title='') |
250 if self.ModeSolo: |
|
251 self.FileMenu = wx.Menu(title='') |
250 self.EditMenu = wx.Menu(title='') |
252 self.EditMenu = wx.Menu(title='') |
251 self.AddMenu = wx.Menu(title='') |
253 self.AddMenu = wx.Menu(title='') |
252 self.HelpMenu = wx.Menu(title='') |
254 self.HelpMenu = wx.Menu(title='') |
253 |
255 |
254 self._init_coll_MenuBar_Menus(self.MenuBar) |
256 self._init_coll_MenuBar_Menus(self.MenuBar) |
255 self._init_coll_FileMenu_Items(self.FileMenu) |
257 if self.ModeSolo: |
|
258 self._init_coll_FileMenu_Items(self.FileMenu) |
256 self._init_coll_EditMenu_Items(self.EditMenu) |
259 self._init_coll_EditMenu_Items(self.EditMenu) |
257 self._init_coll_AddMenu_Items(self.AddMenu) |
260 self._init_coll_AddMenu_Items(self.AddMenu) |
258 self._init_coll_HelpMenu_Items(self.HelpMenu) |
261 self._init_coll_HelpMenu_Items(self.HelpMenu) |
259 |
262 |
260 def _init_ctrls(self, prnt): |
263 def _init_ctrls(self, prnt): |
263 style=wx.DEFAULT_FRAME_STYLE, title='Objdictedit') |
266 style=wx.DEFAULT_FRAME_STYLE, title='Objdictedit') |
264 self._init_utils() |
267 self._init_utils() |
265 self.SetClientSize(wx.Size(1000, 700)) |
268 self.SetClientSize(wx.Size(1000, 700)) |
266 self.SetMenuBar(self.MenuBar) |
269 self.SetMenuBar(self.MenuBar) |
267 self.Bind(wx.EVT_CLOSE, self.OnCloseFrame) |
270 self.Bind(wx.EVT_CLOSE, self.OnCloseFrame) |
|
271 if not self.ModeSolo: |
|
272 self.Bind(wx.EVT_MENU, self.OnSaveMenu, id=wx.ID_SAVE) |
|
273 accel = wx.AcceleratorTable([wx.AcceleratorEntry(wx.ACCEL_CTRL, 83, wx.ID_SAVE)]) |
|
274 self.SetAcceleratorTable(accel) |
268 |
275 |
269 self.FileOpened = wx.Notebook(id=ID_OBJDICTEDITFILEOPENED, |
276 self.FileOpened = wx.Notebook(id=ID_OBJDICTEDITFILEOPENED, |
270 name='FileOpened', parent=self, pos=wx.Point(0, 0), |
277 name='FileOpened', parent=self, pos=wx.Point(0, 0), |
271 size=wx.Size(0, 0), style=0) |
278 size=wx.Size(0, 0), style=0) |
272 self.FileOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
279 self.FileOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
275 self.HelpBar = wx.StatusBar(id=ID_OBJDICTEDITHELPBAR, name='HelpBar', |
282 self.HelpBar = wx.StatusBar(id=ID_OBJDICTEDITHELPBAR, name='HelpBar', |
276 parent=self, style=wx.ST_SIZEGRIP) |
283 parent=self, style=wx.ST_SIZEGRIP) |
277 self._init_coll_HelpBar_Fields(self.HelpBar) |
284 self._init_coll_HelpBar_Fields(self.HelpBar) |
278 self.SetStatusBar(self.HelpBar) |
285 self.SetStatusBar(self.HelpBar) |
279 |
286 |
280 def __init__(self, parent, filesOpen = []): |
287 def __init__(self, parent, manager = None, filesOpen = []): |
|
288 self.ModeSolo = manager == None |
281 self._init_ctrls(parent) |
289 self._init_ctrls(parent) |
282 self.HtmlFrameOpened = [] |
290 self.HtmlFrameOpened = [] |
283 self.ModeSolo = True |
291 self.BusId = None |
284 |
292 |
285 icon = wx.Icon(os.path.join(ScriptDirectory,"networkedit.ico"),wx.BITMAP_TYPE_ICO) |
293 icon = wx.Icon(os.path.join(ScriptDirectory,"networkedit.ico"),wx.BITMAP_TYPE_ICO) |
286 self.SetIcon(icon) |
294 self.SetIcon(icon) |
287 |
295 |
288 self.Manager = NodeManager() |
296 if self.ModeSolo: |
289 for filepath in filesOpen: |
297 self.Manager = NodeManager() |
290 result = self.Manager.OpenFileInCurrent(filepath) |
298 for filepath in filesOpen: |
291 if type(result) == IntType: |
299 result = self.Manager.OpenFileInCurrent(filepath) |
|
300 if type(result) == IntType: |
|
301 new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager) |
|
302 new_editingpanel.SetIndex(result) |
|
303 self.FileOpened.AddPage(new_editingpanel, "") |
|
304 else: |
|
305 self.Manager = manager |
|
306 for index in self.Manager.GetBufferIndexes(): |
292 new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager) |
307 new_editingpanel = EditingPanel(self.FileOpened, self, self.Manager) |
293 new_editingpanel.SetIndex(result) |
308 new_editingpanel.SetIndex(index) |
294 self.FileOpened.AddPage(new_editingpanel, "") |
309 self.FileOpened.AddPage(new_editingpanel, "") |
295 window = self.FileOpened.GetPage(0) |
310 |
296 if window: |
311 window = self.FileOpened.GetPage(0) |
297 self.Manager.ChangeCurrentNode(window.GetIndex()) |
312 if window: |
298 self.FileOpened.SetSelection(0) |
313 self.Manager.ChangeCurrentNode(window.GetIndex()) |
|
314 self.FileOpened.SetSelection(0) |
|
315 |
299 if self.Manager.CurrentDS302Defined(): |
316 if self.Manager.CurrentDS302Defined(): |
300 self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, True) |
317 self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, True) |
301 else: |
318 else: |
302 self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, False) |
319 self.EditMenu.Enable(ID_OBJDICTEDITEDITMENUDS302PROFILE, False) |
303 self.RefreshEditMenu() |
320 self.RefreshEditMenu() |
304 self.RefreshBufferState() |
321 self.RefreshBufferState() |
305 self.RefreshProfileMenu() |
322 self.RefreshProfileMenu() |
306 self.RefreshTitle() |
323 self.RefreshTitle() |
307 self.RefreshMainMenu() |
324 self.RefreshMainMenu() |
|
325 |
|
326 def SetBusId(self, bus_id): |
|
327 self.BusId = bus_id |
|
328 |
|
329 def GetBusId(self): |
|
330 return self.BusId |
308 |
331 |
309 def OnAddSDOServerMenu(self, event): |
332 def OnAddSDOServerMenu(self, event): |
310 self.Manager.AddSDOServerToCurrent() |
333 self.Manager.AddSDOServerToCurrent() |
311 self.RefreshBufferState() |
334 self.RefreshBufferState() |
312 self.RefreshCurrentIndexList() |
335 self.RefreshCurrentIndexList() |
399 def OnQuitMenu(self, event): |
422 def OnQuitMenu(self, event): |
400 self.Close() |
423 self.Close() |
401 event.Skip() |
424 event.Skip() |
402 |
425 |
403 def OnCloseFrame(self, event): |
426 def OnCloseFrame(self, event): |
404 if self.Manager.OneFileHasChanged(): |
427 if not self.ModeSolo: |
|
428 if getattr(self, "_onclose", None) != None: |
|
429 self._onclose() |
|
430 event.Skip() |
|
431 elif self.Manager.OneFileHasChanged(): |
405 dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
432 dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
406 answer = dialog.ShowModal() |
433 answer = dialog.ShowModal() |
407 dialog.Destroy() |
434 dialog.Destroy() |
408 if answer == wx.ID_YES: |
435 if answer == wx.ID_YES: |
409 self.Manager.ChangeCurrentNode(0) |
436 self.Manager.ChangeCurrentNode(0) |
475 else: |
502 else: |
476 for i in xrange(3): |
503 for i in xrange(3): |
477 self.HelpBar.SetStatusText("", i) |
504 self.HelpBar.SetStatusText("", i) |
478 |
505 |
479 def RefreshMainMenu(self): |
506 def RefreshMainMenu(self): |
480 if self.FileMenu: |
507 if self: |
481 if self.FileOpened.GetPageCount() > 0: |
508 if self.FileOpened.GetPageCount() > 0: |
482 self.MenuBar.EnableTop(1, True) |
509 if self.ModeSolo: |
483 self.MenuBar.EnableTop(2, True) |
510 self.MenuBar.EnableTop(1, True) |
484 self.FileMenu.Enable(wx.ID_CLOSE, True) |
511 self.MenuBar.EnableTop(2, True) |
485 self.FileMenu.Enable(wx.ID_SAVE, True) |
512 if self.FileMenu: |
486 self.FileMenu.Enable(wx.ID_SAVEAS, True) |
513 self.FileMenu.Enable(wx.ID_CLOSE, True) |
487 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True) |
514 self.FileMenu.Enable(wx.ID_SAVE, True) |
488 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True) |
515 self.FileMenu.Enable(wx.ID_SAVEAS, True) |
|
516 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True) |
|
517 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True) |
|
518 else: |
|
519 self.MenuBar.EnableTop(0, True) |
|
520 self.MenuBar.EnableTop(1, True) |
489 else: |
521 else: |
490 self.MenuBar.EnableTop(1, False) |
522 if self.ModeSolo: |
491 self.MenuBar.EnableTop(2, False) |
523 self.MenuBar.EnableTop(1, False) |
492 self.FileMenu.Enable(wx.ID_CLOSE, False) |
524 self.MenuBar.EnableTop(2, False) |
493 self.FileMenu.Enable(wx.ID_SAVE, False) |
525 if self.FileMenu: |
494 self.FileMenu.Enable(wx.ID_SAVEAS, False) |
526 self.FileMenu.Enable(wx.ID_CLOSE, False) |
495 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False) |
527 self.FileMenu.Enable(wx.ID_SAVE, False) |
496 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False) |
528 self.FileMenu.Enable(wx.ID_SAVEAS, False) |
|
529 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False) |
|
530 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False) |
|
531 else: |
|
532 self.MenuBar.EnableTop(0, False) |
|
533 self.MenuBar.EnableTop(1, False) |
497 |
534 |
498 def RefreshEditMenu(self): |
535 def RefreshEditMenu(self): |
499 if self.EditMenu: |
536 if self.EditMenu: |
500 if self.FileOpened.GetPageCount() > 0: |
537 if self.FileOpened.GetPageCount() > 0: |
501 undo, redo = self.Manager.GetCurrentBufferState() |
538 undo, redo = self.Manager.GetCurrentBufferState() |