From: thetza on
I've managed to get McClim installed and running on debian with cmucl
and slime, been playing with the examples, but I can't seem to wrap my
head around it. It might be b/c I haven't found a good tutorial, but I
think it has more to do with the preconceptions about what a GUI
toolkit is and how GUI programs are structured (I've been developing
GUI's with wxWindows, GTK, and Tk). So here are my preconceptions:

To me, a GUI toolkit at the least:
a. Handles all the low-level interaction with underlying graphics
engine (xlib, etc).
b. Has a collection of 'widgets', preferably arranged in an OO fashion
so you can make your own widgets from existing ones.
c. Has some sort of event system.

And to me, a GUI program is structured as follows:
a. You create instances of different widget with various options,
b. you lay them out in a geometry manager,
c. you bind events to your widgets, and
d. you start your event loop.

Can someone compare and contrast McClim to the more "traditional" gui
toolkits, both in terms of its scope/purpose/goals and how McClim
applications are to be structured?

thanks,
Thetza

From: Ken Tilton on


thetza wrote:
> I've managed to get McClim installed and running on debian with cmucl
> and slime, been playing with the examples, but I can't seem to wrap my
> head around it. It might be b/c I haven't found a good tutorial, but I
> think it has more to do with the preconceptions about what a GUI
> toolkit is and how GUI programs are structured (I've been developing
> GUI's with wxWindows, GTK, and Tk).

Pardon a non-responsive response, but why do you want to use McClim or
any form of Clim? Most of us are using Tk, Gtk, wxWindows, or
implementation-specific GUIS that work just like the ones you are used
to. Clim never really caught on.

kt

--
Cells: http://common-lisp.net/project/cells/

"I'll say I'm losing my grip, and it feels terrific."
-- Smiling husband to scowling wife, New Yorker cartoon
From: Troels Henriksen on
"thetza" <thetza(a)mm.st> writes:

> It might be b/c I haven't found a good tutorial, but I
> think it has more to do with the preconceptions about what a GUI
> toolkit is and how GUI programs are structured (I've been developing
> GUI's with wxWindows, GTK, and Tk).

You're right, it's because CLIM is very weird compared to mainstream
GUIs, sort of like CL is different from mainstream languages. We are a
bunch of people that really like the CLIM UI paradigm, but you should
not expect to be able to create "standard" user interfaces with it.

> a. Handles all the low-level interaction with underlying graphics
> engine (xlib, etc).

CLIM does this.

> b. Has a collection of 'widgets', preferably arranged in an OO fashion
> so you can make your own widgets from existing ones.

CLIM has this, but there are not very many widgets (called "gadgets"
in CLIM-speak) in McCLIM. Also, their interface is a bit limited, and,
at least the CLIM applications I know of, do not use very many
gadgets.

> c. Has some sort of event system.

There is an event system, but unless you're writing gadgets or other
relatively low-level stuff, you're not meant to use it. One of the
hardest things to wrap my head around when I learned CLIM was that it
is not really event-based - instead, CLIM takes care of reading
gestures from the user and looks up the corresponding commands in
command tables that you have defined for your application.

> a. You create instances of different widget with various options,

You need to create the elements of your application, of course - but
you generally have fewer discrete UI elements in CLIM applications
than in normal applications, though my view may be colored by the fact
that I have never tried the commercial CLIM implementations, nor a
"real" commercial CLIM application.

> b. you lay them out in a geometry manager,

You do this in CLIM as well.

> c. you bind events to your widgets, and

You do this in CLIM as well.

> d. you start your event loop.

You do this in CLIM as well.

(Though all of these things are generally done via the
`define-application-frame' macro)

> Can someone compare and contrast McClim to the more "traditional" gui
> toolkits, both in terms of its scope/purpose/goals and how McClim
> applications are to be structured?

I recommend that you take a look at the Examples directory of McCLIM,
as well as a look at the code for Beirc
(http://common-lisp.net/project/beirc/), a typical free CLIM
application.

--
\ Troels "Athas"
/\ Henriksen
From: David Lichteblau on
On 2006-10-26, Ken Tilton <kentilton(a)gmail.com> wrote:
> Pardon a non-responsive response, but why do you want to use McClim or
> any form of Clim?

Perhaps because CLIM implements some interesting concepts, and with the
prominent exception of normal widgets ("gadgets") is rather complete.

> Most of us are using Tk, Gtk, wxWindows, or
> implementation-specific GUIS that work just like the ones you are used
> to.

Using or implementing?

There are certainly lots of Lisp programmers _implementing_ such GUI
toolkits in Lisp (LTK, various GTK+ bindings, Graphic Forms, cells-gtk).

How many real applications based on those libraries are there?

(Oh, I know, closed-source commercial software using Franz CG and
LispWorks CAPI that nobody has ever heard of. Right.)

> Clim never really caught on.

Perhaps not until McCLIM came along. Now there are various non-trivial
applications using CLIM, e.g. Climacs, Beirc, Gsharp, and of course
Closure. Neither of which is complete and perfect, but all of them are
basically usable and certainly more than just a toy example.


d.
From: Ken Tilton on


David Lichteblau wrote:
> On 2006-10-26, Ken Tilton <kentilton(a)gmail.com> wrote:
>
>>Pardon a non-responsive response, but why do you want to use McClim or
>>any form of Clim?
>
>
> Perhaps because CLIM implements some interesting concepts, and with the
> prominent exception of normal widgets ("gadgets") is rather complete.
>
>
>> Most of us are using Tk, Gtk, wxWindows, or
>>implementation-specific GUIS that work just like the ones you are used
>>to.
>
>
> Using or implementing?

Cells-Gtk, LTk, and Celtk/Cello (the line is blurry now) are all being
used, tho I confess my Cells-Gtk assessment is based on the fact that it
seems to be actively supported.

>
> There are certainly lots of Lisp programmers _implementing_ such GUI
> toolkits in Lisp (LTK, various GTK+ bindings, Graphic Forms, cells-gtk).

The one you want is Cello, now based on Tk/Tcl and OpenGL. Full event
stream, true callbacks, access to the many Tk/Tcl libs, and terrific
portability (of more than just the native look/feel GUI -- sockets,
threads, file manager services, the whole Tcl language really.

And is being used heads down in development of something I hope to
release in 3-6 months, so very active and very real-world.

>
> How many real applications based on those libraries are there?

Not fair. Ron had it wrong. Lisp programmers are /too/ social, spend all
their time chatting on c.l.l or closing pubs, never actually write any code.

>
> (Oh, I know, closed-source commercial software using Franz CG and
> LispWorks CAPI that nobody has ever heard of. Right.)

What do you mean by "Right."? You do not believe it? :) And why does it
bother you that you have never heard of them? The testimonials from CAPI
users make clear they are using that library in anger, at least, and I
do not think Franz suppports itself without people using --- well,
whaddoIknow? CG is just win32 and for all I know they have more users on
Gtk (or not doing GUIs at all).

>
>
>> Clim never really caught on.
>
>
> Perhaps not until McCLIM came along. Now there are various non-trivial
> applications using CLIM, e.g. Climacs, Beirc, Gsharp, and of course
> Closure. Neither of which is complete and perfect, but all of them are
> basically usable and certainly more than just a toy example.

I heard LW was deprecating CLIM, and I think Franz is as well. My take
is that CLIM /tried/ to be this incredibly better presentation manager
the way CLOS is incredible at OO, but was badly designed from the
programmer's perspective -- too damn hard to learn and use, and
unnecessarily so. That last bit is unforgivable.

Meanwhile, look at this thread. Programmers coming to Lisp know how to
put up a GUI in any number of languages, then they run into CLIM. Ooops.
They also know a GUI is built up from widgets, and you concede CLIM
don't play that. Oooops. I am not saying Lisp should not do better than
other languages, but I am saying CLIM went in search of better along the
wrong axes.

CLIM was a bold leap and I love bold leaps, but this one did not pan out
and the energy going into McCLIM is just a mistake.

kt

--
Cells: http://common-lisp.net/project/cells/

"I'll say I'm losing my grip, and it feels terrific."
-- Smiling husband to scowling wife, New Yorker cartoon