mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
A small speedup by using QTextCharFormat instead of SyntaxCharFormat when cloning formats
This commit is contained in:
parent
2960c06867
commit
cf3c80598e
@ -6,7 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import,
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
from PyQt4.Qt import QTextCharFormat, QFont
|
from PyQt4.Qt import QTextCharFormat
|
||||||
|
|
||||||
from calibre.ebooks.oeb.base import OEB_DOCS, OEB_STYLES
|
from calibre.ebooks.oeb.base import OEB_DOCS, OEB_STYLES
|
||||||
from calibre.ebooks.oeb.polish.container import guess_type
|
from calibre.ebooks.oeb.polish.container import guess_type
|
||||||
@ -37,16 +37,10 @@ SYNTAX_PROPERTY = QTextCharFormat.UserProperty
|
|||||||
SPELL_PROPERTY = SYNTAX_PROPERTY + 1
|
SPELL_PROPERTY = SYNTAX_PROPERTY + 1
|
||||||
SPELL_LOCALE_PROPERTY = SPELL_PROPERTY + 1
|
SPELL_LOCALE_PROPERTY = SPELL_PROPERTY + 1
|
||||||
|
|
||||||
class SyntaxTextCharFormat(QTextCharFormat):
|
def syntax_text_char_format(*args):
|
||||||
|
ans = QTextCharFormat(*args)
|
||||||
def __init__(self, *args):
|
ans.setProperty(SYNTAX_PROPERTY, True)
|
||||||
QTextCharFormat.__init__(self, *args)
|
return ans
|
||||||
self.setProperty(SYNTAX_PROPERTY, True)
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return 'SyntaxFormat(id=%s, color=%s, italic=%s, bold=%s)' % (
|
|
||||||
id(self), self.foreground().color().name(), self.fontItalic(), self.fontWeight() >= QFont.DemiBold)
|
|
||||||
__str__ = __repr__
|
|
||||||
|
|
||||||
class StoreLocale(object):
|
class StoreLocale(object):
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import re
|
|||||||
|
|
||||||
from PyQt4.Qt import QTextBlockUserData
|
from PyQt4.Qt import QTextBlockUserData
|
||||||
|
|
||||||
from calibre.gui2.tweak_book.editor import SyntaxTextCharFormat
|
from calibre.gui2.tweak_book.editor import syntax_text_char_format
|
||||||
from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter
|
from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter
|
||||||
|
|
||||||
space_pat = re.compile(r'[ \n\t\r\f]+')
|
space_pat = re.compile(r'[ \n\t\r\f]+')
|
||||||
@ -267,7 +267,7 @@ def create_formats(highlighter):
|
|||||||
'unknown-normal': _('Invalid text'),
|
'unknown-normal': _('Invalid text'),
|
||||||
'unterminated-string': _('Unterminated string'),
|
'unterminated-string': _('Unterminated string'),
|
||||||
}.iteritems():
|
}.iteritems():
|
||||||
f = formats[name] = SyntaxTextCharFormat(formats['error'])
|
f = formats[name] = syntax_text_char_format(formats['error'])
|
||||||
f.setToolTip(msg)
|
f.setToolTip(msg)
|
||||||
return formats
|
return formats
|
||||||
|
|
||||||
|
@ -10,13 +10,13 @@ import re
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from PyQt4.Qt import QFont, QTextBlockUserData
|
from PyQt4.Qt import QFont, QTextBlockUserData, QTextCharFormat
|
||||||
|
|
||||||
from calibre.ebooks.oeb.polish.spell import html_spell_tags, xml_spell_tags
|
from calibre.ebooks.oeb.polish.spell import html_spell_tags, xml_spell_tags
|
||||||
from calibre.spell.dictionary import parse_lang_code
|
from calibre.spell.dictionary import parse_lang_code
|
||||||
from calibre.spell.break_iterator import split_into_words_and_positions
|
from calibre.spell.break_iterator import split_into_words_and_positions
|
||||||
from calibre.gui2.tweak_book import dictionaries, tprefs
|
from calibre.gui2.tweak_book import dictionaries, tprefs
|
||||||
from calibre.gui2.tweak_book.editor import SyntaxTextCharFormat, SPELL_PROPERTY, SPELL_LOCALE_PROPERTY, store_locale
|
from calibre.gui2.tweak_book.editor import syntax_text_char_format, SPELL_PROPERTY, SPELL_LOCALE_PROPERTY, store_locale
|
||||||
from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter, run_loop
|
from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter, run_loop
|
||||||
from calibre.gui2.tweak_book.editor.syntax.css import (
|
from calibre.gui2.tweak_book.editor.syntax.css import (
|
||||||
create_formats as create_css_formats, state_map as css_state_map, CSSState, CSSUserData)
|
create_formats as create_css_formats, state_map as css_state_map, CSSState, CSSUserData)
|
||||||
@ -236,7 +236,7 @@ def check_spelling(text, tpos, tlen, fmt, locale, sfmt):
|
|||||||
split_ans.append((length, fmt))
|
split_ans.append((length, fmt))
|
||||||
else:
|
else:
|
||||||
if store_locale.enabled:
|
if store_locale.enabled:
|
||||||
s = SyntaxTextCharFormat(sfmt)
|
s = QTextCharFormat(sfmt)
|
||||||
s.setProperty(SPELL_LOCALE_PROPERTY, locale)
|
s.setProperty(SPELL_LOCALE_PROPERTY, locale)
|
||||||
split_ans.append((length, s))
|
split_ans.append((length, s))
|
||||||
else:
|
else:
|
||||||
@ -249,7 +249,7 @@ def process_text(state, text, nbsp_format, spell_format, user_data):
|
|||||||
ans = []
|
ans = []
|
||||||
fmt = None
|
fmt = None
|
||||||
if state.is_bold or state.is_italic:
|
if state.is_bold or state.is_italic:
|
||||||
fmt = SyntaxTextCharFormat()
|
fmt = syntax_text_char_format()
|
||||||
if state.is_bold:
|
if state.is_bold:
|
||||||
fmt.setFontWeight(QFont.Bold)
|
fmt.setFontWeight(QFont.Bold)
|
||||||
if state.is_italic:
|
if state.is_italic:
|
||||||
@ -266,7 +266,7 @@ def process_text(state, text, nbsp_format, spell_format, user_data):
|
|||||||
if tprefs['inline_spell_check'] and state.tags and user_data.tag_ok_for_spell(state.tags[-1].name) and hasattr(dictionaries, 'active_user_dictionaries'):
|
if tprefs['inline_spell_check'] and state.tags and user_data.tag_ok_for_spell(state.tags[-1].name) and hasattr(dictionaries, 'active_user_dictionaries'):
|
||||||
split_ans = []
|
split_ans = []
|
||||||
locale = state.current_lang or dictionaries.default_locale
|
locale = state.current_lang or dictionaries.default_locale
|
||||||
sfmt = SyntaxTextCharFormat(spell_format)
|
sfmt = QTextCharFormat(spell_format)
|
||||||
if fmt is not None:
|
if fmt is not None:
|
||||||
sfmt.merge(fmt)
|
sfmt.merge(fmt)
|
||||||
|
|
||||||
@ -483,9 +483,9 @@ def create_formats(highlighter, add_css=True):
|
|||||||
'no-attr-value': _('Expecting an attribute value'),
|
'no-attr-value': _('Expecting an attribute value'),
|
||||||
'only-prefix': _('A tag name cannot end with a colon'),
|
'only-prefix': _('A tag name cannot end with a colon'),
|
||||||
}.iteritems():
|
}.iteritems():
|
||||||
f = formats[name] = SyntaxTextCharFormat(formats['error'])
|
f = formats[name] = syntax_text_char_format(formats['error'])
|
||||||
f.setToolTip(msg)
|
f.setToolTip(msg)
|
||||||
f = formats['title'] = SyntaxTextCharFormat()
|
f = formats['title'] = syntax_text_char_format()
|
||||||
f.setFontWeight(QFont.Bold)
|
f.setFontWeight(QFont.Bold)
|
||||||
if add_css:
|
if add_css:
|
||||||
formats['css_sub_formats'] = create_css_formats(highlighter)
|
formats['css_sub_formats'] = create_css_formats(highlighter)
|
||||||
|
@ -12,11 +12,11 @@ from PyQt4.Qt import (
|
|||||||
QColor, QBrush, QFont, QApplication, QPalette, QComboBox,
|
QColor, QBrush, QFont, QApplication, QPalette, QComboBox,
|
||||||
QPushButton, QIcon, QFormLayout, QLineEdit, QWidget, QScrollArea,
|
QPushButton, QIcon, QFormLayout, QLineEdit, QWidget, QScrollArea,
|
||||||
QVBoxLayout, Qt, QHBoxLayout, pyqtSignal, QPixmap, QColorDialog,
|
QVBoxLayout, Qt, QHBoxLayout, pyqtSignal, QPixmap, QColorDialog,
|
||||||
QToolButton, QCheckBox, QSize, QLabel, QSplitter)
|
QToolButton, QCheckBox, QSize, QLabel, QSplitter, QTextCharFormat)
|
||||||
|
|
||||||
from calibre.gui2 import error_dialog
|
from calibre.gui2 import error_dialog
|
||||||
from calibre.gui2.tweak_book import tprefs
|
from calibre.gui2.tweak_book import tprefs
|
||||||
from calibre.gui2.tweak_book.editor import SyntaxTextCharFormat
|
from calibre.gui2.tweak_book.editor import syntax_text_char_format
|
||||||
from calibre.gui2.tweak_book.widgets import Dialog
|
from calibre.gui2.tweak_book.widgets import Dialog
|
||||||
|
|
||||||
underline_styles = {'single', 'dash', 'dot', 'dash_dot', 'dash_dot_dot', 'wave', 'spell'}
|
underline_styles = {'single', 'dash', 'dot', 'dash_dot', 'dash_dot_dot', 'wave', 'spell'}
|
||||||
@ -233,7 +233,7 @@ def u(x):
|
|||||||
if 'Dot' in x:
|
if 'Dot' in x:
|
||||||
return x + 'Line'
|
return x + 'Line'
|
||||||
return x + 'Underline'
|
return x + 'Underline'
|
||||||
underline_styles = {x:getattr(SyntaxTextCharFormat, u(x)) for x in underline_styles}
|
underline_styles = {x:getattr(QTextCharFormat, u(x)) for x in underline_styles}
|
||||||
|
|
||||||
def to_highlight(data):
|
def to_highlight(data):
|
||||||
data = data.copy()
|
data = data.copy()
|
||||||
@ -258,7 +258,7 @@ def get_theme(name):
|
|||||||
return read_custom_theme(ans)
|
return read_custom_theme(ans)
|
||||||
|
|
||||||
def highlight_to_char_format(h):
|
def highlight_to_char_format(h):
|
||||||
ans = SyntaxTextCharFormat()
|
ans = syntax_text_char_format()
|
||||||
if h.bold:
|
if h.bold:
|
||||||
ans.setFontWeight(QFont.Bold)
|
ans.setFontWeight(QFont.Bold)
|
||||||
if h.italic:
|
if h.italic:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user