Exemplo n.º 1
0
    def __init__(self, default_page=None, parent=None):
        QtGui.QDialog.__init__(self, parent)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.buttonbox.addButton(StandardButton(StandardButton.OK),
                                    QtGui.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                    QtGui.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                    QtGui.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.buttonbox.helpRequested.connect(self.help)

        self.pages = []
        for Page in page_classes:
            page = Page(self.ui.pages_stack)
            self.pages.append(page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        self.add_pages(None, default_page, self.ui.pages_tree)

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()

        for page in self.pages:
            page.load()
        self.ui.pages_tree.setCurrentItem(self.default_item)
Exemplo n.º 2
0
 def __init__(self, files, parent=None):
     QtGui.QDialog.__init__(self, parent)
     self.ui = Ui_TagsFromFileNamesDialog()
     self.ui.setupUi(self)
     items = [
         "%artist%/%album%/%tracknumber% %title%",
         "%artist%/%album%/%tracknumber% - %title%",
         "%artist%/%album - %tracknumber% - %title%",
     ]
     format = config.persist["tags_from_filenames_format"]
     if format and format not in items:
         items.insert(0, format)
     self.ui.format.addItems(items)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.OK), QtGui.QDialogButtonBox.AcceptRole)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL), QtGui.QDialogButtonBox.RejectRole)
     self.ui.buttonbox.accepted.connect(self.accept)
     self.ui.buttonbox.rejected.connect(self.reject)
     self.ui.preview.clicked.connect(self.preview)
     self.ui.files.setHeaderLabels([_("File Name")])
     self.restoreWindowState()
     self.files = files
     self.items = []
     for file in files:
         item = QtGui.QTreeWidgetItem(self.ui.files)
         item.setText(0, os.path.basename(file.filename))
         self.items.append(item)
     self._tag_re = re.compile("(%\w+%)")
Exemplo n.º 3
0
    def __init__(self, default_page=None, parent=None):
        PicardDialog.__init__(self, parent)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.reset_all_button = QtGui.QPushButton(
            _("&Restore all Defaults"))
        self.ui.reset_all_button.setToolTip(
            _("Reset all of Picard's settings"))
        self.ui.reset_button = QtGui.QPushButton(_("Restore &Defaults"))
        self.ui.reset_button.setToolTip(
            _("Reset all settings for current option page"))

        self.ui.buttonbox.addButton(StandardButton(StandardButton.OK),
                                    QtGui.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                    QtGui.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                    QtGui.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.addButton(self.ui.reset_all_button,
                                    QtGui.QDialogButtonBox.ActionRole)
        self.ui.buttonbox.addButton(self.ui.reset_button,
                                    QtGui.QDialogButtonBox.ActionRole)

        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.reset_all_button.clicked.connect(self.confirm_reset_all)
        self.ui.reset_button.clicked.connect(self.confirm_reset)
        self.ui.buttonbox.helpRequested.connect(self.help)

        self.pages = []
        for Page in page_classes:
            page = Page(self.ui.pages_stack)
            self.pages.append(page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        self.add_pages(None, default_page, self.ui.pages_tree)

        # work-around to set optimal option pane width
        self.ui.pages_tree.expandAll()
        max_page_name = self.ui.pages_tree.sizeHintForColumn(
            0) + 2 * self.ui.pages_tree.frameWidth()
        self.ui.pages_tree.collapseAll()
        self.ui.pages_tree.setMinimumWidth(max_page_name)

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()

        for page in self.pages:
            page.load()
        self.ui.pages_tree.setCurrentItem(self.default_item)
Exemplo n.º 4
0
    def __init__(self, parent=None, types=None):
        if types is None:
            types = []
        super().__init__(parent)

        self.setWindowTitle(_("Cover art types"))
        self._items = {}
        self.layout = QtWidgets.QVBoxLayout(self)

        grid = QtWidgets.QWidget()
        gridlayout = QtWidgets.QGridLayout()
        grid.setLayout(gridlayout)

        for index, caa_type in enumerate(CAA_TYPES):
            row = index // self._columns
            column = index % self._columns
            name = caa_type["name"]
            text = translate_caa_type(name)
            item = QtWidgets.QCheckBox(text)
            item.setChecked(name in types)
            self._items[item] = caa_type
            gridlayout.addWidget(item, row, column)

        self.layout.addWidget(grid)

        self.buttonbox = QtWidgets.QDialogButtonBox(self)
        self.buttonbox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonbox.addButton(StandardButton(StandardButton.OK),
                                 QtWidgets.QDialogButtonBox.AcceptRole)
        self.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                 QtWidgets.QDialogButtonBox.RejectRole)
        self.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                 QtWidgets.QDialogButtonBox.HelpRole)
        self.buttonbox.accepted.connect(self.accept)
        self.buttonbox.rejected.connect(self.reject)
        self.buttonbox.helpRequested.connect(self.help)

        extrabuttons = [
            (N_("Chec&k all"), self.checkall),
            (N_("&Uncheck all"), self.uncheckall),
        ]
        for label, callback in extrabuttons:
            button = QtWidgets.QPushButton(_(label))
            button.setSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                 QtWidgets.QSizePolicy.Expanding)
            self.buttonbox.addButton(button,
                                     QtWidgets.QDialogButtonBox.ActionRole)
            button.clicked.connect(callback)

        self.layout.addWidget(self.buttonbox)

        self.buttonbox.accepted.connect(self.accept)
        self.buttonbox.rejected.connect(self.reject)
Exemplo n.º 5
0
    def __init__(self, default_page=None, parent=None):
        super().__init__(parent)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.reset_all_button = QtWidgets.QPushButton(_("&Restore all Defaults"))
        self.ui.reset_all_button.setToolTip(_("Reset all of Picard's settings"))
        self.ui.reset_button = QtWidgets.QPushButton(_("Restore &Defaults"))
        self.ui.reset_button.setToolTip(_("Reset all settings for current option page"))

        ok = StandardButton(StandardButton.OK)
        ok.setText(_("Make It So!"))
        self.ui.buttonbox.addButton(ok, QtWidgets.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL), QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP), QtWidgets.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.addButton(self.ui.reset_all_button, QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.buttonbox.addButton(self.ui.reset_button, QtWidgets.QDialogButtonBox.ActionRole)

        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.reset_all_button.clicked.connect(self.confirm_reset_all)
        self.ui.reset_button.clicked.connect(self.confirm_reset)
        self.ui.buttonbox.helpRequested.connect(self.help)

        self.pages = []
        for Page in page_classes:
            page = Page(self.ui.pages_stack)
            self.pages.append(page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        self.add_pages(None, default_page, self.ui.pages_tree)

        # work-around to set optimal option pane width
        self.ui.pages_tree.expandAll()
        max_page_name = self.ui.pages_tree.sizeHintForColumn(0) + 2*self.ui.pages_tree.frameWidth()
        self.ui.pages_tree.collapseAll()
        self.ui.splitter.setSizes([max_page_name,
                                   self.geometry().width() - max_page_name])

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()
        self.finished.connect(self.saveWindowState)

        for page in self.pages:
            page.load()
        self.ui.pages_tree.setCurrentItem(self.default_item)
Exemplo n.º 6
0
    def __init__(self, parent=None, types=[]):
        super(CAATypesSelectorDialog, self).__init__(parent)

        self.setWindowTitle(_("Cover art types"))
        self._items = {}
        self.layout = QtGui.QVBoxLayout(self)

        grid = QtGui.QWidget()
        gridlayout = QtGui.QGridLayout()
        grid.setLayout(gridlayout)

        rows = len(CAA_TYPES) // self._columns + 1
        positions = [(i, j) for i in range(rows) for j in range(self._columns)]

        for position, caa_type in zip(positions, CAA_TYPES):
            name = caa_type["name"]
            text = translate_caa_type(name)
            item = QtGui.QCheckBox(text)
            item.setChecked(name in types)
            self._items[item] = caa_type
            gridlayout.addWidget(item, *position)

        self.layout.addWidget(grid)

        self.buttonbox = QtGui.QDialogButtonBox(self)
        self.buttonbox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonbox.addButton(StandardButton(StandardButton.OK),
                                 QtGui.QDialogButtonBox.AcceptRole)
        self.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                 QtGui.QDialogButtonBox.RejectRole)
        self.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                 QtGui.QDialogButtonBox.HelpRole)
        self.buttonbox.accepted.connect(self.accept)
        self.buttonbox.rejected.connect(self.reject)
        self.buttonbox.helpRequested.connect(self.help)

        extrabuttons = [
            (N_("Chec&k all"), self.checkall),
            (N_("&Uncheck all"), self.uncheckall),
        ]
        for label, callback in extrabuttons:
            button = QtGui.QPushButton(_(label))
            button.setSizePolicy(QtGui.QSizePolicy.Fixed,
                                 QtGui.QSizePolicy.Expanding)
            self.buttonbox.addButton(button, QtGui.QDialogButtonBox.ActionRole)
            button.clicked.connect(callback)

        self.layout.addWidget(self.buttonbox)

        self.buttonbox.accepted.connect(self.accept)
        self.buttonbox.rejected.connect(self.reject)
Exemplo n.º 7
0
 def setupUi(self, accept_button_title):
     self.verticalLayout = QtWidgets.QVBoxLayout(self)
     self.verticalLayout.setObjectName(_("vertical_layout"))
     self.search_box = SearchBox(self)
     self.search_box.setObjectName(_("search_box"))
     self.verticalLayout.addWidget(self.search_box)
     self.center_widget = QtWidgets.QWidget(self)
     self.center_widget.setObjectName(_("center_widget"))
     self.center_layout = QtWidgets.QVBoxLayout(self.center_widget)
     self.center_layout.setObjectName(_("center_layout"))
     self.center_layout.setContentsMargins(1, 1, 1, 1)
     self.center_widget.setLayout(self.center_layout)
     self.verticalLayout.addWidget(self.center_widget)
     self.buttonBox = QtWidgets.QDialogButtonBox(self)
     self.accept_button = QtWidgets.QPushButton(
         accept_button_title,
         self.buttonBox)
     self.accept_button.setEnabled(False)
     self.buttonBox.addButton(
             self.accept_button,
             QtWidgets.QDialogButtonBox.AcceptRole)
     self.buttonBox.addButton(
             StandardButton(StandardButton.CANCEL),
             QtWidgets.QDialogButtonBox.RejectRole)
     self.buttonBox.accepted.connect(self.accept)
     self.buttonBox.rejected.connect(self.reject)
     self.verticalLayout.addWidget(self.buttonBox)
Exemplo n.º 8
0
    def __init__(self,
                 parent=None,
                 option_group=None,
                 override_profiles=None,
                 override_settings=None):
        super().__init__(parent=parent)
        self.option_group = option_group
        self.ui = Ui_AttachedProfilesDialog()
        self.ui.setupUi(self)
        self.ui.buttonBox.addButton(StandardButton(StandardButton.CLOSE),
                                    QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonBox.rejected.connect(self.close_window)

        config = get_config()
        if override_profiles is None or override_settings is None:
            self.profiles = config.profiles[SettingConfigSection.PROFILES_KEY]
            self.settings = config.profiles[SettingConfigSection.SETTINGS_KEY]
        else:
            self.profiles = override_profiles
            self.settings = override_settings

        self.populate_table()

        self.ui.buttonBox.setFocus()
        self.setModal(True)
Exemplo n.º 9
0
 def setupUi(self):
     self.verticalLayout = QtWidgets.QVBoxLayout(self)
     self.verticalLayout.setObjectName("vertical_layout")
     if self.show_search:
         self.search_box = SearchBox(
             self, force_advanced_search=self.force_advanced_search)
         self.search_box.setObjectName("search_box")
         self.verticalLayout.addWidget(self.search_box)
     self.center_widget = QtWidgets.QWidget(self)
     self.center_widget.setObjectName("center_widget")
     self.center_layout = QtWidgets.QVBoxLayout(self.center_widget)
     self.center_layout.setObjectName("center_layout")
     self.center_layout.setContentsMargins(1, 1, 1, 1)
     self.center_widget.setLayout(self.center_layout)
     self.verticalLayout.addWidget(self.center_widget)
     self.buttonBox = QtWidgets.QDialogButtonBox(self)
     if self.show_search and self.search_type:
         self.search_browser_button = QtWidgets.QPushButton(
             _("Search in browser"), self.buttonBox)
         self.buttonBox.addButton(
             self.search_browser_button,
             QtWidgets.QDialogButtonBox.ButtonRole.ActionRole)
         self.search_browser_button.clicked.connect(self.search_browser)
     self.accept_button = QtWidgets.QPushButton(self.accept_button_title,
                                                self.buttonBox)
     self.accept_button.setEnabled(False)
     self.buttonBox.addButton(
         self.accept_button,
         QtWidgets.QDialogButtonBox.ButtonRole.AcceptRole)
     self.buttonBox.addButton(
         StandardButton(StandardButton.CANCEL),
         QtWidgets.QDialogButtonBox.ButtonRole.RejectRole)
     self.buttonBox.accepted.connect(self.accept)
     self.buttonBox.rejected.connect(self.reject)
     self.verticalLayout.addWidget(self.buttonBox)
Exemplo n.º 10
0
    def __init__(self, files, parent=None):
        QtGui.QDialog.__init__(self, parent)

        self.ui = Ui_TagEditorDialog()
        self.ui.setupUi(self)

        title = _("Details") + " - "
        total = len(files)
        if total == 1:
            title += files[0].base_filename
        else:
            title += ungettext("%d file", "%d files", total) % total
        self.setWindowTitle(title)

        self.ui.buttonbox.addButton(StandardButton(StandardButton.OK),
                                    QtGui.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                    QtGui.QDialogButtonBox.RejectRole)
        self.connect(self.ui.buttonbox, QtCore.SIGNAL('accepted()'), self,
                     QtCore.SLOT('accept()'))
        self.connect(self.ui.buttonbox, QtCore.SIGNAL('rejected()'), self,
                     QtCore.SLOT('reject()'))

        self.connect(self.ui.tags_add, QtCore.SIGNAL('clicked()'),
                     self.add_tag)
        self.connect(self.ui.tags_edit, QtCore.SIGNAL('clicked()'),
                     self.edit_tag)
        self.connect(self.ui.tags_delete, QtCore.SIGNAL('clicked()'),
                     self.delete_tag)
        self.connect(self.ui.tags,
                     QtCore.SIGNAL("itemActivated (QTreeWidgetItem*, int)"),
                     self.edit_tag)

        self.ui.tags.setSortingEnabled(True)
        self.ui.tags.sortByColumn(0, QtCore.Qt.AscendingOrder)

        if self.config.setting['enable_ratings']:
            self.ui.rating.setMaximum(self.config.setting['rating_steps'] - 1)
        else:
            self.ui.ratingLabel.hide()
            self.ui.rating.hide()

        self.changed = set()
        self.files = files
        self.load()
        self.load_info()
Exemplo n.º 11
0
 def __init__(self, files, parent=None):
     super().__init__(parent)
     self.ui = Ui_TagsFromFileNamesDialog()
     self.ui.setupUi(self)
     items = [
         "%artist%/%album%/%title%",
         "%artist%/%album%/%tracknumber% %title%",
         "%artist%/%album%/%tracknumber% - %title%",
         "%artist%/%album% - %tracknumber% - %title%",
         "%artist% - %album%/%title%",
         "%artist% - %album%/%tracknumber% %title%",
         "%artist% - %album%/%tracknumber% - %title%",
     ]
     config = get_config()
     tff_format = config.persist["tags_from_filenames_format"]
     if tff_format not in items:
         selected_index = 0
         if tff_format:
             items.insert(0, tff_format)
     else:
         selected_index = items.index(tff_format)
     self.ui.format.addItems(items)
     self.ui.format.setCurrentIndex(selected_index)
     self.ui.buttonbox.addButton(
         StandardButton(StandardButton.HELP),
         QtWidgets.QDialogButtonBox.ButtonRole.HelpRole)
     self.ui.buttonbox.addButton(
         StandardButton(StandardButton.OK),
         QtWidgets.QDialogButtonBox.ButtonRole.AcceptRole)
     self.ui.buttonbox.addButton(
         StandardButton(StandardButton.CANCEL),
         QtWidgets.QDialogButtonBox.ButtonRole.RejectRole)
     self.ui.buttonbox.accepted.connect(self.accept)
     self.ui.buttonbox.rejected.connect(self.reject)
     self.ui.buttonbox.helpRequested.connect(self.show_help)
     self.ui.preview.clicked.connect(self.preview)
     self.ui.files.setHeaderLabels([_("File Name")])
     self.files = files
     self.items = []
     for file in files:
         item = QtWidgets.QTreeWidgetItem(self.ui.files)
         item.setText(0, os.path.basename(file.filename))
         self.items.append(item)
Exemplo n.º 12
0
 def __init__(self, name, value, parent=None):
     QtGui.QDialog.__init__(self, parent)
     self.ui = Ui_EditTagDialog()
     self.ui.setupUi(self)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.OK),
                                 QtGui.QDialogButtonBox.AcceptRole)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                 QtGui.QDialogButtonBox.RejectRole)
     self.connect(self.ui.buttonbox, QtCore.SIGNAL('accepted()'), self,
                  QtCore.SLOT('accept()'))
     self.connect(self.ui.buttonbox, QtCore.SIGNAL('rejected()'), self,
                  QtCore.SLOT('reject()'))
     self.ui.name.addItems(sorted(tag_names.keys()))
     if name:
         self.ui.name.setEditText(name)
     if value:
         self.ui.value.document().setPlainText(value)
         self.ui.value.selectAll()
         self.ui.value.setFocus(QtCore.Qt.OtherFocusReason)
     else:
         self.ui.name.lineEdit().selectAll()
Exemplo n.º 13
0
 def __init__(self, files, parent=None):
     PicardDialog.__init__(self, parent)
     self.ui = Ui_TagsFromFileNamesDialog()
     self.ui.setupUi(self)
     items = [
         "%artist%/%album%/%title%",
         "%artist%/%album%/%tracknumber% %title%",
         "%artist%/%album%/%tracknumber% - %title%",
         "%artist%/%album% - %tracknumber% - %title%",
         "%artist% - %album%/%title%",
         "%artist% - %album%/%tracknumber% %title%",
         "%artist% - %album%/%tracknumber% - %title%",
     ]
     tff_format = config.persist["tags_from_filenames_format"]
     if tff_format not in items:
         selected_index = 0
         if tff_format:
             items.insert(0, tff_format)
     else:
         selected_index = items.index(tff_format)
     self.ui.format.addItems(items)
     self.ui.format.setCurrentIndex(selected_index)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.OK),
                                 QtWidgets.QDialogButtonBox.AcceptRole)
     self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                 QtWidgets.QDialogButtonBox.RejectRole)
     self.ui.buttonbox.accepted.connect(self.accept)
     self.ui.buttonbox.rejected.connect(self.reject)
     self.ui.preview.clicked.connect(self.preview)
     self.ui.files.setHeaderLabels([_("File Name")])
     self.restoreWindowState()
     self.files = files
     self.items = []
     for file in files:
         item = QtWidgets.QTreeWidgetItem(self.ui.files)
         item.setText(0, os.path.basename(file.filename))
         self.items.append(item)
     self._tag_re = re.compile(r"(%\w+%)")
     self.numeric_tags = ('tracknumber', 'totaltracks', 'discnumber',
                          'totaldiscs')
Exemplo n.º 14
0
    def __init__(self, parent=None, option_group=None):
        super().__init__(parent=parent)
        self.option_group = option_group
        self.ui = Ui_AttachedProfilesDialog()
        self.ui.setupUi(self)
        self.ui.buttonBox.addButton(StandardButton(StandardButton.CLOSE),
                                    QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonBox.rejected.connect(self.close_window)

        self.populate_table()

        self.ui.buttonBox.setFocus()
        self.setModal(True)
Exemplo n.º 15
0
    def __init__(self, default_page=None, parent=None):
        super().__init__(parent)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.reset_all_button = QtWidgets.QPushButton(_("&Restore all Defaults"))
        self.ui.reset_all_button.setToolTip(_("Reset all of Picard's settings"))
        self.ui.reset_button = QtWidgets.QPushButton(_("Restore &Defaults"))
        self.ui.reset_button.setToolTip(_("Reset all settings for current option page"))

        ok = StandardButton(StandardButton.OK)
        ok.setText(_("Make It So!"))
        self.ui.buttonbox.addButton(ok, QtWidgets.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL), QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP), QtWidgets.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.addButton(self.ui.reset_all_button, QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.buttonbox.addButton(self.ui.reset_button, QtWidgets.QDialogButtonBox.ActionRole)

        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.reset_all_button.clicked.connect(self.confirm_reset_all)
        self.ui.reset_button.clicked.connect(self.confirm_reset)
        self.ui.buttonbox.helpRequested.connect(self.help)

        self.pages = []
        for Page in page_classes:
            page = Page(self.ui.pages_stack)
            self.pages.append(page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        self.add_pages(None, default_page, self.ui.pages_tree)

        # work-around to set optimal option pane width
        self.ui.pages_tree.expandAll()
        max_page_name = self.ui.pages_tree.sizeHintForColumn(0) + 2*self.ui.pages_tree.frameWidth()
        self.ui.pages_tree.collapseAll()
        self.ui.splitter.setSizes([max_page_name,
                                   self.geometry().width() - max_page_name])

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()
        self.finished.connect(self.saveWindowState)

        for page in self.pages:
            page.load()
        self.ui.pages_tree.setCurrentItem(self.default_item)
Exemplo n.º 16
0
    def __init__(self, obj, parent=None):
        super().__init__(parent)
        self.obj = obj
        self.images = []
        self.existing_images = []
        self.ui = Ui_InfoDialog()
        self.display_existing_artwork = False

        if (isinstance(obj, File) and
                isinstance(obj.parent, Track) or
                isinstance(obj, Track) or
                (isinstance(obj, Album) and obj.get_num_total_files() > 0)):
            # Display existing artwork only if selected object is track object
            # or linked to a track object or it's an album with files
            if (getattr(obj, 'orig_metadata', None) is not None and
                    obj.orig_metadata.images and
                    obj.orig_metadata.images != obj.metadata.images):
                self.display_existing_artwork = True
                self.existing_images = obj.orig_metadata.images

        if obj.metadata.images:
            self.images = obj.metadata.images
        if not self.images and self.existing_images:
            self.images = self.existing_images
            self.existing_images = []
            self.display_existing_artwork = False
        self.ui.setupUi(self)
        self.ui.buttonBox.addButton(
            StandardButton(StandardButton.CLOSE), QtWidgets.QDialogButtonBox.AcceptRole)
        self.ui.buttonBox.accepted.connect(self.accept)

        # Add the ArtworkTable to the ui
        self.ui.artwork_table = ArtworkTable(self.display_existing_artwork)
        self.ui.artwork_table.setObjectName("artwork_table")
        self.ui.vboxlayout1.addWidget(self.ui.artwork_table)
        self.setTabOrder(self.ui.tabWidget, self.ui.artwork_table)
        self.setTabOrder(self.ui.artwork_table, self.ui.buttonBox)

        self.setWindowTitle(_("Info"))
        self.artwork_table = self.ui.artwork_table
        self._display_tabs()
        self.restore_geometry()
Exemplo n.º 17
0
Arquivo: caa.py Projeto: skyme5/picard
    def __init__(self, parent=None, types_include=None, types_exclude=None):
        super().__init__(parent)
        if types_include is None:
            types_include = []
        if types_exclude is None:
            types_exclude = []

        self.setWindowTitle(_("Cover art types"))
        self.setWindowModality(QtCore.Qt.WindowModal)
        self.layout = QtWidgets.QVBoxLayout(self)
        self.layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)

        # Create list boxes for dialog
        self.list_include = ListBox()
        self.list_exclude = ListBox()
        self.list_ignore = ListBox()

        # Populate list boxes from current settings
        self.fill_lists(types_include, types_exclude)

        # Set triggers when the lists receive the current focus
        self.list_include.clicked.connect(partial(self.clear_focus, [self.list_ignore, self.list_exclude]))
        self.list_exclude.clicked.connect(partial(self.clear_focus, [self.list_ignore, self.list_include]))
        self.list_ignore.clicked.connect(partial(self.clear_focus, [self.list_include, self.list_exclude]))

        # Add instructions to the dialog box
        instructions = QtWidgets.QLabel()
        instructions.setText(_("Please select the contents of the image type 'Include' and 'Exclude' lists."))
        instructions.setWordWrap(True)
        instructions.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        self.layout.addWidget(instructions)

        grid = QtWidgets.QWidget()
        gridlayout = QtWidgets.QGridLayout()
        grid.setLayout(gridlayout)

        self.arrows_include = ArrowsColumn(
            self.list_include,
            self.list_ignore,
            callback=self.set_buttons_enabled_state,
        )

        self.arrows_exclude = ArrowsColumn(
            self.list_exclude,
            self.list_ignore,
            callback=self.set_buttons_enabled_state,
            reverse=True
        )

        def add_widget(row=0, column=0, widget=None):
            gridlayout.addWidget(widget, row, column)

        add_widget(row=0, column=0, widget=QtWidgets.QLabel(_("Include types list")))
        add_widget(row=1, column=0, widget=self.list_include)

        add_widget(row=1, column=1, widget=self.arrows_include)
        add_widget(row=1, column=2, widget=self.list_ignore)
        add_widget(row=1, column=3, widget=self.arrows_exclude)

        add_widget(row=0, column=4, widget=QtWidgets.QLabel(_("Exclude types list")))
        add_widget(row=1, column=4, widget=self.list_exclude)

        self.layout.addWidget(grid)

        # Add usage explanation to the dialog box
        instructions = QtWidgets.QLabel()
        instructions.setText(_(
            "CAA images with an image type found in the 'Include' list will be downloaded and used "
            "UNLESS they also have an image type found in the 'Exclude' list. Images with types "
            "found in the 'Exclude' list will NEVER be used. Image types not appearing in the 'Include' "
            "or 'Exclude' lists will not be considered when determining whether or not to download and "
            "use a CAA image.\n")
        )
        instructions.setWordWrap(True)
        instructions.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        self.layout.addWidget(instructions)

        self.buttonbox = QtWidgets.QDialogButtonBox(self)
        self.buttonbox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonbox.addButton(
            StandardButton(StandardButton.OK), QtWidgets.QDialogButtonBox.AcceptRole)
        self.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                 QtWidgets.QDialogButtonBox.RejectRole)
        self.buttonbox.addButton(
            StandardButton(StandardButton.HELP), QtWidgets.QDialogButtonBox.HelpRole)

        extrabuttons = [
            (N_("I&nclude all"), self.move_all_to_include_list),
            (N_("E&xclude all"), self.move_all_to_exclude_list),
            (N_("C&lear all"), self.move_all_to_ignore_list),
            (N_("Restore &Defaults"), self.reset_to_defaults),
        ]
        for label, callback in extrabuttons:
            button = QtWidgets.QPushButton(_(label))
            button.setSizePolicy(
                QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
            self.buttonbox.addButton(button, QtWidgets.QDialogButtonBox.ActionRole)
            button.clicked.connect(callback)

        self.layout.addWidget(self.buttonbox)

        self.buttonbox.accepted.connect(self.accept)
        self.buttonbox.rejected.connect(self.reject)
        self.buttonbox.helpRequested.connect(self.help)

        self.set_buttons_enabled_state()
Exemplo n.º 18
0
    def __init__(self, default_page=None, parent=None):
        super().__init__(parent)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.reset_all_button = QtWidgets.QPushButton(
            _("&Restore all Defaults"))
        self.ui.reset_all_button.setToolTip(
            _("Reset all of Picard's settings"))
        self.ui.reset_button = QtWidgets.QPushButton(_("Restore &Defaults"))
        self.ui.reset_button.setToolTip(
            _("Reset all settings for current option page"))

        ok = StandardButton(StandardButton.OK)
        ok.setText(_("Make It So!"))
        self.ui.buttonbox.addButton(ok, QtWidgets.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                    QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                    QtWidgets.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.addButton(self.ui.reset_all_button,
                                    QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.buttonbox.addButton(self.ui.reset_button,
                                    QtWidgets.QDialogButtonBox.ActionRole)

        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.reset_all_button.clicked.connect(self.confirm_reset_all)
        self.ui.reset_button.clicked.connect(self.confirm_reset)
        self.ui.buttonbox.helpRequested.connect(self.show_help)

        self.ui.attached_profiles_button = QtWidgets.QPushButton(
            _("Attached Profiles"))
        self.ui.attached_profiles_button.setToolTip(
            _("Show which profiles are attached to the options on this page"))
        self.ui.buttonbox.addButton(self.ui.attached_profiles_button,
                                    QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.attached_profiles_button.clicked.connect(
            self.show_attached_profiles_dialog)

        config = get_config()

        self.pages = []
        for Page in page_classes:
            try:
                page = Page(self.ui.pages_stack)
                self.pages.append(page)
            except Exception:
                log.exception('Failed initializing options page %r', page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        if not default_page:
            default_page = config.persist["options_last_active_page"]
        self.add_pages(None, default_page, self.ui.pages_tree)

        # work-around to set optimal option pane width
        self.ui.pages_tree.expandAll()
        max_page_name = self.ui.pages_tree.sizeHintForColumn(
            0) + 2 * self.ui.pages_tree.frameWidth()
        self.ui.dialog_splitter.setSizes(
            [max_page_name,
             self.geometry().width() - max_page_name])

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()
        self.finished.connect(self.saveWindowState)

        for page in self.pages:
            try:
                page.load()
            except Exception:
                log.exception('Failed loading options page %r', page)
                self.disable_page(page.NAME)
        self.ui.pages_tree.setCurrentItem(self.default_item)

        self.profile_page = self.get_page('profiles')
        self.profile_page.signal_refresh.connect(
            self.update_from_profile_changes)

        self.first_enter = True
        self.installEventFilter(self)

        self.highlight_enabled_profile_options()
        current_page = self.item_to_page[self.ui.pages_tree.currentItem()]
        self.set_profiles_button_and_highlight(current_page)
Exemplo n.º 19
0
    def __init__(self, default_page=None, parent=None):
        super().__init__(parent)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        from picard.ui.ui_options import Ui_Dialog
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.reset_all_button = QtWidgets.QPushButton(
            _("&Restore all Defaults"))
        self.ui.reset_all_button.setToolTip(
            _("Reset all of Picard's settings"))
        self.ui.reset_button = QtWidgets.QPushButton(_("Restore &Defaults"))
        self.ui.reset_button.setToolTip(
            _("Reset all settings for current option page"))

        ok = StandardButton(StandardButton.OK)
        ok.setText(_("Make It So!"))
        self.ui.buttonbox.addButton(ok, QtWidgets.QDialogButtonBox.AcceptRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.CANCEL),
                                    QtWidgets.QDialogButtonBox.RejectRole)
        self.ui.buttonbox.addButton(StandardButton(StandardButton.HELP),
                                    QtWidgets.QDialogButtonBox.HelpRole)
        self.ui.buttonbox.addButton(self.ui.reset_all_button,
                                    QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.buttonbox.addButton(self.ui.reset_button,
                                    QtWidgets.QDialogButtonBox.ActionRole)

        self.ui.buttonbox.accepted.connect(self.accept)
        self.ui.buttonbox.rejected.connect(self.reject)
        self.ui.reset_all_button.clicked.connect(self.confirm_reset_all)
        self.ui.reset_button.clicked.connect(self.confirm_reset)
        self.ui.buttonbox.helpRequested.connect(self.show_help)

        profile_help = StandardButton(StandardButton.HELP)
        profile_help.setText(_("Profile Help"))
        self.ui.profiles_buttonbox.addButton(
            profile_help, QtWidgets.QDialogButtonBox.HelpRole)
        self.ui.profiles_buttonbox.helpRequested.connect(
            self.show_profile_help)

        self.ui.attached_profiles_button = QtWidgets.QPushButton(
            _("Attached Profiles"))
        self.ui.attached_profiles_button.setToolTip(
            _("Show which profiles are attached to the options on this page"))
        self.ui.profiles_buttonbox.addButton(
            self.ui.attached_profiles_button,
            QtWidgets.QDialogButtonBox.ActionRole)
        self.ui.attached_profiles_button.clicked.connect(
            self.show_attached_profiles_dialog)

        config = get_config()

        self.pages = []
        for Page in page_classes:
            try:
                page = Page(self.ui.pages_stack)
                self.pages.append(page)
            except Exception:
                log.exception('Failed initializing options page %r', page)
        self.item_to_page = {}
        self.page_to_item = {}
        self.default_item = None
        if not default_page:
            default_page = config.persist["options_last_active_page"]
        self.add_pages(None, default_page, self.ui.pages_tree)

        # work-around to set optimal option pane width
        self.ui.pages_tree.expandAll()
        max_page_name = self.ui.pages_tree.sizeHintForColumn(
            0) + 2 * self.ui.pages_tree.frameWidth()
        self.ui.dialog_splitter.setSizes(
            [max_page_name,
             self.geometry().width() - max_page_name])

        self.ui.pages_tree.setHeaderLabels([""])
        self.ui.pages_tree.header().hide()
        self.ui.pages_tree.itemSelectionChanged.connect(self.switch_page)

        self.restoreWindowState()
        self.finished.connect(self.saveWindowState)

        for page in self.pages:
            try:
                page.load()
            except Exception:
                log.exception('Failed loading options page %r', page)
                self.disable_page(page.NAME)
        self.ui.pages_tree.setCurrentItem(self.default_item)

        self.first_enter = True
        self.installEventFilter(self)

        self.USER_SETTINGS_TITLE = _("User base settings")

        if config.profiles[SettingConfigSection.PROFILES_KEY]:
            self.ui.profile_frame.show()
            self.ui.save_to_profile.clear()
            self.ui.save_to_profile.addItem(self.USER_SETTINGS_TITLE,
                                            USER_SETTINGS_PROFILE_ID)
            index = 0
            for idx, item in enumerate(
                    config.profiles[SettingConfigSection.PROFILES_KEY],
                    start=1):
                self.ui.save_to_profile.addItem(item["title"], item["id"])
                if not index and item["enabled"]:
                    index = idx
            self.ui.save_to_profile.currentIndexChanged.connect(
                self.switch_profile)
            self.ui.save_to_profile.setCurrentIndex(index)
        else:
            self.ui.profile_frame.hide()