Use only a single BusyCursor class

This commit is contained in:
Kovid Goyal 2022-06-19 19:52:06 +05:30
parent edb8e805b2
commit 86fca5e201
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
24 changed files with 43 additions and 79 deletions

View File

@ -29,7 +29,7 @@ class AuthorMapAction(InterfaceAction):
def do_map(self, book_ids, selected):
from calibre.ebooks.metadata.author_mapper import map_authors, compile_rules
from calibre.gui2.author_mapper import RulesDialog
from calibre.gui2.device import BusyCursor
from calibre.gui2.widgets import BusyCursor
d = RulesDialog(self.gui)
d.setWindowTitle(ngettext(
'Map authors for one book in the library',

View File

@ -30,7 +30,7 @@ class TagMapAction(InterfaceAction):
def do_map(self, book_ids, selected):
from calibre.ebooks.metadata.tag_mapper import map_tags
from calibre.gui2.tag_mapper import RulesDialog
from calibre.gui2.device import BusyCursor
from calibre.gui2.widgets import BusyCursor
d = RulesDialog(self.gui)
d.setWindowTitle(ngettext(
'Map tags for one book in the library',

View File

@ -9,7 +9,7 @@ import json
import os
import time
from functools import partial
from qt.core import QAction, QIcon, Qt, pyqtSignal, QDialog, QApplication, QCursor
from qt.core import QAction, QIcon, pyqtSignal, QDialog
from calibre.constants import ismacos, iswindows
from calibre.gui2 import (
@ -23,15 +23,6 @@ from calibre.utils.config import prefs, tweaks
from polyglot.builtins import as_bytes
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
def preferred_format(formats):
formats = tuple(x.upper() for x in formats if x)
fmt = formats[0]
@ -168,6 +159,7 @@ class ViewAction(InterfaceAction):
self._view_file(job.result)
def _launch_viewer(self, name=None, viewer='ebook-viewer', internal=True, calibre_book_data=None, open_at=None):
from calibre.gui2.widgets import BusyCursor
with BusyCursor():
if internal:
args = [viewer]

View File

@ -6,9 +6,9 @@ import os, traceback, time, io, re, sys, weakref
from threading import Thread, Event
from qt.core import (
QMenu, QAction, QActionGroup, QIcon, Qt, pyqtSignal, QDialog,
QObject, QVBoxLayout, QDialogButtonBox, QCursor, QCoreApplication,
QApplication, QEventLoop, QTimer)
QMenu, QAction, QActionGroup, QIcon, pyqtSignal, QDialog,
QObject, QVBoxLayout, QDialogButtonBox, QCoreApplication,
QEventLoop, QTimer)
from calibre.customize.ui import (available_input_formats, available_output_formats,
device_plugins, disabled_device_plugins)
@ -22,6 +22,7 @@ from calibre.devices.scanner import DeviceScanner
from calibre.gui2 import (config, error_dialog, Dispatcher, dynamic,
warning_dialog, info_dialog, choose_dir, FunctionDispatcher,
show_restart_warning, gprefs, question_dialog)
from calibre.gui2.widgets import BusyCursor
from calibre.ebooks.metadata import authors_to_string
from calibre import preferred_encoding, prints, force_unicode, as_unicode, sanitize_file_name
from calibre.utils.filenames import ascii_filename
@ -123,15 +124,6 @@ def device_name_for_plugboards(device_class):
return device_class.__class__.__name__
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
def convert_open_popup(opm, skip_key):
class OPM(OpenFeedback):

View File

@ -229,7 +229,7 @@ class ScanStatus(QWidget):
'This will force calibre to re-index all the books in this library, which'
' can take a long time. Are you sure?'), 'fts-reindex-confirm', self):
return
from calibre.gui2.device import BusyCursor
from calibre.gui2.widgets import BusyCursor
with BusyCursor():
self.db.reindex_fts()

View File

@ -24,7 +24,7 @@ from calibre.db import FTSQueryError
from calibre.ebooks.metadata import authors_to_string, fmt_sidx
from calibre.gui2 import config, error_dialog, gprefs, question_dialog, safe_open_url
from calibre.gui2.fts.utils import get_db
from calibre.gui2.library.annotations import BusyCursor
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.progress_indicator import ProgressIndicator
from calibre.gui2.ui import get_gui
from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox

View File

@ -767,7 +767,7 @@ class LayoutMixin: # {{{
fmt), show=True)
def bd_edit_book(self, book_id, fmt):
from calibre.gui2.device import BusyCursor
from calibre.gui2.widgets import BusyCursor
with BusyCursor():
self.iactions['Tweak ePub'].ebook_edit_format(book_id, fmt)

View File

@ -7,7 +7,7 @@ import os
import re
from functools import lru_cache, partial
from qt.core import (
QAbstractItemView, QApplication, QCheckBox, QComboBox, QCursor, QDateTime,
QAbstractItemView, QApplication, QCheckBox, QComboBox, QDateTime,
QDialog, QDialogButtonBox, QFont, QFormLayout, QFrame, QHBoxLayout, QIcon,
QKeySequence, QLabel, QLocale, QMenu, QPalette, QPlainTextEdit, QSize, QSplitter,
Qt, QTextBrowser, QTimer, QToolButton, QTreeWidget, QTreeWidgetItem, QVBoxLayout,
@ -27,6 +27,7 @@ from calibre.gui2 import (
)
from calibre.gui2.dialogs.confirm_delete import confirm
from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import Dialog, RightClickButton
@ -328,15 +329,6 @@ def current_db():
return (getattr(current_db, 'ans', None) or get_gui().current_db).new_api
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
class ResultsList(QTreeWidget):
current_result_changed = pyqtSignal(object)

View File

@ -1040,7 +1040,7 @@ class FormatsManager(QWidget):
self.dialog.do_view_format(item.path, item.ext)
def edit_format(self, item, *args):
from calibre.gui2.device import BusyCursor
from calibre.gui2.widgets import BusyCursor
with BusyCursor():
self.dialog.do_edit_format(item.path, item.ext)

View File

@ -11,7 +11,7 @@ from threading import Thread
from qt.core import (
QApplication, QFont, QFontInfo, QFontDialog, QColorDialog, QPainter, QDialog,
QAbstractListModel, Qt, QIcon, QKeySequence, QColor, pyqtSignal, QCursor, QHeaderView, QListWidgetItem,
QAbstractListModel, Qt, QIcon, QKeySequence, QColor, pyqtSignal, QHeaderView, QListWidgetItem,
QWidget, QSizePolicy, QBrush, QPixmap, QSize, QPushButton, QVBoxLayout, QItemSelectionModel,
QTableWidget, QTableWidgetItem, QLabel, QFormLayout, QLineEdit, QComboBox, QDialogButtonBox
)
@ -34,21 +34,13 @@ from calibre.gui2.book_details import get_field_list
from calibre.gui2.dialogs.quickview import get_qv_field_list
from calibre.gui2.preferences.coloring import EditRules
from calibre.gui2.library.alternate_views import auto_height, CM_TO_INCH
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import Dialog
from calibre.gui2.actions.show_quickview import get_quickview_action_plugin
from calibre.utils.resources import set_data
from polyglot.builtins import iteritems
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
class DefaultAuthorLink(QWidget): # {{{
changed_signal = pyqtSignal()

View File

@ -8,7 +8,7 @@ from qt.core import (
QWidget
)
from calibre.gui2.preferences.look_feel import BusyCursor
from calibre.gui2.widgets import BusyCursor
class VoicesModel(QAbstractTableModel):

View File

@ -7,7 +7,7 @@ from qt.core import (
QItemSelectionModel, QSlider, QSortFilterProxyModel, Qt, QTableView, QWidget
)
from calibre.gui2.preferences.look_feel import BusyCursor
from calibre.gui2.widgets import BusyCursor
class VoicesModel(QAbstractTableModel):

View File

@ -8,7 +8,7 @@ from qt.core import (
QWidget
)
from calibre.gui2.preferences.look_feel import BusyCursor
from calibre.gui2.widgets import BusyCursor
class VoicesModel(QAbstractTableModel):

View File

@ -60,11 +60,12 @@ from calibre.gui2.tweak_book.spell import (
from calibre.gui2.tweak_book.toc import TOCEditor
from calibre.gui2.tweak_book.undo import GlobalUndoHistory
from calibre.gui2.tweak_book.widgets import (
AddCover, BusyCursor, FilterCSS, ImportForeign, InsertLink, InsertSemantics,
AddCover, FilterCSS, ImportForeign, InsertLink, InsertSemantics,
InsertTag, MultiSplit, QuickOpen, RationalizeFolders
)
from calibre.ptempfile import PersistentTemporaryDirectory, TemporaryDirectory
from calibre.utils.config import JSONConfig
from calibre.gui2.widgets import BusyCursor
from calibre.utils.icu import numeric_sort_key
from calibre.utils.imghdr import identify
from calibre.utils.tdir_in_cache import tdir_in_cache

View File

@ -16,7 +16,8 @@ from qt.core import (
)
from calibre.gui2.tweak_book import tprefs
from calibre.gui2.tweak_book.widgets import BusyCursor, Dialog
from calibre.gui2.tweak_book.widgets import Dialog
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import HistoryLineEdit2
from calibre.utils.icu import safe_chr as codepoint_to_chr
from calibre.utils.unicode_names import character_name_from_code, points_for_word

View File

@ -15,7 +15,7 @@ from calibre.ebooks.oeb.polish.check.base import WARN, INFO, DEBUG, ERROR, CRITI
from calibre.ebooks.oeb.polish.check.main import run_checks, fix_errors
from calibre.gui2 import NO_URL_FORMATTING, safe_open_url
from calibre.gui2.tweak_book import tprefs
from calibre.gui2.tweak_book.widgets import BusyCursor
from calibre.gui2.widgets import BusyCursor
def icon_for_level(level):

View File

@ -10,7 +10,7 @@ from functools import partial
from itertools import chain
from math import ceil
from qt.core import (
QApplication, QBrush, QColor, QCursor, QEvent, QEventLoop, QFont, QHBoxLayout,
QApplication, QBrush, QColor, QEvent, QEventLoop, QFont, QHBoxLayout,
QIcon, QImage, QKeySequence, QMenu, QPainter, QPainterPath, QPalette, QPen,
QPixmap, QPlainTextEdit, QRect, QScrollBar, QSplitter, QSplitterHandle, Qt,
QTextCharFormat, QTextCursor, QTextLayout, QTimer, QWidget, pyqtSignal
@ -25,6 +25,7 @@ from calibre.gui2.tweak_book.editor.text import (
LineNumbers, PlainTextEdit, default_font_family
)
from calibre.gui2.tweak_book.editor.themes import get_theme, theme_color
from calibre.gui2.widgets import BusyCursor
from calibre.utils.icu import utf16_length
from calibre.utils.xml_parse import safe_xml_fromstring
from polyglot.builtins import as_bytes, iteritems
@ -32,15 +33,6 @@ from polyglot.builtins import as_bytes, iteritems
Change = namedtuple('Change', 'ltop lbot rtop rbot kind')
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
def beautify_text(raw, syntax):
from lxml import etree

View File

@ -8,7 +8,7 @@ from collections import defaultdict, deque
from qt.core import QTextCursor, QTextBlockUserData, QTextLayout, QTimer
from ..themes import highlight_to_char_format
from calibre.gui2.tweak_book.widgets import BusyCursor
from calibre.gui2.widgets import BusyCursor
from calibre.utils.icu import utf16_length
from polyglot.builtins import iteritems

View File

@ -16,7 +16,8 @@ from calibre.ebooks.oeb.polish.container import get_container
from calibre.ebooks.oeb.polish.fonts import font_family_data, change_font
from calibre.gui2 import error_dialog, info_dialog
from calibre.gui2.tweak_book import current_container, set_current_container
from calibre.gui2.tweak_book.widgets import Dialog, BusyCursor
from calibre.gui2.tweak_book.widgets import Dialog
from calibre.gui2.widgets import BusyCursor
from calibre.utils.icu import primary_sort_key as sort_key
from calibre.utils.fonts.scanner import font_scanner, NoFonts
from calibre.utils.fonts.metadata import FontMetadata, UnsupportedFont

View File

@ -33,7 +33,7 @@ from calibre.gui2.tweak_book.function_replace import (
Function, FunctionBox, FunctionEditor, functions as replace_functions,
remove_function
)
from calibre.gui2.tweak_book.widgets import BusyCursor
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import FlowLayout, HistoryComboBox
from calibre.utils.icu import primary_contains
from polyglot.builtins import error_message, iteritems

View File

@ -12,7 +12,7 @@ from calibre import prepare_string_for_xml
from calibre.gui2 import error_dialog
from calibre.gui2.tweak_book import tprefs, editors, current_container
from calibre.gui2.tweak_book.search import get_search_regex, InvalidRegex, initialize_search_request
from calibre.gui2.tweak_book.widgets import BusyCursor
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import HistoryComboBox
from polyglot.builtins import iteritems, error_message

View File

@ -10,7 +10,7 @@ import unicodedata
from collections import OrderedDict
from math import ceil
from qt.core import (
QAbstractListModel, QApplication, QCheckBox, QComboBox, QCursor, QDialog,
QAbstractListModel, QApplication, QCheckBox, QComboBox, QDialog,
QDialogButtonBox, QEvent, QFormLayout, QFrame, QGridLayout, QGroupBox,
QHBoxLayout, QIcon, QItemSelectionModel, QLabel, QLineEdit, QListView, QMimeData,
QModelIndex, QPainter, QPalette, QPixmap, QPlainTextEdit, QPoint, QRect, QSize,
@ -45,15 +45,6 @@ from polyglot.builtins import iteritems
ROOT = QModelIndex()
class BusyCursor:
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
class Dialog(BaseDialog):
def __init__(self, title, name, parent=None):

View File

@ -741,7 +741,7 @@ class EbookViewer(MainWindow):
cmd = [exe]
if selected_text:
cmd += ['--select-text', selected_text]
from calibre.gui2.tweak_book.widgets import BusyCursor
from calibre.gui2.widgets import BusyCursor
with sanitize_env_vars():
subprocess.Popen(cmd + [path, file_name])
with BusyCursor():

View File

@ -1299,6 +1299,16 @@ class PaperSizes(QComboBox): # {{{
# }}}
class BusyCursor: # {{{
def __enter__(self):
QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
def __exit__(self, *args):
QApplication.restoreOverrideCursor()
# }}}
if __name__ == '__main__':
from qt.core import QTextEdit
app = QApplication([])