[plt-scheme] Announce: mzgtk2 release 2 version

From: Corey Sweeney (corey.sweeney at gmail.com)
Date: Sat Jan 6 14:18:06 EST 2007

Since hans seems busy, I'll write up a answer for this.  Everyone feel free
to throw in corrections wherever I make a mistake.

mzgtk2 is based on gtk (obviously).  It is basically just access to the gtk2
procedures.  (plus you can use hans's objects which wrap the procedures).
GTK2 is very pretty, is themable, and has all the widgets you will probalby
ever want.  GTK is the closest thing to a standard GUI for scheme, as many
other schemes implement GTK... however each implementation probably uses a
differnt syntax.  not sure.  gtk is available on linux/unix/windows & mac
(not sure how the mac version works, but I know that mac has X11 support so
has to be able to run it)

Mred is based on wx-windows.  Actually, it's based on a old version of
wx-windows.  It's slower then GTK2, and for todays standards, it's ugly.
It's not themeable, and it lacks, many, many, widgets.  *however* there is a
reason to use it.  From what I've read, Mred is continuation safe.  mzgtk2
is not continuation safe.  This means that trying to use continuations that
interact with the gtk2 calls, can result in badness.  I'm not certain to the
nature of the badness, as I havn't tried it, but i can imagine it being bad,
as mzgtk2 is not in scheme during the gtk2 calls.  I'm not certain on this,
but I've speculated that making Mred continuation safe might be part of why
it's slower then gtk2.

There is another differnce.  mzgtk2 uses hans own OO system.  Mred uses the
plt-standard object system.  (it's standard to plt, there is not scheme
standard for a object system).  All the tools, including drscheme use the
Mred interface.  This also includes GUIbuilder  (and the other builder
project (mred-designer?))

There was also project called "mzgnome", which was similar in nature to
mzgtk2, except it was just the raw gtk2 calls.  It is no longer supported,
and gave way to mzgtk2.

However on top of the gtk2 calls in mzgnome, we wrote "Mrdead".  Mrdead is a
bunch of plt-standard objects that wrap the mzgnome gtk commands to exactly
match the Mred interface.  I.E.  It was possible to write a program that
workd with Mred, or gtk, depending on which module you "(require " 'd.
This was ideal cause it allowed use of the current tools, and at the
developers option, you could use either the continuation safe version (if
you wanted to use continuations), or the pretty version (if you wanted to
use themes or whatever).  Also this make gtk work with GUIbuilder, which as
pretty cool.

MrDead is just a bunch of classes that act as a wrapper using mzgnome
commands.  It should be fairly easy to replace the mzgnome parts with
whatever gtk syntax you want, and get it working with mzgtk2, but to the
best of my knowledge, this was never done.


On 1/6/07, Hans Oesterholt-Dijkema <hdnews at gawab.com> wrote:
>  Dear Chongkai,
> I'll do that some time in the future, but it has no priority at the moment
> I'm too busy working on a homeopathy program, using mzgtk2.
> The main reason I started the project some years ago, was because
> I wanted a solid portable widget for a GUI for bigloo. In the
> process I switched to PLT Scheme, mainly because it implements
> the R5RS standard much better and macro support is fabulous.
> I did look a littlebit to MrEd. Not in depth however. I still wanted
> a solid widget base that is constantly under development and that
> is portable enough for Windows/Linux/UNIX/Mac OS. Gtk
> provided me with what I wanted, so I went with that.
> The binding code for MzGtk2 is also based on ROOS, an OO
> system that is very similar to perl's OO system. I always liked
> perl's OO system for its simplicity.
> --Hans
> Chongkai Zhu schreef:
> Hi Hans,
> Would you please discuss the difference between MzGtk2 and MrEd
> (and any other GUI toolkits for MzScheme)?
> Thanks.
> Chongkai
> ----- Original Message -----
> From: "Hans Oesterholt-Dijkema" <hdnews at gawab.com> <hdnews at gawab.com>
> To: "mzscheme Mailing List" <plt-scheme at list.cs.brown.edu> <plt-scheme at list.cs.brown.edu>
> Sent: Saturday, January 06, 2007 7:24 AM
> Subject: [plt-scheme] Announce: mzgtk2 release 2 version
>    Dear All,
> I've released mzgtk2, subversion 002, based on the header files of
> Gtk+ 2.10.6. You should be able to compile mzgtk2 for Gtk+ 2.4.x
> and up.
> Changes:
> Added support for PLT Scheme threads in the MzGtk2 distribution.
> What MzGtk2 does is install a timer function in the event loop of
> Gtk+-2.x which runs about every millisecond. This function calls
> scheme_use_fuel() to give PLT Scheme the oppertunity to run threads.
> More information on:
> http://www.elemental-programming.org/wiki/mzgtk2-mzgtk2-making.html
> Screenshots:
> http://www.elemental-programming.org/wiki/mzgtk2-screenshots.html
> Changelog:
> http://www.elemental-programming.org/wiki/mzgtk2-ChangeLog.html
> Best wishes,
> Hans Oesterholt-Dijkema
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme

((lambda (y) (y y)) (lambda (y) (y y)))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20070106/98dd90d2/attachment.html>

Posted on the users mailing list.