From cce260b67adf738d45ab7e13a841fde9493d2f65 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Fri, 14 Jan 2022 12:55:51 -0600 Subject: [PATCH] trigger_ui: reorganize some tempo and FA controls --- gtk2_ardour/audio_trigger_properties_box.cc | 43 +++++++--------- gtk2_ardour/audio_trigger_properties_box.h | 2 +- gtk2_ardour/midi_trigger_properties_box.cc | 7 +-- gtk2_ardour/slot_properties_box.cc | 54 ++++++++++----------- 4 files changed, 45 insertions(+), 61 deletions(-) diff --git a/gtk2_ardour/audio_trigger_properties_box.cc b/gtk2_ardour/audio_trigger_properties_box.cc index e623eed446..80a3d349f3 100644 --- a/gtk2_ardour/audio_trigger_properties_box.cc +++ b/gtk2_ardour/audio_trigger_properties_box.cc @@ -58,22 +58,23 @@ AudioTriggerPropertiesBox::AudioTriggerPropertiesBox () , _stretch_toggle (ArdourButton::led_default_elements) , _abpm_label (ArdourButton::Text) { - _header_label.set_text (_("AUDIO Trigger Properties:")); - Gtk::Label* label; int row = 0; - _header_label.set_alignment (0.0, 0.5); - pack_start (_header_label, false, false, 6); - + /* ------- Stretching and Tempo stuff ----------------------------- */ Gtk::Table* bpm_table = manage (new Gtk::Table ()); bpm_table->set_homogeneous (false); bpm_table->set_spacings (4); - bpm_table->set_border_width (2); + bpm_table->set_border_width (8); + + _stretch_toggle.set_text (_("Stretch")); + bpm_table->attach (_stretch_toggle, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); + bpm_table->attach (_stretch_selector, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); row++; + label = manage (new Gtk::Label (_("BPM:"))); label->set_alignment (1.0, 0.5); - bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); - bpm_table->attach (_abpm_label, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); + bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::SHRINK); + bpm_table->attach (_abpm_label, 1, 2, row, row + 1, Gtk::FILL, Gtk::SHRINK); ArdourButton *half = manage (new ArdourButton (_("/2"))); half->signal_clicked.connect(sigc::bind (sigc::mem_fun(*this, &AudioTriggerPropertiesBox::MultiplyTempo), 0.5)); @@ -84,27 +85,18 @@ AudioTriggerPropertiesBox::AudioTriggerPropertiesBox () row++; - pack_start (*bpm_table, false, false); - - Gtk::Table* metrum_table = manage (new Gtk::Table ()); - metrum_table->set_homogeneous (false); - metrum_table->set_spacings (4); - metrum_table->set_border_width (2); label = manage (new Gtk::Label (_("Time Sig:"))); label->set_alignment (1.0, 0.5); - bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); - bpm_table->attach (_metrum_button, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); - row++; + bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::SHRINK); + bpm_table->attach (_metrum_button, 1, 2, row, row + 1, Gtk::FILL, Gtk::SHRINK); - pack_start (*metrum_table, false, false); + Gtk::EventBox* eTempoBox = manage (new Gtk::EventBox); // a themeable box + eTempoBox->set_name("EditorDark"); + eTempoBox->add (*bpm_table); + /* -------------- Clip start&length (redundant with the trimmer gui handles?) ----------*/ row = 0; - _stretch_toggle.set_text (_("Stretch")); - _table.attach (_stretch_toggle, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); - _table.attach (_stretch_selector, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); - row++; - label = manage (new Gtk::Label (_("Start:"))); label->set_alignment (1.0, 0.5); _table.attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); @@ -120,7 +112,6 @@ AudioTriggerPropertiesBox::AudioTriggerPropertiesBox () _table.set_homogeneous (false); _table.set_spacings (4); _table.set_border_width (2); - pack_start (_table, false, false); Gtk::Table* audio_t = manage (new Gtk::Table ()); audio_t->set_homogeneous (true); @@ -138,7 +129,9 @@ AudioTriggerPropertiesBox::AudioTriggerPropertiesBox () row++; - pack_start (*audio_t); + attach (*eTempoBox, 0,1, 0,1, Gtk::FILL, Gtk::SHRINK); + attach (_table, 0,1, 1,2, Gtk::FILL, Gtk::SHRINK); + attach (*audio_t, 0,1, 2,3, Gtk::FILL, Gtk::SHRINK); using namespace Menu_Helpers; diff --git a/gtk2_ardour/audio_trigger_properties_box.h b/gtk2_ardour/audio_trigger_properties_box.h index 3d8367c12b..7a04c9e0b5 100644 --- a/gtk2_ardour/audio_trigger_properties_box.h +++ b/gtk2_ardour/audio_trigger_properties_box.h @@ -34,7 +34,7 @@ #include "audio_clock.h" #include "trigger_ui.h" -class TriggerPropertiesBox : public Gtk::VBox, public ARDOUR::SessionHandlePtr, public TriggerUI +class TriggerPropertiesBox : public Gtk::Table, public ARDOUR::SessionHandlePtr, public TriggerUI { public: TriggerPropertiesBox () {} diff --git a/gtk2_ardour/midi_trigger_properties_box.cc b/gtk2_ardour/midi_trigger_properties_box.cc index 5643e800ab..b2e61dfb3a 100644 --- a/gtk2_ardour/midi_trigger_properties_box.cc +++ b/gtk2_ardour/midi_trigger_properties_box.cc @@ -48,11 +48,6 @@ using std::min; MidiTriggerPropertiesBox::MidiTriggerPropertiesBox () { - _header_label.set_text (_("MIDI Trigger Properties:")); - - _header_label.set_alignment (0.0, 0.5); - pack_start (_header_label, false, false, 6); - Gtk::Table* midi_t = manage (new Gtk::Table ()); midi_t->set_homogeneous (true); midi_t->set_spacings (4); @@ -71,7 +66,7 @@ MidiTriggerPropertiesBox::MidiTriggerPropertiesBox () midi_t->attach (_cc_enable_button, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK); row++; - pack_start (*midi_t); + attach (*midi_t, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK); } MidiTriggerPropertiesBox::~MidiTriggerPropertiesBox () diff --git a/gtk2_ardour/slot_properties_box.cc b/gtk2_ardour/slot_properties_box.cc index 46e4ab341e..9a8fa0512c 100644 --- a/gtk2_ardour/slot_properties_box.cc +++ b/gtk2_ardour/slot_properties_box.cc @@ -267,7 +267,21 @@ SlotPropertyTable::SlotPropertyTable () _follow_table.set_homogeneous (false); row=0; - _follow_table.attach(_follow_action_button, 0, 3, row, row+1, Gtk::FILL, Gtk::SHRINK ); row++; + Gtkmm2ext::set_size_request_to_display_given_text (_left_probability_label, "100% Left ", 12, 0); + _left_probability_label.set_alignment(0.0, 0.5); + Gtkmm2ext::set_size_request_to_display_given_text (_right_probability_label, "100% Right", 12, 0); + _right_probability_label.set_alignment(1.0, 0.5); + + Gtk::Table *prob_table = manage(new Gtk::Table()); + prob_table->set_spacings(2); + prob_table->set_border_width(4); + prob_table->attach(_follow_probability_slider, 0, 2, 0, 1, Gtk::FILL, Gtk::SHRINK ); + prob_table->attach(_left_probability_label, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK ); + prob_table->attach(_right_probability_label, 1, 2, 1, 2, Gtk::FILL, Gtk::SHRINK ); + + _follow_table.attach(_follow_left, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK ); + _follow_table.attach(_follow_right, 1, 3, row, row+1, Gtk::FILL, Gtk::SHRINK ); row++; + _follow_table.attach( *prob_table, 0, 3, row, row+1, Gtk::FILL, Gtk::SHRINK ); row++; label = manage(new Gtk::Label(_("Follow Count:"))); label->set_alignment(1.0, 0.5); _follow_table.attach(*label, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK ); @@ -284,21 +298,6 @@ SlotPropertyTable::SlotPropertyTable () _follow_table.attach(*fl_align, 1, 2, row, row+1, Gtk::FILL, Gtk::SHRINK, 0, 0 ); _follow_table.attach(*beat_label, 2, 3, row, row+1, Gtk::SHRINK, Gtk::SHRINK); row++; - Gtkmm2ext::set_size_request_to_display_given_text (_left_probability_label, "100% Left ", 12, 0); - _left_probability_label.set_alignment(0.0, 0.5); - Gtkmm2ext::set_size_request_to_display_given_text (_right_probability_label, "100% Right", 12, 0); - _right_probability_label.set_alignment(1.0, 0.5); - - Gtk::Table *prob_table = manage(new Gtk::Table()); - prob_table->set_spacings(2); - prob_table->attach(_follow_probability_slider, 0, 2, 0, 1, Gtk::FILL, Gtk::SHRINK ); - prob_table->attach(_left_probability_label, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK ); - prob_table->attach(_right_probability_label, 1, 2, 1, 2, Gtk::FILL, Gtk::SHRINK ); - - _follow_table.attach( *prob_table, 0, 3, row, row+1, Gtk::FILL, Gtk::SHRINK ); row++; - _follow_table.attach(_follow_left, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK ); - _follow_table.attach(_follow_right, 1, 3, row, row+1, Gtk::FILL, Gtk::SHRINK ); row++; - Gtk::EventBox* eFollowBox = manage (new Gtk::EventBox); // a themeable box eFollowBox->set_name("EditorDark"); eFollowBox->add (_follow_table); @@ -405,6 +404,8 @@ SlotPropertyTable::set_follow_action (Trigger::FollowAction fa, uint64_t idx) void SlotPropertyTable::on_trigger_changed (PropertyChange const& pc) { + int probability = trigger()->follow_action_probability(); + if (pc.contains (Properties::name)) { _name_label.set_text (trigger()->name()); } @@ -452,26 +453,22 @@ SlotPropertyTable::on_trigger_changed (PropertyChange const& pc) } if (pc.contains (Properties::follow_action_probability)) { - int pval = trigger()->follow_action_probability(); - _follow_probability_adjustment.set_value (pval); - _left_probability_label.set_text (string_compose(_("%1%% Left"), 100-pval)); - _right_probability_label.set_text (string_compose(_("%1%% Right"), pval)); + _follow_probability_adjustment.set_value (probability); + _left_probability_label.set_text (string_compose(_("%1%% Left"), 100-probability)); + _right_probability_label.set_text (string_compose(_("%1%% Right"), probability)); } - if (trigger()->use_follow()) { - _follow_left.set_sensitive(true); - _follow_right.set_sensitive(true); + bool follow_widgets_sensitive = trigger()->follow_action (0) != Trigger::None; + + if (follow_widgets_sensitive) { _follow_count_spinner.set_sensitive(true); + _follow_length_spinner.set_sensitive(true); _follow_probability_slider.set_sensitive(true); - _left_probability_label.set_sensitive(true); - _right_probability_label.set_sensitive(true); } else { - _follow_left.set_sensitive(false); _follow_right.set_sensitive(false); _follow_count_spinner.set_sensitive(false); + _follow_length_spinner.set_sensitive(false); _follow_probability_slider.set_sensitive(false); - _left_probability_label.set_sensitive(false); - _right_probability_label.set_sensitive(false); } } @@ -482,7 +479,6 @@ SlotPropertyWidget::SlotPropertyWidget () ui = new SlotPropertyTable (); pack_start(*ui); ui->show(); -// set_background_color (UIConfiguration::instance().color (X_("theme:bg"))); } /* ------------ */