Ever since a massive thunderstorm, I've been unable to send email in my customary way. This message has been stuck in my outbox half the day now. Let's see if *this* finally works.
On Friday, May 28, 2010, Ian Gardner wrote: > As it was me responsible for starting kicking up all this dust, I feel > responsible for at least helping to start sweeping it all up ;-) I still have the message open from yesterday when I saved out a copy of your patch and determined I was going to make time to look at it and figure out whether to edit the patch itself, send it back for revisions, etc., to answer your last message. I just never actually got that far. So now that I have, I'm not totally clear on what bit of this is responsible for the controversial change, so I'm not going to hand edit the patch and apply it. > How about this: as a learning exercise for me how about I have a go at > creating a proof of concept implementation which, as you say, establishes > the ability to put a linked segment somewhere else, and at the very least > playing back properly at its location. Sounds like a plan. As a starting place, just have the linked copy behave as though it were a normal copy sitting on the target track. We can get everywhere else from there, I think. > to aim at. Once I have something vaguely functional I can make a patch or > even commit it to a branch (nice and safe, away from the trunk) and we can > argue about it and refine it from there as you point out. I'd rather add you to the project and run it that way. You know which bit of your original patch to avoid committing. That stuff can go straight into trunk/ as far as I'm concerned, and you can do this segment symlink business in a branch, taking as long as you need to work through it. > "phase 1" implementation of linked segments would be to have a look > through whatever's behind the control-drag function which currently > creates deep-copied segments, and make a new drag mode to create links > instead by some means, be that based on triggered segment functionality or > by some other means as yet undreamed of. This may take me some time, but > hopefully will be fun(!) trying. I haven't actually worked on the main window/segment canvas in ages, but this is probably a tool like in the edit views, and the SegmentMover or whatever probably assembles and invokes a MacroCommand. It may be possible to accomplish this simply by adding another key modifier, although I don't know what's available off the top of my head. Shift breaks the grid snap, Ctrl causes a copy, I'm not sure if Alt is changing anything or not. If not, adding Alt to make a symlink might be reasonable. Ctrl+Alt(+Shift)+drag and drop to deposit a symlinked copy at the location of the mouse release. As to the mechanics of making that work, I'm thinking it's probably cleaner from a maintenance perspective if this comes into being as something entirely new, even if it involves some redundant code. Do a symlink segment as a subclass or special extension of Segment. It's got to have a pointer to the master segment, and steps have to be taken to ensure that pointer remains valid (I imagine a lot of operations might actually delete and re-create segments; that is certainly true with Event objects, where a lot of operations don't change the original, but delete it and create a new one made to order in its place) and then there's the matter of getting the sequencer to treat this thing as though it were a segment on this track. That's going to be the tricky bit. I don't know if the triggered segment mechanism already offers a lot of canned solutions to those problems or not, never having studied it. Anyway, don't take anything I just said in the preceding three paragraphs to be any kind of mandate, or a clear map to follow. I'm brainstorming from my armchair without looking at any of the code, and it's entirely possible everything I just said is completely stupid. Uh, get yourself a SourceForge ID and let me know what it is. ------------------------------------------------------------------------------ _______________________________________________ Rosegarden-devel mailing list [email protected] - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-devel
