[fpc-devel] Chosing a graphical interface for specific proposals

luciano de souza luchyanus at gmail.com
Mon Oct 25 19:12:25 CEST 2010


Hi listers,

I am blind and I would like to program graphical interfaces in
Freepascal. Perhaps, it sounds a little bit curious. Being blind,
would I have interest in graphical interfaces? As the subject can be
new for many of then, I will explain in detail what I really want.

Blinds have been programming for decades. In seventies, they have done
it by means of braille lines, special hardware wich allows blind
people to touch in an board and read the contents projected there.
Afterwards, with the appearance of screen readers, the work has become
much easier.

Elder blind programmers have produced codes for console. However,
screen readers, nowadays,  interact more efficiently with graphical
interfaces. So, if I want to program for blind people, I need to use
graphical interfaces.

But, being blind, can I program graphical interfaces? yes, but not
using tform. And being blind, is it really useful to learn
programming? Yes, there is a large number of blind programmers and,
about acessibility subjects, they are the worriest, the most
interested in promote it.

Some requirements need to be present in order to allow blind
programmers to do it:

1. Accessible - Screen readers can announce all the contents shown.

2. Programable - A blind person can produce all the code needed to
shown the windows and its objects.

3. Multiplataform - Blinds in Windows and Linux can access and program
with the chosen interface.

Now, I present a list of interfaces and the way they fulfill these requirements:

1. tform - it fulfills the items 1 and 3. A blind person cannot
program it. At first, because Lazarus environment is not accessible
and a blind people prefer to use only hard code without move objects
on a form. Secondly, even we adopt hard code, it's not possible to
program using tform without writing codes like: button1.left := 30.
The way blind people can program is not based on coordenates or
dimensions, but in the automatic layout management.

2. TK - It fulfills 2 and 3. As it's not based on native components
and use extensively Canvas Draw, the result is that screen readers
can't interact with then.

3. GTK - In Linux, all the requirements are fulfilled and a blind
program can use it. We can produce codes without indicating even one
dimension or one coordenates. GTK is based on containers, so we can
imagine the abstract realationsship among objects and  build
interfaces. Beautiful interfaces? Certainly not. However, this isn't
the proposal. I can use graphical interfaces to ease the interaction
with screen readers, not to present wonderful looks. If a label
doesn't have enough space to receive the text, the screen reader only
will read the visible words. So, although the interface won't be seen
by the users, they must be organized sufficiently to allow the correct
performance of screen readers.

4. FPGUI - It fulfills 1 and 3. As tform, it's coordenate based in
stead of container based.

5. QT - It fulfills 2 and 3. As TK, it's not based in native
components, so it inaccessible for screen readers in both systems:
Windows and Linux.

6. HTML - Of course, it fulfills all the requirements in both
systems. However, it's not the more suitable interface for desktop
programming. In spite of that, it can be regarded as an option.

7. IUP - It fulfills all the requirements. Previous experiences using
Lua and IUP, graphical tool kit developed by brazilian reseachers,
shows  excelent results. Graphical interfaces can be created by blind
programmers, without any coordenate, using only containers. The work
can be done as in Windows as in Linux. IUP seems to be the perfect
solution.

However, IUP was not ported to Object Pascal and, having contacted the
developers, he said this won't be done. The alternative could be to
translate the C headers of IUP, producing the respective units Pascal.
I have tried to do it using H2pas. But after the process, the unit
contained errors. And the correction of these errors would probably
require a large background in C programming.

Finally, I ask: does someone have an idea what can I do? Does someone
know other interfaces container based compatible with Pascal? If I
decided to port IUP to Pascal, wich kind of knowledge should I have?

IUP is available for C and Lua programmers. Perhaps, adopting C or Lua
I could obtain earlier results. Yes, I regard seriously it. But if the
investment was not endless, I prefer to look for a Pascal solution. If
I am successful in my project, I will write a manual for blind
programmers.

Regards,

Luciano de Souza



More information about the fpc-devel mailing list