Slicer3GUIworkingDoc - NA-MIC

tunisianbromidrosisInternet and Web Development

Feb 5, 2013 (4 years and 7 months ago)

94 views

http://en.wikipedia.org/wiki/Graphical_user_interface_toolkit

http://www.geocities.com/SiliconValley/Vista/7184/guitool.html

http://www.free
-
soft.org/guitool/

http://www.efalk.org/Widgets/

http://freshmeat.net/articles/view/928

GUI TOOLKIT INFORMATION (here’s a start):

LOW LEVEL

integrated in the OS:

Mac OS toolbox or Macintosh APIs:

Carbon: (Mac) improved version of Mac APIs for OS X;
Carbon is the lower level APIs and Cocoa is a higher level
application framework. Access Carbon using C, C++,
Pascal, Ada, and Cocoa uses Objective C and java; is
comprised of “Managers” (HIView, HITheme…), each
defining a set of functionally
-
related data structures and
functions to manipulate them. So much more…

Windows API: (Windows) set of APIs for use by C/C++
programs. So many versions… Win16, Win32, Win32s,
Win64, WinFX (object oriented API


the GUI API set
for WinFX called Windows Presentation Foundation,
requires high
-
end graphics cards to properly render some
fx.) so much more…

A layer on top of the OS:

X windows: provides basic building blocks (accessed by
Motif, GTK+, Qt)

Amiga OS Intutition: Since Amiga OS 2.0, the intuition
library is disk (not ROM) based and object oriented.
Invokes Workbench (which is the native graphical shell)
library and Icon library, which comprise the native GUI.


HIGH LEVEL

Mac:

Interface Builder / Cocoa: (native OO AP environment for
OS X); evolved from the NeXTSTEP development
software, closely mirrored in Gorm, interface builder for
GNUstep.

MacApp: (Macintosh framework, most of 1980s)

MacZoop: (Macintosh C++ framework) based on Carbon,
smaller, more manageable alternative to now defunct
Think Class Library (TCL) from Symantec, and later
Powerplant framework from Metrowerks. Developed
1994
-
2003, but then discontinued.

Powerplant: (from Metrowerks)

Windows:

Microsoft Foundation Classes (MFC): (wrapper for
Win32API


not independent toolkit)

Object Windows Library: (Borlands alternative to MFC)
(wrapper for Win32API


not independent toolkit)

Windows Forms: (.NET’s classes for GUI controls)

Unix:

Xaw: (Project Athena widgets for X Windows) simple
user interfaces only…

Motif: (used in Common Desktop Environment (CDE)
and created by Open Software Foundation as OSF/Motif,
now owned by The Open Group) Sun Microsystems
(major Motif user, will switch to GTK+ and GNOME…

Lesstif: (open, LGPL Motif version, developed by the
Hungry Programmers)

POPULAR PLATFORM
-
SPECIFIC GUI TOOLKITS

Based on SVG:

airWRX: application framework, runs from USB flash
drive (flash drive becomes server, PC host and other PCs
nearby turn into multi
-
screen web
-
like digital workspace

Based on Java programming language:

Abstract Windowing Toolkit (AWT): platform
independent windowing, gfx and gui widget toolkit. Part of
Java Foundation Classes (JFC). In JDK version 1, widgets
have been superseded by those of Swing Toolkit.

Swing: (Sun’s replacement for AWT in newer Java
versions), part of JFC. Support pluggable look and feel;
slower execution, but identical look/feel on all platforms.

Standard Widget Toolkit (SWT): an alternative to AWT
and Swing from Eclipse project; will use the running
platform’s widget tookit underneath (GTK+ or Windows
API) Open source framework for GUI development in
Java. Licensed under the Eclipse Public License. Written in
standard Java, accesses platform
-
specific libs thru the Java
Native Interface.

Based on C/C++ with bindings for other:

Tcl/Tk: accessed from Tcl, Python

GTK+: (LGPL), mostly for X Windows; used in GNOME
DE

Qt: (GPL), for Unix/Linux (X Windows), MS Windows,
MacOS X and embedded systems; also commercial; used
in KDE

CLX (Component library for Cross
-
Platform): used with
Borland’s Delphi, C++Builder, Kylix for building cross
-
platform applications. Based on Qt, wrapped so its
interface is similar to VCL toolkit.

wxWidgets: (formerly wxWindows), (relaxed LGPL);
abstracts toolkits across several platfoms (Windows,
Apple Macintosh, Linux/Unix for X11, Motif and GTK+,
OpenVMS and OS/2. for C++, Python and Perl, Java,
Smalltalk…provides thin abstraction to native widgets.
Also has ODBC based database library, interprocess
communication layer, socket networking etc. (other
functionality besides GUI).

FOX toolkit: (LGPL) has a currently hard
-
wired Win95
-
style theme (bleh); uses platform specific graphical
primitives to display GUI elements (like Swing) as
opposed to using native widgets (like Java AWT); has
modern widgets, unlike Tk and GTK+; Written in C++
with bindings for Python, Ruby and Eiffel.

FLTK (LGPL): (Fast Light Toolkit) “fulltick” C++,
Windows, GNU/Linux, Mac OS X, Solaris, Unix, UI
builder called FLUID

KWwidgets: C++ open, has set of core widgets,
composite widgets (and VTK widgets). Testable. Tcl
wrapping

Presenter:

XVT: C, C++, development tools and libraries for GUI;
Windows, Linux, Mac, Solaris (oops, purchase only)

JUCE: C++ class library for developing cross
-
platform
apps.

V: Common C++ wrapper; native look and feel (LGPL)


Zoolib: seems inactive for a long time…


GLOW


GLUI

POPULAR CROSS
-
PLATFORM GUI TOOLKITS

OPTIONS

Tcl/Tk


Tkinter


GTK+


TkZinc


Qt


FOX toolkit


FLTK


wxWidgets


KWwidgets


Zoolib


JUCE


GLOW


GLUI


V


testable

language &
bindings

vtly/poplry%

(freshmeat)

license

full widget
set

allows custom

widgets | style

comments

docs

Python bindings
for Tcl

Old. GLUT
-
based. Can’t define own widgets or
customize existing ones much; without o
-
o framework
for writing more complex programs…

C++ wrapper around GLUT; o
-
o UI framework;
extensive widget lib; custom look and feel across
platforms; can define and integrate new widgets.

y|same

?

C++ ANSI/ISO

LGPL

LGPL

LGPL

GPL

MIT

LGPL

LGPL

LGPL

LGPL

BSD

GPL

LGPL

Python

Portable GUI toolkit for Python; basically python
bindings for Tk. BSD+Python licenses are GPL
compatible.

n

n|native

0.19 / 9.92

great

Seems pretty dead.

Good for creating highly
-
specialized GUIs and handling
gfx and sound. Not sure how extensive the widget set
is; static library;

C++

C; Tcl, python, java

Gimp ToolKit; library for creating GUIs. Designed to
be small and efficient. Used by GNOME desktop
project Check: ported to windows, or cross
-
platform?

Efficient for prototyping; slicer developers have most
experience with this set of tools.. Missing many modern
GUI widgets.

0.59 / 24.45

0.00 / 0.36

C++; python, java

0.28 / 20.97

O
-
O, supposedly simplifies writing and maintenance of
GUIs. In addition to GUI toolkit, has provision for file
handling, networking, XML,… takes long to compile.

n

n|native

0.05 / 6.38

C++; Tcl, Python

y

C; perl python

Java, Tcl, etc.

y

ok

brief

y (hard)|

Motif
-
y++

brief

Tcl; perl/Tk,
python/Tkinter

NA

y|y

TkZinc is a widget


like the canvas widget in Tk, but
with transparency, supports item hierarchies, scaling,
rotation, etc. Not a GUI toolkit! Looks great tho.

C++: Python, java, perl…

C++: Python

y|native

good

y

100 / 10.43

y|win95
-
y

Small, supports rapid prototyping, has limited widget
set. Direct OpenGL support; portable GLUT header
file…

y|native

Native widgets if possible; fallbacks if not. Not
themable. Integrated OpenGL, HTML, Networking…
large set of GUI widgets.

All fox objects can send messages to each other and
receive events; auto updating of GUI elements according
to specified conditions in the app. OpenGL support.
Objects not referred by namespace, but by prefix.

good

good

good

y

y|?

0.1 / 6.17

y

y

0.0 / .43

y|native

C++

C++

not much.

y

y|y

not much.

0.07 /1.07

?

0.0 / .41

0.0 / .08

Doesn’t seem viable anymore..

C++

?|native

not much.

?

?

?

C++

y|same

ok

ok

OPTIONS

Tcl/Tk


TkInter


GTK+


TkZinc


Qt


FOX toolkit


FLTK


wxWidgets


KWwidgets


Zoolib


JUCE


GLOW


GLUI


V


Unix/X11

Linux

Win3.1

Unix/Motif

Win95/98

NT/2000

OS/2

OSX

MacOS

y y y y y


y y


(python)

y y y y


(GTK
-
OSX alpha)

y y y y y y


y y

y y y y(98) y


y

y y y y y


(with Xserver)

y y y ? y


y

y y y y y y


(in prog) y y


?

y some POSIX variants with X 98/ME y


? y

y 95/98/ME 2000/XP y


y y

y y y y y y


y y y

y y y y y


y?


? y y y ?


y

TARGET SLICER 3 GUI FEATURES

WORKSPACE (DESKTOP) LAYOUT

Collapsible component windows (like gui, viewer, console, etc.)

Configurable arrangement for component windows

Ability to save/load preferences (
i.e
. workspace configuration, preferred viewing mode)

Additional viewing modes (lightbox for instance)


GUI PANEL APPEARANCE AND BEHAVIOR

Ability for programmer to customize the style of widgets rather than

relying on platform
-
specific look, or some default ugly look.


WIDGET SET

Basic modern widgets

Composite widgets

Ability to define custom widgets


PROGRAMMING INTERFACE

C++ (speed) with bindings for scripting language good, but not required.

(Tradeoff ease of prototyping with interaction speed)


COMMUNITY PROVISIONS

Detailed set of design guidelines for developers (see GNOME human interface guidelines 2.0)


SLICER 3 GUI WIDGET WISH LIST

BASIC WIDGETS:

Top
-
level widgets, frames, tabs (or other structural dividers), dialogs, messagebox, button, radio button, slider, scrollbar, th
umbwheel,
colorwheel, file browser, listbox, entry, canvas, label, bitmap widget, rich text or html widget, checkbox, menu (pulldown, c
asc
aded) and
menu button, graph/chart, histogram, table, tree, (continue)….


COMPOSITE WIDGETS:

Slice viewer (for single and multi
-
volume / time
-
series),

Multi
-
slice viewer (for single and multi
-
volume / time
-
series),

3D Viewer,

Single pane info viz viewer (for data not to be seen in spatial context of 3D viewer.)

lightbox viewer (for single and multi
-
volume / time
-
series),

layers editor for compositing/viewing (behavior for multi
-
modal data?),

Transfer function editor,

Material editor (surface properties, etc.)

Volume selector,

Model selector,

MRML node properties dialog box,

Data model viewer (hierarchy editor)

Task viewer,

Console or log widget,

(continue)…