Plugin Catalog (Solution Coverage)

1. Core host/runtime projects

ProjectRolePrimary source files
RetroWaveLab.Host.WinFormsMain window, root/context menu construction, docking/floating host, layout restore/save.src/RetroWaveLab.Host.WinForms/MainForm.cs, src/RetroWaveLab.Host.WinForms/Docking/DockHost.cs
RetroWaveLab.Core.RuntimeRuntime bus implementations, document service, preset store, plugin loader.src/RetroWaveLab.Core.Runtime/Buses.cs, src/RetroWaveLab.Core.Runtime/Documents.cs, src/RetroWaveLab.Core.Runtime/Presets.cs, src/RetroWaveLab.Core.Runtime/PluginLoader.cs
RetroWaveLab.UI.GraphingReusable graph control engine and point edit dialogue.src/RetroWaveLab.UI.Graphing/GraphEditorControlBase.cs, src/RetroWaveLab.UI.Graphing/GraphPointEditDialog.cs
RetroWaveLab.VstBridgeManaged bridge API used by VST host plugin for native bridge calls.src/RetroWaveLab.VstBridge/VstBridgeApi.cs
RetroWaveLab.Codecs.WavWAV codec plugin for read/write.src/RetroWaveLab.Codecs.Wav/WavCodecPlugin.cs

2. Docked pane plugins

Plugin projectPaneIdTitlePlacementDock flags
RetroWaveLab.Plugins.FileInspectorfile-inspector.mainFile InspectorLeftAllowVertical=true, AllowHorizontal=true, CanUndock=true (default)
RetroWaveLab.Plugins.SampleEditorcore.sample-editorSample EditorCenterAllowVertical=false, AllowHorizontal=true, CanUndock=false
RetroWaveLab.Plugins.SampleEditorcore.undo-historyUndo HistoryRightAllowVertical=true, AllowHorizontal=true, CanUndock=true
RetroWaveLab.Plugins.TransportMocktransport-mock.panelTransportTopAllowVertical=true, AllowHorizontal=true, CanUndock=true (default)
RetroWaveLab.Plugins.CursorDisplaycursor-display.panelCursorBottomAllowVertical=true, AllowHorizontal=true, CanUndock=true (default)
RetroWaveLab.Plugins.CursorInfocursor-info.panelCursor InfoBottomAllowVertical=true, AllowHorizontal=true, CanUndock=true (default)
RetroWaveLab.Plugins.VuMetersample-tools.vuVU MeterBottomAllowVertical=true, AllowHorizontal=true, CanUndock=true (default)
RetroWaveLab.Plugins.VstHostplugins.vst-hostVST BrowserLeftAllowVertical=true, AllowHorizontal=true, CanUndock=true

3. Plugin menu roots and key paths

These are the key menu paths currently registered by plugin code. Dynamic entries are shown as placeholders.

Plugin projectMain menu pathsContext menu paths
RetroWaveLab.Plugins.FileWorkflowFile.10.*, File.20.*, File.30.*, File.40.{caption}, File.50.Exit-
RetroWaveLab.Plugins.SampleEditorEdit.10.Undo, Edit.10.Redo, Edit.20.Copy/Cut/Paste..., View.pluginsgroup.Show Sample Editor, View.pluginsgroup.Show Undo HistoryOwns waveform menu rendering + calls host context menu surface SampleEditor.Wave
RetroWaveLab.Plugins.MiscEffectsEffects.misc.Invert, Effects.misc.Reverse, Effects.misc.Silence, Effects.Special.Seamless Loop...effectsgroup.Silence on SampleEditor.Wave
RetroWaveLab.Plugins.SmoothingEffects.100.Amplitude.Smootheffectsgroup.Smoothing on SampleEditor.Wave
RetroWaveLab.Plugins.AmplitudeEffects.100.Amplitude.* (Amplify, Channel Mixer, Dynamics Processing, Envelope, Hard Limiting, Normalize, Pan/Expand, Stereo Field Rotate)-
RetroWaveLab.Plugins.FiltersEffects.100.Filters.*-
RetroWaveLab.Plugins.ConvertSampleTypeEdit.90.Convert Sample Type-
RetroWaveLab.Plugins.SettingsOptions.90.Settings...-
RetroWaveLab.Plugins.ExternalToolsTools.10.Manage Tools..., Tools.20.{menuLabel}-
RetroWaveLab.Plugins.VstHostEffects.1000.VST.Rescan VST3 Plugins, Effects.1000.VST.Apply VST, Effects.1000.VST.{label}, View.pluginsgroup.Show VST Browser-
RetroWaveLab.Plugins.TransportMockTransport.Playback.*, Generate.Test Signals.*, View.pluginsgroup.Show Transport-
RetroWaveLab.Plugins.CursorDisplayView.pluginsgroup.Show Cursor-
RetroWaveLab.Plugins.CursorInfoView.pluginsgroup.Show Cursor Info-
RetroWaveLab.Plugins.FileInspectorView.pluginsgroup.Show File Inspector, View.focusgroup.Focus File Inspector, File.Diagnostics.Dump Sample State-
RetroWaveLab.Plugins.VuMeterView.pluginsgroup.Show VU Meter, View.debug.Publish Demo Meter Frame-

Menu ordering rules are in Menus.

4. Canonical registration patterns used by catalog entries

// menu registration pattern used across plugins
foreach (var menu in GetMenuContributions())
{
    context.WindowManager.AddMenuContribution(menu.Sort, menu.MenuPath, menu.Execute, menu.IsEnabled);
}
// dock pane registration pattern
yield return new DockPaneRegistration(
    PaneId: "example.pane-id",
    Title: "Example Pane",
    DefaultPlacement: DockPlacement.Left,
    CreateView: () => new ExampleControl(),
    AllowVerticalNeighbour: true,
    AllowHorizontalNeighbour: true,
    CanUndock: true);

Back to top