From: Chris C. <ca...@al...> - 2002-01-23 13:51:29
|
I've just written a bit more into segmentcommands.(h|cpp). I'm not sure how we should handle refreshes to the segment canvas when something major changes, like a segment being moved, added or erased, or a time signature being inserted and therefore requiring all the bar lines on the LoopRuler to move. It seems reasonable to use the same MultiViewCommandHistory to implement undo/redo on the segment canvas as on the other views. The command history class provides a commandExecuted signal that passes a pointer to the command that's just happened, and I've made some rather empty base-classes for commands (in basiccommand.h) that could be used to discriminate between commands that affect the segment canvas and those that don't. So I'm pretty clear on how we know we have to do the refresh, I'm just not clear on how the refresh would happen. Also, I haven't even managed to get the undo/redo to appear on the main view. The way it's done for (e.g.) NotationView is that the View (which subclasses KMainWindow) calls attachView on the command history object, passing in its own action collection, and the command history adds the undo/redo menu options and toolbar buttons. (See the EditView constructor.) I tried to do the same thing from RosegardenGUIView, only to discover that the GUIView is not a KMainWindow but just a bit of one and therefore has no actionCollection. So I tried an obvious place in RosegardenGUIApp (line 374), but that doesn't work. Any bright ideas? (These GUIDoc/GUIView/GUIApp classes are a complete tip -- guess that's what comes of starting out by generating them automatically without really understanding what their organisation actually is.) Chris |