Howdy List, I was busy in doing some coding things for out plugin based orca screen reader. Here a quick summary: - most current fixes, performance optimizations and joanies event flood killer work is merged into my plugin_system branch - a lot of internal rework an cleanups - the plugin system tracks active states of plugins (every plugin was marked as active bevor) - the plugin system now use the pluginInfo as parameter almost everywhere. This is more unique than the plugin name - i can officially announce an initial basic Plugin Manager! Hell, Yay! It was a good amount of work and its still considered as experimental as its still under heavy testing and fixing, but its stable enough to unleash that beast for you Tell me about the Plugin Manager! The plugin manager is implemented as an core plugin by its own. It consumes the new plugin system API of orca. The main window contains a simple list with two columns, the plugin name and the state (enabled or disabled). There is a handful of buttons at the bottom. What can I do with it? Its initial hardcoded bound to: orca + e (e for extensions) You can navigate or type ahead on the plugin list to select a plugin. By toggle the active state it can be activated or deactivated. Do apply the new states you can press the apply button ( to only apply the states) or the ok button(to apply and close). Cancel does dismiss your changes. There are also buttons to install or uninstall plugins: - by pressing install, an file chooseer appears. You can select a plugin package there. A plugin package is a simple .tar.gz gile what contains the plugin folder. The installer only allows one plugin folder. And this plugin folder must contain the .plugin file. Otherwise its not installed. Example for time plugin: Package Time.tar.gz (the name of the file doesn’t matter) Content Folder: time/ File: time/time.plugin File: time/time.py By installing the archive is just unpacked to: ~/.local/share/orca/plugins Its just available for activation right after installation. No restart or refresh is needed. - By pressing uninstall, the current selected plugin is removed from ~/.local/share/orca/plugins Cause by libpeas it just takes real effect after restarting orca. See here: What is a core plugin? Well there are 3 types of plugins. Core: could not been disabled, can not be uninstalled System: can be disabled, can not be uninstalled User: can be disabled, can be uninstalled The plugin manager as core plugin means, you cannot disable or remove it by oops. Whats next: - currently the active states are not stored in settings. So its reset on next restart of orca. - currently the per plugin settings are not stored. - currently the plugins can register to signals and shortcuts. If the plugin unloads, it need to unregister resources by its own. Plan is to let orca track about the registrations and let orca unregister them on unload. This avoids that the programmer forgot about unregister. - a base plugin class for more easy extension - more cleanup an refactoring - modernization of orca API and make everything a class to be OOP consistent. - currently not every plugin unloads clean. Lets fix that We are still compatible to orca master. Looking for feedback. Cheers chrys |