Пример #1
0
    def __save(self, *data):
        """Save the cover and spawn the program to edit it if selected"""

        filename = self.name_combo.get_active_text()
        # Allow support for filename patterns
        pattern = Pattern(filename)
        filename = fsencode(pattern.format(self.song))
        file_path = os.path.join(self.dirname, filename)

        msg = (_('The file <b>%s</b> already exists.\n\nOverwrite?')
                % util.escape(filename))
        if (os.path.exists(file_path)
                and not qltk.ConfirmAction(None, _('File exists'), msg).run()):
            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.window.emit("artwork-changed", [self.song])

        self.main_win.destroy()
Пример #2
0
 def test_escape_slash(s):
     fpat = FileFromPattern('<~filename>')
     pat = Pattern('<~filename>')
     wpat = FileFromPattern(r'\\<artist>\\ "<title>')
     s.assertEquals(fpat.format(s.a), "_path_to_a.mp3")
     s.assertEquals(pat.format(s.a), "/path/to/a.mp3")
     s.assertEquals(wpat.format(s.a), "\\Artist\\ \"Title5.mp3")
Пример #3
0
 def test_escape_slash(s):
     fpat = FileFromPattern('<~filename>')
     pat = Pattern('<~filename>')
     wpat = FileFromPattern(r'\\<artist>\\ "<title>')
     s.assertEquals(fpat.format(s.a), "_path_to_a.mp3")
     s.assertEquals(pat.format(s.a), "/path/to/a.mp3")
     if os.name != "nt":
         s.assertEquals(wpat.format(s.a), "\\Artist\\ \"Title5.mp3")
     else:
         # FIXME..
         pass
Пример #4
0
 def test_generated(s):
     pat = Pattern('<~basename>')
     s.assertEquals(pat.format(s.a), os.path.basename(s.a["~filename"]))
Пример #5
0
 def test_number_dot_title(s):
     pat = Pattern('<tracknumber>. <title>')
     s.assertEquals(pat.format(s.a), '5/6. Title5')
     s.assertEquals(pat.format(s.b), '6. Title6')
     s.assertEquals(pat.format(s.c), '. test/subdir')
Пример #6
0
 def test_conditional_notfile(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>')
     s.assertEquals(pat.format(s.a), '5/6')
     s.assertEquals(pat.format(s.b), '6')
     s.assertEquals(pat.format(s.c), '00')
Пример #7
0
 def test_conditional_genre(s):
     pat = Pattern('<genre|<genre>|music>')
     s.assertEquals(pat.format(s.a), 'music')
     s.assertEquals(pat.format(s.b), 'music')
     s.assertEquals(pat.format(s.c), '/, /')
Пример #8
0
 def test_same2(s):
     fpat = FileFromPattern('<~filename>')
     pat = Pattern('<~filename>')
     s.assertEquals(fpat.format_list(s.a), set([fpat.format(s.a)]))
     s.assertEquals(pat.format_list(s.a), set([pat.format(s.a)]))
Пример #9
0
 def test_conditional_notfile(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>')
     s.assertEquals(pat.format(s.a), '5/6')
     s.assertEquals(pat.format(s.b), '6')
     s.assertEquals(pat.format(s.c), '00')
Пример #10
0
 def test_conditional_unknown(s):
     pat = Pattern('<album|foo|bar>')
     s.assertEquals(pat.format(s.a), 'bar')
Пример #11
0
 def test_conditional_genre(s):
     pat = Pattern('<genre|<genre>|music>')
     s.assertEquals(pat.format(s.a), 'music')
     s.assertEquals(pat.format(s.b), 'music')
     s.assertEquals(pat.format(s.c), '/, /')
Пример #12
0
 def test_conditional_other_number_dot_title(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>. <title>')
     s.assertEquals(pat.format(s.a), '5/6. Title5')
     s.assertEquals(pat.format(s.b), '6. Title6')
     s.assertEquals(pat.format(s.c), '00. test/subdir')
Пример #13
0
 def test_same2(s):
     fpat = FileFromPattern('<~filename>')
     pat = Pattern('<~filename>')
     s.assertEquals(fpat.format_list(s.a), set([fpat.format(s.a)]))
     s.assertEquals(pat.format_list(s.a), set([pat.format(s.a)]))
Пример #14
0
 def test_same(s):
     pat = Pattern('<~basename> <title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
Пример #15
0
 def test_number_dot_genre(s):
     pat = Pattern('<tracknumber>. <genre>')
     s.assertEquals(pat.format(s.a), '5/6. ')
     s.assertEquals(pat.format(s.b), '6. ')
     s.assertEquals(pat.format(s.c), '. /, /')
Пример #16
0
 def test_unicode_with_int(s):
     song = s.AudioFile({"tracknumber": "5/6",
         "title": "\xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8')})
     pat = Pattern('<~#track>. <title>')
     s.assertEquals(pat.format(song),
         "5. \xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8'))
Пример #17
0
 def test_conditional_subdir(s):
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.assertEquals(pat.format(s.a), '/a/Title5')
     s.assertEquals(pat.format(s.b), '/a/Title6')
     s.assertEquals(pat.format(s.c), '/a//, //test/subdir')
Пример #18
0
 def test_same(s):
     pat = Pattern('<~basename> <title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
Пример #19
0
 def test_recnumber_dot_title(s):
     pat = Pattern('\<<tracknumber>\>. <title>')
     s.assertEquals(pat.format(s.a), '<5/6>. Title5')
     s.assertEquals(pat.format(s.b), '<6>. Title6')
     s.assertEquals(pat.format(s.c), '<>. test/subdir')
Пример #20
0
 def test_conditional_other_number_dot_title(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>. <title>')
     s.assertEquals(pat.format(s.a), '5/6. Title5')
     s.assertEquals(pat.format(s.b), '6. Title6')
     s.assertEquals(pat.format(s.c), '00. test/subdir')
Пример #21
0
 def test_generated(s):
     pat = Pattern('<~basename>')
     s.assertEquals(pat.format(s.a), os.path.basename(s.a["~filename"]))
Пример #22
0
 def test_conditional_unknown(s):
     pat = Pattern('<album|foo|bar>')
     s.assertEquals(pat.format(s.a), 'bar')
Пример #23
0
 def test_generated_and_not_generated(s):
     pat = Pattern('<~basename> <title>')
     res = pat.format(s.a)
     s.assertEquals(
         res, os.path.basename(s.a["~filename"]) + " " + s.a["title"])
Пример #24
0
 def test_conditional_subdir(s):
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.assertEquals(pat.format(s.a), '/a/Title5')
     s.assertEquals(pat.format(s.b), '/a/Title6')
     s.assertEquals(pat.format(s.c), '/a//, //test/subdir')
Пример #25
0
 def test_number_dot_title_dot(s):
     pat = Pattern('<tracknumber>. <title>.')
     s.assertEquals(pat.format(s.a), '5/6. Title5.')
     s.assertEquals(pat.format(s.b), '6. Title6.')
     s.assertEquals(pat.format(s.c), '. test/subdir.')
Пример #26
0
 def test_recnumber_dot_title(s):
     pat = Pattern('\<<tracknumber>\>. <title>')
     s.assertEquals(pat.format(s.a), '<5/6>. Title5')
     s.assertEquals(pat.format(s.b), '<6>. Title6')
     s.assertEquals(pat.format(s.c), '<>. test/subdir')
Пример #27
0
 def test_number_dot_genre(s):
     pat = Pattern('<tracknumber>. <genre>')
     s.assertEquals(pat.format(s.a), '5/6. ')
     s.assertEquals(pat.format(s.b), '6. ')
     s.assertEquals(pat.format(s.c), '. /, /')
Пример #28
0
 def test_generated_and_not_generated(s):
     pat = Pattern('<~basename> <title>')
     res = pat.format(s.a)
     s.assertEquals(
         res, os.path.basename(s.a["~filename"]) + " " + s.a["title"])
Пример #29
0
 def test_unicode_with_int(s):
     song = s.AudioFile({"tracknumber": "5/6",
         "title": "\xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8')})
     pat = Pattern('<~#track>. <title>')
     s.assertEquals(pat.format(song),
         "5. \xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8'))