232 | | |
| 232 | === GUI plugin system for GRASS GIS === |
| 233 | |
| 234 | 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. |
| 235 | |
| 236 | * The main tasks are to write |
| 237 | * a GUI which would manage and install the plugins, |
| 238 | * mechanism which would load the installed and activated plugins and |
| 239 | * an interface which plugins would use to communicate with GIS and integrate themselves into GUI. |
| 240 | * 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). |
| 241 | * Some extensions may provide both GUI plugin and a standalone `g.gui.*` module (this is actually an ideal case). |
| 242 | * Some GUI plugins may depend on a particular extension or even a Python package the extension installs. |
| 243 | * 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). |
| 244 | * Some plugins may include general files such as default configurations or images. |
| 245 | * 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, ...). |
| 246 | * GUI plugin system should work the same for GUI plugins installed manually and installed using `g.extension`. |
| 247 | * Several use cases should be explored and used as examples. |
| 248 | * 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. |
| 249 | * 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 now using Subversion). |
| 250 | * Language requirements: Python, wxPython |
| 251 | * Mentor: ? |
| 252 | * Co-mentors: Vaclav Petras, Anna Petrasova |