from PyQt5.Qt import ( Qt, QObject, QSize, QVBoxLayout, QStackedLayout, QWidget, QLineEdit, QToolButton, QIcon, QHBoxLayout, QPushButton, QListWidget, QListWidgetItem, QGridLayout, QPlainTextEdit, QLabel, QFrame, QDialog, QDialogButtonBox) from calibre.constants import isosx from calibre.gui2 import error_dialog from calibre.gui2.tweak_book.editor import all_text_syntaxes from calibre.gui2.tweak_book.editor.smarts.utils import get_text_before_cursor from calibre.gui2.tweak_book.widgets import Dialog, PlainTextEdit from calibre.utils.config import JSONConfig from calibre.utils.icu import string_length as strlen from calibre.utils.localization import localize_user_manual_link from polyglot.builtins import codepoint_to_chr, iteritems, itervalues, unicode_type, range string_length = lambda x: strlen(unicode_type(x)) # Needed on narrow python builds, as subclasses of unicode dont work KEY = Qt.Key_J MODIFIER = Qt.META if isosx else Qt.CTRL SnipKey = namedtuple('SnipKey', 'trigger syntaxes') def snip_key(trigger, *syntaxes): if '*' in syntaxes: syntaxes = all_text_syntaxes return SnipKey(trigger, frozenset(syntaxes)) def contains(l1, r1, l2, r2): # True iff (l2, r2) if contained in (l1, r1) return l2 > l1 and r2 < r1
from PyQt5.Qt import ( Qt, QObject, QSize, QVBoxLayout, QStackedLayout, QWidget, QLineEdit, QListView, QToolButton, QIcon, QHBoxLayout, QPushButton, QListWidget, QListWidgetItem, QGridLayout, QPlainTextEdit, QLabel, QFrame, QDialog, QDialogButtonBox, QTextCursor) from calibre.constants import ismacos from calibre.gui2 import error_dialog from calibre.gui2.tweak_book.editor import all_text_syntaxes from calibre.gui2.tweak_book.editor.smarts.utils import get_text_before_cursor from calibre.gui2.tweak_book.widgets import Dialog, PlainTextEdit from calibre.utils.config import JSONConfig from calibre.utils.icu import string_length as strlen from calibre.utils.localization import localize_user_manual_link from polyglot.builtins import codepoint_to_chr, iteritems, itervalues, unicode_type, range string_length = lambda x: strlen(unicode_type(x)) # Needed on narrow python builds, as subclasses of unicode dont work KEY = Qt.Key.Key_J MODIFIER = Qt.Modifier.META if ismacos else Qt.Modifier.CTRL SnipKey = namedtuple('SnipKey', 'trigger syntaxes') def snip_key(trigger, *syntaxes): if '*' in syntaxes: syntaxes = all_text_syntaxes return SnipKey(trigger, frozenset(syntaxes)) def contains(l1, r1, l2, r2): # True iff (l2, r2) if contained in (l1, r1) return l2 > l1 and r2 < r1