-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
153 lines (143 loc) · 6.03 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
All Orca TODO's are maintained as RFE's and bugs in the GNOME bugzilla
database: http://bugzilla.gnome.org/buglist.cgi?query=product%3Aorca
Roadmap for Plugin Based Orca:
# Stage 1 (ALL DONE)
- (DONE): implement Plugin System Manager what handles all our plugin stuff
- (DONE): migrate some example plugins
-- (DONE): Clipboard
-- (DONE): Preferences
-- (DONE): SelfVoice
-- (DONE): Time
-- (DONE): Date
-- (DONE): MouseReview
-- (DONE): HelloOrca
-- (DONE): ByeOrca
-- (DONE): HelloWorld
- (DONE): implement a base plugin class to have an unify Plugin API
- (DONE): Dynamic API Manager to let plugins register its own bits of functionality for global usage (also used for compatibiltiy)
- (DONE): initial "orca" class to hold all of orcas API. so we can easy share it with plugins
- (DONE): create a basic plugin manager:
-- (DONE): install
-- (DONE): uninstall
-- (DONE): activate plugins
-- (DONE): details
- (DONE): compatibiltiy:
-- (DONE): ability to register shortcuts in current structure
-- (DONE): place current objects in Dynamic API Manager
-- (DONE): use existing settings to store plugin activ states
# Stage 2 (ALL DONE)
- (DONE): Translation API: Plugins store its own translation. we should provide an unify way to consume it. maybe implemented into plugin.plugin?
-- (DONE): plugins can bring its own translations
-- (DONE): plugins can use orcas build in translations
- (DONE): Orca should track by Plugins registered stuff like
-- (DONE): gestures
-- (DONE): event subscription
-- (DONE): signals
-- (DONE): api
- (DONE): Orca should unregister the by the Plugins registered stuff by itself on unload
-- (DONE): gestures
-- (DONE): event subscription
-- (DONE): signals
-- (DONE): api
- (DONE):
-- (DONE): allow None context (orca core)
-- (DONE): improve API
- (DONE): Dont trust plugins, hardening core against crashes in callbacks
-- (DONE): gestures
-- (DONE): event subscription
- (DONE): ability to call code while plugin un-/ installation
-- (DONE): onPostInstall
-- (DONE): onPreUninstall
# Stage 3 (TODO):
- (WIP): Create an clean "orca" class and object based API
- (TODO): create useful signals
- (WIP): cleanup as much as possible
- register per application shortcuts
- register per profile shortcuts
- (TODO): Bugfixing and hardening
-- Unregister bindings on unload plugin
-- (TODO): compatibiltiy registered shortcuts do not unregister properly
- (TODO): keyboard / gesture duplication check (for new and old way)
- (TODO): Release :)
# Stage 4 (TODO)
- (TODO): Per Plugin settings: Plugins come along with its own settings (structure, defaults). We need an unify API to. The Settings are handled by Gsettings instead of JSON:
-- (DONE): basic gsetting handling
-- (DONE): profile management (global settings)
-- (DONE): use gsettings in plugin manager
-- (TODO): resource manager integration
-- (TODO): install (along with the plugin)
-- (TODO): uninstall (along with the plugin)
-- (TODO): upgrade
-- (WIP): load
-- (WIP): save
-- (TODO): reset
-- (TODO): check compatibiltiy
-- (WIP): scope: profiles
-- (WIP): scope: per application
- (TODO): generic preferences GUI
-- (TODO): List based
-- (TODO): generic
--- (TODO): default
---- (TODO): Radio Buttons
---- (TODO): Menu Buttons
---- (TODO): Booleans
---- (TODO): Integer Min / Max
---- (TODO): slider
--- (TODO): custom
---- (TODO): any embedded widget / subform / table
--- (TODO): # other
---- (TODO): dependency value for simple enable / disable
-- (TODO): agnostic to installed plugins
-- (TODO): searchable
-- (TODO): set values
-- (TODO): reset to default value
-- (TODO): load
-- (TODO): save
-- (TODO): export
-- (TODO): import
-- (TODO): keyboard
-- (TODO): punctuation
-- (TODO): scope: global
-- (TODO): scope: profiles
-- (TODO): scope: per application
# Documentation:
- https://git.launchpad.net/ubuntu/+source/gnome-orca/commit/?h=applied/ubuntu/bionic&id=b2d49a3f250881eff036b1ebfc97148fe94acf75
- https://www.micahcarrick.com/gsettings-python-gnome-3.html
- https://stackoverflow.com/questions/24407025/how-do-i-use-g-settings-schema-get-key-from-python
- https://encarsia.github.io/posts/gsettings/
- http://zderadicka.eu/gsettings-flexible-configuration-system/
- https://qastack.com.de/ubuntu/251712/how-can-i-install-a-gsettings-schema-without-root-privileges
- https://docs.gtk.org/glib/gvariant-format-strings.html
- https://awebablog.wordpress.com/2017/12/16/session-5-part-1-gtk_with_python/
- https://valadoc.org/gtk+-3.0/Gtk.ListBox.html
# Final Stage 5 (TODO)
- (WIP): Create an clean "orca" class and object based API
- (TODO): create useful signals
- (TODO): Remove compatibiltiy layers
- (WIP): cleanup as much as possible
- (WIP): move all parts into plugins
-- (TODO): Move source into Plugins
-- (TODO): Move Settings into Plugins
-- (TODO): Move Translation into Plugins
- (TODO): Bugfixing and hardening
- (TODO): Release :)
Known Bugs:
- (DONE) PluginManager is not translated on first start
- (DONE) Plugins enable / disable state not stored without manuall add setting to user-settings.conf: "activePlugins": [],
- (DONE) Profile selector does not open at preferences page
- (DONE) ByeOrca is not announced
- (DONE) Plugins without compatibiltiy bindings -> shortcut is not consumed | this is currently a bug in master | use plugin_system_old_keyboard branch what reverts the broken commit of master: https://github.com/chrys87/orca-plugin/tree/plugin_system_old_keyboard
Build:
NOCONFIGURE=1 ./autogen.sh
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install
Plguin readme:
Translation
# read text from python file
xgettext -d TranslationTest -o TranslationTest.pot ../TranslationTest.py
# copy .pot to .po
# compile to mo
msgfmt -o TranslationTest.mo TranslationTest
gsettings
glib-compile-schemas /path/to/schema/files/