Warning: The API is not stable yet. Function and files may move between commits.
As it's a submodule, you can configure your GIT to auto update the submodule commit by running:
git config --global submodule.recurse true
The module is helping you with:
- setting up some logging (QgsMessageLog, file log, remote logs...)
- fetching resources in
resources
or other folders - fetching compiled UI file in
resources/ui
folder - fetching compiled translation file in
resources/i18n
folder - removing QRC resources file easily
- translate using the
i18n.tr()
function. - managing the release process : zip, upload on plugins.qgis.org, tag, GitHub release
- providing some common widgets/code for plugins
- setting up a debug server
This will create needed structure for your plugin
- Create new plugin using cookiecutter-qgis-plugin. This will automatically initialize git and add qgis_plugin_tools as a submodule for the plugin.
- Next set up the development environment, edit metadata.txt with description etc. and commit changes.
- Go to the root folder of your plugin code source
git submodule add https://github.com/GispoCoding/qgis_plugin_tools.git
- To get most out of the submodule, try to refactor the plugin to use the default plugin tree
This project can also be used as an external dependency. It can be installed via pip:
pip install qgis_plugin_tools
The project can also be installed in editable mode, but you must use setuptool's strict mode because of the submodule nature of the project:
pip install -e /path/to/qgis_plugin_tools --use-pep517 --config-settings editable_mode=strict
Refer to development documentation.
Refer to usage documentation.
The plugin should follow the following file tree to get most out of this module.
Plugin Foo
root folder:
plugin_repo
# no '-' character!.gitmodules
.pre-commit-config.yaml
.gitattributes
.gitignore
.qgis-plugin-ci
# to use qgis-plugin-cipluginname
# no '-' character!.gitignore
qgis_plugins_tools/
# submoduleresources/
i18n/
# Alternatively translations could use Transifexfi.ts
fi.qm
ui/
main_dialog.ui
icons/
my_icon.svg
__init__.py
foo.py
metadata.txt
build.py
test/