Fixes #1920574 [Enhancement Request: Setting a different font for template editor](https://bugs.launchpad.net/calibre/+bug/1920574)
This commit is contained in:
Kovid Goyal 2021-03-21 22:33:32 +05:30
commit bdceb78923
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 165 additions and 121 deletions

View File

@ -9,7 +9,8 @@ import json, os, traceback
from qt.core import (Qt, QDialog, QDialogButtonBox, QSyntaxHighlighter, QFont,
QRegExp, QApplication, QTextCharFormat, QColor, QCursor,
QIcon, QSize, QPalette, QLineEdit, QByteArray)
QIcon, QSize, QPalette, QLineEdit, QByteArray,
QFontInfo, QFontDatabase)
from calibre import sanitize_file_name
from calibre.constants import config_dir
@ -81,8 +82,15 @@ class TemplateHighlighter(QSyntaxHighlighter):
self.highlighted_paren = False
def initializeFormats(self):
font_name = gprefs.get('gpm_template_editor_font', None)
size = gprefs['gpm_template_editor_font_size']
if font_name is None:
font = QFont()
font.setFixedPitch(True)
font.setPointSize(size)
font_name = font.family()
Config = self.Config
Config["fontfamily"] = "monospace"
Config["fontfamily"] = font_name
pal = QApplication.instance().palette()
for name, color, bold, italic in (
("normal", None, False, False),
@ -98,7 +106,7 @@ class TemplateHighlighter(QSyntaxHighlighter):
Config["%sfontitalic" % name] = italic
baseFormat = QTextCharFormat()
baseFormat.setFontFamily(Config["fontfamily"])
Config["fontsize"] = gprefs['gpm_template_editor_font_size']
Config["fontsize"] = size
baseFormat.setFontPointSize(Config["fontsize"])
for name in ("normal", "keyword", "builtin", "comment",
@ -408,8 +416,7 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
'<a href="%s">%s</a>' % (
localize_user_manual_link('https://manual.calibre-ebook.com/generated/en/template_ref.html'), tt))
self.font_size_box.setValue(gprefs['gpm_template_editor_font_size'])
self.font_size_box.valueChanged.connect(self.font_size_changed)
self.set_up_font_boxes()
self.textbox.setFocus()
# Now geometry
try:
@ -419,6 +426,31 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
except Exception:
pass
def set_up_font_boxes(self):
font_name = gprefs.get('gpm_template_editor_font', None)
size = gprefs['gpm_template_editor_font_size']
if font_name is None:
font = QFont()
font.setFixedPitch(True)
font.setPointSize(size)
else:
font = QFont(font_name, pointSize=size)
self.font_box.setWritingSystem(QFontDatabase.Latin)
self.font_box.setCurrentFont(font)
self.font_box.setEditable(False)
gprefs['gpm_template_editor_font'] = unicode_type(font.family())
self.font_size_box.setValue(size)
self.font_box.currentFontChanged.connect(self.font_changed)
self.font_size_box.valueChanged.connect(self.font_size_changed)
self.highlighter.initializeFormats()
self.highlighter.rehighlight()
def font_changed(self, font):
fi = QFontInfo(font)
gprefs['gpm_template_editor_font'] = unicode_type(fi.family())
self.highlighter.initializeFormats()
self.highlighter.rehighlight()
def font_size_changed(self, toWhat):
gprefs['gpm_template_editor_font_size'] = toWhat
self.highlighter.initializeFormats()

View File

@ -380,32 +380,45 @@
<layout class="BoxLayout" name="user_layout_9" dir="TopToBottom">
</layout>
</item>
<item row="20" column="0">
<widget class="QLabel" name="label">
<item row="20" column="0" colspan="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="font_name_label">
<property name="text">
<string>Font size:</string>
<string>Current font:</string>
</property>
<property name="buddy">
<cstring>font_box</cstring>
</property>
</widget>
</item>
<item row="20" column="1" colspan="3">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QSpinBox" name="font_size_box"/>
</item>
<item row="1" column="1">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item>
<widget class="QFontComboBox" name="font_box">
<property name="toolTip">
<string>Select the font for the Template box</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</widget>
</item>
<item row="1" column="2">
<item>
<widget class="QLabel" name="font_size_label">
<property name="text">
<string>Size:</string>
</property>
<property name="buddy">
<cstring>font_size_box</cstring>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="font_size_box">
<property name="toolTip">
<string>Select the font size for the Template box</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="20" column="3">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -415,8 +428,6 @@
</property>
</widget>
</item>
</layout>
</item>
<item row="21" column="0" colspan="4">
<widget class="QFrame">
<property name="frameShape">
@ -424,17 +435,16 @@
</property>
</widget>
</item>
<item row="22" column="0" colspan="2">
<item row="22" column="0" colspan="4">
<layout class="QGridLayout">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="text">
<string>Template Function Reference</string>
</property>
<property name="buddy">
<cstring>function</cstring>
</property>
</widget>
</item>
<item row="23" column="0">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Function &amp;name:</string>
@ -444,10 +454,10 @@
</property>
</widget>
</item>
<item row="23" column="1" colspan="3">
<item row="1" column="1">
<widget class="QComboBox" name="function"/>
</item>
<item row="24" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>&amp;Function type:</string>
@ -460,14 +470,14 @@
</property>
</widget>
</item>
<item row="24" column="1" colspan="3">
<item row="2" column="1">
<widget class="QLineEdit" name="func_type">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="25" column="0">
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Documentation:</string>
@ -480,7 +490,17 @@
</property>
</widget>
</item>
<item row="26" column="0">
<item row="3" column="1">
<widget class="QPlainTextEdit" name="documentation">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>75</height>
</size>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Code:</string>
@ -493,17 +513,7 @@
</property>
</widget>
</item>
<item row="25" column="1" colspan="3">
<widget class="QPlainTextEdit" name="documentation">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>75</height>
</size>
</property>
</widget>
</item>
<item row="26" column="1" colspan="3">
<item row="4" column="1">
<widget class="QPlainTextEdit" name="source_code">
<property name="maximumSize">
<size>
@ -513,6 +523,8 @@
</property>
</widget>
</item>
</layout>
</item>
<item row="27" column="1">
<widget class="QLabel" name="template_tutorial">
<property name="openExternalLinks">