396 self._onsave() |
396 self._onsave() |
397 event.Skip() |
397 event.Skip() |
398 |
398 |
399 def OnQuitMenu(self, event): |
399 def OnQuitMenu(self, event): |
400 self.Close() |
400 self.Close() |
401 event.Skip() |
401 |
402 |
|
403 def OnAddSDOServerMenu(self, event): |
402 def OnAddSDOServerMenu(self, event): |
404 self.Manager.AddSDOServerToCurrent() |
403 self.Manager.AddSDOServerToCurrent() |
405 self.RefreshBufferState() |
404 self.RefreshBufferState() |
406 self.RefreshCurrentIndexList() |
405 self.RefreshCurrentIndexList() |
407 event.Skip() |
406 |
408 |
|
409 def OnAddSDOClientMenu(self, event): |
407 def OnAddSDOClientMenu(self, event): |
410 self.Manager.AddSDOClientToCurrent() |
408 self.Manager.AddSDOClientToCurrent() |
411 self.RefreshBufferState() |
409 self.RefreshBufferState() |
412 self.RefreshCurrentIndexList() |
410 self.RefreshCurrentIndexList() |
413 event.Skip() |
411 |
414 |
|
415 def OnAddPDOTransmitMenu(self, event): |
412 def OnAddPDOTransmitMenu(self, event): |
416 self.Manager.AddPDOTransmitToCurrent() |
413 self.Manager.AddPDOTransmitToCurrent() |
417 self.RefreshBufferState() |
414 self.RefreshBufferState() |
418 self.RefreshCurrentIndexList() |
415 self.RefreshCurrentIndexList() |
419 event.Skip() |
416 |
420 |
|
421 def OnAddPDOReceiveMenu(self, event): |
417 def OnAddPDOReceiveMenu(self, event): |
422 self.Manager.AddPDOReceiveToCurrent() |
418 self.Manager.AddPDOReceiveToCurrent() |
423 self.RefreshBufferState() |
419 self.RefreshBufferState() |
424 self.RefreshCurrentIndexList() |
420 self.RefreshCurrentIndexList() |
425 event.Skip() |
421 |
426 |
|
427 def OnAddMapVariableMenu(self, event): |
422 def OnAddMapVariableMenu(self, event): |
428 self.AddMapVariable() |
423 self.AddMapVariable() |
429 event.Skip() |
424 |
430 |
|
431 def OnAddUserTypeMenu(self, event): |
425 def OnAddUserTypeMenu(self, event): |
432 self.AddUserType() |
426 self.AddUserType() |
433 event.Skip() |
427 |
434 |
|
435 def OnNodeSelectedChanged(self, event): |
428 def OnNodeSelectedChanged(self, event): |
436 if not self.Closing: |
429 if not self.Closing: |
437 selected = event.GetSelection() |
430 selected = event.GetSelection() |
438 # At init selected = -1 |
431 # At init selected = -1 |
439 if selected >= 0: |
432 if selected >= 0: |
471 self.RefreshMainMenu() |
464 self.RefreshMainMenu() |
472 else: |
465 else: |
473 message = wx.MessageDialog(self, result, _("ERROR"), wx.OK|wx.ICON_ERROR) |
466 message = wx.MessageDialog(self, result, _("ERROR"), wx.OK|wx.ICON_ERROR) |
474 message.ShowModal() |
467 message.ShowModal() |
475 message.Destroy() |
468 message.Destroy() |
476 event.Skip() |
469 |
477 |
|
478 def OnOpenProjectMenu(self, event): |
470 def OnOpenProjectMenu(self, event): |
479 if self.NodeList: |
471 if self.NodeList: |
480 defaultpath = os.path.dirname(self.NodeList.GetRoot()) |
472 defaultpath = os.path.dirname(self.NodeList.GetRoot()) |
481 else: |
473 else: |
482 defaultpath = os.getcwd() |
474 defaultpath = os.getcwd() |
500 else: |
492 else: |
501 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
493 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
502 message.ShowModal() |
494 message.ShowModal() |
503 message.Destroy() |
495 message.Destroy() |
504 dialog.Destroy() |
496 dialog.Destroy() |
505 event.Skip() |
497 |
506 |
|
507 def OnSaveProjectMenu(self, event): |
498 def OnSaveProjectMenu(self, event): |
508 if not self.ModeSolo and getattr(self, "_onsave", None) != None: |
499 if not self.ModeSolo and getattr(self, "_onsave", None) != None: |
509 self._onsave() |
500 self._onsave() |
510 else: |
501 else: |
511 result = self.NodeList.SaveProject() |
502 result = self.NodeList.SaveProject() |
512 if result: |
503 if result: |
513 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
504 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
514 message.ShowModal() |
505 message.ShowModal() |
515 message.Destroy() |
506 message.Destroy() |
516 event.Skip() |
507 |
517 |
|
518 def OnCloseProjectMenu(self, event): |
508 def OnCloseProjectMenu(self, event): |
519 if self.NodeList: |
509 if self.NodeList: |
520 if self.NodeList.HasChanged(): |
510 if self.NodeList.HasChanged(): |
521 dialog = wx.MessageDialog(self, _("There are changes, do you want to save?"), _("Close Project"), wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
511 dialog = wx.MessageDialog(self, _("There are changes, do you want to save?"), _("Close Project"), wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION) |
522 answer = dialog.ShowModal() |
512 answer = dialog.ShowModal() |
533 self.Manager = None |
523 self.Manager = None |
534 self.NodeList = None |
524 self.NodeList = None |
535 self.RefreshNetworkNodes() |
525 self.RefreshNetworkNodes() |
536 self.RefreshTitle() |
526 self.RefreshTitle() |
537 self.RefreshMainMenu() |
527 self.RefreshMainMenu() |
538 event.Skip() |
528 |
539 |
|
540 #------------------------------------------------------------------------------- |
529 #------------------------------------------------------------------------------- |
541 # Slave Nodes Management |
530 # Slave Nodes Management |
542 #------------------------------------------------------------------------------- |
531 #------------------------------------------------------------------------------- |
543 |
532 |
544 def OnAddSlaveMenu(self, event): |
533 def OnAddSlaveMenu(self, event): |
558 else: |
547 else: |
559 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
548 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
560 message.ShowModal() |
549 message.ShowModal() |
561 message.Destroy() |
550 message.Destroy() |
562 dialog.Destroy() |
551 dialog.Destroy() |
563 event.Skip() |
552 |
564 |
|
565 def OnRemoveSlaveMenu(self, event): |
553 def OnRemoveSlaveMenu(self, event): |
566 slavenames = self.NodeList.GetSlaveNames() |
554 slavenames = self.NodeList.GetSlaveNames() |
567 slaveids = self.NodeList.GetSlaveIDs() |
555 slaveids = self.NodeList.GetSlaveIDs() |
568 dialog = wx.SingleChoiceDialog(self, _("Choose a slave to remove"), _("Remove slave"), slavenames) |
556 dialog = wx.SingleChoiceDialog(self, _("Choose a slave to remove"), _("Remove slave"), slavenames) |
569 if dialog.ShowModal() == wx.ID_OK: |
557 if dialog.ShowModal() == wx.ID_OK: |
581 self.RefreshBufferState() |
569 self.RefreshBufferState() |
582 else: |
570 else: |
583 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
571 message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR) |
584 message.ShowModal() |
572 message.ShowModal() |
585 message.Destroy() |
573 message.Destroy() |
586 event.Skip() |
574 |
587 |
|
588 #------------------------------------------------------------------------------- |
575 #------------------------------------------------------------------------------- |
589 # Refresh Functions |
576 # Refresh Functions |
590 #------------------------------------------------------------------------------- |
577 #------------------------------------------------------------------------------- |
591 |
578 |
592 def RefreshTitle(self): |
579 def RefreshTitle(self): |
595 else: |
582 else: |
596 self.SetTitle(_("Networkedit")) |
583 self.SetTitle(_("Networkedit")) |
597 |
584 |
598 def OnRefreshMenu(self, event): |
585 def OnRefreshMenu(self, event): |
599 self.RefreshCurrentIndexList() |
586 self.RefreshCurrentIndexList() |
600 event.Skip() |
587 |
601 |
|
602 def RefreshCurrentIndexList(self): |
588 def RefreshCurrentIndexList(self): |
603 selected = self.NetworkNodes.GetSelection() |
589 selected = self.NetworkNodes.GetSelection() |
604 if selected == 0: |
590 if selected == 0: |
605 window = self.NetworkNodes.GetPage(selected) |
591 window = self.NetworkNodes.GetPage(selected) |
606 window.RefreshIndexList() |
592 window.RefreshIndexList() |
709 def GetProfileCallBack(self, text): |
695 def GetProfileCallBack(self, text): |
710 def ProfileCallBack(event): |
696 def ProfileCallBack(event): |
711 self.Manager.AddSpecificEntryToCurrent(text) |
697 self.Manager.AddSpecificEntryToCurrent(text) |
712 self.RefreshBufferState() |
698 self.RefreshBufferState() |
713 self.RefreshCurrentIndexList() |
699 self.RefreshCurrentIndexList() |
714 event.Skip() |
|
715 return ProfileCallBack |
700 return ProfileCallBack |
716 |
701 |
717 #------------------------------------------------------------------------------- |
702 #------------------------------------------------------------------------------- |
718 # Buffer Functions |
703 # Buffer Functions |
719 #------------------------------------------------------------------------------- |
704 #------------------------------------------------------------------------------- |
732 |
717 |
733 def OnUndoMenu(self, event): |
718 def OnUndoMenu(self, event): |
734 self.Manager.LoadCurrentPrevious() |
719 self.Manager.LoadCurrentPrevious() |
735 self.RefreshCurrentIndexList() |
720 self.RefreshCurrentIndexList() |
736 self.RefreshBufferState() |
721 self.RefreshBufferState() |
737 event.Skip() |
|
738 |
722 |
739 def OnRedoMenu(self, event): |
723 def OnRedoMenu(self, event): |
740 self.Manager.LoadCurrentNext() |
724 self.Manager.LoadCurrentNext() |
741 self.RefreshCurrentIndexList() |
725 self.RefreshCurrentIndexList() |
742 self.RefreshBufferState() |
726 self.RefreshBufferState() |
743 event.Skip() |
|
744 |
727 |
745 #------------------------------------------------------------------------------- |
728 #------------------------------------------------------------------------------- |
746 # Help Method |
729 # Help Method |
747 #------------------------------------------------------------------------------- |
730 #------------------------------------------------------------------------------- |
748 |
731 |
764 result = OpenPDFDocIndex(None, ScriptDirectory) |
747 result = OpenPDFDocIndex(None, ScriptDirectory) |
765 if isinstance(result, (StringType, UnicodeType)): |
748 if isinstance(result, (StringType, UnicodeType)): |
766 message = wx.MessageDialog(self, result, _("ERROR"), wx.OK|wx.ICON_ERROR) |
749 message = wx.MessageDialog(self, result, _("ERROR"), wx.OK|wx.ICON_ERROR) |
767 message.ShowModal() |
750 message.ShowModal() |
768 message.Destroy() |
751 message.Destroy() |
769 event.Skip() |
|
770 |
752 |
771 def OnHelpCANFestivalMenu(self, event): |
753 def OnHelpCANFestivalMenu(self, event): |
772 #self.OpenHtmlFrame("CAN Festival Reference", os.path.join(ScriptDirectory, "doc/canfestival.html"), wx.Size(1000, 600)) |
754 #self.OpenHtmlFrame("CAN Festival Reference", os.path.join(ScriptDirectory, "doc/canfestival.html"), wx.Size(1000, 600)) |
773 if wx.Platform == '__WXMSW__': |
755 if wx.Platform == '__WXMSW__': |
774 readerpath = get_acroversion() |
756 readerpath = get_acroversion() |
775 readerexepath = os.path.join(readerpath,"AcroRd32.exe") |
757 readerexepath = os.path.join(readerpath,"AcroRd32.exe") |
776 if(os.path.isfile(readerexepath)): |
758 if(os.path.isfile(readerexepath)): |
777 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"'%os.path.join(ScriptDirectory, "doc","manual_en.pdf")) |
759 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"'%os.path.join(ScriptDirectory, "doc","manual_en.pdf")) |
778 else: |
760 else: |
779 os.system("xpdf -remote CANFESTIVAL %s %d &"%(os.path.join(ScriptDirectory, "doc/manual_en.pdf"),16)) |
761 os.system("xpdf -remote CANFESTIVAL %s %d &"%(os.path.join(ScriptDirectory, "doc/manual_en.pdf"),16)) |
780 event.Skip() |
|
781 |
762 |
782 def OnAboutMenu(self, event): |
763 def OnAboutMenu(self, event): |
783 self.OpenHtmlFrame(_("About CAN Festival"), os.path.join(ScriptDirectory, "doc/about.html"), wx.Size(500, 450)) |
764 self.OpenHtmlFrame(_("About CAN Festival"), os.path.join(ScriptDirectory, "doc/about.html"), wx.Size(500, 450)) |
784 event.Skip() |
|
785 |
765 |
786 def OpenHtmlFrame(self, title, file, size): |
766 def OpenHtmlFrame(self, title, file, size): |
787 if title not in self.HtmlFrameOpened: |
767 if title not in self.HtmlFrameOpened: |
788 self.HtmlFrameOpened.append(title) |
768 self.HtmlFrameOpened.append(title) |
789 window = HtmlFrame(self, self.HtmlFrameOpened) |
769 window = HtmlFrame(self, self.HtmlFrameOpened) |
797 #------------------------------------------------------------------------------- |
777 #------------------------------------------------------------------------------- |
798 |
778 |
799 def OnCommunicationMenu(self, event): |
779 def OnCommunicationMenu(self, event): |
800 dictionary,current = self.Manager.GetCurrentCommunicationLists() |
780 dictionary,current = self.Manager.GetCurrentCommunicationLists() |
801 self.EditProfile(_("Edit DS-301 Profile"), dictionary, current) |
781 self.EditProfile(_("Edit DS-301 Profile"), dictionary, current) |
802 event.Skip() |
|
803 |
782 |
804 def OnOtherCommunicationMenu(self, event): |
783 def OnOtherCommunicationMenu(self, event): |
805 dictionary,current = self.Manager.GetCurrentDS302Lists() |
784 dictionary,current = self.Manager.GetCurrentDS302Lists() |
806 self.EditProfile(_("Edit DS-302 Profile"), dictionary, current) |
785 self.EditProfile(_("Edit DS-302 Profile"), dictionary, current) |
807 event.Skip() |
|
808 |
786 |
809 def OnEditProfileMenu(self, event): |
787 def OnEditProfileMenu(self, event): |
810 title = _("Edit %s Profile")%self.Manager.GetCurrentProfileName() |
788 title = _("Edit %s Profile")%self.Manager.GetCurrentProfileName() |
811 dictionary,current = self.Manager.GetCurrentProfileLists() |
789 dictionary,current = self.Manager.GetCurrentProfileLists() |
812 self.EditProfile(title, dictionary, current) |
790 self.EditProfile(title, dictionary, current) |
813 event.Skip() |
|
814 |
791 |
815 def EditProfile(self, title, dictionary, current): |
792 def EditProfile(self, title, dictionary, current): |
816 dialog = CommunicationDialog(self) |
793 dialog = CommunicationDialog(self) |
817 dialog.SetTitle(title) |
794 dialog.SetTitle(title) |
818 dialog.SetIndexDictionary(dictionary) |
795 dialog.SetIndexDictionary(dictionary) |
851 self.RefreshProfileMenu() |
828 self.RefreshProfileMenu() |
852 selected = self.NetworkNodes.GetSelection() |
829 selected = self.NetworkNodes.GetSelection() |
853 if selected >= 0: |
830 if selected >= 0: |
854 window = self.NetworkNodes.GetPage(selected) |
831 window = self.NetworkNodes.GetPage(selected) |
855 window.RefreshTable() |
832 window.RefreshTable() |
856 event.Skip() |
|
857 |
833 |
858 |
834 |
859 #------------------------------------------------------------------------------- |
835 #------------------------------------------------------------------------------- |
860 # Add User Types and Variables |
836 # Add User Types and Variables |
861 #------------------------------------------------------------------------------- |
837 #------------------------------------------------------------------------------- |