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 |