Make line edit clear buttons available in more places. Fixes #1933538 [[Enhancement] Add clear buttons to the fields in the Convert book window](https://bugs.launchpad.net/calibre/+bug/1933538)

This commit is contained in:
Kovid Goyal 2021-07-05 09:12:17 +05:30
parent 8eb05c2a69
commit 0c03155074
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
17 changed files with 193 additions and 103 deletions

View File

@ -291,6 +291,7 @@ class LineEdit(QLineEdit, LineEditECM):
def __init__(self, parent=None, completer_widget=None, sort_func=sort_key, strip_completion_entries=True): def __init__(self, parent=None, completer_widget=None, sort_func=sort_key, strip_completion_entries=True):
QLineEdit.__init__(self, parent) QLineEdit.__init__(self, parent)
self.setClearButtonEnabled(True)
self.sep = ',' self.sep = ','
self.space_before_sep = False self.space_before_sep = False
@ -480,6 +481,9 @@ class EditWithComplete(EnComboBox):
def set_elide_mode(self, val): def set_elide_mode(self, val):
self.lineEdit().set_elide_mode(val) self.lineEdit().set_elide_mode(val)
def set_clear_button_enabled(self, val=True):
self.lineEdit().setClearButtonEnabled(bool(val))
# }}} # }}}
def text(self): def text(self):

View File

@ -35,7 +35,11 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="opt_toc_title"/> <widget class="QLineEdit" name="opt_toc_title">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="opt_mobi_toc_at_start"> <widget class="QCheckBox" name="opt_mobi_toc_at_start">

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>599</width> <width>599</width>
<height>415</height> <height>445</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -157,7 +157,11 @@
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="4" column="1">
<widget class="QLineEdit" name="opt_comic_image_size"/> <widget class="QLineEdit" name="opt_comic_image_size">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="opt_dont_add_comic_pages_to_toc"> <widget class="QCheckBox" name="opt_dont_add_comic_pages_to_toc">

View File

@ -116,7 +116,11 @@
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="4" column="1">
<widget class="QLineEdit" name="opt_toc_title"/> <widget class="QLineEdit" name="opt_toc_title">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="6" column="0"> <item row="6" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_3">

View File

@ -70,7 +70,11 @@
</widget> </widget>
</item> </item>
<item row="1" column="2"> <item row="1" column="2">
<widget class="QLineEdit" name="font_size_key"/> <widget class="QLineEdit" name="font_size_key">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QDoubleSpinBox" name="output_base_font_size"> <widget class="QDoubleSpinBox" name="output_base_font_size">

View File

@ -466,6 +466,9 @@
<property name="toolTip"> <property name="toolTip">
<string>Comma separated list of CSS properties to remove. For example: display, color, font-family</string> <string>Comma separated list of CSS properties to remove. For example: display, color, font-family</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@ -135,7 +135,11 @@
</widget> </widget>
</item> </item>
<item row="2" column="1" colspan="2"> <item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="opt_header_format"/> <widget class="QLineEdit" name="opt_header_format">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
</layout> </layout>
</item> </item>
@ -176,13 +180,13 @@
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="FontFamilyChooser" name="opt_serif_family"/> <widget class="FontFamilyChooser" name="opt_serif_family" native="true"/>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="FontFamilyChooser" name="opt_sans_family"/> <widget class="FontFamilyChooser" name="opt_sans_family" native="true"/>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="FontFamilyChooser" name="opt_mono_family"/> <widget class="FontFamilyChooser" name="opt_mono_family" native="true"/>
</item> </item>
</layout> </layout>
</widget> </widget>

View File

@ -138,6 +138,9 @@
<property name="toolTip"> <property name="toolTip">
<string>Change the title of this book</string> <string>Change the title of this book</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
@ -177,6 +180,9 @@
<property name="toolTip"> <property name="toolTip">
<string>Change the author(s) of this book. Multiple authors should be separated by a comma</string> <string>Change the author(s) of this book. Multiple authors should be separated by a comma</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="3" column="0">

View File

@ -32,7 +32,11 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="opt_toc_title"/> <widget class="QLineEdit" name="opt_toc_title">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="opt_mobi_toc_at_start"> <widget class="QCheckBox" name="opt_mobi_toc_at_start">
@ -99,7 +103,11 @@
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="3" column="1">
<widget class="QLineEdit" name="opt_personal_doc"/> <widget class="QLineEdit" name="opt_personal_doc">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="4" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="opt_share_not_sync"> <widget class="QCheckBox" name="opt_share_not_sync">

View File

@ -54,6 +54,9 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -109,7 +112,11 @@
</widget> </widget>
</item> </item>
<item row="8" column="1"> <item row="8" column="1">
<widget class="QLineEdit" name="opt_toc_title"/> <widget class="QLineEdit" name="opt_toc_title">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="10" column="0"> <item row="10" column="0">
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">
@ -208,7 +215,11 @@
</widget> </widget>
</item> </item>
<item row="16" column="1"> <item row="16" column="1">
<widget class="QLineEdit" name="opt_pdf_page_number_map"/> <widget class="QLineEdit" name="opt_pdf_page_number_map">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="18" column="0" colspan="2"> <item row="18" column="0" colspan="2">
<widget class="QGroupBox" name="page_margins_box"> <widget class="QGroupBox" name="page_margins_box">
@ -247,7 +258,11 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="opt_pdf_header_template"/> <widget class="QLineEdit" name="opt_pdf_header_template">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_13"> <widget class="QLabel" name="label_13">
@ -260,7 +275,11 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QLineEdit" name="opt_pdf_footer_template"/> <widget class="QLineEdit" name="opt_pdf_footer_template">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>

View File

@ -26,7 +26,11 @@
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QLineEdit" name="regex"/> <widget class="QLineEdit" name="regex">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="test"> <widget class="QPushButton" name="test">

View File

@ -72,6 +72,9 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@ -80,7 +83,7 @@
<item row="2" column="0"> <item row="2" column="0">
<layout class="QHBoxLayout" name="buttonsLayout"> <layout class="QHBoxLayout" name="buttonsLayout">
<property name="spacing"> <property name="spacing">
<number>-1</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
@ -146,94 +149,94 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="sr_save"> <widget class="QPushButton" name="sr_save">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Save this list of expressions so that you can re-use it easily</string> <string>Save this list of expressions so that you can re-use it easily</string>
</property> </property>
<property name="text"> <property name="text">
<string>&amp;Save</string> <string>&amp;Save</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0"> <item row="3" column="0">
<layout class="QHBoxLayout" name="searchReplaceLayout"> <layout class="QHBoxLayout" name="searchReplaceLayout">
<property name="spacing"> <property name="spacing">
<number>-1</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<widget class="QTableWidget" name="search_replace"> <widget class="QTableWidget" name="search_replace">
<property name="selectionMode"> <property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum> <enum>QAbstractItemView::SingleSelection</enum>
</property> </property>
<property name="selectionBehavior"> <property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum> <enum>QAbstractItemView::SelectRows</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="positionLayout"> <layout class="QVBoxLayout" name="positionLayout">
<item> <item>
<widget class="QPushButton" name="sr_up"> <widget class="QPushButton" name="sr_up">
<property name="sizePolicy"> <property name="enabled">
<sizepolicy hsizetype="Minimum" vsizetype="Ignored"> <bool>false</bool>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="sizePolicy">
</sizepolicy> <sizepolicy hsizetype="Minimum" vsizetype="Ignored">
</property> <horstretch>0</horstretch>
<property name="maximumSize"> <verstretch>0</verstretch>
<size> </sizepolicy>
<width>32</width> </property>
<height>16777215</height> <property name="maximumSize">
</size> <size>
</property> <width>32</width>
<property name="enabled"> <height>16777215</height>
<bool>false</bool> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Move expression up.</string> <string>Move expression up.</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/arrow-up.png</normaloff>:/images/arrow-up.png</iconset> <normaloff>:/images/arrow-up.png</normaloff>:/images/arrow-up.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="sr_down"> <widget class="QPushButton" name="sr_down">
<property name="sizePolicy"> <property name="enabled">
<sizepolicy hsizetype="Minimum" vsizetype="Ignored"> <bool>false</bool>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="sizePolicy">
</sizepolicy> <sizepolicy hsizetype="Minimum" vsizetype="Ignored">
</property> <horstretch>0</horstretch>
<property name="maximumSize"> <verstretch>0</verstretch>
<size> </sizepolicy>
<width>32</width> </property>
<height>16777215</height> <property name="maximumSize">
</size> <size>
</property> <width>32</width>
<property name="enabled"> <height>16777215</height>
<bool>false</bool> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Move expression down.</string> <string>Move expression down.</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/arrow-down.png</normaloff>:/images/arrow-down.png</iconset> <normaloff>:/images/arrow-down.png</normaloff>:/images/arrow-down.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
</layout> </layout>
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="rh_label"> <widget class="QLabel" name="rh_label">

View File

@ -99,7 +99,11 @@
<widget class="XPathEdit" name="opt_level2_toc" native="true"/> <widget class="XPathEdit" name="opt_level2_toc" native="true"/>
</item> </item>
<item row="8" column="1"> <item row="8" column="1">
<widget class="QLineEdit" name="opt_toc_filter"/> <widget class="QLineEdit" name="opt_toc_filter">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="9" column="0" colspan="2"> <item row="9" column="0" colspan="2">
<widget class="XPathEdit" name="opt_level1_toc" native="true"/> <widget class="XPathEdit" name="opt_level1_toc" native="true"/>

View File

@ -122,7 +122,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="value"/> <widget class="QLineEdit" name="value">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="example_label"> <widget class="QLabel" name="example_label">

View File

@ -15,7 +15,7 @@ from qt.core import (Qt, QComboBox, QLabel, QSpinBox, QDoubleSpinBox,
QMessageBox, QToolButton, QPlainTextEdit, QApplication, QStyle, QDialog) QMessageBox, QToolButton, QPlainTextEdit, QApplication, QStyle, QDialog)
from calibre.utils.date import qt_to_dt, now, as_local_time, as_utc, internal_iso_format_string from calibre.utils.date import qt_to_dt, now, as_local_time, as_utc, internal_iso_format_string
from calibre.gui2.complete2 import EditWithComplete from calibre.gui2.complete2 import EditWithComplete as EWC
from calibre.gui2.comments_editor import Editor as CommentsEditor from calibre.gui2.comments_editor import Editor as CommentsEditor
from calibre.gui2 import UNDEFINED_QDATETIME, error_dialog, elided_text from calibre.gui2 import UNDEFINED_QDATETIME, error_dialog, elided_text
from calibre.gui2.dialogs.tag_editor import TagEditor from calibre.gui2.dialogs.tag_editor import TagEditor
@ -27,6 +27,13 @@ from calibre.gui2.widgets2 import RatingEditor, DateTimeEdit as DateTimeEditBase
from polyglot.builtins import unicode_type from polyglot.builtins import unicode_type
class EditWithComplete(EWC):
def __init__(self, *a, **kw):
super().__init__(*a, **kw)
self.set_clear_button_enabled(False)
def safe_disconnect(signal): def safe_disconnect(signal):
try: try:
signal.disconnect() signal.disconnect()

View File

@ -107,6 +107,9 @@
<property name="toolTip"> <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>Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="3" column="0">

View File

@ -341,6 +341,7 @@ class AuthorsEdit(EditWithComplete, ToMetadataMixin):
self.dialog = parent self.dialog = parent
self.books_to_refresh = set() self.books_to_refresh = set()
EditWithComplete.__init__(self, parent) EditWithComplete.__init__(self, parent)
self.set_clear_button_enabled(False)
self.setToolTip(self.TOOLTIP) self.setToolTip(self.TOOLTIP)
self.setWhatsThis(self.TOOLTIP) self.setWhatsThis(self.TOOLTIP)
self.setEditable(True) self.setEditable(True)
@ -598,6 +599,7 @@ class SeriesEdit(EditWithComplete, ToMetadataMixin):
def __init__(self, parent): def __init__(self, parent):
EditWithComplete.__init__(self, parent) EditWithComplete.__init__(self, parent)
self.set_clear_button_enabled(False)
self.set_separator(None) self.set_separator(None)
self.dialog = parent self.dialog = parent
self.setSizeAdjustPolicy( self.setSizeAdjustPolicy(
@ -1379,6 +1381,7 @@ class TagsEdit(EditWithComplete, ToMetadataMixin): # {{{
def __init__(self, parent): def __init__(self, parent):
EditWithComplete.__init__(self, parent) EditWithComplete.__init__(self, parent)
self.set_clear_button_enabled(False)
self.set_elide_mode(Qt.TextElideMode.ElideMiddle) self.set_elide_mode(Qt.TextElideMode.ElideMiddle)
self.currentTextChanged.connect(self.data_changed) self.currentTextChanged.connect(self.data_changed)
self.lineEdit().setMaxLength(655360) # see https://bugs.launchpad.net/bugs/1630944 self.lineEdit().setMaxLength(655360) # see https://bugs.launchpad.net/bugs/1630944
@ -1462,6 +1465,7 @@ class LanguagesEdit(LE, ToMetadataMixin): # {{{
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
LE.__init__(self, *args, **kwargs) LE.__init__(self, *args, **kwargs)
self.set_clear_button_enabled(False)
self.textChanged.connect(self.data_changed) self.textChanged.connect(self.data_changed)
self.setToolTip(self.TOOLTIP) self.setToolTip(self.TOOLTIP)
@ -1779,6 +1783,7 @@ class PublisherEdit(EditWithComplete, ToMetadataMixin): # {{{
def __init__(self, parent): def __init__(self, parent):
EditWithComplete.__init__(self, parent) EditWithComplete.__init__(self, parent)
self.set_clear_button_enabled(False)
self.currentTextChanged.connect(self.data_changed) self.currentTextChanged.connect(self.data_changed)
self.set_separator(None) self.set_separator(None)
self.setSizeAdjustPolicy( self.setSizeAdjustPolicy(