RE: Developing cross-platform, accessible apps

  • From: <Nick.Adamson@xxxxxxxxxxxxxxxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Mon, 14 Jun 2010 09:06:49 +0100

Hi Ken.

A couple of months back I looked at the functionality of wx widgets and
was generally impressed.
I did have a little play with some of the GUI builders for it. My
limited understanding is that you write a xml style script, run it
through an interpreter which then generates the code to use the GUI in
the language of your choice, for us it would be C++.

Firstly did I get this write? What tools are you using as your GUI
builder if any?
Also one of the other questions I had at the time was how easy is it to
modify the GUI once you've run the script through the interpreter and
started to write code to power it?

Hopefully at some point we'll be putting a set of management tools
together for the current project I'm on which is cross platform and wx
widgets is one of our preferred solutions for this.

Thanks.
Nick.

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
Sent: 12 June 2010 16:50
To: programmingblind@xxxxxxxxxxxxx
Subject: RE: Developing cross-platform, accessible apps

I am actually doing this right now and we are testing two methods that
seem
to be working fine for Linux, windows, and mac.  That is wx widgets.  in
fact wx widgets is quickly being  ported to phone platforms.  I will say
though even mono looks good for cross platform.  

 but limited.

The nice thing about wx widgets if you do it in python is its quick to
test
but c++ gives you much more access to the OS.   I also have been looking
at
Java and Java script for cross platform java script is nice because it
works
with most browsers but it is very limited or at least it makes some
things
difficult to do.

Ken


-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris
Hofstader
Sent: Saturday, June 12, 2010 11:42 AM
To: programmingblind@xxxxxxxxxxxxx
Cc: Jamal Mazrui; program-l@xxxxxxxxxxxxx
Subject: Re: Developing cross-platform, accessible apps

This is a pretty good start at strategies   for cross platform  
accessibility development. The four accessibility API are, however, 
different enough to make wrapping code for the different OS very 
difficult as there are some obvious and other nuanced techniques that 
simply do not exist in all of them.

If I was launching a new project on GNU/Linux or Windows, I would use 
the iAccessible2 API.

The iAccessible2 API, developed by Aaron Leventhal and some others at 
IBM, intends to harmonize at least two OS and, if I remember correctly, 
it is how AT communicates with programs  like OpenOffice and
Thunderbird.


IBM has given iAccessible2, trademark and all, to the Linux Foundation 
so it has a good chance of being maintained moving forward.

This, of course, leaves us with the Macintosh. In relatively standard 
behavior for Apple, they refused to work with IBM on iAccessible2 and  
insists on going it alone with their proprietary accessibility
framework.

There aren't 1:1 relationships between iAccessible2 and Apple 
accessibility API at either the event or function level so supporting it

along with the other platforms can be a nightmare and a rats nest of 
code trying to square peg on access API into another.

I do not know of any software written that is accessible on all three. 
Apple is the one that is the most broken.

cdh

On 06/12/2010 10:57 AM, Jamal Mazrui wrote:
> This is to share some points I have learned about developing 
> cross-platform, GUI-accessible, desktop apps.  Currently, the key is 
> using programming libraries that wrap native widgets of the platform. 
> These native widgets generally implement the main accessibility API of

> the platform, much more so than custom widgets.
>
> On Windows, native widgets are most likely to implement Microsoft 
> Active Accessibility, or  increasingly, User Interface Automation as 
> it replaces MSAA.  On Linux, the GTK+ widgets that are native to the 
> Gnome desktop implement the Assistive Technology Service Provider 
> Interface. On the Mac, Cocoa-based widgets implement the Mac 
> Accessibility Protocol.
>
> Thus, a cross-platform library is most likely to create accessible 
> GUIs if it wraps native widgets of each platform, rather than defining

> its own widgets.  A disadvantage of this approach is that the 
> developer needs to be conscious of small differences in the behavior 
> of widgets across platforms, even though wrapping code of the library 
> tries to minimize such differences.  Besides accessibility, an 
> advantage of this approach is that widgets have the look and feel that

> sighted users are accustomed to experiencing on each platform.
>
> Sometimes, a GUI library is closely associated with a programming 
> language that has especially strong support for that library in 
> wrapper functions and design tools.  A few language and library 
> combinations that seem to work particularly well for cross-platform, 
> accessible development are as follows:
>
> *  Java and the Standard Widget Toolkit
> http://www.eclipse.org/swt/
>
> *  Python and wxWidgets
> http://wxPython.org
>
> *  C# and the System.Windows.Forms classes of the Mono Framework
> http://mono-project.org
>
> Note that, in this case, the Microsoft .NET Framework should be used 
> as the runtime environment on Windows in order to have native widget 
> support.
> http://msdn.microsoft.com/en-us/netframework/default.aspx
>
> If others have further info or ideas on this topic, please share.
>
> Jamal
>
> __________
> View the list's information and change your settings at 
> //www.freelists.org/list/programmingblind
>
__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: