#include "ardour/session.h"
#include "ardour/value_as_string.h"
-#include "ardour_ui.h"
#include "prompter.h"
#include "plugin_ui.h"
#include "gui_thread.h"
#include "automation_controller.h"
+#include "timers.h"
+#include "tooltips.h"
+#include "ui_config.h"
#include "i18n.h"
using namespace PBD;
using namespace Gtkmm2ext;
using namespace Gtk;
+using namespace ARDOUR_UI_UTILS;
GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrollable)
: PlugUIBase (pi)
HBox* smaller_hbox = manage (new HBox);
HBox* automation_hbox = manage (new HBox);
smaller_hbox->set_spacing (4);
- automation_hbox->set_spacing (4);
+ automation_hbox->set_spacing (6);
Label* combo_label = manage (new Label (_("<span size=\"large\">Presets</span>")));
combo_label->set_use_markup (true);
- latency_button.add (latency_label);
- latency_button.signal_clicked().connect (sigc::mem_fun (*this, &PlugUIBase::latency_button_clicked));
+ latency_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::latency_button_clicked));
set_latency_label ();
- smaller_hbox->pack_start (latency_button, false, false, 10);
+ smaller_hbox->pack_start (latency_button, false, false, 4);
smaller_hbox->pack_start (_preset_combo, false, false);
smaller_hbox->pack_start (_preset_modified, 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);
- smaller_hbox->pack_start (bypass_button, false, true);
+ smaller_hbox->pack_start (reset_button, false, false, 4);
+ smaller_hbox->pack_start (bypass_button, false, true, 4);
- automation_manual_all_button.set_label(_("Manual All"));
- automation_play_all_button.set_label(_("Play All"));
- automation_write_all_button.set_label(_("Write All"));
- automation_touch_all_button.set_label(_("Touch All"));
+ automation_manual_all_button.set_text(_("Manual"));
+ automation_manual_all_button.set_name (X_("generic button"));
+ automation_play_all_button.set_text(_("Play"));
+ automation_play_all_button.set_name (X_("generic button"));
+ automation_write_all_button.set_text(_("Write"));
+ automation_write_all_button.set_name (X_("generic button"));
+ automation_touch_all_button.set_text(_("Touch"));
+ automation_touch_all_button.set_name (X_("generic button"));
- Gtk::Alignment *al = Gtk::manage(new Gtk::Alignment());
- al->set_size_request(6, 2);
- automation_hbox->pack_start(*al, false, true);
-
+ Label* l = manage (new Label (_("All Automation")));
+ l->set_alignment (1.0, 0.5);
+ automation_hbox->pack_start (*l, true, true);
automation_hbox->pack_start (automation_manual_all_button, false, false);
automation_hbox->pack_start (automation_play_all_button, false, false);
automation_hbox->pack_start (automation_write_all_button, false, false);
pack_end (description_expander, false, false);
}
+ v1_box->set_spacing (6);
v1_box->pack_start (*smaller_hbox, false, true);
v1_box->pack_start (*automation_hbox, false, true);
v2_box->pack_start (focus_button, false, true);
const std::string param_docs = plugin->get_parameter_docs(i);
if (!param_docs.empty()) {
- ARDOUR_UI::instance()->set_tip(cui, param_docs.c_str());
+ set_tooltip(cui, param_docs.c_str());
}
control_uis.push_back(cui);
+ input_controls_with_automation.push_back (cui);
}
}
output_table.show_all ();
button_table.show_all ();
- // Connect automation *_all buttons
- automation_manual_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_manual_all, this, control_uis));
- automation_play_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_play_all, this, control_uis));
- automation_write_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_write_all, this, control_uis));
- automation_touch_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_touch_all, this, control_uis));
+ 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));
}
GenericPluginUI::ControlUI::ControlUI (const Evoral::Parameter& p)
, file_button(NULL)
{
automate_button.set_name ("PluginAutomateButton");
- ARDOUR_UI::instance()->set_tip (automate_button, _("Automation control"));
+ set_tooltip (automate_button, _("Automation control"));
/* XXX translators: use a string here that will be at least as long
as the longest automation label (see ::automation_state_changed()
control_ui->file_button = manage(new Gtk::FileChooserButton(Gtk::FILE_CHOOSER_ACTION_OPEN));
control_ui->file_button->set_title(desc.label);
- control_ui->pack_start (control_ui->label, true, true);
+ control_ui->pack_start (control_ui->label, false, true);
control_ui->pack_start (*control_ui->file_button, true, true);
// Connect signals (TODO: do this via the Control)
Adjustment* adj = control_ui->controller->adjustment();
if (desc.integer_step) {
- control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox", desc.enumeration);
+ control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox", true);
Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->clickbox, "g9999999", 2, 2);
if (desc.unit == ParameterDescriptor::MIDI_NOTE) {
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::midinote_printer), control_ui));
control_ui->controller->set_size_request (200, req.height);
control_ui->controller->set_name (X_("ProcessorControlSlider"));
- control_ui->controller->StartGesture.connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::start_touch), control_ui));
- control_ui->controller->StopGesture.connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::stop_touch), control_ui));
-
}
adj->set_value (mcontrol->internal_to_interface(value));
automation_state_changed (control_ui);
- mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::ui_parameter_changed, this, control_ui), gui_context());
mcontrol->alist()->automation_state_changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::automation_state_changed, this, control_ui), gui_context());
input_controls.push_back (control_ui);
+ input_controls_with_automation.push_back (control_ui);
} else if (!is_input) {
0xcccc00ff, 0xcccc00ff,
0xffaa00ff, 0xffaa00ff,
0xff0000ff,
- ARDOUR_UI::config()->get_MeterBackgroundBot(),
- ARDOUR_UI::config()->get_MeterBackgroundTop()
+ UIConfiguration::instance().color ("meter background bottom"),
+ UIConfiguration::instance().color ("meter background top")
);
info->min_unbound = desc.min_unbound;
return control_ui;
}
-void
-GenericPluginUI::start_touch (GenericPluginUI::ControlUI* cui)
-{
- cui->control->start_touch (cui->control->session().transport_frame());
-}
-
-void
-GenericPluginUI::stop_touch (GenericPluginUI::ControlUI* cui)
-{
- cui->control->stop_touch (false, cui->control->session().transport_frame());
-}
-
void
GenericPluginUI::astate_clicked (ControlUI* cui)
{
}
void
-GenericPluginUI::automation_manual_all(std::vector<ControlUI *>& controls)
+GenericPluginUI::set_all_automation (AutoState as)
{
- for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
- {
- if ((*control_it)->controller || (*control_it)->button)
- set_automation_state((AutoState) ARDOUR::Off, (*control_it));
- }
-}
-
-void
-GenericPluginUI::automation_play_all(std::vector<ControlUI *>& controls)
-{
- for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
- {
- if ((*control_it)->controller || (*control_it)->button)
- set_automation_state((AutoState) Play, (*control_it));
- }
-}
-
-void
-GenericPluginUI::automation_write_all(std::vector<ControlUI *>& controls)
-{
- for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
- {
- if ((*control_it)->controller || (*control_it)->button)
- set_automation_state((AutoState) Write, (*control_it));
- }
-}
-
-void
-GenericPluginUI::automation_touch_all(std::vector<ControlUI *>& controls)
-{
- for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
- {
- if ((*control_it)->controller || (*control_it)->button)
- set_automation_state((AutoState) Touch, (*control_it));
- }
+ for (vector<ControlUI*>::iterator i = input_controls_with_automation.begin(); i != input_controls_with_automation.end(); ++i) {
+ if ((*i)->controller || (*i)->button) {
+ set_automation_state (as, (*i));
+ }
+ }
}
void
{
if (output_controls.size() > 0 ) {
screen_update_connection.disconnect();
- screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect
- (sigc::mem_fun(*this, &GenericPluginUI::output_update));
+ screen_update_connection = Timers::super_rapid_connect (sigc::mem_fun(*this, &GenericPluginUI::output_update));
}
return false;
}