422 def OnQuitMenu(self, event): |
428 def OnQuitMenu(self, event): |
423 self.Close() |
429 self.Close() |
424 event.Skip() |
430 event.Skip() |
425 |
431 |
426 def OnCloseFrame(self, event): |
432 def OnCloseFrame(self, event): |
|
433 self.Closing = True |
427 if not self.ModeSolo: |
434 if not self.ModeSolo: |
428 if getattr(self, "_onclose", None) != None: |
435 if getattr(self, "_onclose", None) != None: |
429 self._onclose() |
436 self._onclose() |
430 event.Skip() |
437 event.Skip() |
431 elif self.Manager.OneFileHasChanged(): |
438 elif self.Manager.OneFileHasChanged(): |
432 dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
439 dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
433 answer = dialog.ShowModal() |
440 answer = dialog.ShowModal() |
434 dialog.Destroy() |
441 dialog.Destroy() |
435 if answer == wx.ID_YES: |
442 if answer == wx.ID_YES: |
436 self.Manager.ChangeCurrentNode(0) |
443 for i in xrange(self.Manager.GetBufferNumber()): |
437 for i in xrange(self.FileOpened.GetPageCount()): |
|
438 window = self.FileOpened.GetPage(i) |
|
439 self.Manager.ChangeCurrentNode(window.GetIndex()) |
|
440 if self.Manager.CurrentIsSaved(): |
444 if self.Manager.CurrentIsSaved(): |
441 self.Manager.CloseCurrent() |
445 self.Manager.CloseCurrent() |
442 else: |
446 else: |
443 self.Save() |
447 self.Save() |
444 self.Manager.CloseCurrent(True) |
448 self.Manager.CloseCurrent(True) |
445 event.Skip() |
449 event.Skip() |
446 elif answer == wx.ID_NO: |
450 elif answer == wx.ID_NO: |
447 for i in xrange(self.FileOpened.GetPageCount()): |
|
448 self.Manager.CloseCurrent(True) |
|
449 wx.CallAfter(self.Close) |
|
450 event.Skip() |
451 event.Skip() |
|
452 else: |
|
453 event.Veto() |
451 else: |
454 else: |
452 event.Skip() |
455 event.Skip() |
453 |
456 |
454 #------------------------------------------------------------------------------- |
457 #------------------------------------------------------------------------------- |
455 # Refresh Functions |
458 # Refresh Functions |
469 selected = self.FileOpened.GetSelection() |
472 selected = self.FileOpened.GetSelection() |
470 window = self.FileOpened.GetPage(selected) |
473 window = self.FileOpened.GetPage(selected) |
471 window.RefreshIndexList() |
474 window.RefreshIndexList() |
472 |
475 |
473 def RefreshStatusBar(self): |
476 def RefreshStatusBar(self): |
474 if self and self.HelpBar: |
477 selected = self.FileOpened.GetSelection() |
475 selected = self.FileOpened.GetSelection() |
478 if selected >= 0: |
476 if selected >= 0: |
479 window = self.FileOpened.GetPage(selected) |
477 window = self.FileOpened.GetPage(selected) |
480 selection = window.GetSelection() |
478 selection = window.GetSelection() |
481 if selection: |
479 if selection: |
482 index, subIndex = selection |
480 index, subIndex = selection |
483 if self.Manager.IsCurrentEntry(index): |
481 if self.Manager.IsCurrentEntry(index): |
484 self.HelpBar.SetStatusText("Index: 0x%04X"%index, 0) |
482 self.HelpBar.SetStatusText("Index: 0x%04X"%index, 0) |
485 self.HelpBar.SetStatusText("Subindex: 0x%02X"%subIndex, 1) |
483 self.HelpBar.SetStatusText("Subindex: 0x%02X"%subIndex, 1) |
486 entryinfos = self.Manager.GetEntryInfos(index) |
484 entryinfos = self.Manager.GetEntryInfos(index) |
487 name = entryinfos["name"] |
485 name = entryinfos["name"] |
488 category = "Optional" |
486 category = "Optional" |
489 if entryinfos["need"]: |
487 if entryinfos["need"]: |
490 category = "Mandatory" |
488 category = "Mandatory" |
491 struct = "VAR" |
489 struct = "VAR" |
492 number = "" |
490 number = "" |
493 if entryinfos["struct"] & OD_IdenticalIndexes: |
491 if entryinfos["struct"] & OD_IdenticalIndexes: |
494 number = " possibly defined %d times"%entryinfos["nbmax"] |
492 number = " possibly defined %d times"%entryinfos["nbmax"] |
495 if entryinfos["struct"] & OD_IdenticalSubindexes: |
493 if entryinfos["struct"] & OD_IdenticalSubindexes: |
496 struct = "REC" |
494 struct = "REC" |
497 elif entryinfos["struct"] & OD_MultipleSubindexes: |
495 elif entryinfos["struct"] & OD_MultipleSubindexes: |
498 struct = "ARRAY" |
496 struct = "ARRAY" |
499 text = "%s: %s entry of struct %s%s."%(name,category,struct,number) |
497 text = "%s: %s entry of struct %s%s."%(name,category,struct,number) |
500 self.HelpBar.SetStatusText(text, 2) |
498 self.HelpBar.SetStatusText(text, 2) |
|
499 else: |
|
500 for i in xrange(3): |
|
501 self.HelpBar.SetStatusText("", i) |
|
502 else: |
501 else: |
503 for i in xrange(3): |
502 for i in xrange(3): |
504 self.HelpBar.SetStatusText("", i) |
503 self.HelpBar.SetStatusText("", i) |
|
504 else: |
|
505 for i in xrange(3): |
|
506 self.HelpBar.SetStatusText("", i) |
505 |
507 |
506 def RefreshMainMenu(self): |
508 def RefreshMainMenu(self): |
507 if self: |
509 if self.FileOpened.GetPageCount() > 0: |
508 if self.FileOpened.GetPageCount() > 0: |
510 if self.ModeSolo: |
509 if self.ModeSolo: |
511 self.MenuBar.EnableTop(1, True) |
510 self.MenuBar.EnableTop(1, True) |
512 self.MenuBar.EnableTop(2, True) |
511 self.MenuBar.EnableTop(2, True) |
513 self.FileMenu.Enable(wx.ID_CLOSE, True) |
512 if self.FileMenu: |
514 self.FileMenu.Enable(wx.ID_SAVE, True) |
513 self.FileMenu.Enable(wx.ID_CLOSE, True) |
515 self.FileMenu.Enable(wx.ID_SAVEAS, True) |
514 self.FileMenu.Enable(wx.ID_SAVE, True) |
516 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True) |
515 self.FileMenu.Enable(wx.ID_SAVEAS, True) |
517 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True) |
516 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, True) |
518 else: |
517 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, True) |
519 self.MenuBar.EnableTop(0, True) |
518 else: |
520 self.MenuBar.EnableTop(1, True) |
519 self.MenuBar.EnableTop(0, True) |
521 else: |
520 self.MenuBar.EnableTop(1, True) |
522 if self.ModeSolo: |
521 else: |
523 self.MenuBar.EnableTop(1, False) |
522 if self.ModeSolo: |
524 self.MenuBar.EnableTop(2, False) |
523 self.MenuBar.EnableTop(1, False) |
525 self.FileMenu.Enable(wx.ID_CLOSE, False) |
524 self.MenuBar.EnableTop(2, False) |
526 self.FileMenu.Enable(wx.ID_SAVE, False) |
525 if self.FileMenu: |
527 self.FileMenu.Enable(wx.ID_SAVEAS, False) |
526 self.FileMenu.Enable(wx.ID_CLOSE, False) |
528 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False) |
527 self.FileMenu.Enable(wx.ID_SAVE, False) |
529 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False) |
528 self.FileMenu.Enable(wx.ID_SAVEAS, False) |
530 else: |
529 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTEDS, False) |
531 self.MenuBar.EnableTop(0, False) |
530 self.FileMenu.Enable(ID_OBJDICTEDITFILEMENUEXPORTC, False) |
532 self.MenuBar.EnableTop(1, False) |
531 else: |
|
532 self.MenuBar.EnableTop(0, False) |
|
533 self.MenuBar.EnableTop(1, False) |
|
534 |
533 |
535 def RefreshEditMenu(self): |
534 def RefreshEditMenu(self): |
536 if self.EditMenu: |
535 if self.FileOpened.GetPageCount() > 0: |
537 if self.FileOpened.GetPageCount() > 0: |
536 undo, redo = self.Manager.GetCurrentBufferState() |
538 undo, redo = self.Manager.GetCurrentBufferState() |
537 self.EditMenu.Enable(wx.ID_UNDO, undo) |
539 self.EditMenu.Enable(wx.ID_UNDO, undo) |
538 self.EditMenu.Enable(wx.ID_REDO, redo) |
540 self.EditMenu.Enable(wx.ID_REDO, redo) |
539 else: |
541 else: |
540 self.EditMenu.Enable(wx.ID_UNDO, False) |
542 self.EditMenu.Enable(wx.ID_UNDO, False) |
541 self.EditMenu.Enable(wx.ID_REDO, False) |
543 self.EditMenu.Enable(wx.ID_REDO, False) |
|
544 |
542 |
545 def RefreshProfileMenu(self): |
543 def RefreshProfileMenu(self): |
546 if self.EditMenu: |
544 profile = self.Manager.GetCurrentProfileName() |
547 profile = self.Manager.GetCurrentProfileName() |
545 edititem = self.EditMenu.FindItemById(ID_OBJDICTEDITEDITMENUOTHERPROFILE) |
548 edititem = self.EditMenu.FindItemById(ID_OBJDICTEDITEDITMENUOTHERPROFILE) |
546 if edititem: |
549 if edititem: |
547 length = self.AddMenu.GetMenuItemCount() |
550 length = self.AddMenu.GetMenuItemCount() |
548 for i in xrange(length-6): |
551 for i in xrange(length-6): |
549 additem = self.AddMenu.FindItemByPosition(6) |
552 additem = self.AddMenu.FindItemByPosition(6) |
550 self.AddMenu.Delete(additem.GetId()) |
553 self.AddMenu.Delete(additem.GetId()) |
551 if profile not in ("None", "DS-301"): |
554 if profile not in ("None", "DS-301"): |
552 edititem.SetText("%s Profile"%profile) |
555 edititem.SetText("%s Profile"%profile) |
553 edititem.Enable(True) |
556 edititem.Enable(True) |
554 self.AddMenu.AppendSeparator() |
557 self.AddMenu.AppendSeparator() |
555 for text, indexes in self.Manager.GetCurrentSpecificMenu(): |
558 for text, indexes in self.Manager.GetCurrentSpecificMenu(): |
556 new_id = wx.NewId() |
559 new_id = wx.NewId() |
557 self.AddMenu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=text) |
560 self.AddMenu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=text) |
558 self.Bind(wx.EVT_MENU, self.GetProfileCallBack(text), id=new_id) |
561 self.Bind(wx.EVT_MENU, self.GetProfileCallBack(text), id=new_id) |
559 else: |
562 else: |
560 edititem.SetText("Other Profile") |
563 edititem.SetText("Other Profile") |
561 edititem.Enable(False) |
564 edititem.Enable(False) |
|
565 |
562 |
566 |
563 |
567 #------------------------------------------------------------------------------- |
564 #------------------------------------------------------------------------------- |
568 # Buffer Functions |
565 # Buffer Functions |
569 #------------------------------------------------------------------------------- |
566 #------------------------------------------------------------------------------- |