From 009afb07bccbdc425b6031da581762aee5f65dda Mon Sep 17 00:00:00 2001
From: Laurent Monin
Date: Mon, 29 Jun 2015 10:36:19 +0200
Subject: [PATCH] Add a -V/--long-version command-line option, display Qt
version
- keep versions sorted, use OrderedDict
- add -V/--long-version command-line option
- add Qt version in the list of versions
- update About page
---
picard/tagger.py | 9 ++++++++-
picard/ui/options/about.py | 12 +++++++-----
picard/util/versions.py | 29 +++++++++++++++++++----------
3 files changed, 34 insertions(+), 16 deletions(-)
diff --git a/picard/tagger.py b/picard/tagger.py
index 40096b364..babcb0be3 100644
--- a/picard/tagger.py
+++ b/picard/tagger.py
@@ -662,12 +662,16 @@ Options:
-d, --debug enable debug-level logging
-h, --help display this help and exit
-v, --version display version information and exit
+ -V, --long-version display long version information and exit
""" % (sys.argv[0],)
def version():
print "%s %s %s" % (PICARD_ORG_NAME, PICARD_APP_NAME, PICARD_FANCY_VERSION_STR)
+def longversion():
+ print versions.as_string()
+
def main(localedir=None, autoupdate=True):
# Some libs (ie. Phonon) require those to be set
@@ -675,13 +679,16 @@ def main(localedir=None, autoupdate=True):
QtGui.QApplication.setOrganizationName(PICARD_ORG_NAME)
signal.signal(signal.SIGINT, signal.SIG_DFL)
- opts, args = getopt.gnu_getopt(sys.argv[1:], "hvd", ["help", "version", "debug"])
+ opts, args = getopt.gnu_getopt(sys.argv[1:], "hvdV", ["help", "version",
+ "debug", "long-version"])
kwargs = {}
for opt, arg in opts:
if opt in ("-h", "--help"):
return help()
elif opt in ("-v", "--version"):
return version()
+ elif opt in ("-V", "--long-version"):
+ return longversion()
elif opt in ("-d", "--debug"):
kwargs["debug"] = True
tagger = Tagger(args, localedir, autoupdate, **kwargs)
diff --git a/picard/ui/options/about.py b/picard/ui/options/about.py
index fb7abd6a4..83d17cdd5 100644
--- a/picard/ui/options/about.py
+++ b/picard/ui/options/about.py
@@ -57,20 +57,22 @@ class AboutOptionsPage(OptionsPage):
else:
args["translator-credits"] = ""
+ args['third_parties_versions'] = '
'.join([u"%s %s" %
+ (versions.version_name(name), value) for name, value
+ in versions.as_dict(i18n=True).items()
+ if name != 'version'])
text = _(u"""MusicBrainz Picard
Version %(version)s
-PyQt %(pyqt-version)s
-Mutagen %(mutagen-version)s
-Discid %(discid-version)s
+%(third_parties_versions)s
Supported formats
%(formats)s
Please donate
Thank you for using Picard. Picard relies on the MusicBrainz database, which is operated by the MetaBrainz Foundation with the help of thousands of volunteers. If you like this application please consider donating to the MetaBrainz Foundation to keep the service running.
Donate now!
Credits
-Copyright © 2004-2014 Robert Kaye, Lukáš Lalinský and others%(translator-credits)s
-%(picard-doc-url)s
+Copyright © 2004-2015 Robert Kaye, Lukáš Lalinský, Laurent Monin and others%(translator-credits)s
+Official website
%(picard-doc-url)s
""") % args
self.ui.label.setOpenExternalLinks(True)
self.ui.label.setText(text)
diff --git a/picard/util/versions.py b/picard/util/versions.py
index 4399a5161..6abaff0af 100644
--- a/picard/util/versions.py
+++ b/picard/util/versions.py
@@ -18,22 +18,25 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+from collections import OrderedDict
from mutagen import version_string as mutagen_version
-from PyQt4.QtCore import PYQT_VERSION_STR as pyqt_version
+from PyQt4.QtCore import PYQT_VERSION_STR as pyqt_version, QT_VERSION_STR
from picard import PICARD_FANCY_VERSION_STR
from picard.disc import discid_version
-_versions = {
- "version": PICARD_FANCY_VERSION_STR,
- "pyqt-version": pyqt_version,
- "mutagen-version": mutagen_version,
- "discid-version": discid_version,
-}
+_versions = OrderedDict([
+ ("version", PICARD_FANCY_VERSION_STR),
+ ("pyqt-version", pyqt_version),
+ ("qt-version", QT_VERSION_STR),
+ ("mutagen-version", mutagen_version),
+ ("discid-version", discid_version),
+])
_names = {
"version": "Picard",
"pyqt-version": "PyQt",
+ "qt-version": "Qt",
"mutagen-version": "Mutagen",
"discid-version": "Discid",
}
@@ -47,11 +50,17 @@ def _value_as_text(value, i18n=False):
return value
+def version_name(key):
+ return _names[key]
+
+
def as_dict(i18n=False):
- return dict([(key, _value_as_text(value, i18n)) for key, value in
- _versions.iteritems()])
+ return OrderedDict([(key, _value_as_text(value, i18n)) for key,
+ value in
+ _versions.items()])
def as_string(i18n=False, separator=", "):
+ values = as_dict(i18n)
return separator.join([_names[key] + " " + value for key, value in
- as_dict(i18n).items()])
+ values.items()])