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_bottom_left'] = 'horizontal'
|
||||
d['dock_bottom_right'] = 'horizontal'
|
||||
d['preview_serif_family'] = 'Liberation Serif'
|
||||
d['preview_sans_family'] = 'Liberation Sans'
|
||||
d['preview_mono_family'] = 'Liberation Mono'
|
||||
d['engine_preview_serif_family'] = None
|
||||
d['engine_preview_sans_family'] = None
|
||||
d['engine_preview_mono_family'] = None
|
||||
d['preview_standard_font_family'] = 'serif'
|
||||
d['preview_base_font_size'] = 18
|
||||
d['preview_mono_font_size'] = 14
|
||||
|
@ -7,6 +7,7 @@ __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||
|
||||
import numbers
|
||||
from operator import attrgetter, methodcaller
|
||||
from functools import partial
|
||||
from collections import namedtuple
|
||||
from polyglot.builtins import (
|
||||
iteritems, itervalues, map, unicode_type, range)
|
||||
@ -19,6 +20,7 @@ from PyQt5.Qt import (
|
||||
QCheckBox, pyqtSignal, QDoubleSpinBox, QComboBox, QLabel, QFont,
|
||||
QFontComboBox, QPushButton, QSizePolicy, QHBoxLayout, QGroupBox,
|
||||
QToolButton, QVBoxLayout, QSpacerItem, QTimer)
|
||||
from PyQt5.QtWebEngineWidgets import QWebEngineSettings
|
||||
|
||||
from calibre import prepare_string_for_xml
|
||||
from calibre.utils.localization import get_lang
|
||||
@ -342,17 +344,25 @@ class PreviewSettings(BasicSettings):
|
||||
self.l = l = QFormLayout(self)
|
||||
self.setLayout(l)
|
||||
|
||||
def family_getter(w):
|
||||
return unicode_type(w.currentFont().family())
|
||||
def default_font(which):
|
||||
s = QWebEngineSettings.defaultSettings()
|
||||
which = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[which])
|
||||
return s.fontFamily(which)
|
||||
|
||||
def family_setter(w, val):
|
||||
w.setCurrentFont(QFont(val))
|
||||
def family_getter(which, w):
|
||||
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')}
|
||||
for fam in sorted(families):
|
||||
text = families[fam]
|
||||
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)
|
||||
|
||||
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.MinimumLogicalFontSize, 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']
|
||||
s.setFontFamily(s.StandardFont, {'serif':sf, 'sans':ssf, 'mono':mf, None:sf}[tprefs['preview_standard_font_family']])
|
||||
sf, ssf, mf = tprefs['engine_preview_serif_family'], tprefs['engine_preview_sans_family'], tprefs['engine_preview_mono_family']
|
||||
if sf:
|
||||
s.setFontFamily(s.SerifFont, sf)
|
||||
if ssf:
|
||||
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