Use meta-button for trigger-page sidebar notebook tabs

This reverts and replaces commit 82993157e5.
This commit is contained in:
Robin Gareus
2025-01-28 22:48:55 +01:00
parent 42e82fb590
commit 6e5d48b7ff
2 changed files with 60 additions and 28 deletions

View File

@@ -129,15 +129,16 @@ TriggerPage::TriggerPage ()
_strip_group_box.pack_start (_strip_scroller, true, true);
/* sidebar */
_sidebar_notebook.set_show_tabs (true);
_sidebar_notebook.set_show_tabs (false);
_sidebar_notebook.set_scrollable (true);
_sidebar_notebook.popup_disable ();
_sidebar_notebook.set_tab_pos (Gtk::POS_RIGHT);
add_sidebar_page (_("Clips"), _trigger_clip_picker);
add_sidebar_page (_("Tracks"), _trigger_route_list.widget ());
add_sidebar_page (_("Sources"), _trigger_source_list.widget ());
add_sidebar_page (_("Regions"), _trigger_region_list.widget ());
add_sidebar_page (_("Clips"), _("Clips"), _trigger_clip_picker);
add_sidebar_page (_("Tracks"), _("Tracks & Busses"), _trigger_route_list.widget ());
add_sidebar_page (_("Sources"), _("Sources"), _trigger_source_list.widget ());
add_sidebar_page (_("Regions"), _("Regions"), _trigger_region_list.widget ());
_sidebar_pager2.set_index (3);
_midi_editor = new Pianoroll (X_("MIDICueEditor"));
@@ -160,11 +161,29 @@ TriggerPage::TriggerPage ()
_parameter_box.pack_start (*table);
_parameter_box.show ();
_sidebar_notebook.signal_switch_page().connect ([this](GtkNotebookPage*, guint page) {
std::string label (_sidebar_notebook.get_tab_label_text (*_sidebar_notebook.get_nth_page (page)));
_sidebar_pager1.set_active (label);
_sidebar_pager2.set_active (label);
//instant_save ();
});
_sidebar_pager1.set_name ("tab button");
_sidebar_pager2.set_name ("tab button");
HBox* tabbox = manage (new HBox (true));
tabbox->set_spacing (3);
tabbox->pack_start (_sidebar_pager1);
tabbox->pack_start (_sidebar_pager2);
_sidebar_vbox.pack_start (*tabbox, false, false, 2);
_sidebar_vbox.pack_start (_sidebar_notebook);
/* Top-level Layout */
content_app_bar.add (_application_bar);
content_main.add (_strip_group_box);
content_att_bottom.add (_parameter_box);
content_att_right.add (_sidebar_notebook);
content_att_right.add (_sidebar_vbox);
/* Show all */
_strip_group_box.show ();
@@ -173,7 +192,7 @@ TriggerPage::TriggerPage ()
_cue_area_frame.show_all ();
_trigger_clip_picker.show ();
_no_strips.show ();
_sidebar_notebook.show_all ();
_sidebar_vbox.show_all ();
/* setup keybidings */
contents().set_data ("ardour-bindings", bindings);
@@ -237,6 +256,8 @@ TriggerPage::get_state () const
node->add_child_nocopy (Tabbable::get_state ());
node->set_property (X_("triggerpage-sidebar-page"), _sidebar_notebook.get_current_page ());
node->set_property (X_("triggerpage-sidebar-btn1"), _sidebar_pager1.index ());
node->set_property (X_("triggerpage-sidebar-btn2"), _sidebar_pager2.index ());
node->add_child_nocopy (_midi_editor->get_state());
@@ -258,6 +279,15 @@ TriggerPage::focus_on_clock()
int
TriggerPage::set_state (const XMLNode& node, int version)
{
guint index;
if (node.get_property (X_("triggerpage-sidebar-btn1"), index)) {
_sidebar_pager1.set_index (index);
}
if (node.get_property (X_("triggerpage-sidebar-btn2"), index)) {
_sidebar_pager2.set_index (index);
}
int32_t sidebar_page;
if (node.get_property (X_("triggerpage-sidebar-page"), sidebar_page)) {
_sidebar_notebook.set_current_page (sidebar_page);
@@ -397,14 +427,12 @@ TriggerPage::update_title ()
}
void
TriggerPage::add_sidebar_page (string const & name, Gtk::Widget& widget)
TriggerPage::add_sidebar_page (string const& label, string const& name, Gtk::Widget& widget)
{
EventBox* b = manage (new EventBox);
Label* l = manage (new Label (name));
l->set_angle (-90);
b->add (*l);
b->show_all ();
_sidebar_notebook.append_page (widget, *b);
_sidebar_notebook.append_page (widget, name);
using namespace Menu_Helpers;
_sidebar_pager1.add_item (label, name, [this, &widget]() {_sidebar_notebook.set_current_page (_sidebar_notebook.page_num (widget)); });
_sidebar_pager2.add_item (label, name, [this, &widget]() {_sidebar_notebook.set_current_page (_sidebar_notebook.page_num (widget)); });
}
void

View File

@@ -25,6 +25,7 @@
#include "gtkmm2ext/bindings.h"
#include "gtkmm2ext/cairo_widget.h"
#include "widgets/metabutton.h"
#include "widgets/pane.h"
#include "widgets/tabbable.h"
@@ -85,7 +86,7 @@ private:
void rec_state_changed ();
void rec_state_clicked ();
void add_sidebar_page (std::string const&, Gtk::Widget&);
void add_sidebar_page (std::string const&, std::string const&, Gtk::Widget&);
bool strip_button_release_event (GdkEventButton*, TriggerStrip*);
bool no_strip_button_event (GdkEventButton*);
@@ -110,18 +111,21 @@ private:
Gtkmm2ext::Bindings* bindings;
Gtk::HBox _strip_group_box;
Gtk::ScrolledWindow _strip_scroller;
Gtk::HBox _strip_packer;
Gtk::EventBox _no_strips;
Gtk::Alignment _cue_area_frame;
Gtk::VBox _cue_area_box;
Gtk::HBox _parameter_box;
Gtk::Notebook _sidebar_notebook;
TriggerClipPicker _trigger_clip_picker;
TriggerSourceList _trigger_source_list;
TriggerRegionList _trigger_region_list;
TriggerRouteList _trigger_route_list;
Gtk::HBox _strip_group_box;
Gtk::ScrolledWindow _strip_scroller;
Gtk::HBox _strip_packer;
Gtk::EventBox _no_strips;
Gtk::Alignment _cue_area_frame;
Gtk::VBox _cue_area_box;
Gtk::HBox _parameter_box;
Gtk::VBox _sidebar_vbox;
ArdourWidgets::MetaButton _sidebar_pager1;
ArdourWidgets::MetaButton _sidebar_pager2;
Gtk::Notebook _sidebar_notebook;
TriggerClipPicker _trigger_clip_picker;
TriggerSourceList _trigger_source_list;
TriggerRegionList _trigger_region_list;
TriggerRouteList _trigger_route_list;
CueBoxWidget _cue_box;
FittedCanvasWidget _master_widget;