mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
commit
0ddbd506cc
@ -23,6 +23,10 @@ class AbortCommit(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class AbortInitialize(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ConfigWidgetInterface(object):
|
class ConfigWidgetInterface(object):
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -59,7 +63,8 @@ class ConfigWidgetInterface(object):
|
|||||||
def initialize(self):
|
def initialize(self):
|
||||||
'''
|
'''
|
||||||
Should set all config values to their initial values (the values
|
Should set all config values to their initial values (the values
|
||||||
stored in the config files).
|
stored in the config files). A "return" statement is optional. Return
|
||||||
|
False if the dialog is not to be shown.
|
||||||
'''
|
'''
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
@ -6,22 +6,26 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import textwrap, re
|
import re
|
||||||
from functools import partial
|
import textwrap
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
from functools import partial
|
||||||
from qt.core import (
|
from qt.core import (
|
||||||
Qt, QIcon, QFont, QWidget, QScrollArea, QStackedWidget, QVBoxLayout,
|
QApplication, QDialog, QDialogButtonBox, QFont, QFrame, QHBoxLayout, QIcon,
|
||||||
QLabel, QFrame, QToolBar, QSize, pyqtSignal, QDialogButtonBox,
|
QLabel, QPainter, QPointF, QScrollArea, QSize, QSizePolicy, QStackedWidget,
|
||||||
QHBoxLayout, QDialog, QSizePolicy, QPainter, QTextLayout, QPointF,
|
QStatusTipEvent, Qt, QTabWidget, QTextLayout, QToolBar, QVBoxLayout, QWidget,
|
||||||
QStatusTipEvent, QApplication, QTabWidget)
|
pyqtSignal
|
||||||
|
)
|
||||||
|
|
||||||
from calibre.constants import __appname__, __version__, islinux
|
from calibre.constants import __appname__, __version__, islinux
|
||||||
from calibre.gui2 import (gprefs, min_available_height, available_width,
|
|
||||||
show_restart_warning)
|
|
||||||
from calibre.gui2.dialogs.message_box import Icon
|
|
||||||
from calibre.gui2.preferences import init_gui, AbortCommit, get_plugin
|
|
||||||
from calibre.customize.ui import preferences_plugins
|
from calibre.customize.ui import preferences_plugins
|
||||||
|
from calibre.gui2 import (
|
||||||
|
available_width, gprefs, min_available_height, show_restart_warning
|
||||||
|
)
|
||||||
|
from calibre.gui2.dialogs.message_box import Icon
|
||||||
|
from calibre.gui2.preferences import (
|
||||||
|
AbortCommit, AbortInitialize, get_plugin, init_gui
|
||||||
|
)
|
||||||
from polyglot.builtins import unicode_type
|
from polyglot.builtins import unicode_type
|
||||||
|
|
||||||
ICON_SIZE = 32
|
ICON_SIZE = 32
|
||||||
@ -310,7 +314,10 @@ class Preferences(QDialog):
|
|||||||
def show_plugin(self, plugin):
|
def show_plugin(self, plugin):
|
||||||
self.showing_widget = plugin.create_widget(self.scroll_area)
|
self.showing_widget = plugin.create_widget(self.scroll_area)
|
||||||
self.showing_widget.genesis(self.gui)
|
self.showing_widget.genesis(self.gui)
|
||||||
self.showing_widget.initialize()
|
try:
|
||||||
|
self.showing_widget.initialize()
|
||||||
|
except AbortInitialize:
|
||||||
|
return
|
||||||
self.set_tooltips_for_labels()
|
self.set_tooltips_for_labels()
|
||||||
self.scroll_area.setWidget(self.showing_widget)
|
self.scroll_area.setWidget(self.showing_widget)
|
||||||
self.stack.setCurrentIndex(1)
|
self.stack.setCurrentIndex(1)
|
||||||
@ -425,8 +432,8 @@ class Preferences(QDialog):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from calibre.gui_launch import init_dbus
|
|
||||||
from calibre.gui2 import Application
|
from calibre.gui2 import Application
|
||||||
|
from calibre.gui_launch import init_dbus
|
||||||
init_dbus()
|
init_dbus()
|
||||||
app = Application([])
|
app = Application([])
|
||||||
app
|
app
|
||||||
|
@ -2,12 +2,14 @@
|
|||||||
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
# License: GPLv3 Copyright: 2010, Kovid Goyal <kovid at kovidgoyal.net>
|
# License: GPLv3 Copyright: 2010, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
import copy, json, traceback
|
import copy
|
||||||
from qt.core import QDialogButtonBox, QDialog
|
import json
|
||||||
|
import traceback
|
||||||
|
from qt.core import QDialog, QDialogButtonBox
|
||||||
|
|
||||||
from calibre.gui2 import error_dialog, warning_dialog
|
from calibre.gui2 import error_dialog, question_dialog, warning_dialog
|
||||||
from calibre.gui2.dialogs.template_dialog import TemplateDialog
|
from calibre.gui2.dialogs.template_dialog import TemplateDialog
|
||||||
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
from calibre.gui2.preferences import AbortInitialize, ConfigWidgetBase, test_widget
|
||||||
from calibre.gui2.preferences.template_functions_ui import Ui_Form
|
from calibre.gui2.preferences.template_functions_ui import Ui_Form
|
||||||
from calibre.gui2.widgets import PythonHighlighter
|
from calibre.gui2.widgets import PythonHighlighter
|
||||||
from calibre.utils.formatter_functions import (
|
from calibre.utils.formatter_functions import (
|
||||||
@ -149,9 +151,18 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
self.builtins = formatter_functions().get_builtins_and_aliases()
|
self.builtins = formatter_functions().get_builtins_and_aliases()
|
||||||
|
|
||||||
self.st_funcs = {}
|
self.st_funcs = {}
|
||||||
for v in self.db.prefs.get('user_template_functions', []):
|
try:
|
||||||
if not function_pref_is_python(v):
|
for v in self.db.prefs.get('user_template_functions', []):
|
||||||
self.st_funcs.update({function_pref_name(v):compile_user_function(*v)})
|
if not function_pref_is_python(v):
|
||||||
|
self.st_funcs.update({function_pref_name(v):compile_user_function(*v)})
|
||||||
|
except:
|
||||||
|
if question_dialog(self, _('Template functions'),
|
||||||
|
_('The template functions saved in the library are corrupt. '
|
||||||
|
"Do you want to delete them? Answering 'Yes' will delete all "
|
||||||
|
"the functions."), det_msg=traceback.format_exc(),
|
||||||
|
show_copy_button=True):
|
||||||
|
self.db.prefs['user_template_functions'] = []
|
||||||
|
raise AbortInitialize()
|
||||||
|
|
||||||
self.build_function_names_box()
|
self.build_function_names_box()
|
||||||
self.function_name.currentIndexChanged[native_string_type].connect(self.function_index_changed)
|
self.function_name.currentIndexChanged[native_string_type].connect(self.function_index_changed)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user