diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index 606db88140..749568b9bd 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -421,52 +421,17 @@ AUPluginUI::AUPluginUI (boost::shared_ptr insert) /* stuff some stuff into the top of the window */ - HBox* smaller_hbox = manage (new HBox); - - smaller_hbox->set_spacing (6); - smaller_hbox->pack_start (latency_button, false, false, 4); - smaller_hbox->pack_start (pin_management_button, false, false, 4); - smaller_hbox->pack_start (preset_label, false, false, 4); - smaller_hbox->pack_start (_preset_modified, false, false); - smaller_hbox->pack_start (_preset_combo, false, false); - smaller_hbox->pack_start (add_button, false, false); - smaller_hbox->pack_start (save_button, false, false); - smaller_hbox->pack_start (delete_button, false, false); - if (has_descriptive_presets ()) { - smaller_hbox->pack_start (preset_browser_button, false, false); - } -#if 0 - /* one day these might be useful with an AU plugin, but not yet */ - smaller_hbox->pack_start (automation_mode_label, false, false); - smaller_hbox->pack_start (automation_mode_selector, false, false); -#endif - if (insert->controls().size() > 0) { - smaller_hbox->pack_start (reset_button, false, false); - } - smaller_hbox->pack_start (bypass_button, false, true); - - VBox* v1_box = manage (new VBox); - VBox* v2_box = manage (new VBox); - - v1_box->pack_start (*smaller_hbox, false, true); - v2_box->pack_start (focus_button, false, true); top_box.set_homogeneous (false); top_box.set_spacing (6); top_box.set_border_width (6); + add_common_widgets (&top_box); - top_box.pack_end (*v2_box, false, false); - top_box.pack_end (*v1_box, false, false); - - set_spacing (6); + set_spacing (0); pack_start (top_box, false, false); pack_start (low_box, true, true); - preset_label.show (); - _preset_combo.show (); - automation_mode_label.show (); - automation_mode_selector.show (); - bypass_button.show (); + top_box.show_all (); top_box.show (); low_box.show (); @@ -1113,7 +1078,7 @@ AUPluginUI::parent_cocoa_window () gtk_widget_translate_coordinates( GTK_WIDGET(low_box.gobj()), GTK_WIDGET(low_box.get_parent()->gobj()), - 8, 6, &xx, &yy); + 0, 0, &xx, &yy); [au_view setFrame:NSMakeRect(xx, yy, req_width, req_height)]; last_au_frame = [au_view frame]; diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index 5ca68db0a1..415e42f2a2 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -92,32 +92,15 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr pi, bool scrol , _piano_channel (*manage (new Adjustment (0, 1, 16, 1, 1))) { set_name ("PluginEditor"); - set_border_width (10); + set_border_width (6); //set_homogeneous (false); pack_start (main_contents, true, true); - settings_box.set_homogeneous (false); - HBox* constraint_hbox = manage (new HBox); HBox* smaller_hbox = manage (new HBox); - smaller_hbox->set_spacing (4); - Label* combo_label = manage (new Label (_("Presets"))); - combo_label->set_use_markup (true); - - smaller_hbox->pack_start (latency_button, false, false, 4); - smaller_hbox->pack_start (pin_management_button, false, false, 4); - smaller_hbox->pack_start (_preset_modified, false, false); - smaller_hbox->pack_start (_preset_combo, false, false); - smaller_hbox->pack_start (add_button, false, false); - smaller_hbox->pack_start (save_button, false, false); - smaller_hbox->pack_start (delete_button, false, false); - if (pi->controls().size() > 0 && has_descriptive_presets ()) { - smaller_hbox->pack_start (preset_browser_button, false, false); - } - if (pi->controls().size() > 0) { - smaller_hbox->pack_start (reset_button, false, false, 4); - } - smaller_hbox->pack_start (bypass_button, false, true, 4); + smaller_hbox->set_spacing (6); + smaller_hbox->set_border_width (0); + add_common_widgets (smaller_hbox, false); automation_manual_all_button.set_text (GainMeterBase::astate_string (ARDOUR::Off)); automation_manual_all_button.set_name (X_("generic button")); @@ -130,11 +113,6 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr pi, bool scrol automation_latch_all_button.set_text (GainMeterBase::astate_string (ARDOUR::Latch)); automation_latch_all_button.set_name (X_("generic button")); - constraint_hbox->set_spacing (5); - constraint_hbox->set_homogeneous (false); - - VBox* v1_box = manage (new VBox); - VBox* v2_box = manage (new VBox); if (pi->is_instrument ()) { _piano = new APianoKeyboard (); _piano->set_flags(Gtk::CAN_FOCUS); @@ -171,8 +149,11 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr pi, bool scrol pack_end (description_expander, false, false); } - v1_box->set_spacing (6); - v1_box->pack_start (*smaller_hbox, false, true); + settings_box.set_homogeneous (false); + settings_box.set_spacing (0); + settings_box.set_border_width (0); + settings_box.pack_start (*smaller_hbox, false, false); + if (pi->controls().size() > 0) { HBox* automation_hbox = manage (new HBox); automation_hbox->set_spacing (6); @@ -183,20 +164,13 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr pi, bool scrol automation_hbox->pack_start (automation_play_all_button, false, false); automation_hbox->pack_start (automation_write_all_button, false, false); automation_hbox->pack_start (automation_touch_all_button, false, false); - v1_box->pack_start (*automation_hbox, false, true); + settings_box.pack_start (*automation_hbox, false, false, 6); } - v2_box->pack_start (focus_button, false, true); main_contents.pack_start (settings_box, false, false); - constraint_hbox->pack_end (*v2_box, false, false); - constraint_hbox->pack_end (*v1_box, false, false); - - main_contents.pack_start (*constraint_hbox, false, false); - pi->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&GenericPluginUI::processor_active_changed, this, boost::weak_ptr(pi)), gui_context()); - - bypass_button.set_active (!pi->enabled()); + _bypass_button.set_active (!pi->enabled()); /* ScrolledWindow will wrap hpacker in a Viewport */ scroller.add (hpacker); diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 1ecdb05464..640ae33417 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -308,21 +308,7 @@ LV2PluginUI::LV2PluginUI(boost::shared_ptr pi, { _ardour_buttons_box.set_spacing (6); _ardour_buttons_box.set_border_width (6); - _ardour_buttons_box.pack_end (focus_button, false, false); - _ardour_buttons_box.pack_end (bypass_button, false, false, 4); - if (pi->controls().size() > 0) { - _ardour_buttons_box.pack_end (reset_button, false, false, 4); - } - if (has_descriptive_presets ()) { - _ardour_buttons_box.pack_end (preset_browser_button, false, false); - } - _ardour_buttons_box.pack_end (delete_button, false, false); - _ardour_buttons_box.pack_end (save_button, false, false); - _ardour_buttons_box.pack_end (add_button, false, false); - _ardour_buttons_box.pack_end (_preset_combo, false, false); - _ardour_buttons_box.pack_end (_preset_modified, false, false); - _ardour_buttons_box.pack_end (pin_management_button, false, false); - _ardour_buttons_box.pack_start (latency_button, false, false, 4); + add_common_widgets (&_ardour_buttons_box); plugin->PresetLoaded.connect (*this, invalidator (*this), boost::bind (&LV2PluginUI::queue_port_update, this), gui_context ()); } diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 978aba8fbc..0f8ee4e92f 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -461,13 +461,13 @@ PluginUIWindow::plugin_going_away () PlugUIBase::PlugUIBase (boost::shared_ptr pi) : insert (pi) , plugin (insert->plugin()) - , add_button (_("Add")) - , save_button (_("Save")) - , delete_button (_("Delete")) - , preset_browser_button (_("Preset Browser")) - , reset_button (_("Reset")) - , bypass_button (ArdourButton::led_default_elements) - , pin_management_button (_("Pinout")) + , _add_button (_("Add")) + , _save_button (_("Save")) + , _delete_button (_("Delete")) + , _preset_browser_button (_("Preset Browser")) + , _reset_button (_("Reset")) + , _bypass_button (ArdourButton::led_default_elements) + , _pin_management_button (_("Pinout")) , description_expander (_("Description")) , plugin_analysis_expander (_("Plugin analysis")) , cpuload_expander (_("CPU Profile")) @@ -481,70 +481,70 @@ PlugUIBase::PlugUIBase (boost::shared_ptr pi) _preset_modified.set_size_request (16, -1); _preset_combo.set_text("(default)"); set_tooltip (_preset_combo, _("Presets (if any) for this plugin\n(Both factory and user-created)")); - set_tooltip (add_button, _("Save a new preset")); - set_tooltip (save_button, _("Save the current preset")); - set_tooltip (delete_button, _("Delete the current preset")); - set_tooltip (preset_browser_button, _("Show Preset Browser Dialog")); - set_tooltip (reset_button, _("Reset parameters to default (if no parameters are in automation play mode)")); - set_tooltip (pin_management_button, _("Show Plugin Pin Management Dialog")); - set_tooltip (bypass_button, _("Disable signal processing by the plugin")); - set_tooltip (latency_button, _("Edit Plugin Delay/Latency Compensation")); + set_tooltip (_add_button, _("Save a new preset")); + set_tooltip (_save_button, _("Save the current preset")); + set_tooltip (_delete_button, _("Delete the current preset")); + set_tooltip (_preset_browser_button, _("Show Preset Browser Dialog")); + set_tooltip (_reset_button, _("Reset parameters to default (if no parameters are in automation play mode)")); + set_tooltip (_pin_management_button, _("Show Plugin Pin Management Dialog")); + set_tooltip (_bypass_button, _("Disable signal processing by the plugin")); + set_tooltip (_latency_button, _("Edit Plugin Delay/Latency Compensation")); _no_load_preset = 0; update_preset_list (); update_preset (); - latency_button.set_icon (ArdourIcon::LatencyClock); - latency_button.add_elements (ArdourButton::Text); - latency_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::latency_button_clicked)); + _latency_button.set_icon (ArdourIcon::LatencyClock); + _latency_button.add_elements (ArdourButton::Text); + _latency_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::latency_button_clicked)); set_latency_label (); - add_button.set_name ("generic button"); - add_button.set_icon (ArdourIcon::PsetAdd); - add_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::add_plugin_setting)); + _add_button.set_name ("generic button"); + _add_button.set_icon (ArdourIcon::PsetAdd); + _add_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::add_plugin_setting)); - save_button.set_name ("generic button"); - save_button.set_icon (ArdourIcon::PsetSave); - save_button.signal_clicked.connect(sigc::mem_fun(*this, &PlugUIBase::save_plugin_setting)); + _save_button.set_name ("generic button"); + _save_button.set_icon (ArdourIcon::PsetSave); + _save_button.signal_clicked.connect(sigc::mem_fun(*this, &PlugUIBase::save_plugin_setting)); - delete_button.set_name ("generic button"); - delete_button.set_icon (ArdourIcon::PsetDelete); - delete_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting)); + _delete_button.set_name ("generic button"); + _delete_button.set_icon (ArdourIcon::PsetDelete); + _delete_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting)); - preset_browser_button.set_name ("generic button"); - preset_browser_button.set_icon (ArdourIcon::PsetBrowse); - preset_browser_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::browse_presets)); + _preset_browser_button.set_name ("generic button"); + _preset_browser_button.set_icon (ArdourIcon::PsetBrowse); + _preset_browser_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::browse_presets)); - reset_button.set_name ("generic button"); - reset_button.set_icon (ArdourIcon::PluginReset); - reset_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::reset_plugin_parameters)); + _reset_button.set_name ("generic button"); + _reset_button.set_icon (ArdourIcon::PluginReset); + _reset_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::reset_plugin_parameters)); - pin_management_button.set_name ("generic button"); - pin_management_button.set_icon (ArdourIcon::PluginPinout); - pin_management_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::manage_pins)); + _pin_management_button.set_name ("generic button"); + _pin_management_button.set_icon (ArdourIcon::PluginPinout); + _pin_management_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::manage_pins)); insert->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&PlugUIBase::processor_active_changed, this, boost::weak_ptr(insert)), gui_context()); - bypass_button.set_name ("plugin bypass button"); - bypass_button.set_text (_("Bypass")); - bypass_button.set_icon (ArdourIcon::PluginBypass); - bypass_button.set_active (!pi->enabled ()); - bypass_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::bypass_button_release), false); - focus_button.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); + _bypass_button.set_name ("plugin bypass button"); + _bypass_button.set_text (_("Bypass")); + _bypass_button.set_icon (ArdourIcon::PluginBypass); + _bypass_button.set_active (!pi->enabled ()); + _bypass_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::bypass_button_release), false); + _focus_button.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); - focus_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::focus_toggled)); - focus_button.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); + _focus_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::focus_toggled)); + _focus_button.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); /* these images are not managed, so that we can remove them at will */ - focus_out_image = new Image (get_icon (X_("computer_keyboard"))); - focus_in_image = new Image (get_icon (X_("computer_keyboard_active"))); + _focus_out_image = new Image (get_icon (X_("computer_keyboard"))); + _focus_in_image = new Image (get_icon (X_("computer_keyboard_active"))); - focus_button.add (*focus_out_image); + _focus_button.add (*_focus_out_image); - set_tooltip (focus_button, string_compose (_("Click to allow the plugin to receive keyboard events that %1 would normally use as a shortcut"), PROGRAM_NAME)); - set_tooltip (bypass_button, _("Click to enable/disable this plugin")); + set_tooltip (_focus_button, string_compose (_("Click to allow the plugin to receive keyboard events that %1 would normally use as a shortcut"), PROGRAM_NAME)); + set_tooltip (_bypass_button, _("Click to enable/disable this plugin")); description_expander.property_expanded().signal_changed().connect( sigc::mem_fun(*this, &PlugUIBase::toggle_description)); description_expander.set_expanded(false); @@ -577,6 +577,9 @@ PlugUIBase::~PlugUIBase() delete latency_gui; delete latency_dialog; delete preset_dialog; + + delete _focus_out_image; + delete _focus_in_image; } void @@ -587,13 +590,38 @@ PlugUIBase::plugin_going_away () plugin.reset (); } +void +PlugUIBase::add_common_widgets (Gtk::HBox* b, bool with_focus) +{ + if (with_focus) { + b->pack_end (_focus_button, false, false); + } + + b->pack_end (_bypass_button, false, false, with_focus ? 4 : 0); + + if (insert->controls().size() > 0) { + b->pack_end (_reset_button, false, false, 4); + } + if (has_descriptive_presets ()) { + b->pack_end (_preset_browser_button, false, false); + } + b->pack_end (_delete_button, false, false); + b->pack_end (_save_button, false, false); + b->pack_end (_add_button, false, false); + b->pack_end (_preset_combo, false, false); + b->pack_end (_preset_modified, false, false); + b->pack_end (_pin_management_button, false, false); + + b->pack_start (_latency_button, false, false, 4); +} + void PlugUIBase::set_latency_label () { samplecnt_t const l = insert->effective_latency (); float const sr = insert->session().sample_rate (); - latency_button.set_text (samples_as_time_string (l, sr, true)); + _latency_button.set_text (samples_as_time_string (l, sr, true)); } void @@ -606,7 +634,7 @@ PlugUIBase::latency_button_clicked () different WM's as possible. */ latency_dialog->set_keep_above (true); - Window* win = dynamic_cast (bypass_button.get_toplevel ()); + Window* win = dynamic_cast (_bypass_button.get_toplevel ()); if (win) { latency_dialog->set_transient_for (*win); } @@ -624,7 +652,7 @@ PlugUIBase::processor_active_changed (boost::weak_ptr weak_p) boost::shared_ptr p (weak_p.lock()); if (p) { - bypass_button.set_active (!p->enabled ()); + _bypass_button.set_active (!p->enabled ()); } } @@ -680,7 +708,7 @@ PlugUIBase::delete_plugin_setting () void PlugUIBase::automation_state_changed () { - reset_button.set_sensitive (insert->can_reset_all_parameters()); + _reset_button.set_sensitive (insert->can_reset_all_parameters()); } void @@ -713,7 +741,7 @@ PlugUIBase::browse_presets () } preset_dialog = new ArdourWindow (_("Select Preset")); preset_dialog->set_keep_above (true); - Window* win = dynamic_cast (preset_browser_button.get_toplevel ()); + Window* win = dynamic_cast (_preset_browser_button.get_toplevel ()); if (win) { preset_dialog->set_transient_for (*win); } @@ -737,7 +765,7 @@ PlugUIBase::manage_pins () bool PlugUIBase::bypass_button_release (GdkEventButton*) { - bool view_says_bypassed = (bypass_button.active_state() != 0); + bool view_says_bypassed = (_bypass_button.active_state() != 0); if (view_says_bypassed != insert->enabled ()) { insert->enable (view_says_bypassed); @@ -751,17 +779,17 @@ PlugUIBase::focus_toggled (GdkEventButton*) { if (Keyboard::the_keyboard().some_magic_widget_has_focus()) { Keyboard::the_keyboard().magic_widget_drop_focus(); - focus_button.remove (); - focus_button.add (*focus_out_image); - focus_out_image->show (); - set_tooltip (focus_button, string_compose (_("Click to allow the plugin to receive keyboard events that %1 would normally use as a shortcut"), PROGRAM_NAME)); + _focus_button.remove (); + _focus_button.add (*_focus_out_image); + _focus_out_image->show (); + set_tooltip (_focus_button, string_compose (_("Click to allow the plugin to receive keyboard events that %1 would normally use as a shortcut"), PROGRAM_NAME)); KeyboardFocused (false); } else { Keyboard::the_keyboard().magic_widget_grab_focus(); - focus_button.remove (); - focus_button.add (*focus_in_image); - focus_in_image->show (); - set_tooltip (focus_button, string_compose (_("Click to allow normal use of %1 keyboard shortcuts"), PROGRAM_NAME)); + _focus_button.remove (); + _focus_button.add (*_focus_in_image); + _focus_in_image->show (); + set_tooltip (_focus_button, string_compose (_("Click to allow normal use of %1 keyboard shortcuts"), PROGRAM_NAME)); KeyboardFocused (true); } @@ -903,7 +931,7 @@ PlugUIBase::update_preset () } --_no_load_preset; - delete_button.set_sensitive (!p.uri.empty() && p.user); + _delete_button.set_sensitive (!p.uri.empty() && p.user); update_preset_modified (); } @@ -913,7 +941,7 @@ PlugUIBase::update_preset_modified () Plugin::PresetRecord p = plugin->last_preset(); if (p.uri.empty()) { - save_button.set_sensitive (false); + _save_button.set_sensitive (false); _preset_modified.set_text (""); return; } @@ -922,7 +950,7 @@ PlugUIBase::update_preset_modified () if (_preset_modified.get_text().empty() == c) { _preset_modified.set_text (c ? "*" : ""); } - save_button.set_sensitive (c && p.user); + _save_button.set_sensitive (c && p.user); } void diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index 6e7b41afec..c2ea80895e 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -120,28 +120,30 @@ protected: boost::shared_ptr insert; boost::shared_ptr plugin; - /* UI elements that can subclasses can add to their widgets */ + void add_common_widgets (Gtk::HBox*, bool with_focus = true); + + /* UI elements that subclasses can add to their widgets */ /** a ComboBoxText which lists presets and manages their selection */ ArdourWidgets::ArdourDropdown _preset_combo; /** a label which has a * in if the current settings are different from the preset being shown */ Gtk::Label _preset_modified; /** a button to add a preset */ - ArdourWidgets::ArdourButton add_button; + ArdourWidgets::ArdourButton _add_button; /** a button to save the current settings as a new user preset */ - ArdourWidgets::ArdourButton save_button; + ArdourWidgets::ArdourButton _save_button; /** a button to delete the current preset (if it is a user one) */ - ArdourWidgets::ArdourButton delete_button; + ArdourWidgets::ArdourButton _delete_button; /** a button to show a preset browser */ - ArdourWidgets::ArdourButton preset_browser_button; + ArdourWidgets::ArdourButton _preset_browser_button; /** a button to delete the reset the plugin params */ - ArdourWidgets::ArdourButton reset_button; + ArdourWidgets::ArdourButton _reset_button; /** a button to bypass the plugin */ - ArdourWidgets::ArdourButton bypass_button; + ArdourWidgets::ArdourButton _bypass_button; /** and self-explaining button :) */ - ArdourWidgets::ArdourButton pin_management_button; + ArdourWidgets::ArdourButton _pin_management_button; /** a button to acquire keyboard focus */ - Gtk::EventBox focus_button; + Gtk::EventBox _focus_button; /** an expander containing the plugin description */ Gtk::Expander description_expander; /** an expander containing the plugin analysis graph */ @@ -149,7 +151,7 @@ protected: /** an expander containing the plugin cpu profile */ Gtk::Expander cpuload_expander; /** a button which, when clicked, opens the latency GUI */ - ArdourWidgets::ArdourButton latency_button; + ArdourWidgets::ArdourButton _latency_button; /** a button which sets all controls' automation setting to Manual */ ArdourWidgets::ArdourButton automation_manual_all_button; /** a button which sets all controls' automation setting to Play */ @@ -170,8 +172,6 @@ protected: PluginPresetsUI* preset_gui; ArdourWindow* preset_dialog; - Gtk::Image* focus_out_image; - Gtk::Image* focus_in_image; int _no_load_preset; virtual void preset_selected (ARDOUR::Plugin::PresetRecord preset); @@ -199,6 +199,10 @@ protected: PBD::ScopedConnection preset_added_connection; PBD::ScopedConnection preset_removed_connection; PBD::ScopedConnectionList control_connections; + +private: + Gtk::Image* _focus_out_image; + Gtk::Image* _focus_in_image; }; class GenericPluginUI : public PlugUIBase, public Gtk::VBox @@ -215,7 +219,7 @@ public: private: Gtk::VBox main_contents; - Gtk::HBox settings_box; + Gtk::VBox settings_box; Gtk::HBox hpacker; Gtk::Menu* automation_menu; diff --git a/gtk2_ardour/vst_plugin_ui.cc b/gtk2_ardour/vst_plugin_ui.cc index 465b37711c..7205996c33 100644 --- a/gtk2_ardour/vst_plugin_ui.cc +++ b/gtk2_ardour/vst_plugin_ui.cc @@ -40,21 +40,7 @@ VSTPluginUI::VSTPluginUI (boost::shared_ptr insert, boost: Gtk::HBox* box = manage (new Gtk::HBox); box->set_spacing (6); box->set_border_width (6); - box->pack_end (focus_button, false, false); - box->pack_end (bypass_button, false, false, 4); - if (insert->controls().size() > 0) { - box->pack_end (reset_button, false, false, 4); - } - if (has_descriptive_presets ()) { - box->pack_end (preset_browser_button, false, false); - } - box->pack_end (delete_button, false, false); - box->pack_end (save_button, false, false); - box->pack_end (add_button, false, false); - box->pack_end (_preset_combo, false, false); - box->pack_end (_preset_modified, false, false); - box->pack_end (pin_management_button, false, false); - box->pack_end (latency_button, false, false); + add_common_widgets (box); pack_start (*box, false, false); box->signal_size_allocate().connect (sigc::mem_fun (*this, &VSTPluginUI::top_box_allocated));