[mcclim-devel] some questions

Orm Finnendahl o.finnendahl at inm.mh-freiburg.de
Thu Dec 2 21:08:24 UTC 2010


Hi all,

 I posted here before quite some time ago but had to interrupt my
work. Now I reserved time to be able to concentrate on the
implementation in mcclim.

I'm trying to program a frontend for the definition of specialized
scores of a self-designed system for live-electronics in contemporary
music (the backend is done in pure data, but most of the hard work is
already getting done in lisp).

One part of the frontend is supposed to be similar to a vector
graphics program, enabling the creation of straight horizontal colored
lines and the nested grouping of those lines. The user should be able
to move those lines/groups around, stretch them, clip them and do some
other basic editing operations such as copying, insertion and deletion
(for an idea, how those graphics look like, you can have a look at:
http://icem-www.folkwang-hochschule.de/~finnendahl/download/sandgetriebe-ausschnitt.gif
).

I used the clim-fig demo application as a point of departure and try
to build around this to get a better grasp of the concepts before
restarting from scratch.

Here are my questions:

1. highlighting: I successfully hooked into the highlighting
   function. All lines are a presentation using output-recording and
   highlight on mouse over. I would like to be able to change the
   highlighting context (with some keystroke) so that e.g. not a
   single line is highlighted, but all lines of the group, it is
   contained in. I could do that manually within the highlighting
   routine by traversing the parent tree of the highlighted object,
   but I wonder whether it could be possible to hierarchically nest
   the presentation type classes (and their objects) in a way that the
   presentations are sensitive to the current context and highlight
   accordingly without having to replay them on change of context.

2. selection: clicking on a presentation (or a group of presentations)
   should select that group by displaying a dashed line around the
   smallest enclosing region of the selected objects and attaching a
   small square or icon to that square for resizing. If I got the
   concept correctly, the dashed line plus small square should be
   displayed as one or more presentations (e.g. of type "region"),
   which are sensitive to mouse gestures for moving or resizing.

   Should these presentations get appended to the output record? It
   seems a little awkward to always replay the whole output record if
   presentations are deselected. So I wonder how would be the
   canonical way to do it (I know about incremental redisply, but
   would it fit here)?

3. I didn't succeed in changing the command invoked on a left
   mouse-click on a canvas. It is initially defined with
   "define-presentation-to-command-translator" but I couldn't change
   the definition to invoke different comands depending on the state
   of the program. (Like in a drawing programm: when you change the
   tool in the toolbar, the mouse-click invokes a different command).

   As far as I understood, the command table is resposible for the
   bindings, but I didn't find the mechanism for changing the current
   commmand table.

Any help or correction of my assumptions is greatly appreciated!

Yours,
Orm




More information about the mcclim-devel mailing list