diff --git a/po/compile.py b/po/compile.py deleted file mode 100644 index c9ce0ed7a..000000000 --- a/po/compile.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python - -import glob, os, os.path - -for po in glob.glob("*.po"): - lang = po.split('.')[0] - path = "../locale/%s/LC_MESSAGES" % lang - if not os.path.isdir(path): - os.makedirs(path) - cmd = "msgfmt %s -o %s/picard.mo" % (po, path) - print cmd - os.system(cmd) - - - - - - diff --git a/data/compile.py b/resources/compile.py similarity index 100% rename from data/compile.py rename to resources/compile.py diff --git a/data/images/CoverArtShadow.png b/resources/images/CoverArtShadow.png similarity index 100% rename from data/images/CoverArtShadow.png rename to resources/images/CoverArtShadow.png diff --git a/data/images/Picard16.png b/resources/images/Picard16.png similarity index 100% rename from data/images/Picard16.png rename to resources/images/Picard16.png diff --git a/data/images/Picard32.png b/resources/images/Picard32.png similarity index 100% rename from data/images/Picard32.png rename to resources/images/Picard32.png diff --git a/data/images/ToolbarAddDir.png b/resources/images/ToolbarAddDir.png similarity index 100% rename from data/images/ToolbarAddDir.png rename to resources/images/ToolbarAddDir.png diff --git a/data/images/ToolbarAddFiles.png b/resources/images/ToolbarAddFiles.png similarity index 100% rename from data/images/ToolbarAddFiles.png rename to resources/images/ToolbarAddFiles.png diff --git a/data/images/ToolbarAnalyze.png b/resources/images/ToolbarAnalyze.png similarity index 100% rename from data/images/ToolbarAnalyze.png rename to resources/images/ToolbarAnalyze.png diff --git a/data/images/ToolbarCluster.png b/resources/images/ToolbarCluster.png similarity index 100% rename from data/images/ToolbarCluster.png rename to resources/images/ToolbarCluster.png diff --git a/data/images/ToolbarListen.png b/resources/images/ToolbarListen.png similarity index 100% rename from data/images/ToolbarListen.png rename to resources/images/ToolbarListen.png diff --git a/data/images/ToolbarLookup.png b/resources/images/ToolbarLookup.png similarity index 100% rename from data/images/ToolbarLookup.png rename to resources/images/ToolbarLookup.png diff --git a/data/images/ToolbarOptions.png b/resources/images/ToolbarOptions.png similarity index 100% rename from data/images/ToolbarOptions.png rename to resources/images/ToolbarOptions.png diff --git a/data/images/ToolbarRemove.png b/resources/images/ToolbarRemove.png similarity index 100% rename from data/images/ToolbarRemove.png rename to resources/images/ToolbarRemove.png diff --git a/data/images/ToolbarSave.png b/resources/images/ToolbarSave.png similarity index 100% rename from data/images/ToolbarSave.png rename to resources/images/ToolbarSave.png diff --git a/data/images/ToolbarSubmit.png b/resources/images/ToolbarSubmit.png similarity index 100% rename from data/images/ToolbarSubmit.png rename to resources/images/ToolbarSubmit.png diff --git a/data/images/analyze.png b/resources/images/analyze.png similarity index 100% rename from data/images/analyze.png rename to resources/images/analyze.png diff --git a/data/images/analyze.psd b/resources/images/analyze.psd similarity index 100% rename from data/images/analyze.psd rename to resources/images/analyze.psd diff --git a/data/images/cd.png b/resources/images/cd.png similarity index 100% rename from data/images/cd.png rename to resources/images/cd.png diff --git a/data/images/dir.png b/resources/images/dir.png similarity index 100% rename from data/images/dir.png rename to resources/images/dir.png diff --git a/data/images/file.png b/resources/images/file.png similarity index 100% rename from data/images/file.png rename to resources/images/file.png diff --git a/data/images/magic-wand.png b/resources/images/magic-wand.png similarity index 100% rename from data/images/magic-wand.png rename to resources/images/magic-wand.png diff --git a/data/images/match-100.png b/resources/images/match-100.png similarity index 100% rename from data/images/match-100.png rename to resources/images/match-100.png diff --git a/data/images/match-50.png b/resources/images/match-50.png similarity index 100% rename from data/images/match-50.png rename to resources/images/match-50.png diff --git a/data/images/match-60.png b/resources/images/match-60.png similarity index 100% rename from data/images/match-60.png rename to resources/images/match-60.png diff --git a/data/images/match-70.png b/resources/images/match-70.png similarity index 100% rename from data/images/match-70.png rename to resources/images/match-70.png diff --git a/data/images/match-80.png b/resources/images/match-80.png similarity index 100% rename from data/images/match-80.png rename to resources/images/match-80.png diff --git a/data/images/match-90.png b/resources/images/match-90.png similarity index 100% rename from data/images/match-90.png rename to resources/images/match-90.png diff --git a/data/images/note.png b/resources/images/note.png similarity index 100% rename from data/images/note.png rename to resources/images/note.png diff --git a/data/images/reload.png b/resources/images/reload.png similarity index 100% rename from data/images/reload.png rename to resources/images/reload.png diff --git a/data/images/remove.png b/resources/images/remove.png similarity index 100% rename from data/images/remove.png rename to resources/images/remove.png diff --git a/data/images/remove.psd b/resources/images/remove.psd similarity index 100% rename from data/images/remove.psd rename to resources/images/remove.psd diff --git a/data/images/search.png b/resources/images/search.png similarity index 100% rename from data/images/search.png rename to resources/images/search.png diff --git a/data/images/tag.png b/resources/images/tag.png similarity index 100% rename from data/images/tag.png rename to resources/images/tag.png diff --git a/data/images/tag.svg b/resources/images/tag.svg similarity index 100% rename from data/images/tag.svg rename to resources/images/tag.svg diff --git a/data/images/track-saved.png b/resources/images/track-saved.png similarity index 100% rename from data/images/track-saved.png rename to resources/images/track-saved.png diff --git a/data/picard.qrc b/resources/picard.qrc similarity index 100% rename from data/picard.qrc rename to resources/picard.qrc diff --git a/setup.py b/setup.py index 359b76465..29a287450 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,23 @@ #!/usr/bin/env python +import glob +import os.path +from distutils import log +from distutils.command.build import build from distutils.core import setup, Command +from distutils.dep_util import newer +from distutils.dist import Distribution + +args = { + 'name': 'picard', + 'version': '1.0', + 'description': 'The next generation MusicBrainz tagger', + 'url': 'http://wiki.musicbrainz.org/PicardTagger', + 'package_dir': {'picard': 'picard'}, + 'packages': ('picard', 'picard.ui', 'picard.ui.options', 'picard.browser'), + 'locales': [('picard', os.path.split(po)[1][:-3], po) for po in glob.glob('po/*.po')] +} + class cmd_test(Command): description = "run automated tests" @@ -35,5 +52,121 @@ class cmd_test(Command): t.run(tests) -setup(cmdclass={'test': cmd_test}) +class cmd_build_locales(Command): + description = 'build locale files' + user_options = [ + ('build-dir=', 'd', "directory to build to"), + ('inplace', 'i', "ignore build-lib and put compiled locales into the 'locale' directory"), + ] + + def initialize_options(self): + self.build_dir = None + self.inplace = 0 + + def finalize_options (self): + self.set_undefined_options('build', ('build_locales', 'build_dir')) + self.locales = self.distribution.locales + + def run(self): + for domain, locale, po in self.locales: + if self.inplace: + path = os.path.join('locale', locale, 'LC_MESSAGES') + else: + path = os.path.join(self.build_dir, locale, 'LC_MESSAGES') + mo = os.path.join(path, '%s.mo' % domain) + self.mkpath(path) + self.spawn(['msgfmt', '-o', mo, po]) + +Distribution.locales = None + + +class cmd_build(build): + + user_options = build.user_options + [ + ('build-locales=', 'd', "build directory for locale files"), + ] + + sub_commands = build.sub_commands + [ + ('build_locales', None), + ] + + def initialize_options(self): + build.initialize_options(self) + self.build_locales = None + + def finalize_options(self): + build.finalize_options(self) + if self.build_locales is None: + self.build_locales = os.path.join(self.build_base, 'locale') + + +class cmd_build_ui(Command): + description = "build Qt UI files and resources" + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + from PyQt4 import uic + for uifile in glob.glob("ui/*.ui"): + pyfile = "ui_%s.py" % os.path.splitext(os.path.basename(uifile))[0] + pyfile = os.path.join("picard", "ui", pyfile) + if newer(uifile, pyfile): + log.info("compiling %s -> %s", uifile, pyfile) + uic.compileUi(uifile, file(pyfile, "w"), translator="_") + qrcfile = os.path.join("resources", "picard.qrc") + pyfile = os.path.join("picard", "resources.py") + build_resources = False + if newer("resources/picard.qrc", pyfile): + build_resources = True + for datafile in glob.glob("resources/images/*.*"): + if newer(datafile, pyfile): + build_resources = True + break + if build_resources: + log.info("compiling %s -> %s", qrcfile, pyfile) + os.system("pyrcc4 %s -o %s" % (qrcfile, pyfile)) + + +class cmd_clean_ui(Command): + description = "clean up compiled Qt UI files and resources" + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + from PyQt4 import uic + for uifile in glob.glob("ui/*.ui"): + pyfile = "ui_%s.py" % os.path.splitext(os.path.basename(uifile))[0] + pyfile = os.path.join("picard", "ui", pyfile) + try: + os.unlink(pyfile) + log.info("removing %s", pyfile) + except OSError: + log.warn("'%s' does not exist -- can't clean it", pyfile) + pyfile = os.path.join("picard", "resources.py") + try: + os.unlink(pyfile) + log.info("removing %s", pyfile) + except OSError: + log.warn("'%s' does not exist -- can't clean it", pyfile) + + +args['cmdclass'] = { + 'test': cmd_test, + 'build': cmd_build, + 'build_locales': cmd_build_locales, + 'build_ui': cmd_build_ui, + 'clean_ui': cmd_clean_ui, +} + +setup(**args) diff --git a/ui/compile.py b/ui/compile.py deleted file mode 100644 index 4ad320f72..000000000 --- a/ui/compile.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env python - -from PyQt4 import uic -import glob -import os.path - -print "Compiling UI files..." -for uifile in glob.glob("*.ui"): - pyfile = "ui_%s.py" % os.path.splitext(os.path.basename(uifile))[0] - pyfile = os.path.join("..", "picard", "ui", pyfile) - print " * %s => %s" % (uifile, pyfile) - uic.compileUi(uifile, file(pyfile, "w"), translator="_") -