Fixes #1954572 [Enhancement request: Template tester: Save word wrap setting](https://bugs.launchpad.net/calibre/+bug/1954572)
This commit is contained in:
Kovid Goyal 2021-12-12 18:08:49 +05:30
commit 519f06b4af
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -6,6 +6,7 @@ __docformat__ = 'restructuredtext en'
__license__ = 'GPL v3' __license__ = 'GPL v3'
import json, os, traceback, re import json, os, traceback, re
from functools import partial
from qt.core import (Qt, QDialog, QDialogButtonBox, QSyntaxHighlighter, QFont, from qt.core import (Qt, QDialog, QDialogButtonBox, QSyntaxHighlighter, QFont,
QApplication, QTextCharFormat, QColor, QCursor, QApplication, QTextCharFormat, QColor, QCursor,
@ -392,7 +393,7 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
self.load_button.clicked.connect(self.load_template_from_file) self.load_button.clicked.connect(self.load_template_from_file)
self.save_button.clicked.connect(self.save_template) self.save_button.clicked.connect(self.save_template)
self.textbox.setWordWrapMode(QTextOption.WordWrap) self.set_word_wrap(gprefs.get('gpm_template_editor_word_wrap_mode', True))
self.textbox.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) self.textbox.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
self.textbox.customContextMenuRequested.connect(self.show_context_menu) self.textbox.customContextMenuRequested.connect(self.show_context_menu)
# Now geometry # Now geometry
@ -482,20 +483,30 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
def show_context_menu(self, point): def show_context_menu(self, point):
m = self.textbox.createStandardContextMenu() m = self.textbox.createStandardContextMenu()
m.addSeparator() m.addSeparator()
ca = m.addAction(_('Toggle word wrap')) word_wrapping = gprefs['gpm_template_editor_word_wrap_mode']
to_what = (QTextOption.NoWrap if self.textbox.wordWrapMode() == QTextOption.WordWrap if word_wrapping:
else QTextOption.WordWrap) ca = m.addAction(_('Disable word wrap'))
ca.triggered.connect(lambda: self.textbox.setWordWrapMode(to_what)) ca.setIcon(QIcon(I('list_remove.png')))
else:
ca = m.addAction(_('Enable word wrap'))
ca.setIcon(QIcon(I('ok.png')))
ca.triggered.connect(partial(self.set_word_wrap, not word_wrapping))
m.addSeparator() m.addSeparator()
ca = m.addAction(_('Load template from the Template tester')) ca = m.addAction(_('Load template from the Template tester'))
ca.triggered.connect(self.load_last_template_text) ca.triggered.connect(self.load_last_template_text)
m.addSeparator() m.addSeparator()
ca = m.addAction(_('Load template from file')) ca = m.addAction(_('Load template from file'))
ca.setIcon(QIcon(I('document_open.png')))
ca.triggered.connect(self.load_template_from_file) ca.triggered.connect(self.load_template_from_file)
ca = m.addAction(_('Save template to file')) ca = m.addAction(_('Save template to file'))
ca.setIcon(QIcon(I('save.png')))
ca.triggered.connect(self.save_template) ca.triggered.connect(self.save_template)
m.exec(self.textbox.mapToGlobal(point)) m.exec(self.textbox.mapToGlobal(point))
def set_word_wrap(self, to_what):
gprefs['gpm_template_editor_word_wrap_mode'] = to_what
self.textbox.setWordWrapMode(QTextOption.WordWrap if to_what else QTextOption.NoWrap)
def load_last_template_text(self): def load_last_template_text(self):
from calibre.customize.ui import find_plugin from calibre.customize.ui import find_plugin
tt = find_plugin('Template Tester') tt = find_plugin('Template Tester')