[MLton] Re: New mGTK pre-release

Wesley W. Terpstra terpstra@gkec.tu-darmstadt.de
Thu, 9 Dec 2004 19:52:05 +0100


--YiEDa0DAkWCtVeE4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, Dec 02, 2004 at 12:35:44AM +0100, Ken Friis Larsen wrote:
> Give it a spin and let us know what you think.

So, I tried it out, but was surprised that Table.attach vanished.
How are you supposed to pack tables now?
I also still miss being able to hook a filedescriptor into GMain.

Why do all the widgets live in the top-level namespace?
A nested Gtk.Window.* would be much more convenient, imo.

I've also made progress on a glade->mgtk converter.
I was first going to use fxp, but then realized that XSL is
probably a more appropriate language for the task at hand.

It can take in a glade file and produce an sml file.
Only a few widgets are supported, and not completely.
Only two signals are supported: clicked + destroyed.
It only works with mgtk 0.92 b/c of the Table issue.

I am hoping the code autogenerator you guys use could also output
some XSL code to tie the two together. I also think that a future,
improved version of glade2sml should be part of the mgtk distribution
since it makes rapid interface development much easier.

One of the things I strived to acheive is that the output SML file
does not need to be modified. Instead, you write the funcionality in
a separate file. Even if the GUI is changed, the modules are setup
in such a way that the mess will still compile. That's what these
'Hooks' modules do for you.

I've attached the tar.gz and an example gui.
To run the generator, you need to do:

xsltproc sml.xsl bah.glade

(xsltproc is part of libxslt which is part of the gnome project)

If you make your own GUIs with glade, be aware that you need to mark the
project as C++ so that you can set the visibility. Only 'public/protected'
widgets are exposed in the XXX_GUI signature. The base window should almost
always be protected. Also, be warned that only glade-2 is supported, and due
to a bug in the glade-2 xml, you will need net access when running xsltproc.

Is it possible that the files
	sig.xsl
	pack.xsl
	make.xsl
could be autogenerated for a more complete widget coverage using your tools?

I think that sig.xsl should be quite easy.
pack.xsl and make.xsl need to know about how the glade xml format relates to
the mgtk api calls, so this may not be doable automatically.

-- 
Wesley W. Terpstra

--YiEDa0DAkWCtVeE4
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="glade2sml.tar.gz"
Content-Transfer-Encoding: base64

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

--YiEDa0DAkWCtVeE4
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="bah.glade.gz"
Content-Transfer-Encoding: base64

H4sICF6YuEEAA2JhaC5nbGFkZQDtWF1z4jYUfd78Cq0eO+Uz204nA+xsGofQksCAu5k8aYQt
bBVZ8khygP76yjaELIjIbHans528yfY598r33iPpqvNxlTDwSKSigndhq96EQGnMQ8wEJ13I
BfzYA533tdpPNZCIkFyAnGCear2zzvur0e/+w9gDEcMhqVGuiZzjgIDpw9T3bgGMtU4vGo3i
cz3iIiF1IaPyudauN+uhDmHv7KyzZyB/taRhRDQIGFaqC/t6cU95KJYQ0LALL3FseAB0UilS
IvUa4Ihw3YWFoSSBgOPEzD9YrdAjVXRGGdVr2DNwTQJNwk5jy/zSTEkrKIzAni8z8jJUU22A
QEvMFcMaG1oXromCvWUx35aDvk6Nm77/J7of3F2N7pE/Gg+9z97wZVppG6VCUW0y92QBjUdT
dDe6816mm0xiBnvXmCnH70mi6D+4YixCorQUa7SkOkYpliYjlZyEJBASm6xUcaIWNEUaq8UM
SxTTii4KVmqK5AROnpsNun+1S5ApeHQzuPNNnCe3nxyJiiR+LCovt9CffPo88B9yon+D7r2p
/5ycs4OYsjC3Y8YHAvCLPBT1X9RZC5bIk+rXBudIiqWp2HYVaCBYlvBq6FgkwuiSiExZI27j
mKkgleKA8gj2mm58OZ8jlC1nE9d3h0Ed4hlhZVBZPsyD+u6EiFqwrDRpWRJKDw56pgjKeEgk
o5xYwnaEkmC5yNJq+L8zpel8XS4bf/w19QfXD2joXfsO3lLiih4UYWadLReOKvgVZjTie9mz
4NZbXP0Xl8UUhxXsWVCdRlkl+dBU1cKUlT3PZK4R1hoHsduRpFG8Q7tqQIu0MnYmtBbJE7zt
igsSab5nmHKcU8Zc8dmh92L0FJmNxBobjZ0uufZ3l5wrJm+Se5Pcc8m5LO9JzmX6v5fcZWYm
zEvNzYrxwT73igP0K8UbYI7mIsjPCK+S+ubHTtN6BY+SMErmpXIn3nDgXVuOfhZe8U9ImCMT
o8HC7koZaWG2DUSOM6dgEJsOjBFpDurk6Z3JpUbm4E7nNMB5fSBNc9Kt4D+D5q/gigSg3Wx+
AM0PF+e/XbTOQf/Wh42vFZcrjF+Ky7XA/q/3s7EUkemT1CWWpcLSzQvToXytzLKZyfs31JiQ
1PjFu2ZxPBn1J950WuxBputEk0H/xrUZzSUOShOuFTLNzAaElCZpvnG0Xr/Yf796/MEW+/Jh
G8FnH3YvHZcn5eVB+we5QGk76G8XKG8XKCXZeYGy33icf6sLlONnkpgwJsBSSBa6zbjakOOs
o52InVKpGbFTj/QjdvCLLYmdsrJ3G3bwkdbkiOXDvuOIVTvQueg2Dm6x/wUYo2ksXxcAAA==

--YiEDa0DAkWCtVeE4--