canfestival/canfestival.py
changeset 847 b157705a9024
parent 845 412a9f05070f
child 948 89fead207c35
equal deleted inserted replaced
846:26836e421e19 847:b157705a9024
   121         if self._View is not None:
   121         if self._View is not None:
   122             self._View.SetBusId(self.GetCurrentLocation())
   122             self._View.SetBusId(self.GetCurrentLocation())
   123         return self._View
   123         return self._View
   124     
   124     
   125     def _ExportSlave(self):
   125     def _ExportSlave(self):
   126         dialog = wx.FileDialog(self.GetCTRoot().AppFrame, _("Choose a file"), os.getcwd(), "",  _("EDS files (*.eds)|*.eds|All files|*.*"), wx.SAVE|wx.OVERWRITE_PROMPT)
   126         dialog = wx.FileDialog(self.GetCTRoot().AppFrame, 
       
   127                                _("Choose a file"), 
       
   128                                os.path.expanduser("~"), 
       
   129                                "%s.eds" % self.CTNName(),  
       
   130                                _("EDS files (*.eds)|*.eds|All files|*.*"),
       
   131                                wx.SAVE|wx.OVERWRITE_PROMPT)
   127         if dialog.ShowModal() == wx.ID_OK:
   132         if dialog.ShowModal() == wx.ID_OK:
   128             result = eds_utils.GenerateEDSFile(dialog.GetPath(), self.GetCurrentNodeCopy())
   133             result = eds_utils.GenerateEDSFile(dialog.GetPath(), self.GetCurrentNodeCopy())
   129             if result:
   134             if result:
   130                 self.GetCTRoot().logger.write_error(_("Error: Export slave failed\n"))
   135                 self.GetCTRoot().logger.write_error(_("Error: Export slave failed\n"))
   131         dialog.Destroy()  
   136         dialog.Destroy()  
   170         prefix = "_".join(map(str, current_location))
   175         prefix = "_".join(map(str, current_location))
   171         Gen_OD_path = os.path.join(buildpath, "OD_%s.c"%prefix )
   176         Gen_OD_path = os.path.join(buildpath, "OD_%s.c"%prefix )
   172         # Create a new copy of the model
   177         # Create a new copy of the model
   173         slave = self.GetCurrentNodeCopy()
   178         slave = self.GetCurrentNodeCopy()
   174         slave.SetNodeName("OD_%s"%prefix)
   179         slave.SetNodeName("OD_%s"%prefix)
   175         slave.SetNodeID(self.CanFestivalSlaveNode.getNodeId())
       
   176         # allow access to local OD from Slave PLC
   180         # allow access to local OD from Slave PLC
   177         pointers = config_utils.LocalODPointers(locations, current_location, slave)
   181         pointers = config_utils.LocalODPointers(locations, current_location, slave)
   178         res = gen_cfile.GenerateFile(Gen_OD_path, slave, pointers)
   182         res = gen_cfile.GenerateFile(Gen_OD_path, slave, pointers)
   179         if res :
   183         if res :
   180             raise Exception, res
   184             raise Exception, res
   308                 masterpath = os.path.join(buildpath, "MasterGenerated.od")
   312                 masterpath = os.path.join(buildpath, "MasterGenerated.od")
   309                 if not os.path.exists(masterpath):
   313                 if not os.path.exists(masterpath):
   310                     self.GetCTRoot().logger.write_error(_("Error: No Master generated\n"))
   314                     self.GetCTRoot().logger.write_error(_("Error: No Master generated\n"))
   311                     return
   315                     return
   312                 
   316                 
   313                 manager = MiniNodeManager(self, masterpath, self.CTNFullName() + ".generated_master")
   317                 manager = MiniNodeManager(self, masterpath, self.CTNFullName())
   314                 self._GeneratedMasterView = MasterViewer(app_frame.TabsOpened, manager, app_frame)
   318                 self._GeneratedMasterView = MasterViewer(app_frame.TabsOpened, manager, app_frame, name)
   315                 
   319                 
   316             if self._GeneratedMasterView is not None:
   320             if self._GeneratedMasterView is not None:
   317                 app_frame.EditProjectElement(self._GeneratedMasterView, name)
   321                 app_frame.EditProjectElement(self._GeneratedMasterView, self._GeneratedMasterView.GetInstancePath())
   318             
   322             
   319             return self._GeneratedMasterView
   323             return self._GeneratedMasterView
   320         else:
   324         else:
   321             ConfigTreeNode._OpenView(self, name, onlyopened)
   325             ConfigTreeNode._OpenView(self, name, onlyopened)
   322             if self._View is not None:
   326             if self._View is not None:
   368         # Create a new copy of the model with DCF loaded with PDO mappings for desired location
   372         # Create a new copy of the model with DCF loaded with PDO mappings for desired location
   369         try:
   373         try:
   370             master, pointers = config_utils.GenerateConciseDCF(locations, current_location, self, self.CanFestivalNode.getSync_TPDOs(),"OD_%s"%prefix)
   374             master, pointers = config_utils.GenerateConciseDCF(locations, current_location, self, self.CanFestivalNode.getSync_TPDOs(),"OD_%s"%prefix)
   371         except config_utils.PDOmappingException, e:
   375         except config_utils.PDOmappingException, e:
   372             raise Exception, e.message
   376             raise Exception, e.message
   373         master.SetNodeID(self.CanFestivalNode.getNodeId())
       
   374         # Do generate C file.
   377         # Do generate C file.
   375         res = gen_cfile.GenerateFile(Gen_OD_path, master, pointers)
   378         res = gen_cfile.GenerateFile(Gen_OD_path, master, pointers)
   376         if res :
   379         if res :
   377             raise Exception, res
   380             raise Exception, res
   378         
   381