Since the basic functionality (except still the menu issues) of the OA module is done, I figured the way to get it ready to roll is to try and write a real-world application and see where more work needs to be done.
I'm confident that it's still far from finished, but by writing a real application, I can find out what works, what doesn't work and where I need to simplify things for the programmer. I'll be writing an accessible media player...hang on for more news
This striked me as quite a surprise. A Wx::MenuItem and also a Wx::Menu is not a subclass of Wx::Window. This means you can't query a menu's position, nor its size. Since that's not possible, I can't draw a box around a selected menu item to indicate (for a switch user) that it's selected.
Quite a disappointment, and I have no clue whatsoever how to solve it. I've dug in the wxWidgets sources, and it uses the platform-specific calls to create window menus, so there's no easy way to get around this.
I'm afraid I'm left with only two choices: either code my own menus and replace the wxWidget's menus (which is not an appealing option), or I'll drop the accessibility of menus (not attractive either).
This weekend I had my children at my house. Luckily the weather was great, so we had an enormous good time in the sun with the (small) "swimming" pool in the garden.
They've gone home (to their mother) now, so the peace and quiet is back in the house...and thought I could pick up the work on the OA module again. However, with the enormous heat we're experiencing here at the moment, that's not easy...
Documentation is far from done, but in case anyone wants to play with it (I don't expect so...
cvs -d:pserver:firstname.lastname@example.org:/cvsroot co OA
Yesterday evening I went on and finished the touchscreen and 2-switch access (for mouse buttons and keystrokes). Now before I get too excited and code on like a maniac, I think the best step now is to document what I've got so far and put it in cvs.
That brings me to the question if anyone is interested in joining. If so, just drop me an email and I'll give you committer rights on the repository.
I couldn't just leave the code to rest yesterday, so I went a little further. I started working on the (accessible) Event handling.
To make everything as easy as possible, a programmer should normally only worry about one event, namely EVT_OA_SELECT (I'm using OA as the prefix for everything...it stands for Open Accessibility, and currently it's also the name of the module, better suggestions are welcome). EVT_OA_SELECT($object, \&OnSelect) will work like you would expect: if the $object has been selected by the user (in any of the ways that will be defined), it executes the sub OnSelect. If you already have an event handler associated with any control, you can simply use this one beside it and it will do the same.
Tonight I'll implement OA::Config, where you can set/get the configuration of your accessible application (what kind of input device, how many switches, etcetera).
I just sat down, looked at my screen and the only thing I thought was "wow"...
I hadn't thought that I could make such progress in so little time. The module set I'm working on is really getting there now. I can tell you a bit more now what it's supposed to do...
When I started working on pVoice more than 5 years ago, I had a specific problem for a specific person that had to be fixed. Therefore the AAC::Pvoice modules that came out of pVoice, were never really useable for any other type of application, which limited my possibilities quite a bit. Especially since Krista is getting older, and I want to write more 'grown up' applications for her.
The ideal situation would be to have any kind of GUI application accessible for people as limited in their physical abilities as my daughter. And then preferrably without any modifications to the original source code. I realize of course that that's not really possible.
The second best situation is that I could make it as easy as possible for a programmer to adjust their existing GUI applications, so that disabled people can use them. Therefore I'm writing an extension to wxPerl that will
If this subject interests you, and you know how to write wxPerl applications, watch this journal in the time to come. I'll be releasing code soon
Slowly but surely I'm getting up to speed with pVoice related programming again. I've been working on a brand new 'thing' (call it a thing for now, it doesn't really have a name yet) that will allow you, as a programmer, to write easily accessible GUI programs, with hardly any modifications to your existing Wx code.
Although I have plenty of hurdles to take, so far it's looking pretty promising. As soon as I've got something useable (and given my limited free time it may always take longer than I hope), I'll put it in cvs and tell you about it here.
It's pretty hard to make time to work on pVoice it seems. My daytime job has been extremely demanding the past year and it looks like it won't be less demanding any time soon. Besides that, the family life eats up a lot of time too.
Krista has been in the hospital the beginning of this month to have surgery that is meant to repair the shortening of the muscles in her legs, which also caused her back to curve. This has been a painful and stressful operation, and as you can imagine, when your child is in the hospital, you don't get much work done (being a project in your free time, or your regular job).
However, the YAPC::Europe programme committee has accepted all three of my talks, and the more technical of the three talks depends on the work I will be doing in the time remaining until Y::E. I really need to make time now, instead of hoping I will get the time automatically...
this will be hard...
For a number of reason I've been keeping quiet for a long while. No journal posts, no visits to monger meetings, and most importantly no work on any of my private projects, including pVoice.
Most of the reasons are history now, and I'll get restarted on pVoice development tonight. I'll be going to YAPC::Europe in August and Euro OSCON in September. Now what's left is making time to go to mongers meetings again...
I'll keep you posted