Consolidate Plugin-GUI toolbar layout, consistent layout & spacing
This commit is contained in:
parent
42643d264e
commit
f8ce5ecbc6
|
@ -421,52 +421,17 @@ AUPluginUI::AUPluginUI (boost::shared_ptr<PluginInsert> 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];
|
||||
|
|
|
@ -92,32 +92,15 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> 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 (_("<span size=\"large\">Presets</span>")));
|
||||
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<PluginInsert> 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<PluginInsert> 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<PluginInsert> 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<Processor>(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);
|
||||
|
|
|
@ -308,21 +308,7 @@ LV2PluginUI::LV2PluginUI(boost::shared_ptr<PluginInsert> 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 ());
|
||||
}
|
||||
|
|
|
@ -461,13 +461,13 @@ PluginUIWindow::plugin_going_away ()
|
|||
PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> 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<PluginInsert> 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<Processor>(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<Window*> (bypass_button.get_toplevel ());
|
||||
Window* win = dynamic_cast<Window*> (_bypass_button.get_toplevel ());
|
||||
if (win) {
|
||||
latency_dialog->set_transient_for (*win);
|
||||
}
|
||||
|
@ -624,7 +652,7 @@ PlugUIBase::processor_active_changed (boost::weak_ptr<Processor> weak_p)
|
|||
boost::shared_ptr<Processor> 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<Window*> (preset_browser_button.get_toplevel ());
|
||||
Window* win = dynamic_cast<Window*> (_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
|
||||
|
|
|
@ -120,28 +120,30 @@ protected:
|
|||
boost::shared_ptr<ARDOUR::PluginInsert> insert;
|
||||
boost::shared_ptr<ARDOUR::Plugin> 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;
|
||||
|
||||
|
|
|
@ -40,21 +40,7 @@ VSTPluginUI::VSTPluginUI (boost::shared_ptr<ARDOUR::PluginInsert> 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));
|
||||
|
|
Loading…
Reference in New Issue
Block a user