+ layout (control_uis);
+
+ output_update ();
+
+ automation_manual_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Off));
+ automation_play_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Play));
+ automation_write_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Write));
+ automation_touch_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Touch));
+}
+
+
+void
+GenericPluginUI::layout (const std::vector<ControlUI *>& control_uis)
+{
+ guint32 x = 0;
+
+ static const int32_t initial_button_rows = 12;
+ static const int32_t initial_button_cols = 1;
+ static const int32_t initial_output_rows = 1;
+ static const int32_t initial_output_cols = 4;
+
+ Gtk::Table* button_table = manage (new Gtk::Table (initial_button_rows, initial_button_cols));
+ Gtk::Table* output_table = manage (new Gtk::Table (initial_output_rows, initial_output_cols));
+
+ Frame* frame;
+ Frame* bt_frame;
+ VBox* box;
+ int output_row, output_col;
+ int button_row, button_col;
+ int output_rows, output_cols;
+ int button_rows, button_cols;
+
+ hpacker.set_spacing (10);
+ hpacker.set_border_width (10);
+
+ output_rows = initial_output_rows;
+ output_cols = initial_output_cols;
+ button_rows = initial_button_rows;
+ button_cols = initial_button_cols;
+ output_row = 0;
+ button_row = 0;
+ output_col = 0;
+ button_col = 0;
+
+ button_table->set_homogeneous (false);
+ button_table->set_row_spacings (2);
+ button_table->set_col_spacings (2);
+ output_table->set_homogeneous (true);
+ output_table->set_row_spacings (2);
+ output_table->set_col_spacings (2);
+ button_table->set_border_width (5);
+ output_table->set_border_width (5);
+
+
+ bt_frame = manage (new Frame);
+ bt_frame->set_name ("BaseFrame");
+ bt_frame->set_label (_("Switches"));
+ bt_frame->add (*button_table);
+ hpacker.pack_start(*bt_frame, true, true);
+
+ box = manage (new VBox);
+ box->set_border_width (5);
+ box->set_spacing (1);
+
+ frame = manage (new Frame);
+ frame->set_name ("BaseFrame");
+ frame->set_label (_("Controls"));
+ frame->add (*box);
+ hpacker.pack_start(*frame, true, true);
+
+