CLIM mail archive


Getting going on CLIM

Hi... I've asked to be added to the CLIM mailing list but I don't know if I
have been added yet.  So please CC me on any replies.  Also please excuse me if
any of this has been covered before.

I'm having to port some code from a Symbolics to a Sun.  I figured it would
be a good idea to move it to CLIM so I hopefully can run the same code on
both machines.

For the moment we have a copy of CLIM 0.9 for Franz lisp.  Soon we should have
it for Lucid lisp and we hope eventually for Symbolics.  But Franz's version
is what I've been trying to play with.

Two of us have been using it so far (about a week) but it is mainly me.
I'm running it on our main Sun server and using the X server on the
Lispm as the display.  (If you want to blow your Lispm X server away,
try the CLIM demos (eg CAD-DEMO).)  The other person has a Sun.

The documentation for 0.9 is, shall we say, not up to the standards of
Symbolics yet.  There's lots of stuff missing and some stuff that seems wrong.
We didn't get an address from Franz to send bug reports to.  I tried sending a
message to Richard Lamson but his host must be down (it bounced) to see
if ILA had a bug address and was willing to accept bugs directly.

Of course what I want to move to the Sun has all sorts of Symbolics-specific
stuff in it (eg, highlighting menus, etc) and so I'm trying to figure out
how to get this stuff set up.

Ok, so I built a small application window.  Of course you can just copy an
example but the docs make you want more (Uh, how do you get to use :vlines
instead of :vs?).

The next thing was commands (for menus, for now).  Again the docs were
sparse.  That would be ok if I had more examples or the source code but
I don't.  The DEFINE-application-COMMAND's first arg gave me some
problems (do I want :COMMAND-TABLE T or something else??).   How do I
get different gestures to do different things on the same item in the
toplevel menu?  I don't know for now.

Then I figured I'd put some of the options on submenus of the toplevel menu.
It seemed they intend for that to be done but I had to guess how.  I first tried
:MENU-GROUP 'sub-menu-group-name in the clause but that didn't work nor did it
complain.  So then I tried :MENU 'sub-menu-group-name and that seemed to work.

Well, now my problem was I wanted to dynamically change the submenu.  Ok,
there are some documented functions to add or remove items from a menu.
Unfortunately, there isn't a documented way to get the first arg (the
menu) for those functions.  So I wrapped a "(SETQ menu-name" around
the DEFINE-MENU-GROUP invocation to get the (undocumented) value.  [Of course
if I look at the internals (CLIM-SHARE:) there are ways of getting the
menu but then I'm guessing about what they do and will they still be there

So I got to where I could add or delete items from the submenu.
However, when I click on the toplevel menu item that pops up this menu,
I still get the original menu.  I still get the same menu even if I exit
this application frame and launch another.  (And, how are you to get the
frame that is launched by LAUNCH-FRAME?  It took me a good long while to
get a handle on it.)  So someone is caching that menu pane apparently.
I don't know if it is CLIM or my X-Server (after Symbolics's X-server is
still a fledgling).  (It does appear that CLIM is caching the frame.  There
is a property :REUSE on it (or something like that).  But I didn't see it
in the docs.)

I took a crack at starting to write a highlighting menu (using
redisplay) but didn't get far enough to even try running it...

Of course, I could probably write something right now that only took commands
or single button clicks on menus and I might be able to do that.  But I 
want/need more than that.  (For instance, the current reader on the
Symbolics frame will read either a command (colon style) or an english sentence
(multiline) or an expression to be evaled (initial paren or comma).  Try doing
that and getting rubouts to work properly!)

So, I'm looking to share ideas and such with other people.  I suspect the
first part is figuring out what you can do within CLIM and how it works.
Little things, like what are the valid types in the Menu-groups or some
more info about pane classes.

Of course I'd love to pick up code someone else has written.  (I do have
a few macros that have #+/-Symbolics in them to switch between using non-CLIM
code on the Symbolics or a possible equivalent under CLIM.  They are all
pretty trivial at this point but they are part of what I am doing to get
my code to run under both systems.)

Yes, I know there is supposed to be a CLIM course in my neighborhood next
week but I'm afraid I'm not going to be able to go....  I wish I could but...

By the way, is CLIM going to have (BEEP) or its equivalent?

Main Index | Thread Index