diff --git a/picard/ui/options/fingerprinting.py b/picard/ui/options/fingerprinting.py new file mode 100644 index 000000000..4dc90c273 --- /dev/null +++ b/picard/ui/options/fingerprinting.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +# +# Picard, the next-generation MusicBrainz tagger +# Copyright (C) 2011 Lukáš Lalinský +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +import os +from PyQt4 import QtCore, QtGui +from picard.config import BoolOption, TextOption +from picard.ui.options import OptionsPage, OptionsCheckError, register_options_page +from picard.ui.ui_options_fingerprinting import Ui_FingerprintingOptionsPage + + +class FingerprintingOptionsPage(OptionsPage): + + NAME = "fingerprinting" + TITLE = N_("Fingerpriting") + PARENT = "advanced" + SORT_ORDER = 35 + ACTIVE = True + + options = [ + TextOption("setting", "fingerprinting_system", "musicdns"), + TextOption("setting", "acoustid_fpcalc", ""), + TextOption("setting", "acoustid_apikey", ""), + ] + + def __init__(self, parent=None): + super(FingerprintingOptionsPage, self).__init__(parent) + self.ui = Ui_FingerprintingOptionsPage() + self.ui.setupUi(self) + self.connect(self.ui.use_musicdns, QtCore.SIGNAL("clicked()"), self.update_groupboxes) + self.connect(self.ui.use_acoustid, QtCore.SIGNAL("clicked()"), self.update_groupboxes) + self.ui.acoustid_fpcalc_browse.clicked.connect(self.acoustid_fpcalc_browse) + self.ui.acoustid_apikey_get.clicked.connect(self.acoustid_apikey_get) + + def load(self): + if self.config.setting["fingerprinting_system"] == "acoustid": + self.ui.use_acoustid.setChecked(True) + else: + self.ui.use_musicdns.setChecked(True) + self.ui.acoustid_fpcalc.setText(self.config.setting["acoustid_fpcalc"]) + self.ui.acoustid_apikey.setText(self.config.setting["acoustid_apikey"]) + self.update_groupboxes() + + def save(self): + if self.ui.use_acoustid.isChecked(): + self.config.setting["fingerprinting_system"] = "acoustid" + else: + self.config.setting["fingerprinting_system"] = "musicdns" + self.config.setting["acoustid_fpcalc"] = os.path.normpath(unicode(self.ui.acoustid_fpcalc.text())) + self.config.setting["acoustid_apikey"] = unicode(self.ui.acoustid_apikey.text()) + + def update_groupboxes(self): + if self.ui.use_acoustid.isChecked(): + self.ui.acoustid_settings.setEnabled(True) + else: + self.ui.acoustid_settings.setEnabled(False) + + def acoustid_fpcalc_browse(self): + path = QtGui.QFileDialog.getOpenFileName(self, "", self.ui.acoustid_fpcalc.text()) + if path: + path = os.path.normpath(unicode(path)) + self.ui.acoustid_fpcalc.setText(path) + + def acoustid_apikey_get(self): + from picard.util import webbrowser2 + webbrowser2.open("http://acoustid.org/api-key") + + +register_options_page(FingerprintingOptionsPage)