class TFileReplace(TestCase): def setUp(self): self.win = ConfirmFileReplace(None, "") def test_ctr(self): pass def tearDown(self): self.win.destroy()
def __save(self, *data): """Save the cover and spawn the program to edit it if selected""" save_format = self.name_combo.get_active_text() # Allow use of patterns in creating cover filenames pattern = ArbitraryExtensionFileFromPattern(save_format) filename = pattern.format(self.song) print_d("Using '%s' as filename based on %s" % (filename, save_format)) file_path = os.path.join(self.dirname, filename) if os.path.exists(file_path): resp = ConfirmFileReplace(self, file_path).run() if resp != ConfirmFileReplace.RESPONSE_REPLACE: return try: f = open(file_path, 'wb') f.write(self.current_data) f.close() except IOError: qltk.ErrorMessage(None, _('Saving failed'), _('Unable to save "%s".') % file_path).run() else: if self.open_check.get_active(): try: util.spawn([self.cmd.get_text(), file_path]) except: pass app.cover_manager.cover_changed([self.song._song]) self.main_win.destroy()
def copy(self, parent_widget, song): if not self.__pattern: self.__set_pattern() target = strip_win32_incompat_from_path(self.__pattern.format(song)) dirname = os.path.dirname(target) if os.path.exists(target): dialog = ConfirmFileReplace(parent_widget, target) resp = dialog.run() if resp == ConfirmFileReplace.RESPONSE_REPLACE: try: # Remove the current song self.__library.remove([self.__library[target]]) except KeyError: pass else: return False try: if not os.path.isdir(dirname): os.makedirs(dirname) shutil.copyfile(song['~filename'], target) if self['covers']: coverfile = os.path.join(dirname, 'folder.jpg') cover = app.cover_manager.get_cover(song) if cover and mtime(cover.name) > mtime(coverfile): image = GdkPixbuf.Pixbuf.new_from_file_at_size( cover.name, 200, 200) image.savev(coverfile, "jpeg", [], []) song = copy.deepcopy(song) song.sanitize(target) self.__library.add([song]) return song except (OSError, IOError, GLib.GError) as exc: encoding = util.get_locale_encoding() return str(exc).decode(encoding, 'replace')
def setUp(self): self.win = ConfirmFileReplace(None, "")
def __save_playlist(self, songs, name=None): dialog = Gtk.FileChooserDialog(self.PLUGIN_NAME, None, Gtk.FileChooserAction.SAVE) dialog.set_show_hidden(False) dialog.set_create_folders(True) dialog.add_button(_("_Cancel"), Gtk.ResponseType.CANCEL) dialog.add_button(_("_Save"), Gtk.ResponseType.OK) dialog.set_default_response(Gtk.ResponseType.OK) if name: dialog.set_current_name(name) ffilter = Gtk.FileFilter() ffilter.set_name("m3u") ffilter.add_mime_type("audio/x-mpegurl") ffilter.add_pattern("*.m3u") dialog.add_filter(ffilter) ffilter = Gtk.FileFilter() ffilter.set_name("pls") ffilter.add_mime_type("audio/x-scpls") ffilter.add_pattern("*.pls") dialog.add_filter(ffilter) dialog.set_current_folder(lastfolder) diag_cont = dialog.get_child() hbox_path = Gtk.HBox() combo_path = Gtk.ComboBoxText() hbox_path.pack_end(combo_path, False, False, 6) diag_cont.pack_start(hbox_path, False, False, 0) diag_cont.show_all() for option_text in [_("Use relative paths"), _("Use absolute paths")]: combo_path.append_text(option_text) combo_path.set_active(0) response = dialog.run() if response == Gtk.ResponseType.OK: file_path = glib2fsn(dialog.get_filename()) dir_path = os.path.dirname(file_path) file_format = dialog.get_filter().get_name() extension = "." + file_format if not file_path.endswith(extension): file_path += extension if os.path.exists(file_path): resp = ConfirmFileReplace(self.plugin_window, file_path).run() if resp != ConfirmFileReplace.RESPONSE_REPLACE: return relative = combo_path.get_active() == 0 files = self.__get_files(songs, dir_path, relative) if file_format == "m3u": self.__m3u_export(file_path, files) elif file_format == "pls": self.__pls_export(file_path, files) self.lastfolder = dir_path dialog.destroy()