Re: [orca-list] Small update; Pluginsystem for Orca using libpeas



Hi.

when you press caps lock+e, the plugin manager screen is displayed but focus is not moved to it. I don't know if a bug or if this is expected behavior.
I would also like to suggest that in the plugin manager screen the OK button could be activated with the return key and the cancel button be activated with the esc key.
Thanks.

On 7/2/21 1:15 PM, Linux A11y wrote:
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:
https://gitlab.gnome.org/GNOME/libpeas/-/issues/27

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



_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Orca wiki: https://wiki.gnome.org/Projects/Orca
Orca documentation: https://help.gnome.org/users/orca/stable/
GNOME Universal Access guide: https://help.gnome.org/users/gnome-help/stable/a11y.html




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]