def do_export(self, filen): try: if filen.lower().endswith(".csv"): dst_radio = generic_csv.CSVRadio(filen) elif filen.lower().endswith(".chirp"): dst_radio = generic_xml.XMLRadio(filen) else: raise Exception(_("Unsupported file type")) except Exception as e: common.log_exception() common.show_error(e) return dst_rthread = common.RadioThread(dst_radio) dst_rthread.setDaemon(True) dst_rthread.start() try: count = self._do_import_locked(importdialog.ExportDialog, self.rthread.radio, dst_rthread) except Exception as e: common.log_exception() common.show_error(_("There was an error during " "export: {error}").format(error=e), self.parent_window) return if count <= 0: return # Wait for thread queue to complete dst_rthread._qlock_when_idle() try: dst_radio.save(filename=filen) except Exception as e: common.log_exception() common.show_error(_("There was an error during " "export: {error}").format(error=e), self)
def __init__(self, source, parent_window=None, filename=None, tempname=None): gtk.VBox.__init__(self, True, 0) self.parent_window = parent_window if isinstance(source, str): self.filename = source self.radio = directory.get_radio_by_image(self.filename) elif isinstance(source, chirp_common.Radio): self.radio = source self.filename = filename or tempname or source.VARIANT else: raise Exception("Unknown source type") rthread = common.RadioThread(self.radio) rthread.setDaemon(True) rthread.start() rthread.connect("status", lambda e, m: self.emit("status", m)) self.tabs = gtk.Notebook() self.tabs.connect("switch-page", self.tab_selected) self.tabs.set_tab_pos(gtk.POS_LEFT) self.editors = {} self.rf = self.radio.get_features() if self.rf.has_sub_devices: devices = self.radio.get_sub_devices() else: devices = [self.radio] index = 0 for device in devices: devrthread = common.RadioThread(device, rthread) devrthread.setDaemon(True) devrthread.start() self._make_device_editors(device, devrthread, index) index += 1 if self.rf.has_settings: editor = settingsedit.SettingsEditor(rthread) self.tabs.append_page(editor.root, gtk.Label(_("Settings"))) editor.root.show() editor.connect("changed", self.editor_changed) self.editors["settings"] = editor conf = config.get() if (hasattr(self.rthread.radio, '_memobj') and conf.get_bool("developer", "state")): editor = radiobrowser.RadioBrowser(self.rthread) lab = gtk.Label(_("Browser")) self.tabs.append_page(editor.root, lab) editor.connect("changed", self.editor_changed) self.editors["browser"] = editor self.pack_start(self.tabs) self.tabs.show() self.label = self.text_label = None self.make_label() self.modified = (tempname is not None) if tempname: self.filename = tempname self.update_tab()
"import: {error}").format(error=e)) def do_export(self, filen): try: if filen.lower().endswith(".csv"): dst_radio = generic_csv.CSVRadio(filen) elif filen.lower().endswith(".chirp"): dst_radio = generic_xml.XMLRadio(filen) else: raise Exception(_("Unsupported file type")) except Exception, e: common.log_exception() common.show_error(e) return dst_rthread = common.RadioThread(dst_radio) dst_rthread.setDaemon(True) dst_rthread.start() try: count = self._do_import_locked(importdialog.ExportDialog, self.rthread.radio, dst_rthread) except Exception, e: common.log_exception() common.show_error( _("There was an error during " "export: {error}").format(error=e), self.parent_window) return if count <= 0: return