feat(view): D4 Design View action family + reapply-on-open wiring
Register toggle/activate/tag/untag/show-both actions driving the D2 shell and D3 model; reapply saved active mode on project load via a persist load-signal seam. Shared guidString helper; pure nextModeId unit-tested.
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
// track_guid — the ONE place a MediaTrack* is formatted into the canonical GUID
|
||||
// string used as a membership-index key. Both the Design View shell (view.cpp) and
|
||||
// the actions layer (actions.cpp) key membership on this exact string, so the key
|
||||
// contract lives in a single helper rather than being re-derived (and drifting) at
|
||||
// two call sites (the cross-module key contract flagged in D2 review).
|
||||
//
|
||||
// REAPER-facing: the .cpp includes reaper_plugin_functions.h WITHOUT
|
||||
// REAPERAPI_IMPLEMENT (main.cpp owns the API pointers; here they are extern —
|
||||
// CLAUDE.md §contract). MediaTrack is forward-declared so this header stays SDK-lite.
|
||||
|
||||
#include <string>
|
||||
|
||||
class MediaTrack;
|
||||
|
||||
namespace reasampler {
|
||||
|
||||
// REAPER's canonical "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" form of a track's
|
||||
// GUID (GetTrackGUID -> guidToString). Empty string if `tr` has no GUID. This IS
|
||||
// the membership-index key format — it must match guidToString's braces exactly so
|
||||
// the view tree keys and the model/actions keys align.
|
||||
std::string guidString(MediaTrack* tr);
|
||||
|
||||
} // namespace reasampler
|
||||
Reference in New Issue
Block a user