objdictgen/networkedit.py
changeset 608 daa1e1c3fba4
parent 580 2ae92a99ac10
child 612 fc3399727a06
equal deleted inserted replaced
607:5fec528f66cf 608:daa1e1c3fba4
   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 #-------------------------------------------------------------------------------