M11: action-trigger buttons + keybinding labels in bank_panel

New pure action_buttons module (strip layout/hit-test + label format,
CTest-covered). Panel strip fires capture/insert/provenance actions via
NamedCommandLookup + Main_OnCommand; labels from kbd_getTextFromCmd.
This commit is contained in:
2026-07-26 18:44:49 -04:00
parent daa4338218
commit 36bdef742a
5 changed files with 665 additions and 3 deletions
+19 -1
View File
@@ -301,6 +301,20 @@ target_include_directories(app_version PUBLIC src ${CMAKE_CURRENT_BINARY_DIR}/ge
add_library(provenance STATIC src/provenance.cpp)
target_include_directories(provenance PUBLIC src)
# ---------------------------------------------------------------------------
# 2k) Pure action_buttons library — NO REAPER, NO SWELL. The Milestone 11
# action-trigger button strip: strip rect + N buttons at a minimum width ->
# per-button rects (equal tiling; overflow HIDES excess on a narrow panel
# rather than clipping), point -> button hit-test, and the button label format
# (action name + SDK binding string -> label, with the unbound/blank case
# degraded to an explicit marker and an over-long binding truncated). Split out
# so the layout + label math is unit-tested outside the DAW; the bank_panel
# draw + NamedCommandLookup/Main_OnCommand dispatch + kbd_getTextFromCmd query
# are DAW-verified. Mirror of mode_switch / tab_strip.
# ---------------------------------------------------------------------------
add_library(action_buttons STATIC src/action_buttons.cpp)
target_include_directories(action_buttons PUBLIC src)
# ---------------------------------------------------------------------------
# 3) Standalone tests for the pure modules (run without launching REAPER).
# ---------------------------------------------------------------------------
@@ -395,6 +409,10 @@ add_executable(provenance_tests tests/test_provenance.cpp)
target_link_libraries(provenance_tests PRIVATE provenance bank_model)
add_test(NAME provenance_tests COMMAND provenance_tests)
add_executable(action_buttons_tests tests/test_action_buttons.cpp)
target_link_libraries(action_buttons_tests PRIVATE action_buttons)
add_test(NAME action_buttons_tests COMMAND action_buttons_tests)
# ---------------------------------------------------------------------------
# 4) The REAPER extension — a loadable module (dlopen'd by REAPER, not linked).
# ---------------------------------------------------------------------------
@@ -433,7 +451,7 @@ add_library(reaper_reasampler MODULE
src/bank_book.cpp
src/owned_manifest.cpp
)
target_link_libraries(reaper_reasampler PRIVATE bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model insert_plan render_settings batch_capture tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile prune_button app_version provenance)
target_link_libraries(reaper_reasampler PRIVATE bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model insert_plan render_settings batch_capture tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile prune_button app_version provenance action_buttons)
target_include_directories(reaper_reasampler PRIVATE ${SDK_INC} ${WDL_INC})
# OUTPUT_NAME is channel-derived (Phase V, V4): "reaper_reasampler" (stable, default) or
# "reaper_reasampler_beta" (beta). REAPER dlopen's any reaper_* module, so both channels'