Beispiel #1
0
class TagBrowserWidget(QWidget):  # {{{
    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.parent = parent
        self._layout = QVBoxLayout()
        self.setLayout(self._layout)
        self._layout.setContentsMargins(0, 0, 0, 0)

        # Set up the find box & button
        search_layout = QHBoxLayout()
        self._layout.addLayout(search_layout)
        self.item_search = HistoryLineEdit(parent)
        self.item_search.setMinimumContentsLength(5)
        self.item_search.setSizeAdjustPolicy(
            self.item_search.AdjustToMinimumContentsLengthWithIcon)
        try:
            self.item_search.lineEdit().setPlaceholderText(
                _('Find item in tag browser'))
        except:
            pass  # Using Qt < 4.7
        self.item_search.setToolTip(
            _('Search for items. This is a "contains" search; items containing the\n'
              'text anywhere in the name will be found. You can limit the search\n'
              'to particular categories using syntax similar to search. For example,\n'
              'tags:foo will find foo in any tag, but not in authors etc. Entering\n'
              '*foo will filter all categories at once, showing only those items\n'
              'containing the text "foo"'))
        search_layout.addWidget(self.item_search)
        # Not sure if the shortcut should be translatable ...
        sc = QShortcut(QKeySequence(_('ALT+f')), parent)
        sc.activated.connect(self.set_focus_to_find_box)

        self.search_button = QToolButton()
        self.search_button.setText(_('F&ind'))
        self.search_button.setToolTip(_('Find the first/next matching item'))
        search_layout.addWidget(self.search_button)

        self.expand_button = QToolButton()
        self.expand_button.setText('-')
        self.expand_button.setToolTip(_('Collapse all categories'))
        search_layout.addWidget(self.expand_button)
        search_layout.setStretch(0, 10)
        search_layout.setStretch(1, 1)
        search_layout.setStretch(2, 1)

        self.current_find_position = None
        self.search_button.clicked.connect(self.find)
        self.item_search.initialize('tag_browser_search')
        self.item_search.lineEdit().returnPressed.connect(self.do_find)
        self.item_search.lineEdit().textEdited.connect(self.find_text_changed)
        self.item_search.activated[str].connect(self.do_find)
        self.item_search.completer().setCaseSensitivity(Qt.CaseSensitive)

        parent.tags_view = TagsView(parent)
        self.tags_view = parent.tags_view
        self.expand_button.clicked.connect(self.tags_view.collapseAll)
        self._layout.addWidget(parent.tags_view)

        # Now the floating 'not found' box
        l = QLabel(self.tags_view)
        self.not_found_label = l
        l.setFrameStyle(QFrame.StyledPanel)
        l.setAutoFillBackground(True)
        l.setText(
            '<p><b>' +
            _('No More Matches.</b><p> Click Find again to go to first match'))
        l.setAlignment(Qt.AlignVCenter)
        l.setWordWrap(True)
        l.resize(l.sizeHint())
        l.move(10, 20)
        l.setVisible(False)
        self.not_found_label_timer = QTimer()
        self.not_found_label_timer.setSingleShot(True)
        self.not_found_label_timer.timeout.connect(
            self.not_found_label_timer_event, type=Qt.QueuedConnection)

        parent.alter_tb = l = QPushButton(parent)
        l.setText(_('Alter Tag Browser'))
        l.setIcon(QIcon(I('tags.png')))
        l.m = QMenu()
        l.setMenu(l.m)
        self._layout.addWidget(l)

        sb = l.m.addAction(_('Sort by'))
        sb.m = l.sort_menu = QMenu(l.m)
        sb.setMenu(sb.m)
        sb.bg = QActionGroup(sb)

        # Must be in the same order as db2.CATEGORY_SORTS
        for i, x in enumerate((_('Sort by name'), _('Sort by number of books'),
                               _('Sort by average rating'))):
            a = sb.m.addAction(x)
            sb.bg.addAction(a)
            a.setCheckable(True)
            if i == 0:
                a.setChecked(True)
        sb.setToolTip(_('Set the sort order for entries in the Tag Browser'))
        sb.setStatusTip(sb.toolTip())

        ma = l.m.addAction(_('Search type when selecting multiple items'))
        ma.m = l.match_menu = QMenu(l.m)
        ma.setMenu(ma.m)
        ma.ag = QActionGroup(ma)

        # Must be in the same order as db2.MATCH_TYPE
        for i, x in enumerate(
            (_('Match any of the items'), _('Match all of the items'))):
            a = ma.m.addAction(x)
            ma.ag.addAction(a)
            a.setCheckable(True)
            if i == 0:
                a.setChecked(True)
        ma.setToolTip(
            _('When selecting multiple entries in the Tag Browser '
              'match any or all of them'))
        ma.setStatusTip(ma.toolTip())

        mt = l.m.addAction(_('Manage authors, tags, etc.'))
        mt.setToolTip(
            _('All of these category_managers are available by right-clicking '
              'on items in the tag browser above'))
        mt.m = l.manage_menu = QMenu(l.m)
        mt.setMenu(mt.m)

        # self.leak_test_timer = QTimer(self)
        # self.leak_test_timer.timeout.connect(self.test_for_leak)
        # self.leak_test_timer.start(5000)

    def set_pane_is_visible(self, to_what):
        self.tags_view.set_pane_is_visible(to_what)

    def find_text_changed(self, str):
        self.current_find_position = None

    def set_focus_to_find_box(self):
        self.item_search.setFocus()
        self.item_search.lineEdit().selectAll()

    def do_find(self, str=None):
        self.current_find_position = None
        self.find()

    def find(self):
        model = self.tags_view.model()
        model.clear_boxed()
        txt = unicode(self.item_search.currentText()).strip()

        if txt.startswith('*'):
            model.set_categories_filter(txt[1:])
            self.tags_view.recount()
            self.current_find_position = None
            return
        if model.get_categories_filter():
            model.set_categories_filter(None)
            self.tags_view.recount()
            self.current_find_position = None

        if not txt:
            return

        self.item_search.lineEdit().blockSignals(True)
        self.search_button.setFocus(True)
        self.item_search.lineEdit().blockSignals(False)

        key = None
        colon = txt.rfind(':') if len(txt) > 2 else 0
        if colon > 0:
            key = self.parent.library_view.model().db.\
                        field_metadata.search_term_to_field_key(txt[:colon])
            txt = txt[colon + 1:]

        self.current_find_position = \
            model.find_item_node(key, txt, self.current_find_position)

        if self.current_find_position:
            self.tags_view.show_item_at_path(self.current_find_position,
                                             box=True)
        elif self.item_search.text():
            self.not_found_label.setVisible(True)
            if self.tags_view.verticalScrollBar().isVisible():
                sbw = self.tags_view.verticalScrollBar().width()
            else:
                sbw = 0
            width = self.width() - 8 - sbw
            height = self.not_found_label.heightForWidth(width) + 20
            self.not_found_label.resize(width, height)
            self.not_found_label.move(4, 10)
            self.not_found_label_timer.start(2000)

    def not_found_label_timer_event(self):
        self.not_found_label.setVisible(False)
class Ui_TagListEditor(object):
    def setupUi(self, TagListEditor):
        TagListEditor.setObjectName(_fromUtf8("TagListEditor"))
        TagListEditor.resize(397, 335)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(I("chapters.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        TagListEditor.setWindowIcon(icon)
        self.gridlayout = QtGui.QGridLayout(TagListEditor)
        self.gridlayout.setObjectName(_fromUtf8("gridlayout"))
        self.horizontalLayout_11 = QtGui.QHBoxLayout()
        self.horizontalLayout_11.setObjectName(_fromUtf8("horizontalLayout_11"))
        self.search_box = HistoryLineEdit(TagListEditor)
        self.search_box.setObjectName(_fromUtf8("search_box"))
        self.horizontalLayout_11.addWidget(self.search_box)
        self.search_button = QtGui.QToolButton(TagListEditor)
        self.search_button.setObjectName(_fromUtf8("search_button"))
        self.horizontalLayout_11.addWidget(self.search_button)
        self.gridlayout.addLayout(self.horizontalLayout_11, 0, 1, 1, 1)
        self.verticalLayout_2 = QtGui.QVBoxLayout()
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.delete_button = QtGui.QToolButton(TagListEditor)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(I("trash.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.delete_button.setIcon(icon1)
        self.delete_button.setIconSize(QtCore.QSize(32, 32))
        self.delete_button.setObjectName(_fromUtf8("delete_button"))
        self.verticalLayout_2.addWidget(self.delete_button)
        self.rename_button = QtGui.QToolButton(TagListEditor)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8(I("edit_input.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.rename_button.setIcon(icon2)
        self.rename_button.setIconSize(QtCore.QSize(32, 32))
        self.rename_button.setObjectName(_fromUtf8("rename_button"))
        self.verticalLayout_2.addWidget(self.rename_button)
        self.gridlayout.addLayout(self.verticalLayout_2, 1, 0, 1, 1)
        self.table = QtGui.QTableWidget(TagListEditor)
        self.table.setAlternatingRowColors(True)
        self.table.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
        self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.table.setObjectName(_fromUtf8("table"))
        self.table.setColumnCount(0)
        self.table.setRowCount(0)
        self.gridlayout.addWidget(self.table, 1, 1, 1, 1)
        self.buttonBox = QtGui.QDialogButtonBox(TagListEditor)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setCenterButtons(True)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
        self.gridlayout.addWidget(self.buttonBox, 3, 0, 1, 2)

        self.retranslateUi(TagListEditor)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), TagListEditor.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), TagListEditor.reject)
        QtCore.QMetaObject.connectSlotsByName(TagListEditor)

    def retranslateUi(self, TagListEditor):
        TagListEditor.setWindowTitle(_("Category Editor"))
        self.search_box.setToolTip(_("Search for an item in the Tag column"))
        self.search_button.setText(_("Find"))
        self.search_button.setToolTip(_("Copy the selected color name to the clipboard"))
        self.delete_button.setToolTip(_("Delete item from database. This will unapply the item from all books and then remove it from the database."))
        self.delete_button.setText(_("..."))
        self.rename_button.setToolTip(_("Rename the item in every book where it is used."))
        self.rename_button.setText(_("..."))
        self.rename_button.setShortcut(_("Ctrl+S"))
Beispiel #3
0
class TagBrowserWidget(QWidget):  # {{{

    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.parent = parent
        self._layout = QVBoxLayout()
        self.setLayout(self._layout)
        self._layout.setContentsMargins(0,0,0,0)

        # Set up the find box & button
        search_layout = QHBoxLayout()
        self._layout.addLayout(search_layout)
        self.item_search = HistoryLineEdit(parent)
        self.item_search.setMinimumContentsLength(5)
        self.item_search.setSizeAdjustPolicy(self.item_search.AdjustToMinimumContentsLengthWithIcon)
        try:
            self.item_search.lineEdit().setPlaceholderText(
                                                _('Find item in tag browser'))
        except:
            pass             # Using Qt < 4.7
        self.item_search.setToolTip(_(
        'Search for items. This is a "contains" search; items containing the\n'
        'text anywhere in the name will be found. You can limit the search\n'
        'to particular categories using syntax similar to search. For example,\n'
        'tags:foo will find foo in any tag, but not in authors etc. Entering\n'
        '*foo will filter all categories at once, showing only those items\n'
        'containing the text "foo"'))
        search_layout.addWidget(self.item_search)
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser find box',
                _('Find item'), default_keys=(),
                action=ac, group=_('Tag Browser'))
        ac.triggered.connect(self.set_focus_to_find_box)

        self.search_button = QToolButton()
        self.search_button.setText(_('Find'))
        self.search_button.setToolTip(_('Find the first/next matching item'))
        search_layout.addWidget(self.search_button)
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser find button',
                _('Find button'), default_keys=(),
                action=ac, group=_('Tag Browser'))
        ac.triggered.connect(self.search_button.click)

        self.expand_button = QToolButton()
        self.expand_button.setText('-')
        self.expand_button.setToolTip(_('Collapse all categories'))
        search_layout.addWidget(self.expand_button)
        search_layout.setStretch(0, 10)
        search_layout.setStretch(1, 1)
        search_layout.setStretch(2, 1)
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser collapse all',
                _('Collapse all'), default_keys=(),
                action=ac, group=_('Tag Browser'))
        ac.triggered.connect(self.expand_button.clicked)

        self.current_find_position = None
        self.search_button.clicked.connect(self.find)
        self.item_search.initialize('tag_browser_search')
        self.item_search.lineEdit().returnPressed.connect(self.do_find)
        self.item_search.lineEdit().textEdited.connect(self.find_text_changed)
        self.item_search.activated[str].connect(self.do_find)
        self.item_search.completer().setCaseSensitivity(Qt.CaseSensitive)

        parent.tags_view = TagsView(parent)
        self.tags_view = parent.tags_view
        self.expand_button.clicked.connect(self.tags_view.collapseAll)
        self._layout.addWidget(parent.tags_view)

        # Now the floating 'not found' box
        l = QLabel(self.tags_view)
        self.not_found_label = l
        l.setFrameStyle(QFrame.StyledPanel)
        l.setAutoFillBackground(True)
        l.setText('<p><b>'+_('No More Matches.</b><p> Click Find again to go to first match'))
        l.setAlignment(Qt.AlignVCenter)
        l.setWordWrap(True)
        l.resize(l.sizeHint())
        l.move(10,20)
        l.setVisible(False)
        self.not_found_label_timer = QTimer()
        self.not_found_label_timer.setSingleShot(True)
        self.not_found_label_timer.timeout.connect(self.not_found_label_timer_event,
                                                   type=Qt.QueuedConnection)

        parent.alter_tb = l = QPushButton(parent)
        l.setText(_('Alter Tag Browser'))
        l.setIcon(QIcon(I('tags.png')))
        l.m = QMenu()
        l.setMenu(l.m)
        self._layout.addWidget(l)
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser alter',
                _('Alter tag browser'), default_keys=(),
                action=ac, group=_('Tag Browser'))
        ac.triggered.connect(l.showMenu)

        sb = l.m.addAction(_('Sort by'))
        sb.m = l.sort_menu = QMenu(l.m)
        sb.setMenu(sb.m)
        sb.bg = QActionGroup(sb)

        # Must be in the same order as db2.CATEGORY_SORTS
        for i, x in enumerate((_('Sort by name'), _('Sort by number of books'),
                  _('Sort by average rating'))):
            a = sb.m.addAction(x)
            sb.bg.addAction(a)
            a.setCheckable(True)
            if i == 0:
                a.setChecked(True)
        sb.setToolTip(
                _('Set the sort order for entries in the Tag Browser'))
        sb.setStatusTip(sb.toolTip())

        ma = l.m.addAction(_('Search type when selecting multiple items'))
        ma.m = l.match_menu = QMenu(l.m)
        ma.setMenu(ma.m)
        ma.ag = QActionGroup(ma)

        # Must be in the same order as db2.MATCH_TYPE
        for i, x in enumerate((_('Match any of the items'), _('Match all of the items'))):
            a = ma.m.addAction(x)
            ma.ag.addAction(a)
            a.setCheckable(True)
            if i == 0:
                a.setChecked(True)
        ma.setToolTip(
                _('When selecting multiple entries in the Tag Browser '
                    'match any or all of them'))
        ma.setStatusTip(ma.toolTip())

        mt = l.m.addAction(_('Manage authors, tags, etc.'))
        mt.setToolTip(_('All of these category_managers are available by right-clicking '
                       'on items in the tag browser above'))
        mt.m = l.manage_menu = QMenu(l.m)
        mt.setMenu(mt.m)

        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser toggle item',
                _("'Click' found item"), default_keys=(),
                action=ac, group=_('Tag Browser'))
        ac.triggered.connect(self.toggle_item)

        # self.leak_test_timer = QTimer(self)
        # self.leak_test_timer.timeout.connect(self.test_for_leak)
        # self.leak_test_timer.start(5000)

    def toggle_item(self):
        self.tags_view.toggle_current_index()

    def set_pane_is_visible(self, to_what):
        self.tags_view.set_pane_is_visible(to_what)

    def find_text_changed(self, str):
        self.current_find_position = None

    def set_focus_to_find_box(self):
        self.item_search.setFocus()
        self.item_search.lineEdit().selectAll()

    def do_find(self, str=None):
        self.current_find_position = None
        self.find()

    def find(self):
        model = self.tags_view.model()
        model.clear_boxed()
        txt = unicode(self.item_search.currentText()).strip()

        if txt.startswith('*'):
            model.set_categories_filter(txt[1:])
            self.tags_view.recount()
            self.current_find_position = None
            return
        if model.get_categories_filter():
            model.set_categories_filter(None)
            self.tags_view.recount()
            self.current_find_position = None

        if not txt:
            return

        self.item_search.lineEdit().blockSignals(True)
        self.search_button.setFocus(True)
        self.item_search.lineEdit().blockSignals(False)

        key = None
        colon = txt.rfind(':') if len(txt) > 2 else 0
        if colon > 0:
            key = self.parent.library_view.model().db.\
                        field_metadata.search_term_to_field_key(txt[:colon])
            txt = txt[colon+1:]

        self.current_find_position = \
            model.find_item_node(key, txt, self.current_find_position)

        if self.current_find_position:
            self.tags_view.show_item_at_path(self.current_find_position, box=True)
        elif self.item_search.text():
            self.not_found_label.setVisible(True)
            if self.tags_view.verticalScrollBar().isVisible():
                sbw = self.tags_view.verticalScrollBar().width()
            else:
                sbw = 0
            width = self.width() - 8 - sbw
            height = self.not_found_label.heightForWidth(width) + 20
            self.not_found_label.resize(width, height)
            self.not_found_label.move(4, 10)
            self.not_found_label_timer.start(2000)

    def not_found_label_timer_event(self):
        self.not_found_label.setVisible(False)
Beispiel #4
0
class TagBrowserBar(QWidget):  # {{{

    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Preferred)
        parent = parent.parent()
        self.l = l = QHBoxLayout(self)
        l.setContentsMargins(0, 0, 0, 0)
        self.alter_tb = parent.alter_tb = b = QToolButton(self)
        b.setAutoRaise(True)
        b.setCursor(Qt.PointingHandCursor)
        b.setPopupMode(b.InstantPopup)
        b.setToolTip(textwrap.fill(_(
            'Change how the Tag browser works, such as,'
            ' how it is sorted, what happens when you click'
            ' items, etc.'
        )))
        b.setIcon(QIcon(I('config.png')))
        b.m = QMenu()
        b.setMenu(b.m)

        self.label = la = QLabel(self)
        la.setText(_('Tag browser'))

        self.item_search = HistoryLineEdit(parent)
        self.item_search.setMinimumContentsLength(5)
        self.item_search.setSizeAdjustPolicy(self.item_search.AdjustToMinimumContentsLengthWithIcon)
        self.item_search.initialize('tag_browser_search')
        self.item_search.completer().setCaseSensitivity(Qt.CaseSensitive)
        self.item_search.setToolTip(_(
        'Search for items. This is a "contains" search; items containing the\n'
        'text anywhere in the name will be found. You can limit the search\n'
        'to particular categories using syntax similar to search. For example,\n'
        'tags:foo will find foo in any tag, but not in authors etc. Entering\n'
        '*foo will filter all categories at once, showing only those items\n'
        'containing the text "foo"'))
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser find box',
                _('Find item'), default_keys=(),
                action=ac, group=_('Tag browser'))
        ac.triggered.connect(self.set_focus_to_find_box)

        self.search_button = QToolButton()
        self.search_button.setCursor(Qt.PointingHandCursor)
        self.search_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.search_button.setIcon(QIcon(I('search.png')))
        self.search_button.setText(_('Find'))
        self.search_button.setToolTip(_('Find the first/next matching item'))
        ac = QAction(parent)
        parent.addAction(ac)
        parent.keyboard.register_shortcut('tag browser find button',
                _('Find button'), default_keys=(),
                action=ac, group=_('Tag browser'))
        ac.triggered.connect(self.search_button.click)

        self.toggle_search_button = b = QToolButton(self)
        le = self.item_search.lineEdit()
        le.addAction(QIcon(I('window-close.png')), le.LeadingPosition).triggered.connect(self.toggle_search_button.click)
        b.setCursor(Qt.PointingHandCursor)
        b.setIcon(QIcon(I('search.png')))
        b.setCheckable(True)
        b.setChecked(gprefs.get('tag browser search box visible', False))
        b.setToolTip(_('Search for items in the Tag browser'))
        b.setAutoRaise(True)
        b.toggled.connect(self.update_searchbar_state)
        self.update_searchbar_state()

    def set_focus_to_find_box(self):
        self.toggle_search_button.setChecked(True)
        self.item_search.setFocus()
        self.item_search.lineEdit().selectAll()

    def update_searchbar_state(self):
        find_shown = self.toggle_search_button.isChecked()
        self.toggle_search_button.setVisible(not find_shown)
        self.label.setVisible(not find_shown)
        self.search_button.setVisible(find_shown)
        self.item_search.setVisible(find_shown)
        l = self.layout()
        items = [l.itemAt(i) for i in range(l.count())]
        tuple(map(l.removeItem, items))
        if find_shown:
            l.addWidget(self.alter_tb)
            l.addWidget(self.item_search, 10)
            l.addWidget(self.search_button)
            self.item_search.setFocus(Qt.OtherFocusReason)
        else:
            l.addWidget(self.alter_tb)
            l.addStretch(10)
            l.addWidget(self.label)
            l.addStretch(10)
            l.addWidget(self.toggle_search_button)
Beispiel #5
0
class Ui_EditAuthorsDialog(object):
    def setupUi(self, EditAuthorsDialog):
        EditAuthorsDialog.setObjectName("EditAuthorsDialog")
        EditAuthorsDialog.resize(768, 342)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Expanding,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            EditAuthorsDialog.sizePolicy().hasHeightForWidth())
        EditAuthorsDialog.setSizePolicy(sizePolicy)
        self.verticalLayout = QtWidgets.QVBoxLayout(EditAuthorsDialog)
        self.verticalLayout.setObjectName("verticalLayout")
        self.gridlayout = QtWidgets.QGridLayout()
        self.gridlayout.setObjectName("gridlayout")
        self.label = QtWidgets.QLabel(EditAuthorsDialog)
        self.label.setObjectName("label")
        self.gridlayout.addWidget(self.label, 0, 0, 1, 1)
        self.find_box = HistoryLineEdit(EditAuthorsDialog)
        self.find_box.setMinimumSize(QtCore.QSize(200, 0))
        self.find_box.setClearButtonEnabled(True)
        self.find_box.setObjectName("find_box")
        self.gridlayout.addWidget(self.find_box, 0, 1, 1, 1)
        self.find_button = QtWidgets.QPushButton(EditAuthorsDialog)
        self.find_button.setObjectName("find_button")
        self.gridlayout.addWidget(self.find_button, 0, 2, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridlayout.addItem(spacerItem, 0, 3, 1, 1)
        self.apply_vl_checkbox = QtWidgets.QCheckBox(EditAuthorsDialog)
        self.apply_vl_checkbox.setObjectName("apply_vl_checkbox")
        self.gridlayout.addWidget(self.apply_vl_checkbox, 0, 4, 1, 1)
        self.label1 = QtWidgets.QLabel(EditAuthorsDialog)
        self.label1.setObjectName("label1")
        self.gridlayout.addWidget(self.label1, 1, 0, 1, 1)
        self.filter_box = HistoryLineEdit(EditAuthorsDialog)
        self.filter_box.setMinimumSize(QtCore.QSize(200, 0))
        self.filter_box.setClearButtonEnabled(True)
        self.filter_box.setObjectName("filter_box")
        self.gridlayout.addWidget(self.filter_box, 1, 1, 1, 1)
        self.filter_button = QtWidgets.QPushButton(EditAuthorsDialog)
        self.filter_button.setObjectName("filter_button")
        self.gridlayout.addWidget(self.filter_button, 1, 2, 1, 1)
        self.verticalLayout.addLayout(self.gridlayout)
        self.table = QtWidgets.QTableWidget(EditAuthorsDialog)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.table.sizePolicy().hasHeightForWidth())
        self.table.setSizePolicy(sizePolicy)
        self.table.setColumnCount(0)
        self.table.setObjectName("table")
        self.table.setRowCount(0)
        self.verticalLayout.addWidget(self.table)
        self.gridlayout1 = QtWidgets.QGridLayout()
        self.gridlayout1.setObjectName("gridlayout1")
        self.recalc_author_sort = QtWidgets.QPushButton(EditAuthorsDialog)
        self.recalc_author_sort.setObjectName("recalc_author_sort")
        self.gridlayout1.addWidget(self.recalc_author_sort, 1, 0, 1, 1)
        self.auth_sort_to_author = QtWidgets.QPushButton(EditAuthorsDialog)
        self.auth_sort_to_author.setObjectName("auth_sort_to_author")
        self.gridlayout1.addWidget(self.auth_sort_to_author, 1, 1, 1, 1)
        self.buttonBox = QtWidgets.QDialogButtonBox(EditAuthorsDialog)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.buttonBox.sizePolicy().hasHeightForWidth())
        self.buttonBox.setSizePolicy(sizePolicy)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel
                                          | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setCenterButtons(False)
        self.buttonBox.setObjectName("buttonBox")
        self.gridlayout1.addWidget(self.buttonBox, 1, 2, 1, 1)
        self.verticalLayout.addLayout(self.gridlayout1)
        self.label.setBuddy(self.find_box)
        self.label1.setBuddy(self.filter_box)

        self.retranslateUi(EditAuthorsDialog)
        self.buttonBox.accepted.connect(EditAuthorsDialog.accept)
        self.buttonBox.rejected.connect(EditAuthorsDialog.reject)
        QtCore.QMetaObject.connectSlotsByName(EditAuthorsDialog)

    def retranslateUi(self, EditAuthorsDialog):

        EditAuthorsDialog.setWindowTitle(_("Manage authors"))
        self.label.setText(_("&Search for:"))
        self.find_button.setText(_("S&earch"))
        self.apply_vl_checkbox.setToolTip(
            _("<p>Only show authors in the\n"
              "          current Virtual library. Edits already done may be hidden but will\n"
              "          not be forgotten.</p>"))
        self.apply_vl_checkbox.setText(
            _("Only show authors in the current &Virtual library"))
        self.label1.setText(_("Filter &by:"))
        self.filter_box.setToolTip(
            _("<p>Only show authors that contain the text in this box.\n"
              "          The match ignores case.</p>"))
        self.filter_button.setText(_("Fi&lter"))
        self.recalc_author_sort.setToolTip(
            _("Reset all the author sort values to a value automatically\n"
              "generated from the author. Exactly how this value is automatically\n"
              "generated can be controlled via Preferences->Advanced->Tweaks"))
        self.recalc_author_sort.setText(
            _("&Recalculate all author sort values"))
        self.auth_sort_to_author.setToolTip(
            _("Copy author sort to author for every author. You typically use this button\n"
              "after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
              ))
        self.auth_sort_to_author.setText(
            _("&Copy all author sort values to author"))
Beispiel #6
0
class Ui_MetadataBulkDialog(object):
    def setupUi(self, MetadataBulkDialog):
        MetadataBulkDialog.setObjectName("MetadataBulkDialog")
        MetadataBulkDialog.resize(955, 740)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(I("edit_input.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MetadataBulkDialog.setWindowIcon(icon)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(MetadataBulkDialog)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.central_widget = QtWidgets.QTabWidget(MetadataBulkDialog)
        self.central_widget.setObjectName("central_widget")
        self.scrollArea1 = QtWidgets.QScrollArea()
        self.scrollArea1.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.scrollArea1.setWidgetResizable(True)
        self.scrollArea1.setObjectName("scrollArea1")
        self.btab = QtWidgets.QWidget()
        self.btab.setGeometry(QtCore.QRect(0, 0, 933, 660))
        self.btab.setObjectName("btab")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.btab)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label_2 = QtWidgets.QLabel(self.btab)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1)
        self.authors = EditWithComplete(self.btab)
        self.authors.setEditable(True)
        self.authors.setObjectName("authors")
        self.gridLayout.addWidget(self.authors, 0, 1, 1, 1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.auto_author_sort = QtWidgets.QCheckBox(self.btab)
        self.auto_author_sort.setObjectName("auto_author_sort")
        self.horizontalLayout_2.addWidget(self.auto_author_sort)
        self.swap_title_and_author = QtWidgets.QCheckBox(self.btab)
        self.swap_title_and_author.setObjectName("swap_title_and_author")
        self.horizontalLayout_2.addWidget(self.swap_title_and_author)
        self.gridLayout.addLayout(self.horizontalLayout_2, 1, 1, 1, 1)
        self.label_8 = QtWidgets.QLabel(self.btab)
        self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1)
        self.author_sort = EnLineEdit(self.btab)
        self.author_sort.setObjectName("author_sort")
        self.gridLayout.addWidget(self.author_sort, 2, 1, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.btab)
        self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 3, 0, 1, 1)
        self.rating = RatingEditor(self.btab)
        self.rating.setObjectName("rating")
        self.gridLayout.addWidget(self.rating, 3, 1, 1, 1)
        self.apply_rating = QtWidgets.QCheckBox(self.btab)
        self.apply_rating.setObjectName("apply_rating")
        self.gridLayout.addWidget(self.apply_rating, 3, 2, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.btab)
        self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
        self.publisher = EditWithComplete(self.btab)
        self.publisher.setEditable(True)
        self.publisher.setObjectName("publisher")
        self.gridLayout.addWidget(self.publisher, 4, 1, 1, 1)
        self.clear_pub = QtWidgets.QCheckBox(self.btab)
        self.clear_pub.setObjectName("clear_pub")
        self.gridLayout.addWidget(self.clear_pub, 4, 2, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.btab)
        self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.tags = EditWithComplete(self.btab)
        self.tags.setObjectName("tags")
        self.gridLayout.addWidget(self.tags, 5, 1, 1, 1)
        self.tag_editor_button = QtWidgets.QToolButton(self.btab)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(I("chapters.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.tag_editor_button.setIcon(icon1)
        self.tag_editor_button.setObjectName("tag_editor_button")
        self.gridLayout.addWidget(self.tag_editor_button, 5, 2, 1, 1)
        self.label = QtWidgets.QLabel(self.btab)
        self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 6, 0, 1, 1)
        self.remove_tags = EditWithComplete(self.btab)
        self.remove_tags.setObjectName("remove_tags")
        self.gridLayout.addWidget(self.remove_tags, 6, 1, 1, 1)
        self.remove_all_tags = QtWidgets.QCheckBox(self.btab)
        self.remove_all_tags.setObjectName("remove_all_tags")
        self.gridLayout.addWidget(self.remove_all_tags, 6, 2, 1, 1)
        self.label_7 = QtWidgets.QLabel(self.btab)
        self.label_7.setTextFormat(QtCore.Qt.PlainText)
        self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 7, 0, 1, 1)
        self.series = EditWithComplete(self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.series.sizePolicy().hasHeightForWidth())
        self.series.setSizePolicy(sizePolicy)
        self.series.setEditable(True)
        self.series.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically)
        self.series.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToMinimumContentsLengthWithIcon)
        self.series.setMinimumContentsLength(40)
        self.series.setObjectName("series")
        self.gridLayout.addWidget(self.series, 7, 1, 1, 1)
        self.clear_series = QtWidgets.QCheckBox(self.btab)
        self.clear_series.setObjectName("clear_series")
        self.gridLayout.addWidget(self.clear_series, 7, 2, 1, 1)
        self.HLayout_3 = QtWidgets.QHBoxLayout()
        self.HLayout_3.setObjectName("HLayout_3")
        self.autonumber_series = QtWidgets.QCheckBox(self.btab)
        self.autonumber_series.setEnabled(False)
        self.autonumber_series.setObjectName("autonumber_series")
        self.HLayout_3.addWidget(self.autonumber_series)
        self.series_numbering_restarts = QtWidgets.QCheckBox(self.btab)
        self.series_numbering_restarts.setEnabled(False)
        self.series_numbering_restarts.setObjectName("series_numbering_restarts")
        self.HLayout_3.addWidget(self.series_numbering_restarts)
        self.series_start_number = QtWidgets.QDoubleSpinBox(self.btab)
        self.series_start_number.setEnabled(False)
        self.series_start_number.setMinimum(0.0)
        self.series_start_number.setMaximum(99000000.0)
        self.series_start_number.setProperty("value", 1.0)
        self.series_start_number.setObjectName("series_start_number")
        self.HLayout_3.addWidget(self.series_start_number)
        self.series_increment = QtWidgets.QDoubleSpinBox(self.btab)
        self.series_increment.setEnabled(False)
        self.series_increment.setMinimum(0.0)
        self.series_increment.setMaximum(99999.0)
        self.series_increment.setProperty("value", 1.0)
        self.series_increment.setObjectName("series_increment")
        self.HLayout_3.addWidget(self.series_increment)
        self.gridLayout.addLayout(self.HLayout_3, 8, 1, 1, 1)
        self.label_10 = QtWidgets.QLabel(self.btab)
        self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 9, 0, 1, 1)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.adddate = DateTimeEdit(self.btab)
        self.adddate.setCalendarPopup(True)
        self.adddate.setObjectName("adddate")
        self.horizontalLayout_5.addWidget(self.adddate)
        self.clear_adddate_button = QtWidgets.QToolButton(self.btab)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(I("trash.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.clear_adddate_button.setIcon(icon2)
        self.clear_adddate_button.setObjectName("clear_adddate_button")
        self.horizontalLayout_5.addWidget(self.clear_adddate_button)
        self.gridLayout.addLayout(self.horizontalLayout_5, 9, 1, 1, 1)
        self.apply_adddate = QtWidgets.QCheckBox(self.btab)
        self.apply_adddate.setObjectName("apply_adddate")
        self.gridLayout.addWidget(self.apply_adddate, 9, 2, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.btab)
        self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 10, 0, 1, 1)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.pubdate = DateTimeEdit(self.btab)
        self.pubdate.setCalendarPopup(True)
        self.pubdate.setObjectName("pubdate")
        self.horizontalLayout_4.addWidget(self.pubdate)
        self.clear_pubdate_button = QtWidgets.QToolButton(self.btab)
        self.clear_pubdate_button.setIcon(icon2)
        self.clear_pubdate_button.setObjectName("clear_pubdate_button")
        self.horizontalLayout_4.addWidget(self.clear_pubdate_button)
        self.gridLayout.addLayout(self.horizontalLayout_4, 10, 1, 1, 1)
        self.apply_pubdate = QtWidgets.QCheckBox(self.btab)
        self.apply_pubdate.setObjectName("apply_pubdate")
        self.gridLayout.addWidget(self.apply_pubdate, 10, 2, 1, 1)
        self.label_11 = QtWidgets.QLabel(self.btab)
        self.label_11.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 11, 0, 1, 1)
        self.languages = LanguagesEdit(self.btab)
        self.languages.setObjectName("languages")
        self.gridLayout.addWidget(self.languages, 11, 1, 1, 1)
        self.clear_languages = QtWidgets.QCheckBox(self.btab)
        self.clear_languages.setObjectName("clear_languages")
        self.gridLayout.addWidget(self.clear_languages, 11, 2, 1, 1)
        self.verticalLayout_4.addLayout(self.gridLayout)
        spacerItem = QtWidgets.QSpacerItem(17, 13, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout_4.addItem(spacerItem)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.remove_conversion_settings = QtWidgets.QCheckBox(self.btab)
        self.remove_conversion_settings.setObjectName("remove_conversion_settings")
        self.gridLayout_2.addWidget(self.remove_conversion_settings, 0, 0, 1, 2)
        self.restore_original = QtWidgets.QCheckBox(self.btab)
        self.restore_original.setObjectName("restore_original")
        self.gridLayout_2.addWidget(self.restore_original, 0, 2, 1, 1)
        self.change_title_to_title_case = QtWidgets.QCheckBox(self.btab)
        self.change_title_to_title_case.setObjectName("change_title_to_title_case")
        self.gridLayout_2.addWidget(self.change_title_to_title_case, 1, 0, 1, 1)
        self.casing_algorithm = QtWidgets.QComboBox(self.btab)
        self.casing_algorithm.setMinimumSize(QtCore.QSize(150, 0))
        self.casing_algorithm.setObjectName("casing_algorithm")
        self.gridLayout_2.addWidget(self.casing_algorithm, 1, 1, 1, 1)
        self.update_title_sort = QtWidgets.QCheckBox(self.btab)
        self.update_title_sort.setObjectName("update_title_sort")
        self.gridLayout_2.addWidget(self.update_title_sort, 1, 2, 1, 1)
        self.verticalLayout_4.addLayout(self.gridLayout_2)
        self.read_file_metadata = QtWidgets.QCheckBox(self.btab)
        self.read_file_metadata.setObjectName("read_file_metadata")
        self.verticalLayout_4.addWidget(self.read_file_metadata)
        self.groupBox = QtWidgets.QGroupBox(self.btab)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.groupBox)
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        self.cover_generate = QtWidgets.QRadioButton(self.groupBox)
        self.cover_generate.setObjectName("cover_generate")
        self.horizontalLayout_9.addWidget(self.cover_generate)
        self.cover_remove = QtWidgets.QRadioButton(self.groupBox)
        self.cover_remove.setObjectName("cover_remove")
        self.horizontalLayout_9.addWidget(self.cover_remove)
        self.cover_trim = QtWidgets.QRadioButton(self.groupBox)
        self.cover_trim.setObjectName("cover_trim")
        self.horizontalLayout_9.addWidget(self.cover_trim)
        self.cover_from_fmt = QtWidgets.QRadioButton(self.groupBox)
        self.cover_from_fmt.setObjectName("cover_from_fmt")
        self.horizontalLayout_9.addWidget(self.cover_from_fmt)
        self.cover_clone = QtWidgets.QRadioButton(self.groupBox)
        self.cover_clone.setObjectName("cover_clone")
        self.horizontalLayout_9.addWidget(self.cover_clone)
        self.verticalLayout_4.addWidget(self.groupBox)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.compress_cover_images = QtWidgets.QCheckBox(self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.compress_cover_images.sizePolicy().hasHeightForWidth())
        self.compress_cover_images.setSizePolicy(sizePolicy)
        self.compress_cover_images.setObjectName("compress_cover_images")
        self.horizontalLayout_3.addWidget(self.compress_cover_images)
        self.compress_quality = QtWidgets.QSpinBox(self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.compress_quality.sizePolicy().hasHeightForWidth())
        self.compress_quality.setSizePolicy(sizePolicy)
        self.compress_quality.setMinimum(10)
        self.compress_quality.setMaximum(100)
        self.compress_quality.setProperty("value", 100)
        self.compress_quality.setObjectName("compress_quality")
        self.horizontalLayout_3.addWidget(self.compress_quality)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.verticalLayout_4.addLayout(self.horizontalLayout_3)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.button_config_cover_gen = QtWidgets.QPushButton(self.btab)
        self.button_config_cover_gen.setObjectName("button_config_cover_gen")
        self.horizontalLayout.addWidget(self.button_config_cover_gen)
        self.comments_button = QtWidgets.QPushButton(self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.comments_button.sizePolicy().hasHeightForWidth())
        self.comments_button.setSizePolicy(sizePolicy)
        self.comments_button.setObjectName("comments_button")
        self.horizontalLayout.addWidget(self.comments_button)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem2)
        self.verticalLayout_4.addLayout(self.horizontalLayout)
        spacerItem3 = QtWidgets.QSpacerItem(17, 17, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_4.addItem(spacerItem3)
        self.scrollArea1.setWidget(self.btab)
        self.central_widget.addTab(self.scrollArea1, "")
        self.scrollArea2 = QtWidgets.QScrollArea()
        self.scrollArea2.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.scrollArea2.setWidgetResizable(True)
        self.scrollArea2.setObjectName("scrollArea2")
        self.tab = QtWidgets.QWidget()
        self.tab.setGeometry(QtCore.QRect(0, 0, 100, 30))
        self.tab.setObjectName("tab")
        self.scrollArea2.setWidget(self.tab)
        self.central_widget.addTab(self.scrollArea2, "")
        self.scrollArea3 = QtWidgets.QScrollArea()
        self.scrollArea3.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.scrollArea3.setWidgetResizable(True)
        self.scrollArea3.setObjectName("scrollArea3")
        self.tabWidgetPage3 = QtWidgets.QWidget()
        self.tabWidgetPage3.setGeometry(QtCore.QRect(0, 0, 777, 388))
        self.tabWidgetPage3.setObjectName("tabWidgetPage3")
        self.vargrid = QtWidgets.QGridLayout(self.tabWidgetPage3)
        self.vargrid.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
        self.vargrid.setObjectName("vargrid")
        self.s_r_heading = QtWidgets.QLabel(self.tabWidgetPage3)
        self.s_r_heading.setWordWrap(True)
        self.s_r_heading.setOpenExternalLinks(True)
        self.s_r_heading.setObjectName("s_r_heading")
        self.vargrid.addWidget(self.s_r_heading, 0, 0, 1, 4)
        self.filler = QtWidgets.QLabel(self.tabWidgetPage3)
        self.filler.setText("")
        self.filler.setObjectName("filler")
        self.vargrid.addWidget(self.filler, 1, 0, 1, 1)
        self.line = QtWidgets.QFrame(self.tabWidgetPage3)
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.vargrid.addWidget(self.line, 2, 0, 1, 3)
        self.xlabel_22 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_22.setObjectName("xlabel_22")
        self.vargrid.addWidget(self.xlabel_22, 3, 0, 1, 1)
        self.query_field = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.query_field.setObjectName("query_field")
        self.vargrid.addWidget(self.query_field, 3, 1, 1, 1)
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        spacerItem4 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem4)
        self.save_button = QtWidgets.QPushButton(self.tabWidgetPage3)
        self.save_button.setObjectName("save_button")
        self.horizontalLayout_6.addWidget(self.save_button)
        self.remove_button = QtWidgets.QPushButton(self.tabWidgetPage3)
        self.remove_button.setObjectName("remove_button")
        self.horizontalLayout_6.addWidget(self.remove_button)
        spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem5)
        self.vargrid.addLayout(self.horizontalLayout_6, 3, 2, 1, 1)
        self.xlabel_21 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_21.setObjectName("xlabel_21")
        self.vargrid.addWidget(self.xlabel_21, 4, 0, 1, 1)
        self.search_field = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.search_field.setObjectName("search_field")
        self.vargrid.addWidget(self.search_field, 4, 1, 1, 1)
        self.HLayout_4 = QtWidgets.QHBoxLayout()
        self.HLayout_4.setObjectName("HLayout_4")
        self.xlabel_24 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_24.setObjectName("xlabel_24")
        self.HLayout_4.addWidget(self.xlabel_24)
        self.search_mode = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.search_mode.setObjectName("search_mode")
        self.HLayout_4.addWidget(self.search_mode)
        spacerItem6 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.HLayout_4.addItem(spacerItem6)
        self.vargrid.addLayout(self.HLayout_4, 4, 2, 1, 1)
        self.s_r_src_ident_label = QtWidgets.QLabel(self.tabWidgetPage3)
        self.s_r_src_ident_label.setObjectName("s_r_src_ident_label")
        self.vargrid.addWidget(self.s_r_src_ident_label, 5, 0, 1, 1)
        self.s_r_src_ident = QtWidgets.QComboBox(self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_src_ident.sizePolicy().hasHeightForWidth())
        self.s_r_src_ident.setSizePolicy(sizePolicy)
        self.s_r_src_ident.setObjectName("s_r_src_ident")
        self.vargrid.addWidget(self.s_r_src_ident, 5, 1, 1, 1)
        self.template_label = QtWidgets.QLabel(self.tabWidgetPage3)
        self.template_label.setObjectName("template_label")
        self.vargrid.addWidget(self.template_label, 5, 0, 1, 1)
        self.s_r_template = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_template.sizePolicy().hasHeightForWidth())
        self.s_r_template.setSizePolicy(sizePolicy)
        self.s_r_template.setObjectName("s_r_template")
        self.vargrid.addWidget(self.s_r_template, 5, 1, 1, 1)
        self.xlabel_2 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_2.setObjectName("xlabel_2")
        self.vargrid.addWidget(self.xlabel_2, 6, 0, 1, 1)
        self.search_for = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.search_for.sizePolicy().hasHeightForWidth())
        self.search_for.setSizePolicy(sizePolicy)
        self.search_for.setObjectName("search_for")
        self.vargrid.addWidget(self.search_for, 6, 1, 1, 1)
        self.case_sensitive = QtWidgets.QCheckBox(self.tabWidgetPage3)
        self.case_sensitive.setChecked(True)
        self.case_sensitive.setObjectName("case_sensitive")
        self.vargrid.addWidget(self.case_sensitive, 6, 2, 1, 1)
        self.xlabel_4 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_4.setObjectName("xlabel_4")
        self.vargrid.addWidget(self.xlabel_4, 7, 0, 1, 1)
        self.replace_with = HistoryLineEdit(self.tabWidgetPage3)
        self.replace_with.setObjectName("replace_with")
        self.vargrid.addWidget(self.replace_with, 7, 1, 1, 1)
        self.verticalLayout = QtWidgets.QHBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_41 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.label_41.setObjectName("label_41")
        self.verticalLayout.addWidget(self.label_41)
        self.replace_func = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.replace_func.setObjectName("replace_func")
        self.verticalLayout.addWidget(self.replace_func)
        spacerItem7 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.verticalLayout.addItem(spacerItem7)
        self.vargrid.addLayout(self.verticalLayout, 7, 2, 1, 1)
        self.destination_field_label = QtWidgets.QLabel(self.tabWidgetPage3)
        self.destination_field_label.setObjectName("destination_field_label")
        self.vargrid.addWidget(self.destination_field_label, 8, 0, 1, 1)
        self.destination_field = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.destination_field.setObjectName("destination_field")
        self.vargrid.addWidget(self.destination_field, 8, 1, 1, 1)
        self.verticalLayout_2 = QtWidgets.QHBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.replace_mode_label = QtWidgets.QLabel(self.tabWidgetPage3)
        self.replace_mode_label.setObjectName("replace_mode_label")
        self.verticalLayout_2.addWidget(self.replace_mode_label)
        self.replace_mode = QtWidgets.QComboBox(self.tabWidgetPage3)
        self.replace_mode.setObjectName("replace_mode")
        self.verticalLayout_2.addWidget(self.replace_mode)
        self.comma_separated = QtWidgets.QCheckBox(self.tabWidgetPage3)
        self.comma_separated.setChecked(True)
        self.comma_separated.setObjectName("comma_separated")
        self.verticalLayout_2.addWidget(self.comma_separated)
        spacerItem8 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.verticalLayout_2.addItem(spacerItem8)
        self.vargrid.addLayout(self.verticalLayout_2, 8, 2, 1, 1)
        self.s_r_dst_ident_label = QtWidgets.QLabel(self.tabWidgetPage3)
        self.s_r_dst_ident_label.setObjectName("s_r_dst_ident_label")
        self.vargrid.addWidget(self.s_r_dst_ident_label, 9, 0, 1, 1)
        self.s_r_dst_ident = QtWidgets.QLineEdit(self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_dst_ident.sizePolicy().hasHeightForWidth())
        self.s_r_dst_ident.setSizePolicy(sizePolicy)
        self.s_r_dst_ident.setObjectName("s_r_dst_ident")
        self.vargrid.addWidget(self.s_r_dst_ident, 9, 1, 1, 1)
        self.horizontalLayout_21 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_21.setObjectName("horizontalLayout_21")
        spacerItem9 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_21.addItem(spacerItem9)
        self.xlabel_412 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_412.setObjectName("xlabel_412")
        self.horizontalLayout_21.addWidget(self.xlabel_412)
        self.results_count = QtWidgets.QSpinBox(self.tabWidgetPage3)
        self.results_count.setEnabled(True)
        self.results_count.setMinimum(1)
        self.results_count.setMaximum(999)
        self.results_count.setProperty("value", 999)
        self.results_count.setObjectName("results_count")
        self.horizontalLayout_21.addWidget(self.results_count)
        self.xlabel_413 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_413.setObjectName("xlabel_413")
        self.horizontalLayout_21.addWidget(self.xlabel_413)
        self.starting_from = QtWidgets.QSpinBox(self.tabWidgetPage3)
        self.starting_from.setEnabled(True)
        self.starting_from.setMinimum(1)
        self.starting_from.setMaximum(999)
        self.starting_from.setProperty("value", 1)
        self.starting_from.setObjectName("starting_from")
        self.horizontalLayout_21.addWidget(self.starting_from)
        self.xlabel_41 = QtWidgets.QLabel(self.tabWidgetPage3)
        self.xlabel_41.setObjectName("xlabel_41")
        self.horizontalLayout_21.addWidget(self.xlabel_41)
        self.multiple_separator = QtWidgets.QLineEdit(self.tabWidgetPage3)
        self.multiple_separator.setObjectName("multiple_separator")
        self.horizontalLayout_21.addWidget(self.multiple_separator)
        self.vargrid.addLayout(self.horizontalLayout_21, 10, 1, 1, 2)
        self.scrollArea11 = QtWidgets.QScrollArea(self.tabWidgetPage3)
        self.scrollArea11.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.scrollArea11.setWidgetResizable(True)
        self.scrollArea11.setObjectName("scrollArea11")
        self.gridLayoutWidget_2 = QtWidgets.QWidget()
        self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 745, 70))
        self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
        self.testgrid = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
        self.testgrid.setObjectName("testgrid")
        self.xlabel_3 = QtWidgets.QLabel(self.gridLayoutWidget_2)
        self.xlabel_3.setObjectName("xlabel_3")
        self.testgrid.addWidget(self.xlabel_3, 7, 1, 1, 1)
        self.xlabel_5 = QtWidgets.QLabel(self.gridLayoutWidget_2)
        self.xlabel_5.setObjectName("xlabel_5")
        self.testgrid.addWidget(self.xlabel_5, 7, 2, 1, 1)
        self.label_31 = QtWidgets.QLabel(self.gridLayoutWidget_2)
        self.label_31.setObjectName("label_31")
        self.testgrid.addWidget(self.label_31, 8, 0, 1, 1)
        self.test_text = HistoryLineEdit(self.gridLayoutWidget_2)
        self.test_text.setObjectName("test_text")
        self.testgrid.addWidget(self.test_text, 8, 1, 1, 1)
        self.test_result = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
        self.test_result.setObjectName("test_result")
        self.testgrid.addWidget(self.test_result, 8, 2, 1, 1)
        spacerItem10 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.testgrid.addItem(spacerItem10, 25, 0, 1, 2)
        self.scrollArea11.setWidget(self.gridLayoutWidget_2)
        self.vargrid.addWidget(self.scrollArea11, 11, 0, 1, 4)
        self.scrollArea3.setWidget(self.tabWidgetPage3)
        self.central_widget.addTab(self.scrollArea3, "")
        self.verticalLayout_3.addWidget(self.central_widget)
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.refresh_book_list = QtWidgets.QCheckBox(MetadataBulkDialog)
        self.refresh_book_list.setObjectName("refresh_book_list")
        self.horizontalLayout_10.addWidget(self.refresh_book_list)
        spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_10.addItem(spacerItem11)
        self.button_box = QtWidgets.QDialogButtonBox(MetadataBulkDialog)
        self.button_box.setOrientation(QtCore.Qt.Horizontal)
        self.button_box.setStandardButtons(QtWidgets.QDialogButtonBox.Apply|QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.button_box.setObjectName("button_box")
        self.horizontalLayout_10.addWidget(self.button_box)
        self.verticalLayout_3.addLayout(self.horizontalLayout_10)
        self.label_2.setBuddy(self.authors)
        self.label_8.setBuddy(self.author_sort)
        self.label_6.setBuddy(self.rating)
        self.label_3.setBuddy(self.publisher)
        self.label_4.setBuddy(self.tags)
        self.label.setBuddy(self.remove_tags)
        self.label_7.setBuddy(self.series)
        self.label_10.setBuddy(self.adddate)
        self.label_9.setBuddy(self.pubdate)
        self.label_11.setBuddy(self.languages)
        self.xlabel_22.setBuddy(self.query_field)
        self.xlabel_21.setBuddy(self.search_field)
        self.xlabel_24.setBuddy(self.search_mode)
        self.s_r_src_ident_label.setBuddy(self.s_r_src_ident)
        self.template_label.setBuddy(self.s_r_template)
        self.xlabel_2.setBuddy(self.search_for)
        self.xlabel_4.setBuddy(self.replace_with)
        self.label_41.setBuddy(self.replace_func)
        self.destination_field_label.setBuddy(self.destination_field)
        self.replace_mode_label.setBuddy(self.replace_mode)
        self.s_r_dst_ident_label.setBuddy(self.s_r_dst_ident)
        self.xlabel_412.setBuddy(self.results_count)
        self.xlabel_413.setBuddy(self.starting_from)
        self.xlabel_41.setBuddy(self.multiple_separator)
        self.label_31.setBuddy(self.test_text)

        self.retranslateUi(MetadataBulkDialog)
        self.central_widget.setCurrentIndex(0)
        self.button_box.accepted.connect(MetadataBulkDialog.accept)
        self.button_box.rejected.connect(MetadataBulkDialog.reject)
        QtCore.QMetaObject.connectSlotsByName(MetadataBulkDialog)
        MetadataBulkDialog.setTabOrder(self.central_widget, self.authors)
        MetadataBulkDialog.setTabOrder(self.authors, self.auto_author_sort)
        MetadataBulkDialog.setTabOrder(self.auto_author_sort, self.swap_title_and_author)
        MetadataBulkDialog.setTabOrder(self.swap_title_and_author, self.author_sort)
        MetadataBulkDialog.setTabOrder(self.author_sort, self.rating)
        MetadataBulkDialog.setTabOrder(self.rating, self.apply_rating)
        MetadataBulkDialog.setTabOrder(self.apply_rating, self.publisher)
        MetadataBulkDialog.setTabOrder(self.publisher, self.clear_pub)
        MetadataBulkDialog.setTabOrder(self.clear_pub, self.tags)
        MetadataBulkDialog.setTabOrder(self.tags, self.tag_editor_button)
        MetadataBulkDialog.setTabOrder(self.tag_editor_button, self.remove_tags)
        MetadataBulkDialog.setTabOrder(self.remove_tags, self.remove_all_tags)
        MetadataBulkDialog.setTabOrder(self.remove_all_tags, self.series)
        MetadataBulkDialog.setTabOrder(self.series, self.clear_series)
        MetadataBulkDialog.setTabOrder(self.clear_series, self.autonumber_series)
        MetadataBulkDialog.setTabOrder(self.autonumber_series, self.series_numbering_restarts)
        MetadataBulkDialog.setTabOrder(self.series_numbering_restarts, self.series_start_number)
        MetadataBulkDialog.setTabOrder(self.series_start_number, self.series_increment)
        MetadataBulkDialog.setTabOrder(self.series_increment, self.adddate)
        MetadataBulkDialog.setTabOrder(self.adddate, self.clear_adddate_button)
        MetadataBulkDialog.setTabOrder(self.clear_adddate_button, self.apply_adddate)
        MetadataBulkDialog.setTabOrder(self.apply_adddate, self.pubdate)
        MetadataBulkDialog.setTabOrder(self.pubdate, self.clear_pubdate_button)
        MetadataBulkDialog.setTabOrder(self.clear_pubdate_button, self.apply_pubdate)
        MetadataBulkDialog.setTabOrder(self.apply_pubdate, self.languages)
        MetadataBulkDialog.setTabOrder(self.languages, self.clear_languages)
        MetadataBulkDialog.setTabOrder(self.clear_languages, self.remove_conversion_settings)
        MetadataBulkDialog.setTabOrder(self.remove_conversion_settings, self.restore_original)
        MetadataBulkDialog.setTabOrder(self.restore_original, self.change_title_to_title_case)
        MetadataBulkDialog.setTabOrder(self.change_title_to_title_case, self.casing_algorithm)
        MetadataBulkDialog.setTabOrder(self.casing_algorithm, self.cover_generate)
        MetadataBulkDialog.setTabOrder(self.cover_generate, self.cover_remove)
        MetadataBulkDialog.setTabOrder(self.cover_remove, self.cover_trim)
        MetadataBulkDialog.setTabOrder(self.cover_trim, self.cover_from_fmt)
        MetadataBulkDialog.setTabOrder(self.cover_from_fmt, self.cover_clone)
        MetadataBulkDialog.setTabOrder(self.cover_clone, self.button_config_cover_gen)
        MetadataBulkDialog.setTabOrder(self.button_config_cover_gen, self.comments_button)
        MetadataBulkDialog.setTabOrder(self.comments_button, self.query_field)
        MetadataBulkDialog.setTabOrder(self.query_field, self.save_button)
        MetadataBulkDialog.setTabOrder(self.save_button, self.remove_button)
        MetadataBulkDialog.setTabOrder(self.remove_button, self.search_field)
        MetadataBulkDialog.setTabOrder(self.search_field, self.search_mode)
        MetadataBulkDialog.setTabOrder(self.search_mode, self.s_r_src_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_src_ident, self.s_r_template)
        MetadataBulkDialog.setTabOrder(self.s_r_template, self.search_for)
        MetadataBulkDialog.setTabOrder(self.search_for, self.case_sensitive)
        MetadataBulkDialog.setTabOrder(self.case_sensitive, self.replace_with)
        MetadataBulkDialog.setTabOrder(self.replace_with, self.replace_func)
        MetadataBulkDialog.setTabOrder(self.replace_func, self.destination_field)
        MetadataBulkDialog.setTabOrder(self.destination_field, self.replace_mode)
        MetadataBulkDialog.setTabOrder(self.replace_mode, self.comma_separated)
        MetadataBulkDialog.setTabOrder(self.comma_separated, self.s_r_dst_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_dst_ident, self.results_count)
        MetadataBulkDialog.setTabOrder(self.results_count, self.starting_from)
        MetadataBulkDialog.setTabOrder(self.starting_from, self.multiple_separator)
        MetadataBulkDialog.setTabOrder(self.multiple_separator, self.scrollArea11)
        MetadataBulkDialog.setTabOrder(self.scrollArea11, self.test_text)
        MetadataBulkDialog.setTabOrder(self.test_text, self.test_result)
        MetadataBulkDialog.setTabOrder(self.test_result, self.refresh_book_list)

    def retranslateUi(self, MetadataBulkDialog):

        MetadataBulkDialog.setWindowTitle(_("Edit meta information"))
        self.label_2.setText(_("&Author(s): "))
        self.auto_author_sort.setToolTip(_("This will cause the author sort field to be automatically updated\n"
" based on the authors field for each selected book. Note that if\n"
" you use the control above to set authors in bulk, the author sort\n"
" field is updated anyway, regardless of the value of this checkbox."))
        self.auto_author_sort.setText(_("A&utomatically set author sort"))
        self.swap_title_and_author.setText(_("S&wap title and author"))
        self.label_8.setText(_("Author s&ort: "))
        self.author_sort.setToolTip(_("Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."))
        self.label_6.setText(_("&Rating:"))
        self.apply_rating.setText(_("&Apply rating"))
        self.label_3.setText(_("&Publisher: "))
        self.clear_pub.setToolTip(_("If checked, the publisher will be cleared"))
        self.clear_pub.setText(_("&Clear pub"))
        self.label_4.setText(_("Add ta&gs: "))
        self.tags.setToolTip(_("Tags categorize the book. This is particularly useful while searching. <br><br>They can be any words or phrases, separated by commas."))
        self.tag_editor_button.setToolTip(_("Open Tag editor"))
        self.tag_editor_button.setText(_("Open Tag editor"))
        self.label.setText(_("&Remove tags:"))
        self.remove_tags.setToolTip(_("Comma separated list of tags to remove from the books. "))
        self.remove_all_tags.setToolTip(_("Check this box to remove all tags from the books."))
        self.remove_all_tags.setText(_("Remove &all"))
        self.label_7.setText(_("Ser&ies:"))
        self.series.setToolTip(_("List of known series. You can add new series."))
        self.series.setWhatsThis(_("List of known series. You can add new series."))
        self.clear_series.setToolTip(_("If checked, the series will be cleared"))
        self.clear_series.setText(_("&Clear series"))
        self.autonumber_series.setToolTip(_("If not checked, the series number for the books will be set to 1.\n"
"If checked, selected books will be automatically numbered, in the order\n"
"you selected them. So if you selected Book A and then Book B,\n"
"Book A will have series number 1 and Book B series number 2."))
        self.autonumber_series.setText(_("&Automatically number books in this series"))
        self.series_numbering_restarts.setToolTip(_("Series will normally be renumbered from the highest number in the database\n"
"for that series. Checking this box will tell calibre to start numbering\n"
"from the value in the box"))
        self.series_numbering_restarts.setText(_("&Force numbers to start with:"))
        self.series_increment.setToolTip(_("The amount by which to increment the series number for successive books. Only applicable when using force series numbers."))
        self.series_increment.setPrefix(_("+ "))
        self.label_10.setText(_("&Date:"))
        self.adddate.setDisplayFormat("d MMM yyyy")
        self.clear_adddate_button.setText(_("..."))
        self.apply_adddate.setText(_("A&pply date"))
        self.label_9.setText(_("P&ublished:"))
        self.pubdate.setDisplayFormat("MMM yyyy")
        self.clear_pubdate_button.setToolTip(_("Clear published date"))
        self.clear_pubdate_button.setText(_("..."))
        self.apply_pubdate.setText(_("A&pply date"))
        self.label_11.setText(_("&Languages:"))
        self.clear_languages.setText(_("Remove &all"))
        self.remove_conversion_settings.setToolTip(_("Remove stored conversion settings for the selected books.\n"
"\n"
"Future conversion of these books will use the default settings."))
        self.remove_conversion_settings.setText(_("Remove &stored conversion settings for the selected books"))
        self.restore_original.setToolTip(_("When doing a same format to same format conversion,\n"
"for e.g., EPUB to EPUB, calibre saves the original EPUB\n"
" as ORIGINAL_EPUB. This option tells calibre to restore\n"
" the EPUB from ORIGINAL_EPUB. Useful if you did a bulk\n"
" conversion of a large number of books and something went wrong."))
        self.restore_original.setText(_("Restore pre conversion &originals, if available"))
        self.change_title_to_title_case.setToolTip(_("Force the title to be in title case. If both this and swap authors are checked,\n"
"title and author are swapped before the title case is set"))
        self.change_title_to_title_case.setText(_("Change title &case to:"))
        self.update_title_sort.setToolTip(_("Update title sort based on the current title. This will be applied only after other changes to title."))
        self.update_title_sort.setText(_("Update &title sort"))
        self.read_file_metadata.setToolTip(_("Set the metadata in calibre from the metadata in the e-book files associated with each book. Note that this does not change the cover, for that, use the separate option below."))
        self.read_file_metadata.setText(_("Set &metadata (except cover) from the e-book files"))
        self.groupBox.setTitle(_("Change &cover"))
        self.cover_generate.setText(_("&Generate default cover"))
        self.cover_remove.setText(_("&Remove cover"))
        self.cover_trim.setToolTip(_("Try to automatically detect and remove borders and extra space\n"
" from the edges of cover images. This can sometimes remove too\n"
" much, so use with care."))
        self.cover_trim.setText(_("&Trim cover (DANGEROUS)"))
        self.cover_from_fmt.setText(_("Set from &e-book files"))
        self.cover_clone.setToolTip(_("Set the covers of all selected books to be the same\n"
"as that of the first selected book."))
        self.cover_clone.setText(_("&Clone covers"))
        self.compress_cover_images.setToolTip(_("<p>Compress cover images, if the quality is set to 100 compression is lossless, otherwise it is lossy"))
        self.compress_cover_images.setText(_("Co&mpress cover images:"))
        self.compress_quality.setToolTip(_("<p>Cover image compression quality. If the quality is set to 100 compression is lossless, otherwise it is lossy"))
        self.button_config_cover_gen.setToolTip(_("Control how the default generated covers are created"))
        self.button_config_cover_gen.setText(_("Configure co&ver generation"))
        self.comments_button.setText(_("Set the co&mments for all selected books"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.scrollArea1), _("&Basic metadata"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.scrollArea2), _("&Custom metadata"))
        self.xlabel_22.setText(_("&Load search/replace:"))
        self.query_field.setToolTip(_("Select saved search/replace to load."))
        self.save_button.setToolTip(_("Save current search/replace"))
        self.save_button.setText(_("Sa&ve"))
        self.remove_button.setToolTip(_("Delete saved search/replace"))
        self.remove_button.setText(_("Delete"))
        self.xlabel_21.setText(_("Search &field:"))
        self.search_field.setToolTip(_("The name of the field that you want to search"))
        self.xlabel_24.setText(_("Search &mode:"))
        self.search_mode.setToolTip(_("Choose whether to use basic text matching or advanced regular expression matching"))
        self.s_r_src_ident_label.setText(_("&Identifier type:"))
        self.s_r_src_ident.setToolTip(_("Choose which identifier type to operate upon"))
        self.template_label.setText(_("&Template:"))
        self.s_r_template.setToolTip(_("Enter a template to be used as the source for the search/replace"))
        self.xlabel_2.setText(_("&Search for:"))
        self.search_for.setToolTip(_("Enter what you are looking for, either plain text or a regular expression, depending on the mode"))
        self.case_sensitive.setToolTip(_("Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored"))
        self.case_sensitive.setText(_("Cas&e sensitive"))
        self.xlabel_4.setText(_("&Replace with:"))
        self.replace_with.setToolTip(_("The replacement text. The matched search text will be replaced with this string"))
        self.label_41.setText(_("&Apply function after replace:"))
        self.replace_func.setToolTip(_("Specify how the text is to be processed after matching and replacement. In character mode, the entire\n"
"field is processed. In regular expression mode, only the matched text is processed"))
        self.destination_field_label.setText(_("&Destination field:"))
        self.destination_field.setToolTip(_("The field that the text will be put into after all replacements.\n"
"If blank, the source field is used if the field is modifiable"))
        self.replace_mode_label.setText(_("M&ode:"))
        self.replace_mode.setToolTip(_("Specify how the text should be copied into the destination."))
        self.comma_separated.setToolTip(_("Specifies whether result items should be split into multiple values or\n"
"left as single values. This option has the most effect when the source field is\n"
"not multiple and the destination field is multiple"))
        self.comma_separated.setText(_("Split &result"))
        self.s_r_dst_ident_label.setText(_("Identifier type:"))
        self.s_r_dst_ident.setToolTip(_("<p>Choose which identifier type to operate upon. When the\n"
"              source field is something other than \'identifiers\' you can enter\n"
"              a * if you want to replace the entire set of identifiers with\n"
"              the result of the search/replace.</p>"))
        self.xlabel_412.setText(_("For multiple-valued fields, sho&w"))
        self.xlabel_413.setText(_("val&ues starting at"))
        self.xlabel_41.setText(_("with values separated b&y"))
        self.multiple_separator.setToolTip(_("Used when displaying test results to separate values in multiple-valued fields"))
        self.xlabel_3.setText(_("Test text"))
        self.xlabel_5.setText(_("Test result"))
        self.label_31.setText(_("Your &test:"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.scrollArea3), _("&Search and replace"))
        self.refresh_book_list.setToolTip(_("If enabled, the book list will be re-sorted and any existing\n"
"search or Virtual library will be refreshed after the edit\n"
"is completed. This can be slow on large libraries."))
        self.refresh_book_list.setText(_("&Refresh book list after edit"))
Beispiel #7
0
class Ui_MetadataBulkDialog(object):
    def setupUi(self, MetadataBulkDialog):
        MetadataBulkDialog.setObjectName(_fromUtf8("MetadataBulkDialog"))
        MetadataBulkDialog.resize(962, 645)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(I("edit_input.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MetadataBulkDialog.setWindowIcon(icon)
        self.gridLayout_2 = QtGui.QGridLayout(MetadataBulkDialog)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.box_title = QtGui.QLabel(MetadataBulkDialog)
        self.box_title.setText(_fromUtf8(""))
        self.box_title.setAlignment(QtCore.Qt.AlignCenter)
        self.box_title.setObjectName(_fromUtf8("box_title"))
        self.gridLayout_2.addWidget(self.box_title, 0, 0, 1, 1)
        self.scrollArea = QtGui.QScrollArea(MetadataBulkDialog)
        self.scrollArea.setFrameShape(QtGui.QFrame.NoFrame)
        self.scrollArea.setLineWidth(0)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName(_fromUtf8("scrollArea"))
        self.scrollAreaWidgetContents = QtGui.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 950, 576))
        self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.scrollAreaWidgetContents)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.central_widget = QtGui.QTabWidget(self.scrollAreaWidgetContents)
        self.central_widget.setObjectName(_fromUtf8("central_widget"))
        self.tabWidgetPage1 = QtGui.QWidget()
        self.tabWidgetPage1.setObjectName(_fromUtf8("tabWidgetPage1"))
        self.gridLayout = QtGui.QGridLayout(self.tabWidgetPage1)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label_2 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1)
        self.authors = EditWithComplete(self.tabWidgetPage1)
        self.authors.setEditable(True)
        self.authors.setObjectName(_fromUtf8("authors"))
        self.gridLayout.addWidget(self.authors, 0, 1, 1, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.auto_author_sort = QtGui.QCheckBox(self.tabWidgetPage1)
        self.auto_author_sort.setObjectName(_fromUtf8("auto_author_sort"))
        self.horizontalLayout_2.addWidget(self.auto_author_sort)
        self.swap_title_and_author = QtGui.QCheckBox(self.tabWidgetPage1)
        self.swap_title_and_author.setObjectName(_fromUtf8("swap_title_and_author"))
        self.horizontalLayout_2.addWidget(self.swap_title_and_author)
        self.gridLayout.addLayout(self.horizontalLayout_2, 1, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1)
        self.author_sort = EnLineEdit(self.tabWidgetPage1)
        self.author_sort.setObjectName(_fromUtf8("author_sort"))
        self.gridLayout.addWidget(self.author_sort, 2, 1, 1, 1)
        self.label_6 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_6.setObjectName(_fromUtf8("label_6"))
        self.gridLayout.addWidget(self.label_6, 3, 0, 1, 1)
        self.rating = QtGui.QSpinBox(self.tabWidgetPage1)
        self.rating.setButtonSymbols(QtGui.QAbstractSpinBox.PlusMinus)
        self.rating.setMinimum(-1)
        self.rating.setMaximum(5)
        self.rating.setProperty("value", -1)
        self.rating.setObjectName(_fromUtf8("rating"))
        self.gridLayout.addWidget(self.rating, 3, 1, 1, 1)
        self.label_3 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
        self.publisher = EditWithComplete(self.tabWidgetPage1)
        self.publisher.setEditable(True)
        self.publisher.setObjectName(_fromUtf8("publisher"))
        self.gridLayout.addWidget(self.publisher, 4, 1, 1, 1)
        self.label_4 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.tags = EditWithComplete(self.tabWidgetPage1)
        self.tags.setObjectName(_fromUtf8("tags"))
        self.gridLayout.addWidget(self.tags, 5, 1, 1, 1)
        self.tag_editor_button = QtGui.QToolButton(self.tabWidgetPage1)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(I("chapters.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.tag_editor_button.setIcon(icon1)
        self.tag_editor_button.setObjectName(_fromUtf8("tag_editor_button"))
        self.gridLayout.addWidget(self.tag_editor_button, 5, 2, 1, 1)
        self.label = QtGui.QLabel(self.tabWidgetPage1)
        self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 6, 0, 1, 1)
        self.remove_tags = EditWithComplete(self.tabWidgetPage1)
        self.remove_tags.setObjectName(_fromUtf8("remove_tags"))
        self.gridLayout.addWidget(self.remove_tags, 6, 1, 1, 1)
        self.remove_all_tags = QtGui.QCheckBox(self.tabWidgetPage1)
        self.remove_all_tags.setObjectName(_fromUtf8("remove_all_tags"))
        self.gridLayout.addWidget(self.remove_all_tags, 6, 2, 1, 1)
        self.label_7 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_7.setTextFormat(QtCore.Qt.PlainText)
        self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_7.setObjectName(_fromUtf8("label_7"))
        self.gridLayout.addWidget(self.label_7, 7, 0, 1, 1)
        self.series = EditWithComplete(self.tabWidgetPage1)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.series.sizePolicy().hasHeightForWidth())
        self.series.setSizePolicy(sizePolicy)
        self.series.setEditable(True)
        self.series.setInsertPolicy(QtGui.QComboBox.InsertAlphabetically)
        self.series.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLengthWithIcon)
        self.series.setMinimumContentsLength(40)
        self.series.setObjectName(_fromUtf8("series"))
        self.gridLayout.addWidget(self.series, 7, 1, 1, 1)
        self.clear_series = QtGui.QCheckBox(self.tabWidgetPage1)
        self.clear_series.setObjectName(_fromUtf8("clear_series"))
        self.gridLayout.addWidget(self.clear_series, 7, 2, 1, 1)
        self.HLayout_3 = QtGui.QHBoxLayout()
        self.HLayout_3.setObjectName(_fromUtf8("HLayout_3"))
        self.autonumber_series = QtGui.QCheckBox(self.tabWidgetPage1)
        self.autonumber_series.setEnabled(False)
        self.autonumber_series.setObjectName(_fromUtf8("autonumber_series"))
        self.HLayout_3.addWidget(self.autonumber_series)
        self.series_numbering_restarts = QtGui.QCheckBox(self.tabWidgetPage1)
        self.series_numbering_restarts.setEnabled(False)
        self.series_numbering_restarts.setObjectName(_fromUtf8("series_numbering_restarts"))
        self.HLayout_3.addWidget(self.series_numbering_restarts)
        self.series_start_number = QtGui.QSpinBox(self.tabWidgetPage1)
        self.series_start_number.setEnabled(False)
        self.series_start_number.setMinimum(1)
        self.series_start_number.setMaximum(99000000)
        self.series_start_number.setProperty("value", 1)
        self.series_start_number.setObjectName(_fromUtf8("series_start_number"))
        self.HLayout_3.addWidget(self.series_start_number)
        self.gridLayout.addLayout(self.HLayout_3, 8, 1, 1, 1)
        self.label_10 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_10.setObjectName(_fromUtf8("label_10"))
        self.gridLayout.addWidget(self.label_10, 9, 0, 1, 1)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.adddate = QtGui.QDateTimeEdit(self.tabWidgetPage1)
        self.adddate.setCalendarPopup(True)
        self.adddate.setObjectName(_fromUtf8("adddate"))
        self.horizontalLayout_5.addWidget(self.adddate)
        self.clear_adddate_button = QtGui.QToolButton(self.tabWidgetPage1)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8(I("trash.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.clear_adddate_button.setIcon(icon2)
        self.clear_adddate_button.setObjectName(_fromUtf8("clear_adddate_button"))
        self.horizontalLayout_5.addWidget(self.clear_adddate_button)
        self.gridLayout.addLayout(self.horizontalLayout_5, 9, 1, 1, 1)
        self.apply_adddate = QtGui.QCheckBox(self.tabWidgetPage1)
        self.apply_adddate.setObjectName(_fromUtf8("apply_adddate"))
        self.gridLayout.addWidget(self.apply_adddate, 9, 2, 1, 1)
        self.label_9 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_9.setObjectName(_fromUtf8("label_9"))
        self.gridLayout.addWidget(self.label_9, 10, 0, 1, 1)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.pubdate = QtGui.QDateTimeEdit(self.tabWidgetPage1)
        self.pubdate.setCalendarPopup(True)
        self.pubdate.setObjectName(_fromUtf8("pubdate"))
        self.horizontalLayout_4.addWidget(self.pubdate)
        self.clear_pubdate_button = QtGui.QToolButton(self.tabWidgetPage1)
        self.clear_pubdate_button.setIcon(icon2)
        self.clear_pubdate_button.setObjectName(_fromUtf8("clear_pubdate_button"))
        self.horizontalLayout_4.addWidget(self.clear_pubdate_button)
        self.gridLayout.addLayout(self.horizontalLayout_4, 10, 1, 1, 1)
        self.apply_pubdate = QtGui.QCheckBox(self.tabWidgetPage1)
        self.apply_pubdate.setObjectName(_fromUtf8("apply_pubdate"))
        self.gridLayout.addWidget(self.apply_pubdate, 10, 2, 1, 1)
        self.label_11 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_11.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_11.setObjectName(_fromUtf8("label_11"))
        self.gridLayout.addWidget(self.label_11, 11, 0, 1, 1)
        self.languages = LanguagesEdit(self.tabWidgetPage1)
        self.languages.setObjectName(_fromUtf8("languages"))
        self.gridLayout.addWidget(self.languages, 11, 1, 1, 1)
        self.clear_languages = QtGui.QCheckBox(self.tabWidgetPage1)
        self.clear_languages.setObjectName(_fromUtf8("clear_languages"))
        self.gridLayout.addWidget(self.clear_languages, 11, 2, 1, 1)
        self.label_5 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_5.setObjectName(_fromUtf8("label_5"))
        self.gridLayout.addWidget(self.label_5, 12, 0, 1, 1)
        self.horizontalLayout_7 = QtGui.QHBoxLayout()
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.remove_format = QtGui.QComboBox(self.tabWidgetPage1)
        self.remove_format.setMaximumSize(QtCore.QSize(120, 16777215))
        self.remove_format.setObjectName(_fromUtf8("remove_format"))
        self.horizontalLayout_7.addWidget(self.remove_format)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.restore_original = QtGui.QCheckBox(self.tabWidgetPage1)
        self.restore_original.setObjectName(_fromUtf8("restore_original"))
        self.horizontalLayout_7.addWidget(self.restore_original)
        self.gridLayout.addLayout(self.horizontalLayout_7, 12, 1, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(20, 15, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
        self.gridLayout.addItem(spacerItem1, 13, 0, 1, 1)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.change_title_to_title_case = QtGui.QCheckBox(self.tabWidgetPage1)
        self.change_title_to_title_case.setObjectName(_fromUtf8("change_title_to_title_case"))
        self.horizontalLayout_3.addWidget(self.change_title_to_title_case)
        self.update_title_sort = QtGui.QCheckBox(self.tabWidgetPage1)
        self.update_title_sort.setObjectName(_fromUtf8("update_title_sort"))
        self.horizontalLayout_3.addWidget(self.update_title_sort)
        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.remove_conversion_settings = QtGui.QCheckBox(self.tabWidgetPage1)
        self.remove_conversion_settings.setObjectName(_fromUtf8("remove_conversion_settings"))
        self.horizontalLayout_3.addWidget(self.remove_conversion_settings)
        self.gridLayout.addLayout(self.horizontalLayout_3, 14, 0, 1, 2)
        self.groupBox = QtGui.QGroupBox(self.tabWidgetPage1)
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.cover_generate = QtGui.QRadioButton(self.groupBox)
        self.cover_generate.setObjectName(_fromUtf8("cover_generate"))
        self.horizontalLayout.addWidget(self.cover_generate)
        self.cover_remove = QtGui.QRadioButton(self.groupBox)
        self.cover_remove.setObjectName(_fromUtf8("cover_remove"))
        self.horizontalLayout.addWidget(self.cover_remove)
        self.cover_from_fmt = QtGui.QRadioButton(self.groupBox)
        self.cover_from_fmt.setObjectName(_fromUtf8("cover_from_fmt"))
        self.horizontalLayout.addWidget(self.cover_from_fmt)
        self.gridLayout.addWidget(self.groupBox, 15, 0, 1, 2)
        spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem3, 16, 0, 1, 1)
        self.central_widget.addTab(self.tabWidgetPage1, _fromUtf8(""))
        self.tab = QtGui.QWidget()
        self.tab.setObjectName(_fromUtf8("tab"))
        self.central_widget.addTab(self.tab, _fromUtf8(""))
        self.tabWidgetPage3 = QtGui.QWidget()
        self.tabWidgetPage3.setObjectName(_fromUtf8("tabWidgetPage3"))
        self.vargrid = QtGui.QGridLayout(self.tabWidgetPage3)
        self.vargrid.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
        self.vargrid.setObjectName(_fromUtf8("vargrid"))
        self.s_r_heading = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_heading.setWordWrap(True)
        self.s_r_heading.setOpenExternalLinks(True)
        self.s_r_heading.setObjectName(_fromUtf8("s_r_heading"))
        self.vargrid.addWidget(self.s_r_heading, 0, 0, 1, 4)
        self.filler = QtGui.QLabel(self.tabWidgetPage3)
        self.filler.setText(_fromUtf8(""))
        self.filler.setObjectName(_fromUtf8("filler"))
        self.vargrid.addWidget(self.filler, 1, 0, 1, 1)
        self.line = QtGui.QFrame(self.tabWidgetPage3)
        self.line.setFrameShape(QtGui.QFrame.HLine)
        self.line.setFrameShadow(QtGui.QFrame.Sunken)
        self.line.setObjectName(_fromUtf8("line"))
        self.vargrid.addWidget(self.line, 2, 0, 1, 3)
        self.xlabel_22 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_22.setObjectName(_fromUtf8("xlabel_22"))
        self.vargrid.addWidget(self.xlabel_22, 3, 0, 1, 1)
        self.query_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.query_field.setObjectName(_fromUtf8("query_field"))
        self.vargrid.addWidget(self.query_field, 3, 1, 1, 1)
        self.horizontalLayout_6 = QtGui.QHBoxLayout()
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        spacerItem4 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem4)
        self.save_button = QtGui.QPushButton(self.tabWidgetPage3)
        self.save_button.setObjectName(_fromUtf8("save_button"))
        self.horizontalLayout_6.addWidget(self.save_button)
        self.remove_button = QtGui.QPushButton(self.tabWidgetPage3)
        self.remove_button.setObjectName(_fromUtf8("remove_button"))
        self.horizontalLayout_6.addWidget(self.remove_button)
        spacerItem5 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem5)
        self.vargrid.addLayout(self.horizontalLayout_6, 3, 2, 1, 1)
        self.xlabel_21 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_21.setObjectName(_fromUtf8("xlabel_21"))
        self.vargrid.addWidget(self.xlabel_21, 4, 0, 1, 1)
        self.search_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.search_field.setObjectName(_fromUtf8("search_field"))
        self.vargrid.addWidget(self.search_field, 4, 1, 1, 1)
        self.HLayout_31 = QtGui.QHBoxLayout()
        self.HLayout_31.setObjectName(_fromUtf8("HLayout_31"))
        self.xlabel_24 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_24.setObjectName(_fromUtf8("xlabel_24"))
        self.HLayout_31.addWidget(self.xlabel_24)
        self.search_mode = QtGui.QComboBox(self.tabWidgetPage3)
        self.search_mode.setObjectName(_fromUtf8("search_mode"))
        self.HLayout_31.addWidget(self.search_mode)
        spacerItem6 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.HLayout_31.addItem(spacerItem6)
        self.vargrid.addLayout(self.HLayout_31, 4, 2, 1, 1)
        self.s_r_src_ident_label = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_src_ident_label.setObjectName(_fromUtf8("s_r_src_ident_label"))
        self.vargrid.addWidget(self.s_r_src_ident_label, 5, 0, 1, 1)
        self.s_r_src_ident = QtGui.QComboBox(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_src_ident.sizePolicy().hasHeightForWidth())
        self.s_r_src_ident.setSizePolicy(sizePolicy)
        self.s_r_src_ident.setObjectName(_fromUtf8("s_r_src_ident"))
        self.vargrid.addWidget(self.s_r_src_ident, 5, 1, 1, 1)
        self.template_label = QtGui.QLabel(self.tabWidgetPage3)
        self.template_label.setObjectName(_fromUtf8("template_label"))
        self.vargrid.addWidget(self.template_label, 5, 0, 1, 1)
        self.s_r_template = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_template.sizePolicy().hasHeightForWidth())
        self.s_r_template.setSizePolicy(sizePolicy)
        self.s_r_template.setObjectName(_fromUtf8("s_r_template"))
        self.vargrid.addWidget(self.s_r_template, 5, 1, 1, 1)
        self.xlabel_2 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_2.setObjectName(_fromUtf8("xlabel_2"))
        self.vargrid.addWidget(self.xlabel_2, 6, 0, 1, 1)
        self.search_for = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.search_for.sizePolicy().hasHeightForWidth())
        self.search_for.setSizePolicy(sizePolicy)
        self.search_for.setObjectName(_fromUtf8("search_for"))
        self.vargrid.addWidget(self.search_for, 6, 1, 1, 1)
        self.case_sensitive = QtGui.QCheckBox(self.tabWidgetPage3)
        self.case_sensitive.setChecked(True)
        self.case_sensitive.setObjectName(_fromUtf8("case_sensitive"))
        self.vargrid.addWidget(self.case_sensitive, 6, 2, 1, 1)
        self.xlabel_4 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_4.setObjectName(_fromUtf8("xlabel_4"))
        self.vargrid.addWidget(self.xlabel_4, 7, 0, 1, 1)
        self.replace_with = HistoryLineEdit(self.tabWidgetPage3)
        self.replace_with.setObjectName(_fromUtf8("replace_with"))
        self.vargrid.addWidget(self.replace_with, 7, 1, 1, 1)
        self.verticalLayout = QtGui.QHBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label_41 = QtGui.QLabel(self.tabWidgetPage3)
        self.label_41.setObjectName(_fromUtf8("label_41"))
        self.verticalLayout.addWidget(self.label_41)
        self.replace_func = QtGui.QComboBox(self.tabWidgetPage3)
        self.replace_func.setObjectName(_fromUtf8("replace_func"))
        self.verticalLayout.addWidget(self.replace_func)
        spacerItem7 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.verticalLayout.addItem(spacerItem7)
        self.vargrid.addLayout(self.verticalLayout, 7, 2, 1, 1)
        self.destination_field_label = QtGui.QLabel(self.tabWidgetPage3)
        self.destination_field_label.setObjectName(_fromUtf8("destination_field_label"))
        self.vargrid.addWidget(self.destination_field_label, 8, 0, 1, 1)
        self.destination_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.destination_field.setObjectName(_fromUtf8("destination_field"))
        self.vargrid.addWidget(self.destination_field, 8, 1, 1, 1)
        self.verticalLayout1 = QtGui.QHBoxLayout()
        self.verticalLayout1.setObjectName(_fromUtf8("verticalLayout1"))
        self.replace_mode_label = QtGui.QLabel(self.tabWidgetPage3)
        self.replace_mode_label.setObjectName(_fromUtf8("replace_mode_label"))
        self.verticalLayout1.addWidget(self.replace_mode_label)
        self.replace_mode = QtGui.QComboBox(self.tabWidgetPage3)
        self.replace_mode.setObjectName(_fromUtf8("replace_mode"))
        self.verticalLayout1.addWidget(self.replace_mode)
        self.comma_separated = QtGui.QCheckBox(self.tabWidgetPage3)
        self.comma_separated.setChecked(True)
        self.comma_separated.setObjectName(_fromUtf8("comma_separated"))
        self.verticalLayout1.addWidget(self.comma_separated)
        spacerItem8 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.verticalLayout1.addItem(spacerItem8)
        self.vargrid.addLayout(self.verticalLayout1, 8, 2, 1, 1)
        self.s_r_dst_ident_label = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_dst_ident_label.setObjectName(_fromUtf8("s_r_dst_ident_label"))
        self.vargrid.addWidget(self.s_r_dst_ident_label, 9, 0, 1, 1)
        self.s_r_dst_ident = QtGui.QLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_dst_ident.sizePolicy().hasHeightForWidth())
        self.s_r_dst_ident.setSizePolicy(sizePolicy)
        self.s_r_dst_ident.setObjectName(_fromUtf8("s_r_dst_ident"))
        self.vargrid.addWidget(self.s_r_dst_ident, 9, 1, 1, 1)
        self.horizontalLayout_21 = QtGui.QHBoxLayout()
        self.horizontalLayout_21.setObjectName(_fromUtf8("horizontalLayout_21"))
        spacerItem9 = QtGui.QSpacerItem(20, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_21.addItem(spacerItem9)
        self.xlabel_412 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_412.setObjectName(_fromUtf8("xlabel_412"))
        self.horizontalLayout_21.addWidget(self.xlabel_412)
        self.results_count = QtGui.QSpinBox(self.tabWidgetPage3)
        self.results_count.setEnabled(True)
        self.results_count.setMinimum(1)
        self.results_count.setMaximum(999)
        self.results_count.setProperty("value", 999)
        self.results_count.setObjectName(_fromUtf8("results_count"))
        self.horizontalLayout_21.addWidget(self.results_count)
        self.xlabel_4121 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_4121.setObjectName(_fromUtf8("xlabel_4121"))
        self.horizontalLayout_21.addWidget(self.xlabel_4121)
        self.starting_from = QtGui.QSpinBox(self.tabWidgetPage3)
        self.starting_from.setEnabled(True)
        self.starting_from.setMinimum(1)
        self.starting_from.setMaximum(999)
        self.starting_from.setProperty("value", 1)
        self.starting_from.setObjectName(_fromUtf8("starting_from"))
        self.horizontalLayout_21.addWidget(self.starting_from)
        self.xlabel_41 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_41.setObjectName(_fromUtf8("xlabel_41"))
        self.horizontalLayout_21.addWidget(self.xlabel_41)
        self.multiple_separator = QtGui.QLineEdit(self.tabWidgetPage3)
        self.multiple_separator.setObjectName(_fromUtf8("multiple_separator"))
        self.horizontalLayout_21.addWidget(self.multiple_separator)
        self.vargrid.addLayout(self.horizontalLayout_21, 10, 1, 1, 2)
        self.scrollArea11 = QtGui.QScrollArea(self.tabWidgetPage3)
        self.scrollArea11.setFrameShape(QtGui.QFrame.NoFrame)
        self.scrollArea11.setWidgetResizable(True)
        self.scrollArea11.setObjectName(_fromUtf8("scrollArea11"))
        self.gridLayoutWidget_2 = QtGui.QWidget()
        self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 205, 66))
        self.gridLayoutWidget_2.setObjectName(_fromUtf8("gridLayoutWidget_2"))
        self.testgrid = QtGui.QGridLayout(self.gridLayoutWidget_2)
        self.testgrid.setObjectName(_fromUtf8("testgrid"))
        self.xlabel_3 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.xlabel_3.setObjectName(_fromUtf8("xlabel_3"))
        self.testgrid.addWidget(self.xlabel_3, 7, 1, 1, 1)
        self.xlabel_31 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.xlabel_31.setObjectName(_fromUtf8("xlabel_31"))
        self.testgrid.addWidget(self.xlabel_31, 7, 2, 1, 1)
        self.label_31 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.label_31.setObjectName(_fromUtf8("label_31"))
        self.testgrid.addWidget(self.label_31, 8, 0, 1, 1)
        self.test_text = HistoryLineEdit(self.gridLayoutWidget_2)
        self.test_text.setObjectName(_fromUtf8("test_text"))
        self.testgrid.addWidget(self.test_text, 8, 1, 1, 1)
        self.test_result = QtGui.QLineEdit(self.gridLayoutWidget_2)
        self.test_result.setObjectName(_fromUtf8("test_result"))
        self.testgrid.addWidget(self.test_result, 8, 2, 1, 1)
        spacerItem10 = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.testgrid.addItem(spacerItem10, 25, 0, 1, 2)
        self.scrollArea11.setWidget(self.gridLayoutWidget_2)
        self.vargrid.addWidget(self.scrollArea11, 11, 0, 1, 4)
        self.central_widget.addTab(self.tabWidgetPage3, _fromUtf8(""))
        self.verticalLayout_2.addWidget(self.central_widget)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.gridLayout_2.addWidget(self.scrollArea, 1, 0, 1, 1)
        self.button_box = QtGui.QDialogButtonBox(MetadataBulkDialog)
        self.button_box.setOrientation(QtCore.Qt.Horizontal)
        self.button_box.setStandardButtons(QtGui.QDialogButtonBox.Apply|QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.button_box.setObjectName(_fromUtf8("button_box"))
        self.gridLayout_2.addWidget(self.button_box, 2, 0, 1, 1)
        self.label_2.setBuddy(self.authors)
        self.label_8.setBuddy(self.author_sort)
        self.label_6.setBuddy(self.rating)
        self.label_3.setBuddy(self.publisher)
        self.label_4.setBuddy(self.tags)
        self.label.setBuddy(self.remove_tags)
        self.label_7.setBuddy(self.series)
        self.label_10.setBuddy(self.adddate)
        self.label_9.setBuddy(self.pubdate)
        self.label_11.setBuddy(self.languages)
        self.label_5.setBuddy(self.remove_format)
        self.xlabel_22.setBuddy(self.search_field)
        self.xlabel_21.setBuddy(self.search_field)
        self.xlabel_24.setBuddy(self.search_mode)
        self.s_r_src_ident_label.setBuddy(self.s_r_src_ident)
        self.template_label.setBuddy(self.s_r_template)
        self.xlabel_2.setBuddy(self.search_for)
        self.xlabel_4.setBuddy(self.replace_with)
        self.label_41.setBuddy(self.replace_func)
        self.destination_field_label.setBuddy(self.destination_field)
        self.replace_mode_label.setBuddy(self.replace_mode)
        self.s_r_dst_ident_label.setBuddy(self.s_r_dst_ident)
        self.xlabel_412.setBuddy(self.results_count)
        self.xlabel_4121.setBuddy(self.starting_from)
        self.xlabel_41.setBuddy(self.multiple_separator)

        self.retranslateUi(MetadataBulkDialog)
        self.central_widget.setCurrentIndex(0)
        QtCore.QObject.connect(self.button_box, QtCore.SIGNAL(_fromUtf8("accepted()")), MetadataBulkDialog.accept)
        QtCore.QObject.connect(self.button_box, QtCore.SIGNAL(_fromUtf8("rejected()")), MetadataBulkDialog.reject)
        QtCore.QMetaObject.connectSlotsByName(MetadataBulkDialog)
        MetadataBulkDialog.setTabOrder(self.authors, self.auto_author_sort)
        MetadataBulkDialog.setTabOrder(self.auto_author_sort, self.swap_title_and_author)
        MetadataBulkDialog.setTabOrder(self.swap_title_and_author, self.author_sort)
        MetadataBulkDialog.setTabOrder(self.author_sort, self.rating)
        MetadataBulkDialog.setTabOrder(self.rating, self.publisher)
        MetadataBulkDialog.setTabOrder(self.publisher, self.tags)
        MetadataBulkDialog.setTabOrder(self.tags, self.tag_editor_button)
        MetadataBulkDialog.setTabOrder(self.tag_editor_button, self.remove_tags)
        MetadataBulkDialog.setTabOrder(self.remove_tags, self.remove_all_tags)
        MetadataBulkDialog.setTabOrder(self.remove_all_tags, self.series)
        MetadataBulkDialog.setTabOrder(self.series, self.clear_series)
        MetadataBulkDialog.setTabOrder(self.clear_series, self.autonumber_series)
        MetadataBulkDialog.setTabOrder(self.autonumber_series, self.series_numbering_restarts)
        MetadataBulkDialog.setTabOrder(self.series_numbering_restarts, self.series_start_number)
        MetadataBulkDialog.setTabOrder(self.series_start_number, self.adddate)
        MetadataBulkDialog.setTabOrder(self.adddate, self.clear_adddate_button)
        MetadataBulkDialog.setTabOrder(self.clear_adddate_button, self.apply_adddate)
        MetadataBulkDialog.setTabOrder(self.apply_adddate, self.pubdate)
        MetadataBulkDialog.setTabOrder(self.pubdate, self.clear_pubdate_button)
        MetadataBulkDialog.setTabOrder(self.clear_pubdate_button, self.apply_pubdate)
        MetadataBulkDialog.setTabOrder(self.apply_pubdate, self.languages)
        MetadataBulkDialog.setTabOrder(self.languages, self.clear_languages)
        MetadataBulkDialog.setTabOrder(self.clear_languages, self.remove_format)
        MetadataBulkDialog.setTabOrder(self.remove_format, self.restore_original)
        MetadataBulkDialog.setTabOrder(self.restore_original, self.change_title_to_title_case)
        MetadataBulkDialog.setTabOrder(self.change_title_to_title_case, self.update_title_sort)
        MetadataBulkDialog.setTabOrder(self.update_title_sort, self.remove_conversion_settings)
        MetadataBulkDialog.setTabOrder(self.remove_conversion_settings, self.cover_generate)
        MetadataBulkDialog.setTabOrder(self.cover_generate, self.cover_remove)
        MetadataBulkDialog.setTabOrder(self.cover_remove, self.cover_from_fmt)
        MetadataBulkDialog.setTabOrder(self.cover_from_fmt, self.multiple_separator)
        MetadataBulkDialog.setTabOrder(self.multiple_separator, self.test_text)
        MetadataBulkDialog.setTabOrder(self.test_text, self.test_result)
        MetadataBulkDialog.setTabOrder(self.test_result, self.scrollArea)
        MetadataBulkDialog.setTabOrder(self.scrollArea, self.central_widget)
        MetadataBulkDialog.setTabOrder(self.central_widget, self.query_field)
        MetadataBulkDialog.setTabOrder(self.query_field, self.button_box)
        MetadataBulkDialog.setTabOrder(self.button_box, self.save_button)
        MetadataBulkDialog.setTabOrder(self.save_button, self.remove_button)
        MetadataBulkDialog.setTabOrder(self.remove_button, self.search_field)
        MetadataBulkDialog.setTabOrder(self.search_field, self.search_mode)
        MetadataBulkDialog.setTabOrder(self.search_mode, self.s_r_src_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_src_ident, self.s_r_template)
        MetadataBulkDialog.setTabOrder(self.s_r_template, self.replace_with)
        MetadataBulkDialog.setTabOrder(self.replace_with, self.replace_func)
        MetadataBulkDialog.setTabOrder(self.replace_func, self.replace_mode)
        MetadataBulkDialog.setTabOrder(self.replace_mode, self.comma_separated)
        MetadataBulkDialog.setTabOrder(self.comma_separated, self.s_r_dst_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_dst_ident, self.results_count)
        MetadataBulkDialog.setTabOrder(self.results_count, self.scrollArea11)
        MetadataBulkDialog.setTabOrder(self.scrollArea11, self.destination_field)
        MetadataBulkDialog.setTabOrder(self.destination_field, self.search_for)
        MetadataBulkDialog.setTabOrder(self.search_for, self.case_sensitive)
        MetadataBulkDialog.setTabOrder(self.case_sensitive, self.starting_from)

    def retranslateUi(self, MetadataBulkDialog):
        MetadataBulkDialog.setWindowTitle(_("Edit Meta information"))
        self.label_2.setText(_("&Author(s): "))
        self.auto_author_sort.setText(_("A&utomatically set author sort"))
        self.swap_title_and_author.setText(_("&Swap title and author"))
        self.label_8.setText(_("Author s&ort: "))
        self.author_sort.setToolTip(_("Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."))
        self.label_6.setText(_("&Rating:"))
        self.rating.setToolTip(_("Rating of this book. 0-5 stars"))
        self.rating.setWhatsThis(_("Rating of this book. 0-5 stars"))
        self.rating.setSpecialValueText(_("No change"))
        self.rating.setSuffix(_(" stars"))
        self.label_3.setText(_("&Publisher: "))
        self.label_4.setText(_("Add ta&gs: "))
        self.tags.setToolTip(_("Tags categorize the book. This is particularly useful while searching. <br><br>They can be any words or phrases, separated by commas."))
        self.tag_editor_button.setToolTip(_("Open Tag Editor"))
        self.tag_editor_button.setText(_("Open Tag Editor"))
        self.label.setText(_("&Remove tags:"))
        self.remove_tags.setToolTip(_("Comma separated list of tags to remove from the books. "))
        self.remove_all_tags.setToolTip(_("Check this box to remove all tags from the books."))
        self.remove_all_tags.setText(_("Remove &all"))
        self.label_7.setText(_("&Series:"))
        self.series.setToolTip(_("List of known series. You can add new series."))
        self.series.setWhatsThis(_("List of known series. You can add new series."))
        self.clear_series.setToolTip(_("If checked, the series will be cleared"))
        self.clear_series.setText(_("&Clear series"))
        self.autonumber_series.setToolTip(_("If not checked, the series number for the books will be set to 1.\n"
"If checked, selected books will be automatically numbered, in the order\n"
"you selected them. So if you selected Book A and then Book B,\n"
"Book A will have series number 1 and Book B series number 2."))
        self.autonumber_series.setText(_("&Automatically number books in this series"))
        self.series_numbering_restarts.setToolTip(_("Series will normally be renumbered from the highest number in the database\n"
"for that series. Checking this box will tell calibre to start numbering\n"
"from the value in the box"))
        self.series_numbering_restarts.setText(_("&Force numbers to start with:"))
        self.label_10.setText(_("&Date:"))
        self.adddate.setDisplayFormat(_("d MMM yyyy"))
        self.clear_adddate_button.setText(_("..."))
        self.apply_adddate.setText(_("&Apply date"))
        self.label_9.setText(_("&Published:"))
        self.pubdate.setDisplayFormat("MMM yyyy")
        self.clear_pubdate_button.setToolTip(_("Clear published date"))
        self.clear_pubdate_button.setText(_("..."))
        self.apply_pubdate.setText(_("&Apply date"))
        self.label_11.setText(_("&Languages:"))
        self.clear_languages.setText(_("Remove &all"))
        self.label_5.setText(_("Remove &format:"))
        self.restore_original.setToolTip(_("When doing a same format to same format conversion, for e.g., EPUB to EPUB, calibre saves the original EPUB as ORIGINAL_EPUB. This option tells calibre to restore the EPUB from ORIGINAL_EPUB. Useful if you did a bulk conversion of a large number of books and something went wrong."))
        self.restore_original.setText(_("Restore pre conversion &originals, if available"))
        self.change_title_to_title_case.setToolTip(_("Force the title to be in title case. If both this and swap authors are checked,\n"
"title and author are swapped before the title case is set"))
        self.change_title_to_title_case.setText(_("Change title to title &case"))
        self.update_title_sort.setToolTip(_("Update title sort based on the current title. This will be applied only after other changes to title."))
        self.update_title_sort.setText(_("Update &title sort"))
        self.remove_conversion_settings.setToolTip(_("Remove stored conversion settings for the selected books.\n"
"\n"
"Future conversion of these books will use the default settings."))
        self.remove_conversion_settings.setText(_("Remove &stored conversion settings for the selected books"))
        self.groupBox.setTitle(_("Change &cover"))
        self.cover_generate.setText(_("&Generate default cover"))
        self.cover_remove.setText(_("&Remove cover"))
        self.cover_from_fmt.setText(_("Set from &ebook file(s)"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.tabWidgetPage1), _("&Basic metadata"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.tab), _("&Custom metadata"))
        self.xlabel_22.setText(_("Load searc&h/replace:"))
        self.query_field.setToolTip(_("Select saved search/replace to load."))
        self.save_button.setToolTip(_("Save current search/replace"))
        self.save_button.setText(_("Sa&ve"))
        self.remove_button.setToolTip(_("Delete saved search/replace"))
        self.remove_button.setText(_("Delete"))
        self.xlabel_21.setText(_("Search &field:"))
        self.search_field.setToolTip(_("The name of the field that you want to search"))
        self.xlabel_24.setText(_("Search &mode:"))
        self.search_mode.setToolTip(_("Choose whether to use basic text matching or advanced regular expression matching"))
        self.s_r_src_ident_label.setText(_("Identifier type:"))
        self.s_r_src_ident.setToolTip(_("Choose which identifier type to operate upon"))
        self.template_label.setText(_("Te&mplate:"))
        self.s_r_template.setToolTip(_("Enter a template to be used as the source for the search/replace"))
        self.xlabel_2.setText(_("&Search for:"))
        self.search_for.setToolTip(_("Enter what you are looking for, either plain text or a regular expression, depending on the mode"))
        self.case_sensitive.setToolTip(_("Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored"))
        self.case_sensitive.setText(_("Cas&e sensitive"))
        self.xlabel_4.setText(_("&Replace with:"))
        self.replace_with.setToolTip(_("The replacement text. The matched search text will be replaced with this string"))
        self.label_41.setText(_("&Apply function after replace:"))
        self.replace_func.setToolTip(_("Specify how the text is to be processed after matching and replacement. In character mode, the entire\n"
"field is processed. In regular expression mode, only the matched text is processed"))
        self.destination_field_label.setText(_("&Destination field:"))
        self.destination_field.setToolTip(_("The field that the text will be put into after all replacements.\n"
"If blank, the source field is used if the field is modifiable"))
        self.replace_mode_label.setText(_("M&ode:"))
        self.replace_mode.setToolTip(_("Specify how the text should be copied into the destination."))
        self.comma_separated.setToolTip(_("Specifies whether result items should be split into multiple values or\n"
"left as single values. This option has the most effect when the source field is\n"
"not multiple and the destination field is multiple"))
        self.comma_separated.setText(_("Split &result"))
        self.s_r_dst_ident_label.setText(_("Identifier type:"))
        self.s_r_dst_ident.setToolTip(_("Choose which identifier type to operate upon"))
        self.xlabel_412.setText(_("For multiple-valued fields, sho&w"))
        self.xlabel_4121.setText(_("values starting a&t"))
        self.xlabel_41.setText(_("with values separated b&y"))
        self.multiple_separator.setToolTip(_("Used when displaying test results to separate values in multiple-valued fields"))
        self.xlabel_3.setText(_("Test text"))
        self.xlabel_31.setText(_("Test result"))
        self.label_31.setText(_("Your test:"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.tabWidgetPage3), _("&Search and replace"))
Beispiel #8
0
class Ui_TagListEditor(object):
    def setupUi(self, TagListEditor):
        TagListEditor.setObjectName("TagListEditor")
        TagListEditor.resize(676, 335)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(I("chapters.png")), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        TagListEditor.setWindowIcon(icon)
        self.gridlayout = QtWidgets.QGridLayout(TagListEditor)
        self.gridlayout.setObjectName("gridlayout")
        self.label = QtWidgets.QLabel(TagListEditor)
        self.label.setObjectName("label")
        self.gridlayout.addWidget(self.label, 0, 0, 1, 1)
        self.search_box = HistoryLineEdit(TagListEditor)
        self.search_box.setMinimumSize(QtCore.QSize(200, 0))
        self.search_box.setClearButtonEnabled(True)
        self.search_box.setObjectName("search_box")
        self.gridlayout.addWidget(self.search_box, 0, 1, 1, 1)
        self.search_button = QtWidgets.QPushButton(TagListEditor)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(I("search.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.search_button.setIcon(icon1)
        self.search_button.setObjectName("search_button")
        self.gridlayout.addWidget(self.search_button, 0, 2, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridlayout.addItem(spacerItem, 0, 3, 1, 1)
        self.apply_vl_checkbox = QtWidgets.QCheckBox(TagListEditor)
        self.apply_vl_checkbox.setObjectName("apply_vl_checkbox")
        self.gridlayout.addWidget(self.apply_vl_checkbox, 0, 4, 1, 1)
        self.label1 = QtWidgets.QLabel(TagListEditor)
        self.label1.setObjectName("label1")
        self.gridlayout.addWidget(self.label1, 1, 0, 1, 1)
        self.filter_box = HistoryLineEdit(TagListEditor)
        self.filter_box.setMinimumSize(QtCore.QSize(200, 0))
        self.filter_box.setClearButtonEnabled(True)
        self.filter_box.setObjectName("filter_box")
        self.gridlayout.addWidget(self.filter_box, 1, 1, 1, 1)
        self.filter_button = QtWidgets.QPushButton(TagListEditor)
        self.filter_button.setIcon(icon1)
        self.filter_button.setObjectName("filter_button")
        self.gridlayout.addWidget(self.filter_button, 1, 2, 1, 1)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        spacerItem1 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem1)
        self.delete_button = QtWidgets.QToolButton(TagListEditor)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(I("trash.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.delete_button.setIcon(icon2)
        self.delete_button.setIconSize(QtCore.QSize(32, 32))
        self.delete_button.setObjectName("delete_button")
        self.verticalLayout_2.addWidget(self.delete_button)
        spacerItem2 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem2)
        self.rename_button = QtWidgets.QToolButton(TagListEditor)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(I("edit_input.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.rename_button.setIcon(icon3)
        self.rename_button.setIconSize(QtCore.QSize(32, 32))
        self.rename_button.setObjectName("rename_button")
        self.verticalLayout_2.addWidget(self.rename_button)
        spacerItem3 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem3)
        self.undo_button = QtWidgets.QToolButton(TagListEditor)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(I("edit-undo.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.undo_button.setIcon(icon4)
        self.undo_button.setIconSize(QtCore.QSize(32, 32))
        self.undo_button.setObjectName("undo_button")
        self.verticalLayout_2.addWidget(self.undo_button)
        spacerItem4 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout_2.addItem(spacerItem4)
        self.gridlayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1)
        self.table = TleTableWidget(TagListEditor)
        self.table.setAlternatingRowColors(True)
        self.table.setSelectionMode(
            QtWidgets.QAbstractItemView.ExtendedSelection)
        self.table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
        self.table.setObjectName("table")
        self.table.setColumnCount(0)
        self.table.setRowCount(0)
        self.gridlayout.addWidget(self.table, 2, 1, 1, 4)
        self.buttonBox = QtWidgets.QDialogButtonBox(TagListEditor)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel
                                          | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridlayout.addWidget(self.buttonBox, 3, 0, 1, 5)
        self.label.setBuddy(self.search_box)
        self.label1.setBuddy(self.filter_box)

        self.retranslateUi(TagListEditor)
        self.buttonBox.accepted.connect(TagListEditor.accept)
        self.buttonBox.rejected.connect(TagListEditor.reject)
        QtCore.QMetaObject.connectSlotsByName(TagListEditor)

    def retranslateUi(self, TagListEditor):

        TagListEditor.setWindowTitle(_("Category editor"))
        self.label.setText(_("&Search for:"))
        self.search_box.setToolTip(_("Search for an item in the first column"))
        self.search_button.setToolTip(
            _("Find items containing the search string"))
        self.search_button.setText(_("S&earch"))
        self.apply_vl_checkbox.setToolTip(
            _("<p>Show items only if they appear in the\n"
              "          current Virtual library. Edits already done may be hidden but will\n"
              "          not be forgotten.</p>"))
        self.apply_vl_checkbox.setText(
            _("Only show items in the current &Virtual library"))
        self.label1.setText(_("&Filter by:"))
        self.filter_box.setToolTip(
            _("Filter items using the text in this box"))
        self.filter_button.setToolTip(
            _("Show only items containing this text"))
        self.filter_button.setText(_("F&ilter"))
        self.delete_button.setToolTip(
            _("Delete selected items from the database. This will unapply the items from all books and then remove them from the database."
              ))
        self.delete_button.setText(_("..."))
        self.delete_button.setShortcut(_("Ctrl+D"))
        self.rename_button.setToolTip(
            _("Rename the items in every book where they are used"))
        self.rename_button.setText(_("..."))
        self.rename_button.setShortcut(_("Ctrl+R"))
        self.undo_button.setToolTip(
            _("Undo any deletes or edits on the selected lines"))
        self.undo_button.setText(_("..."))
        self.undo_button.setShortcut(_("Ctrl+U"))
Beispiel #9
0
class Ui_MetadataBulkDialog(object):
    def setupUi(self, MetadataBulkDialog):
        MetadataBulkDialog.setObjectName(_fromUtf8("MetadataBulkDialog"))
        MetadataBulkDialog.resize(962, 645)
        MetadataBulkDialog.setWindowTitle(_("Edit Meta information"))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(I("edit_input.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MetadataBulkDialog.setWindowIcon(icon)
        self.gridLayout_2 = QtGui.QGridLayout(MetadataBulkDialog)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.box_title = QtGui.QLabel(MetadataBulkDialog)
        self.box_title.setText(_fromUtf8(""))
        self.box_title.setAlignment(QtCore.Qt.AlignCenter)
        self.box_title.setObjectName(_fromUtf8("box_title"))
        self.gridLayout_2.addWidget(self.box_title, 0, 0, 1, 1)
        self.scrollArea = QtGui.QScrollArea(MetadataBulkDialog)
        self.scrollArea.setFrameShape(QtGui.QFrame.NoFrame)
        self.scrollArea.setLineWidth(0)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName(_fromUtf8("scrollArea"))
        self.scrollAreaWidgetContents = QtGui.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 950, 576))
        self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.scrollAreaWidgetContents)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.central_widget = QtGui.QTabWidget(self.scrollAreaWidgetContents)
        self.central_widget.setObjectName(_fromUtf8("central_widget"))
        self.tabWidgetPage1 = QtGui.QWidget()
        self.tabWidgetPage1.setObjectName(_fromUtf8("tabWidgetPage1"))
        self.gridLayout = QtGui.QGridLayout(self.tabWidgetPage1)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label_2 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_2.setText(_("&Author(s): "))
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1)
        self.authors = EditWithComplete(self.tabWidgetPage1)
        self.authors.setEditable(True)
        self.authors.setObjectName(_fromUtf8("authors"))
        self.gridLayout.addWidget(self.authors, 0, 1, 1, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.auto_author_sort = QtGui.QCheckBox(self.tabWidgetPage1)
        self.auto_author_sort.setText(_("A&utomatically set author sort"))
        self.auto_author_sort.setObjectName(_fromUtf8("auto_author_sort"))
        self.horizontalLayout_2.addWidget(self.auto_author_sort)
        self.swap_title_and_author = QtGui.QCheckBox(self.tabWidgetPage1)
        self.swap_title_and_author.setText(_("&Swap title and author"))
        self.swap_title_and_author.setObjectName(_fromUtf8("swap_title_and_author"))
        self.horizontalLayout_2.addWidget(self.swap_title_and_author)
        self.gridLayout.addLayout(self.horizontalLayout_2, 1, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_8.setText(_("Author s&ort: "))
        self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1)
        self.author_sort = EnLineEdit(self.tabWidgetPage1)
        self.author_sort.setToolTip(_("Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."))
        self.author_sort.setObjectName(_fromUtf8("author_sort"))
        self.gridLayout.addWidget(self.author_sort, 2, 1, 1, 1)
        self.label_6 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_6.setText(_("&Rating:"))
        self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_6.setObjectName(_fromUtf8("label_6"))
        self.gridLayout.addWidget(self.label_6, 3, 0, 1, 1)
        self.rating = QtGui.QSpinBox(self.tabWidgetPage1)
        self.rating.setToolTip(_("Rating of this book. 0-5 stars"))
        self.rating.setWhatsThis(_("Rating of this book. 0-5 stars"))
        self.rating.setButtonSymbols(QtGui.QAbstractSpinBox.PlusMinus)
        self.rating.setSpecialValueText(_("No change"))
        self.rating.setSuffix(_(" stars"))
        self.rating.setMinimum(-1)
        self.rating.setMaximum(5)
        self.rating.setProperty("value", -1)
        self.rating.setObjectName(_fromUtf8("rating"))
        self.gridLayout.addWidget(self.rating, 3, 1, 1, 1)
        self.label_3 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_3.setText(_("&Publisher: "))
        self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
        self.publisher = EditWithComplete(self.tabWidgetPage1)
        self.publisher.setEditable(True)
        self.publisher.setObjectName(_fromUtf8("publisher"))
        self.gridLayout.addWidget(self.publisher, 4, 1, 1, 1)
        self.label_4 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_4.setText(_("Add ta&gs: "))
        self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.tags = EditWithComplete(self.tabWidgetPage1)
        self.tags.setToolTip(_("Tags categorize the book. This is particularly useful while searching. <br><br>They can be any words or phrases, separated by commas."))
        self.tags.setObjectName(_fromUtf8("tags"))
        self.gridLayout.addWidget(self.tags, 5, 1, 1, 1)
        self.tag_editor_button = QtGui.QToolButton(self.tabWidgetPage1)
        self.tag_editor_button.setToolTip(_("Open Tag Editor"))
        self.tag_editor_button.setText(_("Open Tag Editor"))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(I("chapters.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.tag_editor_button.setIcon(icon1)
        self.tag_editor_button.setObjectName(_fromUtf8("tag_editor_button"))
        self.gridLayout.addWidget(self.tag_editor_button, 5, 2, 1, 1)
        self.label = QtGui.QLabel(self.tabWidgetPage1)
        self.label.setText(_("&Remove tags:"))
        self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 6, 0, 1, 1)
        self.remove_tags = EditWithComplete(self.tabWidgetPage1)
        self.remove_tags.setToolTip(_("Comma separated list of tags to remove from the books. "))
        self.remove_tags.setObjectName(_fromUtf8("remove_tags"))
        self.gridLayout.addWidget(self.remove_tags, 6, 1, 1, 1)
        self.remove_all_tags = QtGui.QCheckBox(self.tabWidgetPage1)
        self.remove_all_tags.setToolTip(_("Check this box to remove all tags from the books."))
        self.remove_all_tags.setText(_("Remove &all"))
        self.remove_all_tags.setObjectName(_fromUtf8("remove_all_tags"))
        self.gridLayout.addWidget(self.remove_all_tags, 6, 2, 1, 1)
        self.label_7 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_7.setText(_("&Series:"))
        self.label_7.setTextFormat(QtCore.Qt.PlainText)
        self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_7.setObjectName(_fromUtf8("label_7"))
        self.gridLayout.addWidget(self.label_7, 7, 0, 1, 1)
        self.series = EditWithComplete(self.tabWidgetPage1)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.series.sizePolicy().hasHeightForWidth())
        self.series.setSizePolicy(sizePolicy)
        self.series.setToolTip(_("List of known series. You can add new series."))
        self.series.setWhatsThis(_("List of known series. You can add new series."))
        self.series.setEditable(True)
        self.series.setInsertPolicy(QtGui.QComboBox.InsertAlphabetically)
        self.series.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLengthWithIcon)
        self.series.setMinimumContentsLength(40)
        self.series.setObjectName(_fromUtf8("series"))
        self.gridLayout.addWidget(self.series, 7, 1, 1, 1)
        self.clear_series = QtGui.QCheckBox(self.tabWidgetPage1)
        self.clear_series.setToolTip(_("If checked, the series will be cleared"))
        self.clear_series.setText(_("&Clear series"))
        self.clear_series.setObjectName(_fromUtf8("clear_series"))
        self.gridLayout.addWidget(self.clear_series, 7, 2, 1, 1)
        self.HLayout_3 = QtGui.QHBoxLayout()
        self.HLayout_3.setObjectName(_fromUtf8("HLayout_3"))
        self.autonumber_series = QtGui.QCheckBox(self.tabWidgetPage1)
        self.autonumber_series.setEnabled(False)
        self.autonumber_series.setToolTip(_("If not checked, the series number for the books will be set to 1.\n"
"If checked, selected books will be automatically numbered, in the order\n"
"you selected them. So if you selected Book A and then Book B,\n"
"Book A will have series number 1 and Book B series number 2."))
        self.autonumber_series.setText(_("&Automatically number books in this series"))
        self.autonumber_series.setObjectName(_fromUtf8("autonumber_series"))
        self.HLayout_3.addWidget(self.autonumber_series)
        self.series_numbering_restarts = QtGui.QCheckBox(self.tabWidgetPage1)
        self.series_numbering_restarts.setEnabled(False)
        self.series_numbering_restarts.setToolTip(_("Series will normally be renumbered from the highest number in the database\n"
"for that series. Checking this box will tell calibre to start numbering\n"
"from the value in the box"))
        self.series_numbering_restarts.setText(_("&Force numbers to start with:"))
        self.series_numbering_restarts.setObjectName(_fromUtf8("series_numbering_restarts"))
        self.HLayout_3.addWidget(self.series_numbering_restarts)
        self.series_start_number = QtGui.QSpinBox(self.tabWidgetPage1)
        self.series_start_number.setEnabled(False)
        self.series_start_number.setMinimum(1)
        self.series_start_number.setMaximum(99000000)
        self.series_start_number.setProperty("value", 1)
        self.series_start_number.setObjectName(_fromUtf8("series_start_number"))
        self.HLayout_3.addWidget(self.series_start_number)
        self.gridLayout.addLayout(self.HLayout_3, 8, 1, 1, 1)
        self.label_10 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_10.setText(_("&Date:"))
        self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_10.setObjectName(_fromUtf8("label_10"))
        self.gridLayout.addWidget(self.label_10, 9, 0, 1, 1)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.adddate = QtGui.QDateTimeEdit(self.tabWidgetPage1)
        self.adddate.setDisplayFormat(_("d MMM yyyy"))
        self.adddate.setCalendarPopup(True)
        self.adddate.setObjectName(_fromUtf8("adddate"))
        self.horizontalLayout_5.addWidget(self.adddate)
        self.clear_adddate_button = QtGui.QToolButton(self.tabWidgetPage1)
        self.clear_adddate_button.setText(_("..."))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8(I("trash.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.clear_adddate_button.setIcon(icon2)
        self.clear_adddate_button.setObjectName(_fromUtf8("clear_adddate_button"))
        self.horizontalLayout_5.addWidget(self.clear_adddate_button)
        self.gridLayout.addLayout(self.horizontalLayout_5, 9, 1, 1, 1)
        self.apply_adddate = QtGui.QCheckBox(self.tabWidgetPage1)
        self.apply_adddate.setText(_("&Apply date"))
        self.apply_adddate.setObjectName(_fromUtf8("apply_adddate"))
        self.gridLayout.addWidget(self.apply_adddate, 9, 2, 1, 1)
        self.label_9 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_9.setText(_("&Published:"))
        self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_9.setObjectName(_fromUtf8("label_9"))
        self.gridLayout.addWidget(self.label_9, 10, 0, 1, 1)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.pubdate = QtGui.QDateTimeEdit(self.tabWidgetPage1)
        self.pubdate.setDisplayFormat("MMM yyyy")
        self.pubdate.setCalendarPopup(True)
        self.pubdate.setObjectName(_fromUtf8("pubdate"))
        self.horizontalLayout_4.addWidget(self.pubdate)
        self.clear_pubdate_button = QtGui.QToolButton(self.tabWidgetPage1)
        self.clear_pubdate_button.setToolTip(_("Clear published date"))
        self.clear_pubdate_button.setText(_("..."))
        self.clear_pubdate_button.setIcon(icon2)
        self.clear_pubdate_button.setObjectName(_fromUtf8("clear_pubdate_button"))
        self.horizontalLayout_4.addWidget(self.clear_pubdate_button)
        self.gridLayout.addLayout(self.horizontalLayout_4, 10, 1, 1, 1)
        self.apply_pubdate = QtGui.QCheckBox(self.tabWidgetPage1)
        self.apply_pubdate.setText(_("&Apply date"))
        self.apply_pubdate.setObjectName(_fromUtf8("apply_pubdate"))
        self.gridLayout.addWidget(self.apply_pubdate, 10, 2, 1, 1)
        self.label_11 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_11.setText(_("&Languages:"))
        self.label_11.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_11.setObjectName(_fromUtf8("label_11"))
        self.gridLayout.addWidget(self.label_11, 11, 0, 1, 1)
        self.languages = LanguagesEdit(self.tabWidgetPage1)
        self.languages.setObjectName(_fromUtf8("languages"))
        self.gridLayout.addWidget(self.languages, 11, 1, 1, 1)
        self.clear_languages = QtGui.QCheckBox(self.tabWidgetPage1)
        self.clear_languages.setText(_("Remove &all"))
        self.clear_languages.setObjectName(_fromUtf8("clear_languages"))
        self.gridLayout.addWidget(self.clear_languages, 11, 2, 1, 1)
        self.label_5 = QtGui.QLabel(self.tabWidgetPage1)
        self.label_5.setText(_("Remove &format:"))
        self.label_5.setObjectName(_fromUtf8("label_5"))
        self.gridLayout.addWidget(self.label_5, 12, 0, 1, 1)
        self.horizontalLayout_7 = QtGui.QHBoxLayout()
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.remove_format = QtGui.QComboBox(self.tabWidgetPage1)
        self.remove_format.setMaximumSize(QtCore.QSize(120, 16777215))
        self.remove_format.setObjectName(_fromUtf8("remove_format"))
        self.horizontalLayout_7.addWidget(self.remove_format)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.restore_original = QtGui.QCheckBox(self.tabWidgetPage1)
        self.restore_original.setToolTip(_("When doing a same format to same format conversion, for e.g., EPUB to EPUB, calibre saves the original EPUB as ORIGINAL_EPUB. This option tells calibre to restore the EPUB from ORIGINAL_EPUB. Useful if you did a bulk conversion of a large number of books and something went wrong."))
        self.restore_original.setText(_("Restore pre conversion &originals, if available"))
        self.restore_original.setObjectName(_fromUtf8("restore_original"))
        self.horizontalLayout_7.addWidget(self.restore_original)
        self.gridLayout.addLayout(self.horizontalLayout_7, 12, 1, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(20, 15, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
        self.gridLayout.addItem(spacerItem1, 13, 0, 1, 1)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.change_title_to_title_case = QtGui.QCheckBox(self.tabWidgetPage1)
        self.change_title_to_title_case.setToolTip(_("Force the title to be in title case. If both this and swap authors are checked,\n"
"title and author are swapped before the title case is set"))
        self.change_title_to_title_case.setText(_("Change title to title &case"))
        self.change_title_to_title_case.setObjectName(_fromUtf8("change_title_to_title_case"))
        self.horizontalLayout_3.addWidget(self.change_title_to_title_case)
        self.update_title_sort = QtGui.QCheckBox(self.tabWidgetPage1)
        self.update_title_sort.setToolTip(_("Update title sort based on the current title. This will be applied only after other changes to title."))
        self.update_title_sort.setText(_("Update &title sort"))
        self.update_title_sort.setObjectName(_fromUtf8("update_title_sort"))
        self.horizontalLayout_3.addWidget(self.update_title_sort)
        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.remove_conversion_settings = QtGui.QCheckBox(self.tabWidgetPage1)
        self.remove_conversion_settings.setToolTip(_("Remove stored conversion settings for the selected books.\n"
"\n"
"Future conversion of these books will use the default settings."))
        self.remove_conversion_settings.setText(_("Remove &stored conversion settings for the selected books"))
        self.remove_conversion_settings.setObjectName(_fromUtf8("remove_conversion_settings"))
        self.horizontalLayout_3.addWidget(self.remove_conversion_settings)
        self.gridLayout.addLayout(self.horizontalLayout_3, 14, 0, 1, 2)
        self.groupBox = QtGui.QGroupBox(self.tabWidgetPage1)
        self.groupBox.setTitle(_("Change &cover"))
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.cover_generate = QtGui.QRadioButton(self.groupBox)
        self.cover_generate.setText(_("&Generate default cover"))
        self.cover_generate.setObjectName(_fromUtf8("cover_generate"))
        self.horizontalLayout.addWidget(self.cover_generate)
        self.cover_remove = QtGui.QRadioButton(self.groupBox)
        self.cover_remove.setText(_("&Remove cover"))
        self.cover_remove.setObjectName(_fromUtf8("cover_remove"))
        self.horizontalLayout.addWidget(self.cover_remove)
        self.cover_from_fmt = QtGui.QRadioButton(self.groupBox)
        self.cover_from_fmt.setText(_("Set from &ebook file(s)"))
        self.cover_from_fmt.setObjectName(_fromUtf8("cover_from_fmt"))
        self.horizontalLayout.addWidget(self.cover_from_fmt)
        self.gridLayout.addWidget(self.groupBox, 15, 0, 1, 2)
        spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem3, 16, 0, 1, 1)
        self.central_widget.addTab(self.tabWidgetPage1, _fromUtf8(""))
        self.tab = QtGui.QWidget()
        self.tab.setObjectName(_fromUtf8("tab"))
        self.central_widget.addTab(self.tab, _fromUtf8(""))
        self.tabWidgetPage3 = QtGui.QWidget()
        self.tabWidgetPage3.setObjectName(_fromUtf8("tabWidgetPage3"))
        self.vargrid = QtGui.QGridLayout(self.tabWidgetPage3)
        self.vargrid.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
        self.vargrid.setObjectName(_fromUtf8("vargrid"))
        self.s_r_heading = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_heading.setWordWrap(True)
        self.s_r_heading.setOpenExternalLinks(True)
        self.s_r_heading.setObjectName(_fromUtf8("s_r_heading"))
        self.vargrid.addWidget(self.s_r_heading, 0, 0, 1, 4)
        self.filler = QtGui.QLabel(self.tabWidgetPage3)
        self.filler.setText(_fromUtf8(""))
        self.filler.setObjectName(_fromUtf8("filler"))
        self.vargrid.addWidget(self.filler, 1, 0, 1, 1)
        self.line = QtGui.QFrame(self.tabWidgetPage3)
        self.line.setFrameShape(QtGui.QFrame.HLine)
        self.line.setFrameShadow(QtGui.QFrame.Sunken)
        self.line.setObjectName(_fromUtf8("line"))
        self.vargrid.addWidget(self.line, 2, 0, 1, 3)
        self.xlabel_22 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_22.setText(_("Load searc&h/replace:"))
        self.xlabel_22.setObjectName(_fromUtf8("xlabel_22"))
        self.vargrid.addWidget(self.xlabel_22, 3, 0, 1, 1)
        self.query_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.query_field.setToolTip(_("Select saved search/replace to load."))
        self.query_field.setObjectName(_fromUtf8("query_field"))
        self.vargrid.addWidget(self.query_field, 3, 1, 1, 1)
        self.horizontalLayout_6 = QtGui.QHBoxLayout()
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        spacerItem4 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem4)
        self.save_button = QtGui.QPushButton(self.tabWidgetPage3)
        self.save_button.setToolTip(_("Save current search/replace"))
        self.save_button.setText(_("Sa&ve"))
        self.save_button.setObjectName(_fromUtf8("save_button"))
        self.horizontalLayout_6.addWidget(self.save_button)
        self.remove_button = QtGui.QPushButton(self.tabWidgetPage3)
        self.remove_button.setToolTip(_("Delete saved search/replace"))
        self.remove_button.setText(_("Delete"))
        self.remove_button.setObjectName(_fromUtf8("remove_button"))
        self.horizontalLayout_6.addWidget(self.remove_button)
        spacerItem5 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem5)
        self.vargrid.addLayout(self.horizontalLayout_6, 3, 2, 1, 1)
        self.xlabel_21 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_21.setText(_("Search &field:"))
        self.xlabel_21.setObjectName(_fromUtf8("xlabel_21"))
        self.vargrid.addWidget(self.xlabel_21, 4, 0, 1, 1)
        self.search_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.search_field.setToolTip(_("The name of the field that you want to search"))
        self.search_field.setObjectName(_fromUtf8("search_field"))
        self.vargrid.addWidget(self.search_field, 4, 1, 1, 1)
        self.HLayout_31 = QtGui.QHBoxLayout()
        self.HLayout_31.setObjectName(_fromUtf8("HLayout_31"))
        self.xlabel_24 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_24.setText(_("Search &mode:"))
        self.xlabel_24.setObjectName(_fromUtf8("xlabel_24"))
        self.HLayout_31.addWidget(self.xlabel_24)
        self.search_mode = QtGui.QComboBox(self.tabWidgetPage3)
        self.search_mode.setToolTip(_("Choose whether to use basic text matching or advanced regular expression matching"))
        self.search_mode.setObjectName(_fromUtf8("search_mode"))
        self.HLayout_31.addWidget(self.search_mode)
        spacerItem6 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.HLayout_31.addItem(spacerItem6)
        self.vargrid.addLayout(self.HLayout_31, 4, 2, 1, 1)
        self.s_r_src_ident_label = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_src_ident_label.setText(_("Identifier type:"))
        self.s_r_src_ident_label.setObjectName(_fromUtf8("s_r_src_ident_label"))
        self.vargrid.addWidget(self.s_r_src_ident_label, 5, 0, 1, 1)
        self.s_r_src_ident = QtGui.QComboBox(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_src_ident.sizePolicy().hasHeightForWidth())
        self.s_r_src_ident.setSizePolicy(sizePolicy)
        self.s_r_src_ident.setToolTip(_("Choose which identifier type to operate upon"))
        self.s_r_src_ident.setObjectName(_fromUtf8("s_r_src_ident"))
        self.vargrid.addWidget(self.s_r_src_ident, 5, 1, 1, 1)
        self.template_label = QtGui.QLabel(self.tabWidgetPage3)
        self.template_label.setText(_("Te&mplate:"))
        self.template_label.setObjectName(_fromUtf8("template_label"))
        self.vargrid.addWidget(self.template_label, 5, 0, 1, 1)
        self.s_r_template = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_template.sizePolicy().hasHeightForWidth())
        self.s_r_template.setSizePolicy(sizePolicy)
        self.s_r_template.setToolTip(_("Enter a template to be used as the source for the search/replace"))
        self.s_r_template.setObjectName(_fromUtf8("s_r_template"))
        self.vargrid.addWidget(self.s_r_template, 5, 1, 1, 1)
        self.xlabel_2 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_2.setText(_("&Search for:"))
        self.xlabel_2.setObjectName(_fromUtf8("xlabel_2"))
        self.vargrid.addWidget(self.xlabel_2, 6, 0, 1, 1)
        self.search_for = HistoryLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.search_for.sizePolicy().hasHeightForWidth())
        self.search_for.setSizePolicy(sizePolicy)
        self.search_for.setToolTip(_("Enter what you are looking for, either plain text or a regular expression, depending on the mode"))
        self.search_for.setObjectName(_fromUtf8("search_for"))
        self.vargrid.addWidget(self.search_for, 6, 1, 1, 1)
        self.case_sensitive = QtGui.QCheckBox(self.tabWidgetPage3)
        self.case_sensitive.setToolTip(_("Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored"))
        self.case_sensitive.setText(_("Cas&e sensitive"))
        self.case_sensitive.setChecked(True)
        self.case_sensitive.setObjectName(_fromUtf8("case_sensitive"))
        self.vargrid.addWidget(self.case_sensitive, 6, 2, 1, 1)
        self.xlabel_4 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_4.setText(_("&Replace with:"))
        self.xlabel_4.setObjectName(_fromUtf8("xlabel_4"))
        self.vargrid.addWidget(self.xlabel_4, 7, 0, 1, 1)
        self.replace_with = HistoryLineEdit(self.tabWidgetPage3)
        self.replace_with.setToolTip(_("The replacement text. The matched search text will be replaced with this string"))
        self.replace_with.setObjectName(_fromUtf8("replace_with"))
        self.vargrid.addWidget(self.replace_with, 7, 1, 1, 1)
        self.verticalLayout = QtGui.QHBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label_41 = QtGui.QLabel(self.tabWidgetPage3)
        self.label_41.setText(_("&Apply function after replace:"))
        self.label_41.setObjectName(_fromUtf8("label_41"))
        self.verticalLayout.addWidget(self.label_41)
        self.replace_func = QtGui.QComboBox(self.tabWidgetPage3)
        self.replace_func.setToolTip(_("Specify how the text is to be processed after matching and replacement. In character mode, the entire\n"
"field is processed. In regular expression mode, only the matched text is processed"))
        self.replace_func.setObjectName(_fromUtf8("replace_func"))
        self.verticalLayout.addWidget(self.replace_func)
        spacerItem7 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.verticalLayout.addItem(spacerItem7)
        self.vargrid.addLayout(self.verticalLayout, 7, 2, 1, 1)
        self.destination_field_label = QtGui.QLabel(self.tabWidgetPage3)
        self.destination_field_label.setText(_("&Destination field:"))
        self.destination_field_label.setObjectName(_fromUtf8("destination_field_label"))
        self.vargrid.addWidget(self.destination_field_label, 8, 0, 1, 1)
        self.destination_field = QtGui.QComboBox(self.tabWidgetPage3)
        self.destination_field.setToolTip(_("The field that the text will be put into after all replacements.\n"
"If blank, the source field is used if the field is modifiable"))
        self.destination_field.setObjectName(_fromUtf8("destination_field"))
        self.vargrid.addWidget(self.destination_field, 8, 1, 1, 1)
        self.verticalLayout1 = QtGui.QHBoxLayout()
        self.verticalLayout1.setObjectName(_fromUtf8("verticalLayout1"))
        self.replace_mode_label = QtGui.QLabel(self.tabWidgetPage3)
        self.replace_mode_label.setText(_("M&ode:"))
        self.replace_mode_label.setObjectName(_fromUtf8("replace_mode_label"))
        self.verticalLayout1.addWidget(self.replace_mode_label)
        self.replace_mode = QtGui.QComboBox(self.tabWidgetPage3)
        self.replace_mode.setToolTip(_("Specify how the text should be copied into the destination."))
        self.replace_mode.setObjectName(_fromUtf8("replace_mode"))
        self.verticalLayout1.addWidget(self.replace_mode)
        self.comma_separated = QtGui.QCheckBox(self.tabWidgetPage3)
        self.comma_separated.setToolTip(_("Specifies whether result items should be split into multiple values or\n"
"left as single values. This option has the most effect when the source field is\n"
"not multiple and the destination field is multiple"))
        self.comma_separated.setText(_("Split &result"))
        self.comma_separated.setChecked(True)
        self.comma_separated.setObjectName(_fromUtf8("comma_separated"))
        self.verticalLayout1.addWidget(self.comma_separated)
        spacerItem8 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.verticalLayout1.addItem(spacerItem8)
        self.vargrid.addLayout(self.verticalLayout1, 8, 2, 1, 1)
        self.s_r_dst_ident_label = QtGui.QLabel(self.tabWidgetPage3)
        self.s_r_dst_ident_label.setText(_("Identifier type:"))
        self.s_r_dst_ident_label.setObjectName(_fromUtf8("s_r_dst_ident_label"))
        self.vargrid.addWidget(self.s_r_dst_ident_label, 9, 0, 1, 1)
        self.s_r_dst_ident = QtGui.QLineEdit(self.tabWidgetPage3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.s_r_dst_ident.sizePolicy().hasHeightForWidth())
        self.s_r_dst_ident.setSizePolicy(sizePolicy)
        self.s_r_dst_ident.setToolTip(_("Choose which identifier type to operate upon"))
        self.s_r_dst_ident.setObjectName(_fromUtf8("s_r_dst_ident"))
        self.vargrid.addWidget(self.s_r_dst_ident, 9, 1, 1, 1)
        self.horizontalLayout_21 = QtGui.QHBoxLayout()
        self.horizontalLayout_21.setObjectName(_fromUtf8("horizontalLayout_21"))
        spacerItem9 = QtGui.QSpacerItem(20, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_21.addItem(spacerItem9)
        self.xlabel_412 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_412.setText(_("For multiple-valued fields, sho&w"))
        self.xlabel_412.setObjectName(_fromUtf8("xlabel_412"))
        self.horizontalLayout_21.addWidget(self.xlabel_412)
        self.results_count = QtGui.QSpinBox(self.tabWidgetPage3)
        self.results_count.setEnabled(True)
        self.results_count.setMinimum(1)
        self.results_count.setMaximum(999)
        self.results_count.setProperty("value", 999)
        self.results_count.setObjectName(_fromUtf8("results_count"))
        self.horizontalLayout_21.addWidget(self.results_count)
        self.xlabel_4121 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_4121.setText(_("values starting a&t"))
        self.xlabel_4121.setObjectName(_fromUtf8("xlabel_4121"))
        self.horizontalLayout_21.addWidget(self.xlabel_4121)
        self.starting_from = QtGui.QSpinBox(self.tabWidgetPage3)
        self.starting_from.setEnabled(True)
        self.starting_from.setMinimum(1)
        self.starting_from.setMaximum(999)
        self.starting_from.setProperty("value", 1)
        self.starting_from.setObjectName(_fromUtf8("starting_from"))
        self.horizontalLayout_21.addWidget(self.starting_from)
        self.xlabel_41 = QtGui.QLabel(self.tabWidgetPage3)
        self.xlabel_41.setText(_("with values separated b&y"))
        self.xlabel_41.setObjectName(_fromUtf8("xlabel_41"))
        self.horizontalLayout_21.addWidget(self.xlabel_41)
        self.multiple_separator = QtGui.QLineEdit(self.tabWidgetPage3)
        self.multiple_separator.setToolTip(_("Used when displaying test results to separate values in multiple-valued fields"))
        self.multiple_separator.setObjectName(_fromUtf8("multiple_separator"))
        self.horizontalLayout_21.addWidget(self.multiple_separator)
        self.vargrid.addLayout(self.horizontalLayout_21, 10, 1, 1, 2)
        self.scrollArea11 = QtGui.QScrollArea(self.tabWidgetPage3)
        self.scrollArea11.setFrameShape(QtGui.QFrame.NoFrame)
        self.scrollArea11.setWidgetResizable(True)
        self.scrollArea11.setObjectName(_fromUtf8("scrollArea11"))
        self.gridLayoutWidget_2 = QtGui.QWidget()
        self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 205, 66))
        self.gridLayoutWidget_2.setObjectName(_fromUtf8("gridLayoutWidget_2"))
        self.testgrid = QtGui.QGridLayout(self.gridLayoutWidget_2)
        self.testgrid.setObjectName(_fromUtf8("testgrid"))
        self.xlabel_3 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.xlabel_3.setText(_("Test text"))
        self.xlabel_3.setObjectName(_fromUtf8("xlabel_3"))
        self.testgrid.addWidget(self.xlabel_3, 7, 1, 1, 1)
        self.xlabel_31 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.xlabel_31.setText(_("Test result"))
        self.xlabel_31.setObjectName(_fromUtf8("xlabel_31"))
        self.testgrid.addWidget(self.xlabel_31, 7, 2, 1, 1)
        self.label_31 = QtGui.QLabel(self.gridLayoutWidget_2)
        self.label_31.setText(_("Your test:"))
        self.label_31.setObjectName(_fromUtf8("label_31"))
        self.testgrid.addWidget(self.label_31, 8, 0, 1, 1)
        self.test_text = HistoryLineEdit(self.gridLayoutWidget_2)
        self.test_text.setObjectName(_fromUtf8("test_text"))
        self.testgrid.addWidget(self.test_text, 8, 1, 1, 1)
        self.test_result = QtGui.QLineEdit(self.gridLayoutWidget_2)
        self.test_result.setObjectName(_fromUtf8("test_result"))
        self.testgrid.addWidget(self.test_result, 8, 2, 1, 1)
        spacerItem10 = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.testgrid.addItem(spacerItem10, 25, 0, 1, 2)
        self.scrollArea11.setWidget(self.gridLayoutWidget_2)
        self.vargrid.addWidget(self.scrollArea11, 11, 0, 1, 4)
        self.central_widget.addTab(self.tabWidgetPage3, _fromUtf8(""))
        self.verticalLayout_2.addWidget(self.central_widget)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.gridLayout_2.addWidget(self.scrollArea, 1, 0, 1, 1)
        self.button_box = QtGui.QDialogButtonBox(MetadataBulkDialog)
        self.button_box.setOrientation(QtCore.Qt.Horizontal)
        self.button_box.setStandardButtons(QtGui.QDialogButtonBox.Apply|QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.button_box.setObjectName(_fromUtf8("button_box"))
        self.gridLayout_2.addWidget(self.button_box, 2, 0, 1, 1)
        self.label_2.setBuddy(self.authors)
        self.label_8.setBuddy(self.author_sort)
        self.label_6.setBuddy(self.rating)
        self.label_3.setBuddy(self.publisher)
        self.label_4.setBuddy(self.tags)
        self.label.setBuddy(self.remove_tags)
        self.label_7.setBuddy(self.series)
        self.label_10.setBuddy(self.adddate)
        self.label_9.setBuddy(self.pubdate)
        self.label_11.setBuddy(self.languages)
        self.label_5.setBuddy(self.remove_format)
        self.xlabel_22.setBuddy(self.query_field)
        self.xlabel_21.setBuddy(self.search_field)
        self.xlabel_24.setBuddy(self.search_mode)
        self.s_r_src_ident_label.setBuddy(self.s_r_src_ident)
        self.template_label.setBuddy(self.s_r_template)
        self.xlabel_2.setBuddy(self.search_for)
        self.xlabel_4.setBuddy(self.replace_with)
        self.label_41.setBuddy(self.replace_func)
        self.destination_field_label.setBuddy(self.destination_field)
        self.replace_mode_label.setBuddy(self.replace_mode)
        self.s_r_dst_ident_label.setBuddy(self.s_r_dst_ident)
        self.xlabel_412.setBuddy(self.results_count)
        self.xlabel_4121.setBuddy(self.starting_from)
        self.xlabel_41.setBuddy(self.multiple_separator)

        self.retranslateUi(MetadataBulkDialog)
        self.central_widget.setCurrentIndex(0)
        QtCore.QObject.connect(self.button_box, QtCore.SIGNAL(_fromUtf8("accepted()")), MetadataBulkDialog.accept)
        QtCore.QObject.connect(self.button_box, QtCore.SIGNAL(_fromUtf8("rejected()")), MetadataBulkDialog.reject)
        QtCore.QMetaObject.connectSlotsByName(MetadataBulkDialog)
        MetadataBulkDialog.setTabOrder(self.authors, self.auto_author_sort)
        MetadataBulkDialog.setTabOrder(self.auto_author_sort, self.swap_title_and_author)
        MetadataBulkDialog.setTabOrder(self.swap_title_and_author, self.author_sort)
        MetadataBulkDialog.setTabOrder(self.author_sort, self.rating)
        MetadataBulkDialog.setTabOrder(self.rating, self.publisher)
        MetadataBulkDialog.setTabOrder(self.publisher, self.tags)
        MetadataBulkDialog.setTabOrder(self.tags, self.tag_editor_button)
        MetadataBulkDialog.setTabOrder(self.tag_editor_button, self.remove_tags)
        MetadataBulkDialog.setTabOrder(self.remove_tags, self.remove_all_tags)
        MetadataBulkDialog.setTabOrder(self.remove_all_tags, self.series)
        MetadataBulkDialog.setTabOrder(self.series, self.clear_series)
        MetadataBulkDialog.setTabOrder(self.clear_series, self.autonumber_series)
        MetadataBulkDialog.setTabOrder(self.autonumber_series, self.series_numbering_restarts)
        MetadataBulkDialog.setTabOrder(self.series_numbering_restarts, self.series_start_number)
        MetadataBulkDialog.setTabOrder(self.series_start_number, self.adddate)
        MetadataBulkDialog.setTabOrder(self.adddate, self.clear_adddate_button)
        MetadataBulkDialog.setTabOrder(self.clear_adddate_button, self.apply_adddate)
        MetadataBulkDialog.setTabOrder(self.apply_adddate, self.pubdate)
        MetadataBulkDialog.setTabOrder(self.pubdate, self.clear_pubdate_button)
        MetadataBulkDialog.setTabOrder(self.clear_pubdate_button, self.apply_pubdate)
        MetadataBulkDialog.setTabOrder(self.apply_pubdate, self.languages)
        MetadataBulkDialog.setTabOrder(self.languages, self.clear_languages)
        MetadataBulkDialog.setTabOrder(self.clear_languages, self.remove_format)
        MetadataBulkDialog.setTabOrder(self.remove_format, self.restore_original)
        MetadataBulkDialog.setTabOrder(self.restore_original, self.change_title_to_title_case)
        MetadataBulkDialog.setTabOrder(self.change_title_to_title_case, self.update_title_sort)
        MetadataBulkDialog.setTabOrder(self.update_title_sort, self.remove_conversion_settings)
        MetadataBulkDialog.setTabOrder(self.remove_conversion_settings, self.cover_generate)
        MetadataBulkDialog.setTabOrder(self.cover_generate, self.cover_remove)
        MetadataBulkDialog.setTabOrder(self.cover_remove, self.cover_from_fmt)
        MetadataBulkDialog.setTabOrder(self.cover_from_fmt, self.multiple_separator)
        MetadataBulkDialog.setTabOrder(self.multiple_separator, self.test_text)
        MetadataBulkDialog.setTabOrder(self.test_text, self.test_result)
        MetadataBulkDialog.setTabOrder(self.test_result, self.scrollArea)
        MetadataBulkDialog.setTabOrder(self.scrollArea, self.central_widget)
        MetadataBulkDialog.setTabOrder(self.central_widget, self.query_field)
        MetadataBulkDialog.setTabOrder(self.query_field, self.button_box)
        MetadataBulkDialog.setTabOrder(self.button_box, self.save_button)
        MetadataBulkDialog.setTabOrder(self.save_button, self.remove_button)
        MetadataBulkDialog.setTabOrder(self.remove_button, self.search_field)
        MetadataBulkDialog.setTabOrder(self.search_field, self.search_mode)
        MetadataBulkDialog.setTabOrder(self.search_mode, self.s_r_src_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_src_ident, self.s_r_template)
        MetadataBulkDialog.setTabOrder(self.s_r_template, self.search_for)
        MetadataBulkDialog.setTabOrder(self.search_for, self.case_sensitive)
        MetadataBulkDialog.setTabOrder(self.case_sensitive, self.replace_with)
        MetadataBulkDialog.setTabOrder(self.replace_with, self.replace_func)
        MetadataBulkDialog.setTabOrder(self.replace_func, self.destination_field)
        MetadataBulkDialog.setTabOrder(self.destination_field, self.replace_mode)
        MetadataBulkDialog.setTabOrder(self.replace_mode, self.comma_separated)
        MetadataBulkDialog.setTabOrder(self.comma_separated, self.s_r_dst_ident)
        MetadataBulkDialog.setTabOrder(self.s_r_dst_ident, self.results_count)
        MetadataBulkDialog.setTabOrder(self.results_count, self.starting_from)
        MetadataBulkDialog.setTabOrder(self.starting_from, self.multiple_separator)
        MetadataBulkDialog.setTabOrder(self.multiple_separator, self.scrollArea11)

    def retranslateUi(self, MetadataBulkDialog):
        self.central_widget.setTabText(self.central_widget.indexOf(self.tabWidgetPage1), _("&Basic metadata"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.tab), _("&Custom metadata"))
        self.central_widget.setTabText(self.central_widget.indexOf(self.tabWidgetPage3), _("&Search and replace"))
class Ui_TagListEditor(object):
    def setupUi(self, TagListEditor):
        TagListEditor.setObjectName("TagListEditor")
        TagListEditor.resize(397, 335)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(I("chapters.png")), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        TagListEditor.setWindowIcon(icon)
        self.gridlayout = QtWidgets.QGridLayout(TagListEditor)
        self.gridlayout.setObjectName("gridlayout")
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        self.label = QtWidgets.QLabel(TagListEditor)
        self.label.setObjectName("label")
        self.horizontalLayout_11.addWidget(self.label)
        self.search_box = HistoryLineEdit(TagListEditor)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(100)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.search_box.sizePolicy().hasHeightForWidth())
        self.search_box.setSizePolicy(sizePolicy)
        self.search_box.setObjectName("search_box")
        self.horizontalLayout_11.addWidget(self.search_box)
        self.search_button = QtWidgets.QPushButton(TagListEditor)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(I("search.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.search_button.setIcon(icon1)
        self.search_button.setObjectName("search_button")
        self.horizontalLayout_11.addWidget(self.search_button)
        self.gridlayout.addLayout(self.horizontalLayout_11, 0, 0, 1, 2)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.delete_button = QtWidgets.QToolButton(TagListEditor)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(I("trash.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.delete_button.setIcon(icon2)
        self.delete_button.setIconSize(QtCore.QSize(32, 32))
        self.delete_button.setObjectName("delete_button")
        self.verticalLayout_2.addWidget(self.delete_button)
        self.rename_button = QtWidgets.QToolButton(TagListEditor)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(I("edit_input.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.rename_button.setIcon(icon3)
        self.rename_button.setIconSize(QtCore.QSize(32, 32))
        self.rename_button.setObjectName("rename_button")
        self.verticalLayout_2.addWidget(self.rename_button)
        self.undo_button = QtWidgets.QToolButton(TagListEditor)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(I("edit-undo.png")), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.undo_button.setIcon(icon4)
        self.undo_button.setIconSize(QtCore.QSize(32, 32))
        self.undo_button.setObjectName("undo_button")
        self.verticalLayout_2.addWidget(self.undo_button)
        self.gridlayout.addLayout(self.verticalLayout_2, 1, 0, 1, 1)
        self.table = QtWidgets.QTableWidget(TagListEditor)
        self.table.setAlternatingRowColors(True)
        self.table.setSelectionMode(
            QtWidgets.QAbstractItemView.ExtendedSelection)
        self.table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
        self.table.setObjectName("table")
        self.table.setColumnCount(0)
        self.table.setRowCount(0)
        self.gridlayout.addWidget(self.table, 1, 1, 1, 1)
        self.buttonBox = QtWidgets.QDialogButtonBox(TagListEditor)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel
                                          | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setCenterButtons(True)
        self.buttonBox.setObjectName("buttonBox")
        self.gridlayout.addWidget(self.buttonBox, 3, 0, 1, 2)
        self.label.setBuddy(self.search_box)

        self.retranslateUi(TagListEditor)
        self.buttonBox.accepted.connect(TagListEditor.accept)
        self.buttonBox.rejected.connect(TagListEditor.reject)
        QtCore.QMetaObject.connectSlotsByName(TagListEditor)

    def retranslateUi(self, TagListEditor):

        TagListEditor.setWindowTitle(_("Category editor"))
        self.label.setText(_("&Search for:"))
        self.search_box.setToolTip(_("Search for an item in the Tag column"))
        self.search_button.setToolTip(
            _("Display items containing the search string"))
        self.search_button.setText(_("&Find"))
        self.delete_button.setToolTip(
            _("Delete item from database. This will unapply the item from all books and then remove it from the database."
              ))
        self.delete_button.setText(_("..."))
        self.delete_button.setShortcut(_("Ctrl+D"))
        self.rename_button.setToolTip(
            _("Rename the item in every book where it is used."))
        self.rename_button.setText(_("..."))
        self.rename_button.setShortcut(_("Ctrl+R"))
        self.undo_button.setToolTip(
            _("Undo any deletes or edits on the selected lines"))
        self.undo_button.setText(_("..."))
        self.undo_button.setShortcut(_("Ctrl+U"))