Edit metadata in bulk dialog: Allow configuring the types of generated covers. Fixes #1559257 [Generate Cover Customisation](https://bugs.launchpad.net/calibre/+bug/1559257)

This commit is contained in:
Kovid Goyal 2016-03-28 12:01:37 +05:30
parent 5a04b468cc
commit 9235097db2
2 changed files with 386 additions and 331 deletions

View File

@ -54,9 +54,12 @@ def get_cover_data(stream, ext): # {{{
return cdata, area
# }}}
Settings = namedtuple('Settings', 'remove_all remove add au aus do_aus rating pub do_series do_autonumber do_remove_format '
Settings = namedtuple('Settings',
'remove_all remove add au aus do_aus rating pub do_series do_autonumber do_remove_format '
'remove_format do_swap_ta do_remove_conv do_auto_author series do_series_restart series_start_value series_increment '
'do_title_case cover_action clear_series clear_pub pubdate adddate do_title_sort languages clear_languages restore_original comments')
'do_title_case cover_action clear_series clear_pub pubdate adddate do_title_sort languages clear_languages '
'restore_original comments generate_cover_settings')
null = object()
class MyBlockingBusy(QDialog): # {{{
@ -179,7 +182,7 @@ class MyBlockingBusy(QDialog): # {{{
from calibre.ebooks.covers import generate_cover
for book_id in self.ids:
mi = self.db.get_metadata(book_id, index_is_id=True)
cdata = generate_cover(mi)
cdata = generate_cover(mi, prefs=args.generate_cover_settings)
cache.set_cover({book_id:cdata})
elif args.cover_action == 'fromfmt':
for book_id in self.ids:
@ -382,8 +385,17 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
self.languages.init_langs(self.db)
self.languages.setEditText('')
self.authors.setFocus(Qt.OtherFocusReason)
self.generate_cover_settings = None
self.button_config_cover_gen.setVisible(False)
self.button_config_cover_gen.clicked.connect(self.customize_cover_generation)
self.exec_()
def customize_cover_generation(self):
from calibre.gui2.covers import CoverSettingsDialog
d = CoverSettingsDialog(parent=self)
if d.exec_() == d.Accepted:
self.generate_cover_settings = d.prefs_for_rendering
def set_comments(self):
from calibre.gui2.dialogs.comments_dialog import CommentsDialog
d = CommentsDialog(self, '' if self.comments is null else (self.comments or ''), _('Comments'))
@ -1004,7 +1016,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
do_remove_conv, do_auto_author, series, do_series_restart,
series_start_value, series_increment, do_title_case, cover_action, clear_series, clear_pub,
pubdate, adddate, do_title_sort, languages, clear_languages,
restore_original, self.comments)
restore_original, self.comments, self.generate_cover_settings)
self.set_field_calls = defaultdict(dict)
bb = MyBlockingBusy(args, self.ids, self.db, self.refresh_books,

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>962</width>
<height>645</height>
<height>669</height>
</rect>
</property>
<property name="windowTitle">
@ -18,16 +18,6 @@
<normaloff>:/images/edit_input.png</normaloff>:/images/edit_input.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="box_title">
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea">
<property name="frameShape">
@ -45,7 +35,7 @@
<x>0</x>
<y>0</y>
<width>944</width>
<height>576</height>
<height>600</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@ -71,96 +61,158 @@
<string>&amp;Basic metadata</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="7" column="1">
<widget class="EditWithComplete" name="series">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>List of known series. You can add new series.</string>
</property>
<property name="whatsThis">
<string>List of known series. You can add new series.</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::InsertAlphabetically</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
</property>
<property name="minimumContentsLength">
<number>40</number>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QCheckBox" name="clear_series">
<property name="toolTip">
<string>If checked, the series will be cleared</string>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Clear series</string>
</property>
</widget>
</item>
<item row="9" column="2">
<widget class="QCheckBox" name="apply_adddate">
<property name="text">
<string>&amp;Apply date</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>P&amp;ublished:</string>
<string>&amp;Author(s): </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>pubdate</cstring>
<cstring>authors</cstring>
</property>
</widget>
</item>
<item row="10" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QDateTimeEdit" name="pubdate">
<property name="displayFormat">
<string>MMM yyyy</string>
</property>
<property name="calendarPopup">
<item row="0" column="1">
<widget class="EditWithComplete" name="authors">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="clear_pubdate_button">
<widget class="QCheckBox" name="auto_author_sort">
<property name="toolTip">
<string>Clear published date</string>
<string>This will cause the author sort field to be automatically updated
based on the authors field for each selected book. Note that if
you use the control above to set authors in bulk, the author sort
field is updated anyway, regardless of the value of this checkbox.</string>
</property>
<property name="text">
<string>...</string>
<string>A&amp;utomatically set author sort</string>
</property>
<property name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/trash.png</normaloff>:/images/trash.png</iconset>
</widget>
</item>
<item>
<widget class="QCheckBox" name="swap_title_and_author">
<property name="text">
<string>S&amp;wap title and author</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="10" column="2">
<widget class="QCheckBox" name="apply_pubdate">
<item row="2" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>&amp;Apply date</string>
<string>Author s&amp;ort: </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>author_sort</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="EnLineEdit" name="author_sort">
<property name="toolTip">
<string>Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>&amp;Rating:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>rating</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="rating">
<property name="toolTip">
<string>Rating of this book. 0-5 stars</string>
</property>
<property name="whatsThis">
<string>Rating of this book. 0-5 stars</string>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="specialValueText">
<string>No change</string>
</property>
<property name="suffix">
<string> stars</string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Publisher: </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>publisher</cstring>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="EditWithComplete" name="publisher">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QCheckBox" name="clear_pub">
<property name="toolTip">
<string>If checked, the publisher will be cleared</string>
</property>
<property name="text">
<string>&amp;Clear pub</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Add ta&amp;gs: </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>tags</cstring>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="EditWithComplete" name="tags">
<property name="toolTip">
<string>Tags categorize the book. This is particularly useful while searching. &lt;br&gt;&lt;br&gt;They can be any words or phrases, separated by commas.</string>
</property>
</widget>
</item>
@ -198,63 +250,16 @@
</property>
</widget>
</item>
<item row="13" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>15</height>
</size>
</property>
</spacer>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QComboBox" name="remove_format">
<property name="maximumSize">
<size>
<width>120</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="restore_original">
<item row="6" column="2">
<widget class="QCheckBox" name="remove_all_tags">
<property name="toolTip">
<string>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.</string>
<string>Check this box to remove all tags from the books.</string>
</property>
<property name="text">
<string>Restore pre conversion &amp;originals, if available</string>
<string>Remove &amp;all</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
@ -271,84 +276,41 @@ for e.g., EPUB to EPUB, calibre saves the original EPUB
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="EditWithComplete" name="publisher">
<item row="7" column="1">
<widget class="EditWithComplete" name="series">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>List of known series. You can add new series.</string>
</property>
<property name="whatsThis">
<string>List of known series. You can add new series.</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Add ta&amp;gs: </string>
<property name="insertPolicy">
<enum>QComboBox::InsertAlphabetically</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
</property>
<property name="buddy">
<cstring>tags</cstring>
<property name="minimumContentsLength">
<number>40</number>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="EditWithComplete" name="tags">
<item row="7" column="2">
<widget class="QCheckBox" name="clear_series">
<property name="toolTip">
<string>Tags categorize the book. This is particularly useful while searching. &lt;br&gt;&lt;br&gt;They can be any words or phrases, separated by commas.</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="EditWithComplete" name="authors">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QCheckBox" name="auto_author_sort">
<property name="toolTip">
<string>This will cause the author sort field to be automatically updated
based on the authors field for each selected book. Note that if
you use the control above to set authors in bulk, the author sort
field is updated anyway, regardless of the value of this checkbox.</string>
<string>If checked, the series will be cleared</string>
</property>
<property name="text">
<string>A&amp;utomatically set author sort</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="swap_title_and_author">
<property name="text">
<string>S&amp;wap title and author</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Author(s): </string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>authors</cstring>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QCheckBox" name="remove_all_tags">
<property name="toolTip">
<string>Check this box to remove all tags from the books.</string>
</property>
<property name="text">
<string>Remove &amp;all</string>
<string>&amp;Clear series</string>
</property>
</widget>
</item>
@ -435,19 +397,6 @@ from the value in the box</string>
</property>
</widget>
</item>
<item row="17" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="9" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
@ -473,79 +422,150 @@ from the value in the box</string>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_8">
<item row="9" column="2">
<widget class="QCheckBox" name="apply_adddate">
<property name="text">
<string>Author s&amp;ort: </string>
<string>&amp;Apply date</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>P&amp;ublished:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>author_sort</cstring>
<cstring>pubdate</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="EnLineEdit" name="author_sort">
<item row="10" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QDateTimeEdit" name="pubdate">
<property name="displayFormat">
<string>MMM yyyy</string>
</property>
<property name="calendarPopup">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="clear_pubdate_button">
<property name="toolTip">
<string>Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.</string>
<string>Clear published date</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/trash.png</normaloff>:/images/trash.png</iconset>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
</layout>
</item>
<item row="10" column="2">
<widget class="QCheckBox" name="apply_pubdate">
<property name="text">
<string>&amp;Rating:</string>
<string>&amp;Apply date</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>&amp;Languages:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>rating</cstring>
<cstring>languages</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="rating">
<item row="11" column="1">
<widget class="LanguagesEdit" name="languages"/>
</item>
<item row="11" column="2">
<widget class="QCheckBox" name="clear_languages">
<property name="text">
<string>Remove &amp;all</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Remove &amp;format:</string>
</property>
<property name="buddy">
<cstring>remove_format</cstring>
</property>
</widget>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QComboBox" name="remove_format">
<property name="maximumSize">
<size>
<width>120</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="restore_original">
<property name="toolTip">
<string>Rating of this book. 0-5 stars</string>
<string>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.</string>
</property>
<property name="whatsThis">
<string>Rating of this book. 0-5 stars</string>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="specialValueText">
<string>No change</string>
</property>
<property name="suffix">
<string> stars</string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
<property name="value">
<number>-1</number>
<property name="text">
<string>Restore pre conversion &amp;originals, if available</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Publisher: </string>
</layout>
</item>
<item row="13" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="buddy">
<cstring>publisher</cstring>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>15</height>
</size>
</property>
</widget>
</spacer>
</item>
<item row="14" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
@ -602,7 +622,7 @@ Future conversion of these books will use the default settings.</string>
<property name="title">
<string>Change &amp;cover</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="QRadioButton" name="cover_generate">
<property name="text">
@ -650,40 +670,19 @@ as that of the first selected book.</string>
</layout>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>&amp;Languages:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>languages</cstring>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="LanguagesEdit" name="languages"/>
</item>
<item row="11" column="2">
<widget class="QCheckBox" name="clear_languages">
<property name="text">
<string>Remove &amp;all</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Remove &amp;format:</string>
</property>
<property name="buddy">
<cstring>remove_format</cstring>
</property>
</widget>
</item>
<item row="16" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="button_config_cover_gen">
<property name="toolTip">
<string>Control how the default generated covers are created</string>
</property>
<property name="text">
<string>Configure co&amp;ver generation</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="comments_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
@ -696,15 +695,33 @@ as that of the first selected book.</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QCheckBox" name="clear_pub">
<property name="toolTip">
<string>If checked, the publisher will be cleared</string>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="text">
<string>&amp;Clear pub</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
</layout>
</item>
<item row="17" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
@ -1193,7 +1210,7 @@ not multiple and the destination field is multiple</string>
<x>0</x>
<y>0</y>
<width>922</width>
<height>244</height>
<height>268</height>
</rect>
</property>
<layout class="QGridLayout" name="testgrid">
@ -1249,6 +1266,16 @@ not multiple and the destination field is multiple</string>
</widget>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="box_title">
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
@ -1367,8 +1394,8 @@ is completed. This can be slow on large libraries.</string>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>258</x>
<y>638</y>
<x>672</x>
<y>658</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
@ -1383,8 +1410,8 @@ is completed. This can be slow on large libraries.</string>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>326</x>
<y>638</y>
<x>740</x>
<y>658</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
@ -1399,12 +1426,12 @@ is completed. This can be slow on large libraries.</string>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>888</x>
<y>266</y>
<x>927</x>
<y>255</y>
</hint>
<hint type="destinationlabel">
<x>814</x>
<y>268</y>
<x>824</x>
<y>256</y>
</hint>
</hints>
</connection>
@ -1415,12 +1442,28 @@ is completed. This can be slow on large libraries.</string>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>874</x>
<y>418</y>
<x>927</x>
<y>406</y>
</hint>
<hint type="destinationlabel">
<x>817</x>
<y>420</y>
<x>824</x>
<y>407</y>
</hint>
</hints>
</connection>
<connection>
<sender>cover_generate</sender>
<signal>toggled(bool)</signal>
<receiver>button_config_cover_gen</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>100</x>
<y>532</y>
</hint>
<hint type="destinationlabel">
<x>111</x>
<y>582</y>
</hint>
</hints>
</connection>