Since hans seems busy, I'll write up a answer for this. Everyone feel free to throw in corrections wherever I make a mistake.<br><br><br>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)
<br><br>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.
<br><br>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?))
<br><br>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.<br><br>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.
<br><br>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.<br><br><br>Corey<br><br><div><span class="gmail_quote">On 1/6/07, <b class="gmail_sendername">Hans Oesterholt-Dijkema</b> <
<a href="mailto:email@example.com">firstname.lastname@example.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
I'll do that some time in the future, but it has no priority at the
I'm too busy working on a homeopathy program, using mzgtk2.<br>
The main reason I started the project some years ago, was because<br>
I wanted a solid portable widget for a GUI for bigloo. In the<br>
process I switched to PLT Scheme, mainly because it implements<br>
the R5RS standard much better and macro support is fabulous.<br>
I did look a littlebit to MrEd. Not in depth however. I still wanted<br>
a solid widget base that is constantly under development and that<br>
is portable enough for Windows/Linux/UNIX/Mac OS. Gtk <br>
provided me with what I wanted, so I went with that. <br>
The binding code for MzGtk2 is also based on ROOS, an OO <br>
system that is very similar to perl's OO system. I always liked<br>
perl's OO system for its simplicity.<br>
Chongkai Zhu schreef:
<blockquote cite="http://mid000c01c731b2$d6f88760$25e8619b@DrMathematica" type="cite">
Would you please discuss the difference between MzGtk2 and MrEd
(and any other GUI toolkits for MzScheme)?
----- Original Message -----
From: "Hans Oesterholt-Dijkema" <a href="mailto:email@example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><firstname.lastname@example.org></a><span class="q">
To: "mzscheme Mailing List" <a href="mailto:email@example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><firstname.lastname@example.org></a>
Sent: Saturday, January 06, 2007 7:24 AM
Subject: [plt-scheme] Announce: mzgtk2 release 2 version <a href="http://2.6.10.002" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">2.6.10.002</a>
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
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:
<a href="http://www.elemental-programming.org/wiki/mzgtk2-mzgtk2-making.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.elemental-programming.org/wiki/mzgtk2-mzgtk2-making.html</a>
<a href="http://www.elemental-programming.org/wiki/mzgtk2-screenshots.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.elemental-programming.org/wiki/mzgtk2-screenshots.html</a>
<a href="http://www.elemental-programming.org/wiki/mzgtk2-ChangeLog.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.elemental-programming.org/wiki/mzgtk2-ChangeLog.html</a>
<br>_________________________________________________<br> For list-related administrative tasks:<br> <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">
http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br><br><br></blockquote></div><br><br clear="all"><br>-- <br>((lambda (y) (y y)) (lambda (y) (y y)))