[Kde-accessibility] Fwd: KDE Accessibility

Pupeno pupeno@pupeno.com
Thu, 28 Nov 2002 02:45:47 -0500


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

First of all, thanks Volker Hilsheimer for the fast reply and the description, 
I'm starting to understand the whole picture of QAccessiblity too, I still 
have to re-read your whole mail a couple of more times and I'll send some 
question, comments, etc.
By now I'd like to know this:
I've been reading Qt source code and I saw all the accessible code is enclosed 
by ifdefs of QT_ACCESSIBILITY_SUPPORT so I configured Qt with 
- -DQT_ACCESSIBILITY_SUPPORT, that's ok, isn't it ?
I had some problems compiling, this was the error:

make[4]: Entering directory 
`/home/pupeno/src/kde/kde-head/qt-copy/tools/designer/uic'
test -d ../../../bin/ || mkdir -p ../../../bin/
g++ -fno-exceptions -o ../../../bin/uic .obj/debug-shared-mt/main.o 
.obj/debug-shared-mt/uic.o .obj/debug-shared-mt/form.o 
.obj/debug-shared-mt/object.o .obj/debug-shared-mt/subclassing.o 
.obj/debug-shared-mt/embed.o .obj/debug-shared-mt/widgetdatabase.o 
.obj/debug-shared-mt/domtool.o .obj/debug-shared-mt/parser.o    
- -Wl,-rpath,/home/pupeno/src/kde/kde-head/qt-copy/lib 
- -L/home/pupeno/src/kde/kde-head/qt-copy/lib -L/usr/X11R6/lib -L/usr/X11R6/lib 
- -lqt-mt -lpng -lz -lpthread -lGLU -lGL -lXmu -lSM -lICE -ldl -lXext -lX11 -lm 
- -lXinerama -lXrender -lXft -lfreetype
/home/pupeno/src/kde/kde-head/qt-copy/lib/libqt-mt.so: undefined reference to 
`QAccessible::updateAccessibility(QObject*, int, QAccessible::Event)'
collect2: ld returned 1 exit status
make[4]: *** [../../../bin/uic] Error 1
make[4]: Leaving directory 
`/home/pupeno/src/kde/kde-head/qt-copy/tools/designer/uic'
make[3]: *** [sub-uic] Error 2
make[3]: Leaving directory 
`/home/pupeno/src/kde/kde-head/qt-copy/tools/designer'
make[2]: *** [sub-designer] Error 2
make[2]: Leaving directory `/home/pupeno/src/kde/kde-head/qt-copy/tools'
make[1]: *** [sub-tools] Error 2
make[1]: Leaving directory `/home/pupeno/src/kde/kde-head/qt-copy'
make: *** [init] Error 2

Is it know to compile on Linux ?
Should I take it to the qt-interest mailing list ?
Thank you.

On Wednesday 27 November 2002 10:18, Daniel Molkentin wrote:
> Subject: KDE Accessibility
> Date: Wed, 27 Nov 2002 15:25:21 +0100
> From: "Volker Hilsheimer" <vohi@trolltech.com>
> To: <molkentin@kde.org>
>
> Hi Daniel,
>
> I'm the author of the accessibility support in Qt, and Matthias
> forwarded me your summary of the first meeting.
>
> One of the issues mentioned that the Qt API for accessibility support
> was not versatile enough to be used by KDE, and that the implementation
> we have would need to be extended (and implemented on UNIX). Well, here
> is some infrastructure overview (from a Windows perspective), since the
> documentation of the Qt stuff is rather thin this might give some
> insight:
>
> On Windows, an application is queried by accessibility clients (like a
> magnifier or screen reader) for the accessibility interface (COM
> interface IAccessible) for a specific object. This is done via a window
> message WM_GETOBJECT to a window handle.
>
> - Qt receives the WM_GETOBJECT message
> Qt uses the static function QAccessible::queryAccessibleInterface(
> QObject*, QAccessibleInterface ** ) to get hold of the accessibility
> implementation for the widget that the WM_GETOBJECT message had been
> sent to.
> queryAccessibleInterface is cross platform - it loads the plugins that
> implement the factory interface, figures out which plugins implements a
> accessibility factory for the widget class in question (and goes up the
> class hierarchy if there is no plugin for that specific widget class, so
> MyPushButton:public QPushButton will get the accessibility
> implementation for QPushButton), and asks the factory for an interface
> to that implementation. The implementation and factory stuff is also all
> cross platform, and in a plugin that is part of Qt.
>
> - If Qt receives a interface pointer it creates a Windows specific
> wrapper around the cross platform interface implementation (the Qt
> accessibility interface is "easier" than IAccessible, but just as
> powerful), and uses Windows magic to return some integer value to the
> accessibility client (the WM_GETOBJECT message contains some information
> important for the Active Accessibility infrastructure which is used
> here). The accessibility client receives the pointer, and calls the
> functions via RPC (since IAccessible is a COM interface COM does all the
> magic for that).
>
> - Additionally to that, Active Accessibility provides a notification
> mechanism that allows applications to tell accessibility clients that
> something important has changed or happend (e.g. a checkbox changed it's
> state). The static QAccessible::updateAccessibility() is provided for
> that, and a large set of "event types" (e.g. ValueChanged) is defined in
> an enum (the enum values are identical to the respective values in
> Windows, but can easily be mapped to something else).
>
>
> Since Active Accessibility has been around for a while and is the
> standard and obviously approved infrastructure around on a lot of
> Windows desktops I would assume that the flexibility it offers is
> sufficient (so the interface we have in Qt is sufficient - it is even
> more flexible). If it is not sufficient it is trivial to add another
> interface and implement that as well in the plugins (e.g. right now we
> only have one default action, and can execute that action, but we could
> implement an interface that returns the list of public slots (without
> parameters), and that executes any of those slots etc).
>
> Implementing the communication layer between the accessibility client
> and the "server" is where CORBA - or whatever middleware - enters the
> scene. All you/we have to implement is a way for the accessibility
> client to ask for the interface to a widget, to call function of that
> interface, and to do something useful with the results. And maybe you
> could use the QAccessibleInterface directly without a wrapper
> implementation.
> Any RPC will do for that, and we would definitely be interested in
> putting some efforts into this (e.g. implement the server side for the
> RPC in Qt). Naturally, we would prefer this to be independent of e.g.
> CORBA ;-)
>
> The second platform dependent part is the notification mechanism, which
> is trivial enough.
>
> Well, please fwd. this to the respective lists/people. I would of course
> like to know more details about what parts seem to be insufficient or
> not flexible enough, so that we can add some fu in Qt. At least the
> implementations we provide for all the Qt widgets should be reusable.
>
> Cheers,
> Volker
>
> PS: And somebody should do something about the HTML of your webpage -
> it's somehow misformatted with IE and Mozialla ;-)
>
> -------------------------------------------------------
>
> _______________________________________________
> kde-accessibility mailing list
> kde-accessibility@mail.kde.org
> http://mail.kde.org/mailman/listinfo/kde-accessibility

- -- 
Pupeno: pupeno@pupeno.com
http://www.pupeno.com
- ---
Help the hungry children of Argentina, 
please go to (and make it your homepage):
http://www.porloschicos.com/servlet/PorLosChicos?comando=donar
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE95cmtLr8z5XzmSDQRAgueAKDk7fzCRqT0IUZbWNvSOXCVX6Kd6gCg4w4z
6z9c6UPgoglvA32HGRZt3oY=
=LE64
-----END PGP SIGNATURE-----