Developing cross-platform, accessible apps

  • From: Jamal Mazrui <empower@xxxxxxxxx>
  • To: programmingblind <programmingblind@xxxxxxxxxxxxx>, program-l@xxxxxxxxxxxxx
  • Date: Sat, 12 Jun 2010 10:57:28 -0400

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

Other related posts: