[GUI] Proposal Proposal: haskell-gui addendum to haskell standard

Wolfgang Jeltsch wolfgang@jeltsch.net
Wed, 22 Jan 2003 18:35:44 +0100


On Wednesday, 2003-01-22, 17:40, CET, David Sankel wrote:
> [...]
> 1.  Platform independance:  The QT widget library is a stunning example=
 of
> how platform independance is achievable without sacraficing speed.  I a=
m not
> suggesting that we build haskell-gui off of QT but might use major
> components of it as a model. Eventually, the library could have three
> backends; the Windows API, the X API (or gtk perhaps?), and the Mac API=
 (the
> name illudes me at the moment).

In my opinion the big problem of Qt and similar libraries is that they ar=
e not=20
based on high level APIs. For instance, under Windows, Qt doesn't use the=
=20
support for handling buttons, checkboxes etc. that Windows provides but=20
provides its own handling of these widgets. Some drawbacks of such a conc=
ept=20
are:
    (1) The look and feel of applications written with the multi-platform
      library will probably differ from that of native applications.
    (2) The library will not properly use settings made in a platform-spe=
cific
      way like, for example, file type settings which should be used in f=
ile
      selection dialogs.

Qt is IMO fine as the basis of KDE but not so fine as a multi-platform GU=
I=20
library. IMO, APIs, a Haskell multi-platform GUI should be based on, shou=
ld=20
be as high level as possible. Also consider, that today the graphical asp=
ect=20
of the user interface is not everything. It would be nice if such a libra=
ry=20
would also care, for instance, about accustic signals.

I would propose the following backends for the library:
    * KDE (not just Qt)
    * Windows API or .NET
    * some reasonable MAC library (I think there are two at the moment.)

> 2.  Signals support:  Having a signals mechanism is essential for large=
 gui
> projects.

I'm not a Haskell GUI expert but I wonder if there is a more "haskellish"=
=20
solution here.

> 3.  Dynamic widgets:  All widgets should have dynamic size and should h=
ave
A the ability to be resized by the measurement of their contents or their
parents.  This could be done in a way similar to QT widgets.

I totally agree with you here. Again I would like that a multi-platform=20
library is based on the API which is as high level as possible. This mean=
s=20
that I would use the Qt resizing mechanisms under KDE and a custom=20
implementation of resizing under Windows (since, AFAIK, there is no resiz=
ing=20
provided by the Windows API nor the .NET API).

> 4.  GUI GUI builder:  Widgets should be flexible enough to have the abi=
lity
> to be incorporated in a GUI GUI builder program, such as QT designer.  =
The
> storage for a GUI builder might be direct Haskell code or some intermed=
iate
> format.

No opinion here.

> 5.  OpenGL incorporation:  haskell-gui should have some sort of OpenGL
> widget as OpenGL is the most standardized and multiplatform graphical
> library availible.  Perhaps the hgl software could be incorporated in t=
his
> aspect of haskell-gui.

Again, I totally agree with you.

> 6.  Custom Widgets:  It should be easy for one to create his or her own
> custom widgets from scratch using Haskell code or by some modification =
of
> the standard ones.

Total agreement.

> Please give your feedback and suggestions for this project proposal
> proposal.  If there is enough interest, I'll get this thing started.

I think, there was already a consensus concerning the development of a=20
standard Haskell GUI interface. The strategy was to develop a rather=20
imperative interface which could be implemented using different=20
APIs/underlying libraries and on which different "haskellish" GUI solutio=
ns=20
could be based.

> Kudos,
>
> David J. Sankel
> Head Consultant
> Electron Consulting (www.electronconsulting.com)

Wolfgang Jeltsch