From 5873cf12dfadf9f452e7c7a04eded180797a4bfa Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 18 Aug 2025 17:08:23 -0600 Subject: [PATCH] add a new UI prefs variable/type for region edit disposition i.e. where to edit a selected or specifically chosen region --- gtk2_ardour/editing.cc | 11 +++++++++++ gtk2_ardour/editing.h | 13 +++++++++++++ gtk2_ardour/editing_convert.h | 1 + gtk2_ardour/editing_syms.inc.h | 5 +++++ gtk2_ardour/enums.cc | 9 ++++++++- gtk2_ardour/ui_config_vars.inc.h | 2 ++ 6 files changed, 40 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/editing.cc b/gtk2_ardour/editing.cc index 79585fa2c0..6cf4b35437 100644 --- a/gtk2_ardour/editing.cc +++ b/gtk2_ardour/editing.cc @@ -191,5 +191,16 @@ const char *markerclickbehaviorstrs[] = { #undef MARKERCLICKBEHAVIOR #define MARKERCLICKBEHAVIOR(a) /*empty*/ +#undef REGIONEDITDISPOSITION +#define REGIONEDITDISPOSITION(s) N_(#s), +const char *regioneditdispositionstrs[] = { + #include "editing_syms.inc.h" + 0 +}; +#undef REGIONEDITDISPOSITION +#define REGIONEDITDISPOSITION(a) /*empty*/ + + + } // namespace Editing diff --git a/gtk2_ardour/editing.h b/gtk2_ardour/editing.h index 54d0166c22..555a3d70cb 100644 --- a/gtk2_ardour/editing.h +++ b/gtk2_ardour/editing.h @@ -43,6 +43,7 @@ #define TEMPOEDITBEHAVIOR(a) /*empty*/ #define NOTENAMEDISPLAY(a) /*empty*/ #define MARKERCLICKBEHAVIOR(a) /*empty*/ +#define REGIONEDITDISPOSITION(a) /*empty*/ namespace Editing { @@ -223,6 +224,18 @@ extern const char *markerclickbehaviorstrs[]; inline const char* enum2str(MarkerClickBehavior m) {return markerclickbehaviorstrs[m];} MarkerClickBehavior str2markerclickbehavior(const std::string &); +#undef REGIONEDITDISPOSITION +#define REGIONEDITDISPOSITION(a) a, +enum RegionEditDisposition { + #include "editing_syms.inc.h" +}; + +extern const char *regioneditdispositionstrs[]; +inline const char* enum2str(RegionEditDisposition red) {return regioneditdispositionstrs[red];} + +#undef REGIONEDITDISPOSITION +#define REGIONEDITDISPOSITION(a) /*empty*/ + ///////////////////// // These don't need their state saved. yet... enum CutCopyOp { diff --git a/gtk2_ardour/editing_convert.h b/gtk2_ardour/editing_convert.h index 38b9ecba78..563cc4513b 100644 --- a/gtk2_ardour/editing_convert.h +++ b/gtk2_ardour/editing_convert.h @@ -34,6 +34,7 @@ DEFINE_ENUM_CONVERT(Editing::RegionListSortType) DEFINE_ENUM_CONVERT(Editing::MouseMode) DEFINE_ENUM_CONVERT(Editing::NoteNameDisplay) DEFINE_ENUM_CONVERT(Editing::MarkerClickBehavior) +DEFINE_ENUM_CONVERT(Editing::RegionEditDisposition) } // namespace PBD diff --git a/gtk2_ardour/editing_syms.inc.h b/gtk2_ardour/editing_syms.inc.h index 8b0391cb7d..a0962d04e6 100644 --- a/gtk2_ardour/editing_syms.inc.h +++ b/gtk2_ardour/editing_syms.inc.h @@ -115,3 +115,8 @@ MARKERCLICKBEHAVIOR(MarkerClickLocateWhenStopped) NOTENAMEDISPLAY(Always) NOTENAMEDISPLAY(WithMIDNAM) NOTENAMEDISPLAY(Never) + +REGIONEDITDISPOSITION(BottomPaneOnly) +REGIONEDITDISPOSITION(OpenBottomPane) +REGIONEDITDISPOSITION(PreferBottomPane) +REGIONEDITDISPOSITION(NeverBottomPane) diff --git a/gtk2_ardour/enums.cc b/gtk2_ardour/enums.cc index 44d5589d5c..283071d9ff 100644 --- a/gtk2_ardour/enums.cc +++ b/gtk2_ardour/enums.cc @@ -62,7 +62,8 @@ setup_gtk_ardour_enums () AddRouteDialog::TypeWanted type_wanted; NoteNameDisplay note_name_display; MarkerClickBehavior marker_click_behavior; - + RegionEditDisposition region_edit_disposition; + #define REGISTER(e) enum_writer.register_distinct (typeid(e).name(), i, s); i.clear(); s.clear() #define REGISTER_BITS(e) enum_writer.register_bits (typeid(e).name(), i, s); i.clear(); s.clear() #define REGISTER_ENUM(e) i.emplace_back (e); s.emplace_back (#e) @@ -250,4 +251,10 @@ setup_gtk_ardour_enums () REGISTER_CLASS_ENUM (Editing, WithMIDNAM); REGISTER_CLASS_ENUM (Editing, Never); REGISTER (note_name_display); + + REGISTER_ENUM(BottomPaneOnly); + REGISTER_ENUM(OpenBottomPane); + REGISTER_ENUM(PreferBottomPane); + REGISTER_ENUM(NeverBottomPane); + REGISTER (region_edit_disposition); } diff --git a/gtk2_ardour/ui_config_vars.inc.h b/gtk2_ardour/ui_config_vars.inc.h index cb4136478f..eb376e0d14 100644 --- a/gtk2_ardour/ui_config_vars.inc.h +++ b/gtk2_ardour/ui_config_vars.inc.h @@ -159,6 +159,8 @@ UI_CONFIG_VARIABLE (bool, prefer_tap_tempo, "prefer-tap-tempo", false) UI_CONFIG_VARIABLE (bool, sandbox_all_lua_scripts, "sandbox-all-lua-scripts", false) UI_CONFIG_VARIABLE (bool, update_action_scripts, "update-action-scripts", true) UI_CONFIG_VARIABLE (bool, use_cocoa_invalidation, "use-cocoa-invalidation", true) +UI_CONFIG_VARIABLE (Editing::RegionEditDisposition, region_edit_disposition, "region-edit-disposition", Editing::PreferBottomPane) + /* these are visibility-type selections in the New Track dialog that we should make persistent for the user's choices */ UI_CONFIG_VARIABLE (bool, show_on_cue_page, "show-on-cue-page", true)