# Form implementation generated from reading ui file '/home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.ui'
#
# Created by: PyQt6 UI code generator 6.7.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_MetadataBulkDialog(object):
    def setupUi(self, MetadataBulkDialog):
        MetadataBulkDialog.setObjectName("MetadataBulkDialog")
        MetadataBulkDialog.resize(955, 740)
        icon = QtGui.QIcon.ic("edit_input.png")
        MetadataBulkDialog.setWindowIcon(icon)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(MetadataBulkDialog)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.central_widget = QtWidgets.QTabWidget(parent=MetadataBulkDialog)
        self.central_widget.setObjectName("central_widget")
        self.scrollArea1 = QtWidgets.QScrollArea()
        self.scrollArea1.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
        self.scrollArea1.setWidgetResizable(True)
        self.scrollArea1.setObjectName("scrollArea1")
        self.btab = QtWidgets.QWidget()
        self.btab.setGeometry(QtCore.QRect(0, 0, 933, 658))
        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(parent=self.btab)
        self.label_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1)
        self.authors = EditWithComplete(parent=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(parent=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(parent=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(parent=self.btab)
        self.label_8.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1)
        self.author_sort = EnLineEdit(parent=self.btab)
        self.author_sort.setClearButtonEnabled(True)
        self.author_sort.setObjectName("author_sort")
        self.gridLayout.addWidget(self.author_sort, 2, 1, 1, 1)
        self.label_6 = QtWidgets.QLabel(parent=self.btab)
        self.label_6.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 3, 0, 1, 1)
        self.rating = RatingEditor(parent=self.btab)
        self.rating.setObjectName("rating")
        self.gridLayout.addWidget(self.rating, 3, 1, 1, 1)
        self.apply_rating = QtWidgets.QCheckBox(parent=self.btab)
        self.apply_rating.setObjectName("apply_rating")
        self.gridLayout.addWidget(self.apply_rating, 3, 2, 1, 1)
        self.label_3 = QtWidgets.QLabel(parent=self.btab)
        self.label_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
        self.publisher = EditWithComplete(parent=self.btab)
        self.publisher.setEditable(True)
        self.publisher.setObjectName("publisher")
        self.gridLayout.addWidget(self.publisher, 4, 1, 1, 1)
        self.clear_pub = QtWidgets.QCheckBox(parent=self.btab)
        self.clear_pub.setObjectName("clear_pub")
        self.gridLayout.addWidget(self.clear_pub, 4, 2, 1, 1)
        self.label_4 = QtWidgets.QLabel(parent=self.btab)
        self.label_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.tags = EditWithComplete(parent=self.btab)
        self.tags.setObjectName("tags")
        self.gridLayout.addWidget(self.tags, 5, 1, 1, 1)
        self.tag_editor_button = QtWidgets.QToolButton(parent=self.btab)
        icon1 = QtGui.QIcon.ic("chapters.png")
        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(parent=self.btab)
        self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 6, 0, 1, 1)
        self.remove_tags = EditWithComplete(parent=self.btab)
        self.remove_tags.setObjectName("remove_tags")
        self.gridLayout.addWidget(self.remove_tags, 6, 1, 1, 1)
        self.remove_all_tags = QtWidgets.QCheckBox(parent=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(parent=self.btab)
        self.label_7.setTextFormat(QtCore.Qt.TextFormat.PlainText)
        self.label_7.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 7, 0, 1, 1)
        self.series = EditWithComplete(parent=self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.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.InsertPolicy.InsertAlphabetically)
        self.series.setSizeAdjustPolicy(QtWidgets.QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon)
        self.series.setMinimumContentsLength(40)
        self.series.setObjectName("series")
        self.gridLayout.addWidget(self.series, 7, 1, 1, 1)
        self.clear_series = QtWidgets.QCheckBox(parent=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(parent=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(parent=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(parent=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(parent=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(parent=self.btab)
        self.label_10.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.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(parent=self.btab)
        self.adddate.setCalendarPopup(True)
        self.adddate.setObjectName("adddate")
        self.horizontalLayout_5.addWidget(self.adddate)
        self.clear_adddate_button = QtWidgets.QToolButton(parent=self.btab)
        icon2 = QtGui.QIcon.ic("trash.png")
        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(parent=self.btab)
        self.apply_adddate.setObjectName("apply_adddate")
        self.gridLayout.addWidget(self.apply_adddate, 9, 2, 1, 1)
        self.label_9 = QtWidgets.QLabel(parent=self.btab)
        self.label_9.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.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(parent=self.btab)
        self.pubdate.setCalendarPopup(True)
        self.pubdate.setObjectName("pubdate")
        self.horizontalLayout_4.addWidget(self.pubdate)
        self.clear_pubdate_button = QtWidgets.QToolButton(parent=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(parent=self.btab)
        self.apply_pubdate.setObjectName("apply_pubdate")
        self.gridLayout.addWidget(self.apply_pubdate, 10, 2, 1, 1)
        self.label_11 = QtWidgets.QLabel(parent=self.btab)
        self.label_11.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 11, 0, 1, 1)
        self.languages = LanguagesEdit(parent=self.btab)
        self.languages.setObjectName("languages")
        self.gridLayout.addWidget(self.languages, 11, 1, 1, 1)
        self.clear_languages = QtWidgets.QCheckBox(parent=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.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Fixed)
        self.verticalLayout_4.addItem(spacerItem)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.casing_algorithm = QtWidgets.QComboBox(parent=self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.casing_algorithm.sizePolicy().hasHeightForWidth())
        self.casing_algorithm.setSizePolicy(sizePolicy)
        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.restore_original = QtWidgets.QCheckBox(parent=self.btab)
        self.restore_original.setObjectName("restore_original")
        self.gridLayout_2.addWidget(self.restore_original, 0, 2, 1, 1)
        self.remove_conversion_settings = QtWidgets.QCheckBox(parent=self.btab)
        self.remove_conversion_settings.setObjectName("remove_conversion_settings")
        self.gridLayout_2.addWidget(self.remove_conversion_settings, 0, 0, 1, 2)
        self.change_title_to_title_case = QtWidgets.QCheckBox(parent=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.update_title_sort = QtWidgets.QCheckBox(parent=self.btab)
        self.update_title_sort.setObjectName("update_title_sort")
        self.gridLayout_2.addWidget(self.update_title_sort, 1, 2, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.gridLayout_2.addItem(spacerItem1, 0, 3, 1, 1)
        self.verticalLayout_4.addLayout(self.gridLayout_2)
        self.read_file_metadata = QtWidgets.QCheckBox(parent=self.btab)
        self.read_file_metadata.setObjectName("read_file_metadata")
        self.verticalLayout_4.addWidget(self.read_file_metadata)
        self.groupBox = QtWidgets.QGroupBox(parent=self.btab)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.groupBox)
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        self.cover_generate = QtWidgets.QRadioButton(parent=self.groupBox)
        self.cover_generate.setObjectName("cover_generate")
        self.horizontalLayout_9.addWidget(self.cover_generate)
        self.cover_remove = QtWidgets.QRadioButton(parent=self.groupBox)
        self.cover_remove.setObjectName("cover_remove")
        self.horizontalLayout_9.addWidget(self.cover_remove)
        self.cover_trim = QtWidgets.QRadioButton(parent=self.groupBox)
        self.cover_trim.setObjectName("cover_trim")
        self.horizontalLayout_9.addWidget(self.cover_trim)
        self.cover_from_fmt = QtWidgets.QRadioButton(parent=self.groupBox)
        self.cover_from_fmt.setObjectName("cover_from_fmt")
        self.horizontalLayout_9.addWidget(self.cover_from_fmt)
        self.cover_clone = QtWidgets.QRadioButton(parent=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(parent=self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.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(parent=self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.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)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.verticalLayout_4.addLayout(self.horizontalLayout_3)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.button_config_cover_gen = QtWidgets.QPushButton(parent=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(parent=self.btab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.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)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout.addItem(spacerItem3)
        self.verticalLayout_4.addLayout(self.horizontalLayout)
        spacerItem4 = QtWidgets.QSpacerItem(17, 17, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
        self.verticalLayout_4.addItem(spacerItem4)
        self.scrollArea1.setWidget(self.btab)
        self.central_widget.addTab(self.scrollArea1, "")
        self.scrollArea2 = QtWidgets.QScrollArea()
        self.scrollArea2.setFrameShape(QtWidgets.QFrame.Shape.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.Shape.NoFrame)
        self.scrollArea3.setWidgetResizable(True)
        self.scrollArea3.setObjectName("scrollArea3")
        self.tabWidgetPage3 = QtWidgets.QWidget()
        self.tabWidgetPage3.setGeometry(QtCore.QRect(0, 0, 729, 429))
        self.tabWidgetPage3.setObjectName("tabWidgetPage3")
        self.vargrid = QtWidgets.QGridLayout(self.tabWidgetPage3)
        self.vargrid.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetMinimumSize)
        self.vargrid.setObjectName("vargrid")
        self.s_r_heading = QtWidgets.QLabel(parent=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(parent=self.tabWidgetPage3)
        self.filler.setText("")
        self.filler.setObjectName("filler")
        self.vargrid.addWidget(self.filler, 1, 0, 1, 1)
        self.line = QtWidgets.QFrame(parent=self.tabWidgetPage3)
        self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
        self.line.setObjectName("line")
        self.vargrid.addWidget(self.line, 2, 0, 1, 3)
        self.xlabel_22 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_22.setObjectName("xlabel_22")
        self.vargrid.addWidget(self.xlabel_22, 3, 0, 1, 1)
        self.query_field = QtWidgets.QComboBox(parent=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")
        spacerItem5 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem5)
        self.save_button = QtWidgets.QPushButton(parent=self.tabWidgetPage3)
        self.save_button.setObjectName("save_button")
        self.horizontalLayout_6.addWidget(self.save_button)
        self.remove_button = QtWidgets.QPushButton(parent=self.tabWidgetPage3)
        self.remove_button.setObjectName("remove_button")
        self.horizontalLayout_6.addWidget(self.remove_button)
        spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem6)
        self.vargrid.addLayout(self.horizontalLayout_6, 3, 2, 1, 1)
        self.xlabel_24 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_24.setObjectName("xlabel_24")
        self.vargrid.addWidget(self.xlabel_24, 4, 0, 1, 1)
        self.HLayout_4 = QtWidgets.QHBoxLayout()
        self.HLayout_4.setObjectName("HLayout_4")
        self.search_mode = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        self.search_mode.setObjectName("search_mode")
        self.HLayout_4.addWidget(self.search_mode)
        spacerItem7 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.HLayout_4.addItem(spacerItem7)
        self.vargrid.addLayout(self.HLayout_4, 4, 1, 1, 1)
        self.xlabel_21 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_21.setObjectName("xlabel_21")
        self.vargrid.addWidget(self.xlabel_21, 5, 0, 1, 1)
        self.search_field = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        self.search_field.setObjectName("search_field")
        self.vargrid.addWidget(self.search_field, 5, 1, 1, 1)
        self.s_r_src_ident_label = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.s_r_src_ident_label.setObjectName("s_r_src_ident_label")
        self.vargrid.addWidget(self.s_r_src_ident_label, 6, 0, 1, 1)
        self.s_r_src_ident = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.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, 6, 1, 1, 1)
        self.template_label = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.template_label.setObjectName("template_label")
        self.vargrid.addWidget(self.template_label, 6, 0, 1, 1)
        self.s_r_template = HistoryLineEdit(parent=self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.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, 6, 1, 1, 1)
        self.xlabel_2 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_2.setObjectName("xlabel_2")
        self.vargrid.addWidget(self.xlabel_2, 7, 0, 1, 1)
        self.search_for = HistoryLineEdit(parent=self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.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, 7, 1, 1, 1)
        self.case_sensitive = QtWidgets.QCheckBox(parent=self.tabWidgetPage3)
        self.case_sensitive.setChecked(True)
        self.case_sensitive.setObjectName("case_sensitive")
        self.vargrid.addWidget(self.case_sensitive, 7, 2, 1, 1)
        self.xlabel_4 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_4.setObjectName("xlabel_4")
        self.vargrid.addWidget(self.xlabel_4, 8, 0, 1, 1)
        self.replace_with = HistoryLineEdit(parent=self.tabWidgetPage3)
        self.replace_with.setObjectName("replace_with")
        self.vargrid.addWidget(self.replace_with, 8, 1, 1, 1)
        self.verticalLayout = QtWidgets.QHBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_41 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.label_41.setObjectName("label_41")
        self.verticalLayout.addWidget(self.label_41)
        self.replace_func = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        self.replace_func.setObjectName("replace_func")
        self.verticalLayout.addWidget(self.replace_func)
        spacerItem8 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.verticalLayout.addItem(spacerItem8)
        self.vargrid.addLayout(self.verticalLayout, 8, 2, 1, 1)
        self.destination_field_label = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.destination_field_label.setObjectName("destination_field_label")
        self.vargrid.addWidget(self.destination_field_label, 9, 0, 1, 1)
        self.destination_field = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        self.destination_field.setObjectName("destination_field")
        self.vargrid.addWidget(self.destination_field, 9, 1, 1, 1)
        self.verticalLayout_2 = QtWidgets.QHBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.replace_mode_label = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.replace_mode_label.setObjectName("replace_mode_label")
        self.verticalLayout_2.addWidget(self.replace_mode_label)
        self.replace_mode = QtWidgets.QComboBox(parent=self.tabWidgetPage3)
        self.replace_mode.setObjectName("replace_mode")
        self.verticalLayout_2.addWidget(self.replace_mode)
        self.comma_separated = QtWidgets.QCheckBox(parent=self.tabWidgetPage3)
        self.comma_separated.setChecked(True)
        self.comma_separated.setObjectName("comma_separated")
        self.verticalLayout_2.addWidget(self.comma_separated)
        spacerItem9 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.verticalLayout_2.addItem(spacerItem9)
        self.vargrid.addLayout(self.verticalLayout_2, 9, 2, 1, 1)
        self.s_r_dst_ident_label = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.s_r_dst_ident_label.setObjectName("s_r_dst_ident_label")
        self.vargrid.addWidget(self.s_r_dst_ident_label, 10, 0, 1, 1)
        self.s_r_dst_ident = QtWidgets.QLineEdit(parent=self.tabWidgetPage3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.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, 10, 1, 1, 1)
        self.horizontalLayout_21 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_21.setObjectName("horizontalLayout_21")
        spacerItem10 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_21.addItem(spacerItem10)
        self.xlabel_412 = QtWidgets.QLabel(parent=self.tabWidgetPage3)
        self.xlabel_412.setObjectName("xlabel_412")
        self.horizontalLayout_21.addWidget(self.xlabel_412)
        self.results_count = QtWidgets.QSpinBox(parent=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(parent=self.tabWidgetPage3)
        self.xlabel_413.setObjectName("xlabel_413")
        self.horizontalLayout_21.addWidget(self.xlabel_413)
        self.starting_from = QtWidgets.QSpinBox(parent=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(parent=self.tabWidgetPage3)
        self.xlabel_41.setObjectName("xlabel_41")
        self.horizontalLayout_21.addWidget(self.xlabel_41)
        self.multiple_separator = QtWidgets.QLineEdit(parent=self.tabWidgetPage3)
        self.multiple_separator.setObjectName("multiple_separator")
        self.horizontalLayout_21.addWidget(self.multiple_separator)
        self.vargrid.addLayout(self.horizontalLayout_21, 11, 1, 1, 2)
        self.scrollArea11 = QtWidgets.QScrollArea(parent=self.tabWidgetPage3)
        self.scrollArea11.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
        self.scrollArea11.setWidgetResizable(True)
        self.scrollArea11.setObjectName("scrollArea11")
        self.gridLayoutWidget_2 = QtWidgets.QWidget()
        self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 187, 72))
        self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
        self.testgrid = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
        self.testgrid.setObjectName("testgrid")
        self.xlabel_3 = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
        self.xlabel_3.setObjectName("xlabel_3")
        self.testgrid.addWidget(self.xlabel_3, 7, 1, 1, 1)
        self.xlabel_5 = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
        self.xlabel_5.setObjectName("xlabel_5")
        self.testgrid.addWidget(self.xlabel_5, 7, 2, 1, 1)
        self.label_31 = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
        self.label_31.setObjectName("label_31")
        self.testgrid.addWidget(self.label_31, 8, 0, 1, 1)
        self.test_text = HistoryLineEdit(parent=self.gridLayoutWidget_2)
        self.test_text.setObjectName("test_text")
        self.testgrid.addWidget(self.test_text, 8, 1, 1, 1)
        self.test_result = QtWidgets.QLineEdit(parent=self.gridLayoutWidget_2)
        self.test_result.setObjectName("test_result")
        self.testgrid.addWidget(self.test_result, 8, 2, 1, 1)
        spacerItem11 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
        self.testgrid.addItem(spacerItem11, 25, 0, 1, 2)
        self.scrollArea11.setWidget(self.gridLayoutWidget_2)
        self.vargrid.addWidget(self.scrollArea11, 12, 0, 1, 4)
        self.scrollArea3.setWidget(self.tabWidgetPage3)
        self.central_widget.addTab(self.scrollArea3, "")
        self.transform_tab = QtWidgets.QWidget()
        self.transform_tab.setObjectName("transform_tab")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.transform_tab)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.label_5 = QtWidgets.QLabel(parent=self.transform_tab)
        self.label_5.setWordWrap(True)
        self.label_5.setObjectName("label_5")
        self.verticalLayout_5.addWidget(self.label_5)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.button_transform_tags = QtWidgets.QPushButton(parent=self.transform_tab)
        self.button_transform_tags.setObjectName("button_transform_tags")
        self.horizontalLayout_7.addWidget(self.button_transform_tags)
        self.label_transform_tags = QtWidgets.QLabel(parent=self.transform_tab)
        self.label_transform_tags.setObjectName("label_transform_tags")
        self.horizontalLayout_7.addWidget(self.label_transform_tags)
        self.button_clear_tags_rules = QtWidgets.QToolButton(parent=self.transform_tab)
        self.button_clear_tags_rules.setObjectName("button_clear_tags_rules")
        self.horizontalLayout_7.addWidget(self.button_clear_tags_rules)
        spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem12)
        self.verticalLayout_5.addLayout(self.horizontalLayout_7)
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        self.button_transform_authors = QtWidgets.QPushButton(parent=self.transform_tab)
        self.button_transform_authors.setObjectName("button_transform_authors")
        self.horizontalLayout_11.addWidget(self.button_transform_authors)
        self.label_transform_authors = QtWidgets.QLabel(parent=self.transform_tab)
        self.label_transform_authors.setObjectName("label_transform_authors")
        self.horizontalLayout_11.addWidget(self.label_transform_authors)
        self.button_clear_authors_rules = QtWidgets.QToolButton(parent=self.transform_tab)
        self.button_clear_authors_rules.setObjectName("button_clear_authors_rules")
        self.horizontalLayout_11.addWidget(self.button_clear_authors_rules)
        spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_11.addItem(spacerItem13)
        self.verticalLayout_5.addLayout(self.horizontalLayout_11)
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.button_transform_publishers = QtWidgets.QPushButton(parent=self.transform_tab)
        self.button_transform_publishers.setObjectName("button_transform_publishers")
        self.horizontalLayout_8.addWidget(self.button_transform_publishers)
        self.label_transform_publishers = QtWidgets.QLabel(parent=self.transform_tab)
        self.label_transform_publishers.setObjectName("label_transform_publishers")
        self.horizontalLayout_8.addWidget(self.label_transform_publishers)
        self.button_clear_publishers_rules = QtWidgets.QToolButton(parent=self.transform_tab)
        self.button_clear_publishers_rules.setObjectName("button_clear_publishers_rules")
        self.horizontalLayout_8.addWidget(self.button_clear_publishers_rules)
        spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_8.addItem(spacerItem14)
        self.verticalLayout_5.addLayout(self.horizontalLayout_8)
        spacerItem15 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
        self.verticalLayout_5.addItem(spacerItem15)
        self.central_widget.addTab(self.transform_tab, "")
        self.verticalLayout_3.addWidget(self.central_widget)
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.refresh_book_list = QtWidgets.QCheckBox(parent=MetadataBulkDialog)
        self.refresh_book_list.setObjectName("refresh_book_list")
        self.horizontalLayout_10.addWidget(self.refresh_book_list)
        spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
        self.horizontalLayout_10.addItem(spacerItem16)
        self.button_box = QtWidgets.QDialogButtonBox(parent=MetadataBulkDialog)
        self.button_box.setOrientation(QtCore.Qt.Orientation.Horizontal)
        self.button_box.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Apply|QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.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_24.setBuddy(self.search_mode)
        self.xlabel_21.setBuddy(self.search_field)
        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) # type: ignore
        self.button_box.rejected.connect(MetadataBulkDialog.reject) # type: ignore
        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_mode)
        MetadataBulkDialog.setTabOrder(self.search_mode, self.search_field)
        MetadataBulkDialog.setTabOrder(self.search_field, 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(_("&Clear 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.setToolTip(_("Check this box to remove all languages from the books."))
        self.clear_languages.setText(_("Clear &all"))
        self.restore_original.setToolTip(_("When doing a same format to same format conversion,\n"
" 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.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.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_24.setText(_("Search &mode:"))
        self.search_mode.setToolTip(_("<p>Choose whether to use basic text matching or advanced\n"
"                regular expression matching. Changing the mode clears all the fields\n"
"                in this dialog.</p>"))
        self.xlabel_21.setText(_("Search &field:"))
        self.search_field.setToolTip(_("The name of the field that you want to search"))
        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.label_5.setText(_("Create rules to transform metadata by clicking the buttons below. The rules will be applied to all selected books when you click OK."))
        self.button_transform_tags.setText(_("Transform &tags"))
        self.button_clear_tags_rules.setText(_("..."))
        self.button_transform_authors.setText(_("Transform &authors"))
        self.button_clear_authors_rules.setText(_("..."))
        self.button_transform_publishers.setText(_("Transform &publishers"))
        self.button_clear_publishers_rules.setText(_("..."))
        self.central_widget.setTabText(self.central_widget.indexOf(self.transform_tab), _("&Transform tags/authors"))
        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"))
from calibre.gui2.complete2 import EditWithComplete
from calibre.gui2.languages import LanguagesEdit
from calibre.gui2.widgets import EnLineEdit, HistoryLineEdit
from calibre.gui2.widgets2 import DateTimeEdit, RatingEditor
