[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