*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <algorithm>
#include <map>
#include <sigc++/bind.h>
b->show_all ();
scroller.add (*b);
- scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC);
-
- track_model = ListStore::create (track_columns);
- track_display.set_model (track_model);
- track_display.append_column (_("Strips"), track_columns.text);
- track_display.append_column (_("Show"), track_columns.visible);
- track_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
- track_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
- track_display.get_column (0)->set_expand(true);
- track_display.get_column (1)->set_expand(false);
- track_display.set_name (X_("MixerTrackDisplayList"));
- track_display.get_selection()->set_mode (Gtk::SELECTION_NONE);
- track_display.set_reorderable (true);
- track_display.set_headers_visible (true);
+ scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- track_model->signal_row_deleted().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_delete));
- track_model->signal_row_changed().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_change));
- track_model->signal_rows_reordered().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_reorder));
-
- CellRendererToggle* track_list_visible_cell = dynamic_cast<CellRendererToggle*>(track_display.get_column_cell_renderer (1));
- track_list_visible_cell->property_activatable() = true;
- track_list_visible_cell->property_radio() = false;
-
- track_display.signal_button_press_event().connect (sigc::mem_fun (*this, &Mixer_UI::track_display_button_press), false);
-
- track_display_scroller.add (track_display);
- track_display_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+ setup_track_display ();
group_model = ListStore::create (group_columns);
group_display.set_model (group_model);
group_display_vbox.pack_start (group_display_scroller, true, true);
group_display_vbox.pack_start (*route_group_display_button_box, false, false);
- track_display_frame.set_name("BaseFrame");
- track_display_frame.set_shadow_type (Gtk::SHADOW_IN);
- track_display_frame.add(track_display_scroller);
-
group_display_frame.set_name ("BaseFrame");
group_display_frame.set_shadow_type (Gtk::SHADOW_IN);
group_display_frame.add (group_display_vbox);
list_vpacker.show();
group_display_button_label.show();
group_display_button.show();
- track_display_scroller.show();
group_display_scroller.show();
group_display_vbox.show();
- track_display_frame.show();
group_display_frame.show();
rhs_pane1.show();
strip_packer.show();
out_packer.show();
list_hpane.show();
- track_display.show();
group_display.show();
auto_rebinding = FALSE;
if (!_visible) {
set_window_pos_and_size ();
+ /* show/hide group tabs as required */
+ parameter_changed ("show-group-tabs");
+
/* now reset each strips width so the right widgets are shown */
MixerStrip* ms;
return _plugin_selector;
}
+
+void
+Mixer_UI::setup_track_display ()
+{
+ track_model = ListStore::create (track_columns);
+ track_display.set_model (track_model);
+ track_display.append_column (_("Strips"), track_columns.text);
+ track_display.append_column (_("Show"), track_columns.visible);
+ track_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
+ track_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
+ track_display.get_column (0)->set_expand(true);
+ track_display.get_column (1)->set_expand(false);
+ track_display.set_name (X_("MixerTrackDisplayList"));
+ track_display.get_selection()->set_mode (Gtk::SELECTION_NONE);
+ track_display.set_reorderable (true);
+ track_display.set_headers_visible (true);
+
+ track_model->signal_row_deleted().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_delete));
+ track_model->signal_row_changed().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_change));
+ track_model->signal_rows_reordered().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_reorder));
+
+ CellRendererToggle* track_list_visible_cell = dynamic_cast<CellRendererToggle*>(track_display.get_column_cell_renderer (1));
+ track_list_visible_cell->property_activatable() = true;
+ track_list_visible_cell->property_radio() = false;
+
+ track_display.signal_button_press_event().connect (sigc::mem_fun (*this, &Mixer_UI::track_display_button_press), false);
+
+ track_display_scroller.add (track_display);
+ track_display_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+
+ VBox* v = manage (new VBox);
+ v->show ();
+ v->pack_start (track_display_scroller, true, true);
+
+ Button* b = manage (new Button);
+ b->show ();
+ Widget* w = manage (new Image (Stock::ADD, ICON_SIZE_BUTTON));
+ w->show ();
+ b->add (*w);
+
+ b->signal_clicked().connect (sigc::mem_fun (*this, &Mixer_UI::new_track_or_bus));
+
+ v->pack_start (*b, false, false);
+
+ track_display_frame.set_name("BaseFrame");
+ track_display_frame.set_shadow_type (Gtk::SHADOW_IN);
+ track_display_frame.add (*v);
+
+ track_display_scroller.show();
+ track_display_frame.show();
+ track_display.show();
+}
+
+void
+Mixer_UI::new_track_or_bus ()
+{
+ ARDOUR_UI::instance()->add_route (this);
+}