From c815ffcdb32519e53520c637abfc060bcd17adbe Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 8 Nov 2024 02:32:56 +0100 Subject: [PATCH] Transfer Monitor Box from ArdourUI --- gtk2_ardour/application_bar.cc | 42 ++++++++++++++++++++++++++++++++ gtk2_ardour/application_bar.h | 3 +++ gtk2_ardour/ardour_ui.h | 4 ---- gtk2_ardour/ardour_ui2.cc | 44 ---------------------------------- 4 files changed, 45 insertions(+), 48 deletions(-) diff --git a/gtk2_ardour/application_bar.cc b/gtk2_ardour/application_bar.cc index 37a706b3d9..d4e69d6561 100644 --- a/gtk2_ardour/application_bar.cc +++ b/gtk2_ardour/application_bar.cc @@ -203,6 +203,26 @@ ApplicationBar::on_parent_changed (Gtk::Widget*) alert_box->pack_start (_auditioning_alert_button, true, true); alert_box->pack_start (_feedback_alert_button, true, true); + /* monitor section sub-group */ + VBox* monitor_box = manage (new VBox); + monitor_box->set_homogeneous (true); + monitor_box->set_spacing (1); + monitor_box->set_border_width (0); + monitor_box->pack_start (_monitor_mono_button, true, true); + monitor_box->pack_start (_monitor_dim_button, true, true); + monitor_box->pack_start (_monitor_mute_button, true, true); + + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-dim-all")); + _monitor_dim_button.set_related_action (act); + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-mono")); + _monitor_mono_button.set_related_action (act); + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-cut-all")); + _monitor_mute_button.set_related_action (act); + + _monitor_dim_button.set_text (_("Dim All")); + _monitor_mono_button.set_text (_("Mono")); + _monitor_mute_button.set_text (_("Mute All")); + int vpadding = 1; int hpadding = 2; int col = 0; @@ -276,6 +296,9 @@ ApplicationBar::on_parent_changed (Gtk::Widget*) _table.attach (_monitor_spacer, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); ++col; + _table.attach (*monitor_box, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); + ++col; + _table.set_spacings (0); _table.set_row_spacings (4); _table.set_border_width (1); @@ -312,6 +335,11 @@ ApplicationBar::on_parent_changed (Gtk::Widget*) clock2_size_group->add_widget (*_secondary_clock.left_btn()); clock2_size_group->add_widget (*_secondary_clock.right_btn()); + Glib::RefPtr monitor_button_size_group = SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL); + monitor_button_size_group->add_widget (_monitor_dim_button); + monitor_button_size_group->add_widget (_monitor_mono_button); + monitor_button_size_group->add_widget (_monitor_mute_button); + /* tooltips */ Gtkmm2ext::UI::instance()->set_tip (_punch_in_button, _("Start recording at auto-punch start")); Gtkmm2ext::UI::instance()->set_tip (_punch_out_button, _("Stop recording at auto-punch end")); @@ -324,6 +352,9 @@ ApplicationBar::on_parent_changed (Gtk::Widget*) Gtkmm2ext::UI::instance()->set_tip (_solo_alert_button, _("When active, something is soloed.\nClick to de-solo everything")); Gtkmm2ext::UI::instance()->set_tip (_auditioning_alert_button, _("When active, auditioning is taking place.\nClick to stop the audition")); Gtkmm2ext::UI::instance()->set_tip (_feedback_alert_button, _("When lit, there is a ports connection issue, leading to feedback loop or ambiguous alignment.\nThis is caused by connecting an output back to some input (feedback), or by multiple connections from a source to the same output via different paths (ambiguous latency, record alignment).")); + Gtkmm2ext::UI::instance()->set_tip (_monitor_dim_button, _("Monitor section dim output")); + Gtkmm2ext::UI::instance()->set_tip (_monitor_mono_button, _("Monitor section mono output")); + Gtkmm2ext::UI::instance()->set_tip (_monitor_mute_button, _("Monitor section mute output")); /* theming */ _sync_button.set_name ("transport active option button"); @@ -336,6 +367,17 @@ ApplicationBar::on_parent_changed (Gtk::Widget*) _solo_alert_button.set_name ("rude solo"); _auditioning_alert_button.set_name ("rude audition"); _feedback_alert_button.set_name ("feedback alert"); + _monitor_dim_button.set_name ("monitor section dim"); + _monitor_mono_button.set_name ("monitor section mono"); + _monitor_mute_button.set_name ("mute button"); + + _monitor_dim_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + _monitor_mono_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + _monitor_mute_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + + _monitor_dim_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); + _monitor_mono_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); + _monitor_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); _solo_alert_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); _auditioning_alert_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); diff --git a/gtk2_ardour/application_bar.h b/gtk2_ardour/application_bar.h index df4950fa27..42babf48a5 100644 --- a/gtk2_ardour/application_bar.h +++ b/gtk2_ardour/application_bar.h @@ -126,6 +126,9 @@ private: ArdourWidgets::ArdourButton _feedback_alert_button; Gtk::VBox _alert_box; ArdourWidgets::ArdourVSpacer _monitor_spacer; + ArdourWidgets::ArdourButton _monitor_dim_button; + ArdourWidgets::ArdourButton _monitor_mono_button; + ArdourWidgets::ArdourButton _monitor_mute_button; bool _feedback_exists; bool _ambiguous_latency; diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index b020576188..6eeb540b0e 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -542,10 +542,6 @@ private: ArdourWidgets::ArdourVSpacer scripts_spacer; ArdourWidgets::ArdourVSpacer cuectrl_spacer; - ArdourWidgets::ArdourButton monitor_dim_button; - ArdourWidgets::ArdourButton monitor_mono_button; - ArdourWidgets::ArdourButton monitor_mute_button; - void toggle_external_sync (); void toggle_time_master (); void toggle_video_sync (); diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 01e9dbe979..e767e6da03 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -205,12 +205,6 @@ ARDOUR_UI::setup_transport () trigger_page_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-trigger-visibility"))); application_bar = new ApplicationBar (); //TODO: move this to Editor, Cue, Rec, Mix //TODO: all transport, ui and monitor actions need to be instantiated before this - act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-dim-all")); - monitor_dim_button.set_related_action (act); - act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-mono")); - monitor_mono_button.set_related_action (act); - act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-cut-all")); - monitor_mute_button.set_related_action (act); /* connect signals */ ARDOUR_UI::Clock.connect (sigc::bind (sigc::mem_fun (primary_clock, &MainClock::set), false)); @@ -244,24 +238,8 @@ ARDOUR_UI::setup_transport () recorder_visibility_button.set_name (X_("page switch button")); trigger_page_visibility_button.set_name (X_("page switch button")); - monitor_dim_button.set_name ("monitor section dim"); - monitor_mono_button.set_name ("monitor section mono"); - monitor_mute_button.set_name ("mute button"); - - monitor_dim_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); - monitor_mono_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); - monitor_mute_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); - - monitor_dim_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); - monitor_mono_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); - monitor_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); - /* and widget text */ - monitor_dim_button.set_text (_("Dim All")); - monitor_mono_button.set_text (_("Mono")); - monitor_mute_button.set_text (_("Mute All")); - /* and tooltips */ Gtkmm2ext::UI::instance()->set_tip (editor_visibility_button, @@ -285,18 +263,8 @@ ARDOUR_UI::setup_transport () "Right-click to show more options"), trigger_page->name())); - /* monitor section */ - Gtkmm2ext::UI::instance()->set_tip (monitor_dim_button, _("Monitor section dim output")); - Gtkmm2ext::UI::instance()->set_tip (monitor_mono_button, _("Monitor section mono output")); - Gtkmm2ext::UI::instance()->set_tip (monitor_mute_button, _("Monitor section mute output")); - /* transport control size-group */ - Glib::RefPtr monitor_button_size_group = SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL); - monitor_button_size_group->add_widget (monitor_dim_button); - monitor_button_size_group->add_widget (monitor_mono_button); - monitor_button_size_group->add_widget (monitor_mute_button); - /* and now the layout... */ /* top level packing */ @@ -319,15 +287,6 @@ ARDOUR_UI::setup_transport () transport_frame.add (*ebox); ebox->add (transport_table); - /* monitor section sub-group */ - VBox* monitor_box = manage (new VBox); - monitor_box->set_homogeneous (true); - monitor_box->set_spacing (1); - monitor_box->set_border_width (0); - monitor_box->pack_start (monitor_mono_button, true, true); - monitor_box->pack_start (monitor_dim_button, true, true); - monitor_box->pack_start (monitor_mute_button, true, true); - //tab selections button_height_size_group->add_widget (trigger_page_visibility_button); button_height_size_group->add_widget (recorder_visibility_button); @@ -348,9 +307,6 @@ ARDOUR_UI::setup_transport () transport_table.attach (*application_bar, TCOL, 0, 2 , EXPAND|FILL, EXPAND|FILL, 3, 0); ++col; - transport_table.attach (*monitor_box, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); - ++col; - transport_table.attach (cuectrl_spacer, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); ++col;