Comparisons » GUI

General words on GUI

Command Line Interface, Menus / Dialog Boxes, Spreadsheet, Notebook (like mathematica), Web appli.

Many teachers prefer to use a CLI, even with their beginner students, because it forces good habits in data analysis (the user must really know what he is doing). A beginner in front of a simple GUI can click everywhere and get results anyway, even if these results are meaningless.

best practice when desinging a GUI. Also : offer two levels (or more): beginner / expert user. And choose your goal: teaching, research or demonstration.

2D graphing and charting

Archive on google groups

interface to gnuplot

plplot

ocaml bindings

older partial binding

PsiLab

older, based on OCaml 3.01 or 3.02. Fairly high-level binding to the plplot libraries which is quite easy to use.

mlgrace

Currently no API to create point labels, but this can be done with a small amount of touch-up work from the GUI (under Plot->Set Appearance->Ann. values).

Bindings to the OpenGL 3D library

OpenGL is the most cross-platform GUI-capable API and runs on virtually any modern computer, typically with performance orders of magnitude better than anything you'll get with Qt, GTK, WxWindows or any other software renderer.

Each of the 3 openGL binding resolve the problem of the GLenum parameters (that often collide between several functions) in a different way.

There's also the problem of C buffers (C arrays).

LablGL

GLCaml

A dynamic cross-platform Ocaml binding for OpenGL and extensions.

glMLite

openGL in native compiled Ocaml Graphics.cmxa

http://www.elliottoti.com/code/glgraphics/glgraphics.tar.gz

Other

LablTk/CamlTk

mini tutorial

Also look for "deuglification tutorial".

LablGTK

Interface to GTK2. more widgets in gtk2, but they can be harder to use.

examples

Gtk+ libraries for windows

example of GUI compiling both under Windows and Unix

widgets looking like those of windows

Wxcaml

Also have a look at http://coherentgraphics.blogspot.com/2008/03/proper-gui-for-ocaml-part-one.html

Cairo

OCaml Visualization Toolkit is built around cairo-ocaml.

functional reactive GUI

gazpacho

Libevent

Not a library, it doesn't control invert. It is a monolithic framework. Your code will no longer be composable. In particular, there is no way to compose two such frameworks, for example you cannot use it with an event driven GUI framework. To quote the manpage: "In order to process events, an application needs to call event_dispatch(). This function only returns on error, and should replace the event core of the application program." Just try telling a GUI that *also* demands you use ITS event loop that!

The only proper way to use libevent would be to spawn the dispatch loop inside a pthread, and use the hook functions to communicate with your program via channels. It isn't immediately clear this would work (libevent's single page of documentation doesn't explain if it works when spawned inside a pthread).

wrapper for the libevent library

SDL

See http://alan.petitepomme.net/cwn/2007.03.13.html#4

Osiris

Smoke

hardware-accelerated vector graphics library, suited to write visualization software.

There is a full version (with source code) and a free version (bytecode only).