mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix font settings for Editor preview not working
This commit is contained in:
parent
a6097fab4a
commit
b6c3253fb9
@ -31,9 +31,9 @@ d['dock_top_left'] = 'horizontal'
|
|||||||
d['dock_top_right'] = 'horizontal'
|
d['dock_top_right'] = 'horizontal'
|
||||||
d['dock_bottom_left'] = 'horizontal'
|
d['dock_bottom_left'] = 'horizontal'
|
||||||
d['dock_bottom_right'] = 'horizontal'
|
d['dock_bottom_right'] = 'horizontal'
|
||||||
d['preview_serif_family'] = 'Liberation Serif'
|
d['engine_preview_serif_family'] = None
|
||||||
d['preview_sans_family'] = 'Liberation Sans'
|
d['engine_preview_sans_family'] = None
|
||||||
d['preview_mono_family'] = 'Liberation Mono'
|
d['engine_preview_mono_family'] = None
|
||||||
d['preview_standard_font_family'] = 'serif'
|
d['preview_standard_font_family'] = 'serif'
|
||||||
d['preview_base_font_size'] = 18
|
d['preview_base_font_size'] = 18
|
||||||
d['preview_mono_font_size'] = 14
|
d['preview_mono_font_size'] = 14
|
||||||
|
@ -7,6 +7,7 @@ __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
|||||||
|
|
||||||
import numbers
|
import numbers
|
||||||
from operator import attrgetter, methodcaller
|
from operator import attrgetter, methodcaller
|
||||||
|
from functools import partial
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from polyglot.builtins import (
|
from polyglot.builtins import (
|
||||||
iteritems, itervalues, map, unicode_type, range)
|
iteritems, itervalues, map, unicode_type, range)
|
||||||
@ -19,6 +20,7 @@ from PyQt5.Qt import (
|
|||||||
QCheckBox, pyqtSignal, QDoubleSpinBox, QComboBox, QLabel, QFont,
|
QCheckBox, pyqtSignal, QDoubleSpinBox, QComboBox, QLabel, QFont,
|
||||||
QFontComboBox, QPushButton, QSizePolicy, QHBoxLayout, QGroupBox,
|
QFontComboBox, QPushButton, QSizePolicy, QHBoxLayout, QGroupBox,
|
||||||
QToolButton, QVBoxLayout, QSpacerItem, QTimer)
|
QToolButton, QVBoxLayout, QSpacerItem, QTimer)
|
||||||
|
from PyQt5.QtWebEngineWidgets import QWebEngineSettings
|
||||||
|
|
||||||
from calibre import prepare_string_for_xml
|
from calibre import prepare_string_for_xml
|
||||||
from calibre.utils.localization import get_lang
|
from calibre.utils.localization import get_lang
|
||||||
@ -342,17 +344,25 @@ class PreviewSettings(BasicSettings):
|
|||||||
self.l = l = QFormLayout(self)
|
self.l = l = QFormLayout(self)
|
||||||
self.setLayout(l)
|
self.setLayout(l)
|
||||||
|
|
||||||
def family_getter(w):
|
def default_font(which):
|
||||||
return unicode_type(w.currentFont().family())
|
s = QWebEngineSettings.defaultSettings()
|
||||||
|
which = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[which])
|
||||||
|
return s.fontFamily(which)
|
||||||
|
|
||||||
def family_setter(w, val):
|
def family_getter(which, w):
|
||||||
w.setCurrentFont(QFont(val))
|
ans = unicode_type(w.currentFont().family())
|
||||||
|
if ans == default_font(which):
|
||||||
|
ans = None
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def family_setter(which, w, val):
|
||||||
|
w.setCurrentFont(QFont(val or default_font(which)))
|
||||||
|
|
||||||
families = {'serif':_('Serif text'), 'sans':_('Sans-serif text'), 'mono':_('Monospaced text')}
|
families = {'serif':_('Serif text'), 'sans':_('Sans-serif text'), 'mono':_('Monospaced text')}
|
||||||
for fam in sorted(families):
|
for fam in sorted(families):
|
||||||
text = families[fam]
|
text = families[fam]
|
||||||
w = QFontComboBox(self)
|
w = QFontComboBox(self)
|
||||||
self('preview_%s_family' % fam, widget=w, getter=family_getter, setter=family_setter)
|
self('engine_preview_%s_family' % fam, widget=w, getter=partial(family_getter, fam), setter=partial(family_setter, fam))
|
||||||
l.addRow(_('Font family for &%s:') % text, w)
|
l.addRow(_('Font family for &%s:') % text, w)
|
||||||
|
|
||||||
w = self.choices_widget('preview_standard_font_family', families, 'serif', 'serif')
|
w = self.choices_widget('preview_standard_font_family', families, 'serif', 'serif')
|
||||||
|
@ -652,8 +652,13 @@ class Preview(QWidget):
|
|||||||
s.setFontSize(s.DefaultFixedFontSize, tprefs['preview_mono_font_size'])
|
s.setFontSize(s.DefaultFixedFontSize, tprefs['preview_mono_font_size'])
|
||||||
s.setFontSize(s.MinimumLogicalFontSize, tprefs['preview_minimum_font_size'])
|
s.setFontSize(s.MinimumLogicalFontSize, tprefs['preview_minimum_font_size'])
|
||||||
s.setFontSize(s.MinimumFontSize, tprefs['preview_minimum_font_size'])
|
s.setFontSize(s.MinimumFontSize, tprefs['preview_minimum_font_size'])
|
||||||
sf, ssf, mf = tprefs['preview_serif_family'], tprefs['preview_sans_family'], tprefs['preview_mono_family']
|
sf, ssf, mf = tprefs['engine_preview_serif_family'], tprefs['engine_preview_sans_family'], tprefs['engine_preview_mono_family']
|
||||||
s.setFontFamily(s.StandardFont, {'serif':sf, 'sans':ssf, 'mono':mf, None:sf}[tprefs['preview_standard_font_family']])
|
if sf:
|
||||||
s.setFontFamily(s.SerifFont, sf)
|
s.setFontFamily(s.SerifFont, sf)
|
||||||
s.setFontFamily(s.SansSerifFont, ssf)
|
if ssf:
|
||||||
s.setFontFamily(s.FixedFont, mf)
|
s.setFontFamily(s.SansSerifFont, ssf)
|
||||||
|
if mf:
|
||||||
|
s.setFontFamily(s.FixedFont, mf)
|
||||||
|
stdfnt = tprefs['preview_standard_font_family'] or 'serif'
|
||||||
|
stdfnt = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[stdfnt])
|
||||||
|
s.setFontFamily(s.StandardFont, s.fontFamily(stdfnt))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user