mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add config_widget docs to creating_plugins.rst
This commit is contained in:
parent
87c7fc9558
commit
a3e095b2c6
@ -105,6 +105,7 @@ in a GUI context.
|
|||||||
Remember that for this to work, you must have a plugin-import-name-some_name.txt file in your plugin zip file,
|
Remember that for this to work, you must have a plugin-import-name-some_name.txt file in your plugin zip file,
|
||||||
as discussed above.
|
as discussed above.
|
||||||
|
|
||||||
|
Also there are a couple of methods for enabling user configuration of the plugin. These are discussed below.
|
||||||
|
|
||||||
ui.py
|
ui.py
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
@ -138,6 +139,34 @@ Getting resources from the plugin zip file
|
|||||||
A convenience wrapper for get_resources() that creates QIcon objects from the raw bytes returned by get_resources.
|
A convenience wrapper for get_resources() that creates QIcon objects from the raw bytes returned by get_resources.
|
||||||
If a name is not found in the zip file the corresponding QIcon will be null.
|
If a name is not found in the zip file the corresponding QIcon will be null.
|
||||||
|
|
||||||
|
Enabling user configuration of your plugin
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
To allow users to configure your plugin, you must define a couple of methods in your base plugin class, **config_widget** and **save_settings** as shown below:
|
||||||
|
|
||||||
|
.. literalinclude:: plugin_examples/interface_demo/__init__.py
|
||||||
|
:pyobject: InterfacePluginDemo.config_widget
|
||||||
|
|
||||||
|
.. literalinclude:: plugin_examples/interface_demo/__init__.py
|
||||||
|
:pyobject: InterfacePluginDemo.save_settings
|
||||||
|
|
||||||
|
|app| has many different ways to store configuration data (a legacy of its long history). The recommended way is to use the **JSONConfig** class, which stores your configuration information in a .json file.
|
||||||
|
|
||||||
|
The code to manage configuration data in the demo plugin is in config.py:
|
||||||
|
|
||||||
|
.. literalinclude:: plugin_examples/interface_demo/config.py
|
||||||
|
:lines: 10-
|
||||||
|
|
||||||
|
The ``prefs`` object is now available throughout the plugin code by a simple::
|
||||||
|
|
||||||
|
from calibre_plugins.interface_demo.config import prefs
|
||||||
|
|
||||||
|
|
||||||
|
You can see the ``prefs`` object being used in main.py:
|
||||||
|
|
||||||
|
.. literalinclude:: plugin_examples/interface_demo/main.py
|
||||||
|
:pyobject: DemoDialog.config
|
||||||
|
|
||||||
|
|
||||||
The different types of plugins
|
The different types of plugins
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
@ -12,11 +12,10 @@ from PyQt4.Qt import QWidget, QHBoxLayout, QLabel, QLineEdit
|
|||||||
from calibre.utils.config import JSONConfig
|
from calibre.utils.config import JSONConfig
|
||||||
|
|
||||||
# This is where all preferences for this plugin will be stored
|
# This is where all preferences for this plugin will be stored
|
||||||
# Remember that this name is also ina global namespace, so make it as uniqie
|
# Remember that this name is also in a global namespace, so make it as unique
|
||||||
# as possible.
|
# as possible.
|
||||||
# It is good etiquette, though not strictly required to always prefix your
|
# You should always prefix your config file name with plugins/,
|
||||||
# config file name with plugins/, so as to ensure you dont accidentally clobber
|
# so as to ensure you dont accidentally clobber a calibre config file
|
||||||
# a calibre config file
|
|
||||||
prefs = JSONConfig('plugins/interface_demo')
|
prefs = JSONConfig('plugins/interface_demo')
|
||||||
|
|
||||||
# Set defaults
|
# Set defaults
|
||||||
|
Loading…
x
Reference in New Issue
Block a user