def export_theme(cls, *args): 'Export the active theme to tar-compressed file' cur_theme = exposong.themeselect.themeselect.get_active() dlg = gtk.FileChooserDialog(_("Export Theme"), exposong.main.main, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) dlg.add_filter(_FILTER) dlg.set_do_overwrite_confirmation(True) dlg.set_current_folder(config.get("open-save-dialogs", "export-theme")) dlg.set_current_name(_("theme_%s.expo")%title_to_filename( os.path.basename(cur_theme.get_title()))) if dlg.run() == gtk.RESPONSE_ACCEPT: fname = dlg.get_filename() if not fname.endswith(".expo"): fname += ".expo" exposong.log.info('Exporting theme "%s" to "%s".', cur_theme.get_title(), fname) tar = tarfile.open(fname, "w:gz") tar.add(os.path.join(DATA_PATH, 'theme', cur_theme.filename), os.path.join('theme', cur_theme.filename)) for bg in cur_theme.backgrounds: if isinstance(bg, exposong.theme.ImageBackground): tar.add(os.path.join(DATA_PATH, 'theme', 'res', bg.src), os.path.join('theme', 'res', bg.src)) tar.close() config.set("open-save-dialogs", "export-theme", os.path.dirname(fname)) dlg.destroy()
def export_sched(cls, *args): 'Export a single schedule with belonging presentations to file.' sched = exposong.schedlist.schedlist.get_active_item() if not sched: return False dlg = gtk.FileChooserDialog(_("Export Current Schedule"), exposong.main.main, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) dlg.add_filter(_FILTER) dlg.set_do_overwrite_confirmation(True) dlg.set_current_folder(config.get("open-save-dialogs", "export-sched")) dlg.set_current_name(os.path.basename(title_to_filename(sched.title))+".expo") if dlg.run() == gtk.RESPONSE_ACCEPT: os.chdir(DATA_PATH) fname = dlg.get_filename() if not fname.endswith(".expo"): fname += ".expo" exposong.log.info('Exporting schedule "%s" to "%s".', sched.title, fname) tar = tarfile.open(fname, "w:gz") for item in cls._get_sched_list(): tar.add(item[0], item[1]) tar.close() config.set("open-save-dialogs", "export-sched", os.path.dirname(fname)) dlg.destroy()
def _save_changes(self, *args): """ Saves the theme to a new file if it didn't exist, updates the file according to the theme name if it existed before. """ #Metadata for key, value in self._meta.iteritems(): if value.get_text() != "": self.theme.meta[key] = value.get_text() name = self._title_entry.get_text() self.theme.meta['title'] = name if not self.theme.filename: self.theme.filename = find_freefile(os.path.join( DATA_PATH, 'theme', title_to_filename(name)+'.xml')) else: self.theme.filename = check_filename(name, os.path.join( DATA_PATH, 'theme', self.theme.filename)) self.theme.save() self._set_changed(False)