183 | | === GUI plugin system for GRASS GIS === |
184 | | |
185 | | GRASS GIS allows to install addons/extensions from GRASS Addons using `g.extension`. This works well for GRASS modules but it is not sufficient when things needs to be integral part of wxGUI. |
186 | | |
187 | | * The main tasks are to write |
188 | | * a GUI which would manage and install the plugins, |
189 | | * mechanism which would load the installed and activated plugins and |
190 | | * an interface which plugins would use to communicate with GIS and integrate themselves into GUI. |
191 | | * GUI plugins should use the `g.extension` system in the background. The difference is that you may want to have more plugins installed but just a subset would be activated. Perhaps, GUI plugin manager can just take care of turning plugins off and on and setting for individual plugins while `g.extension` and wxGUI `g.extension` will take care of installation and related things (which should be possible in any case). |
192 | | * Some extensions may provide both GUI plugin and a standalone `g.gui.*` module (this is actually an ideal case). |
193 | | * Some GUI plugins may depend on a particular extension or even a Python package the extension installs. |
194 | | * Some GUI plugins may include or depend on some particular addons (group of extensions to install) or GUI toolbox (a file used to construct a menu). |
195 | | * Some plugins may include general files such as default configurations or images. |
196 | | * There is already an interface to communicate with GUI but it needs to be extended and improved. Also there should be a defined interface which plugin itself should provide (name, description, ...). |
197 | | * GUI plugin system should work the same for GUI plugins installed manually and installed using `g.extension`. |
198 | | * Several use cases should be explored and used as examples. |
199 | | * It would be good to consider (at least for the sake of real use case) turning some existing parts or wxGUI into plugins, e.g. vdigit, rdigit, iclass or various plots. |
200 | | * Bonus task is to extend `g.extension` in the way that it supports local source code (#1652) and individual extensions as source code in !GitHub (might be almost possible already using Subversion but on the level of the whole repository, not individual modules). |
201 | | * Language requirements: Python, wxPython |
202 | | * Mentor: ? |
203 | | * Co-mentors: Vaclav Petras, Anna Petrasova |
204 | | |