feat(prune): R3 guarded deletion — confirm-to-delete + panel button
Extend BANK_PRUNE_FOLDER from report-only to dry-run→confirm-with-manifest→ delete exactly the pure-core orphan set (fresh recompute, stale entries skipped). Windows routes to Recycle Bin (SHFileOperation+FOF_ALLOWUNDO), else unlink. New pure prune_button module + footer button dispatching the action id. No ext-state write, no undo point (deletion is not REAPER-undoable).
This commit is contained in:
+16
-1
@@ -226,6 +226,17 @@ target_include_directories(owned_manifest PUBLIC src)
|
||||
add_library(prune_reconcile STATIC src/prune_reconcile.cpp)
|
||||
target_include_directories(prune_reconcile PUBLIC src)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 2g'''') Pure prune_button layout — NO REAPER, NO SWELL. The Phase R (Reclaim)
|
||||
# Wave-3 (R3, fork R-E) prune-button geometry: footer rect -> right-anchored
|
||||
# button rect (suppressed when the footer is too narrow), and point -> in/out
|
||||
# hit-test. Split out so the button's placement + hit-test math is unit-tested
|
||||
# outside the DAW; the bank_panel footer that draws it and dispatches the
|
||||
# "Prune bank folder" command is DAW-verified. Mirror of mode_switch / tab_strip.
|
||||
# ---------------------------------------------------------------------------
|
||||
add_library(prune_button STATIC src/prune_button.cpp)
|
||||
target_include_directories(prune_button PUBLIC src)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 2g) Pure realtime_record library — NO REAPER, NO SWELL. The M8 realtime-record
|
||||
# logic: capture scope + FX-tap point -> I_RECMODE / I_RECMODE_FLAGS values,
|
||||
@@ -354,6 +365,10 @@ add_executable(prune_reconcile_tests tests/test_prune_reconcile.cpp)
|
||||
target_link_libraries(prune_reconcile_tests PRIVATE prune_reconcile bank_book)
|
||||
add_test(NAME prune_reconcile_tests COMMAND prune_reconcile_tests)
|
||||
|
||||
add_executable(prune_button_tests tests/test_prune_button.cpp)
|
||||
target_link_libraries(prune_button_tests PRIVATE prune_button)
|
||||
add_test(NAME prune_button_tests COMMAND prune_button_tests)
|
||||
|
||||
add_executable(app_version_tests tests/test_app_version.cpp)
|
||||
target_link_libraries(app_version_tests PRIVATE app_version)
|
||||
add_test(NAME app_version_tests COMMAND app_version_tests)
|
||||
@@ -402,7 +417,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 tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile 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 tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile prune_button app_version provenance)
|
||||
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'
|
||||
|
||||
Reference in New Issue
Block a user