summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_ui.cc
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2009-03-07 11:17:06 +0000
committerSampo Savolainen <v2@iki.fi>2009-03-07 11:17:06 +0000
commitbcd217ec8e11abcb3bc829251b6dc503d606aaeb (patch)
treebdb5d54aa6c7b1b46835acee2c8697dabbf520d7 /gtk2_ardour/plugin_ui.cc
parente09c51251f1742ac5c61966b5dd8c5f61c567f69 (diff)
Improvements to the plugin eq gui:
- phase correction for analysis - move gui elements to a more common location so that it's available for VSTs (needs packing in each PluginUI derived class though) git-svn-id: svn://localhost/ardour2/branches/3.0@4745 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/plugin_ui.cc')
-rw-r--r--gtk2_ardour/plugin_ui.cc47
1 files changed, 46 insertions, 1 deletions
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index 4c7ae5b8a0..bfac04aa9b 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -57,6 +57,7 @@
#include "gui_thread.h"
#include "public_editor.h"
#include "keyboard.h"
+#include "plugin_eq_gui.h"
#include "i18n.h"
@@ -340,7 +341,8 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
plugin (insert->plugin()),
save_button(_("Add")),
bypass_button (_("Bypass")),
- latency_gui (*pi, pi->session().frame_rate(), pi->session().get_block_size())
+ latency_gui (*pi, pi->session().frame_rate(), pi->session().get_block_size()),
+ eqgui_toggle (_("Freq Analysis"))
{
//preset_combo.set_use_arrows_always(true);
update_presets();
@@ -354,6 +356,10 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
insert->ActiveChanged.connect (bind(
mem_fun(*this, &PlugUIBase::processor_active_changed),
boost::weak_ptr<Processor>(insert)));
+
+ eqgui_toggle.set_active (false);
+ eqgui_toggle.signal_toggled().connect( mem_fun(*this, &PlugUIBase::toggle_plugin_analysis));
+
bypass_button.set_active (!pi->active());
@@ -373,6 +379,8 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
ARDOUR_UI::instance()->set_tip (&focus_button, _("Click to focus all keyboard events on this plugin window"), "");
ARDOUR_UI::instance()->set_tip (&bypass_button, _("Click to enable/disable this plugin"), "");
+
+ plugin_eq_bin.set_expanded(true);
}
void
@@ -459,6 +467,43 @@ PlugUIBase::focus_toggled (GdkEventButton* ev)
}
void
+PlugUIBase::toggle_plugin_analysis()
+{
+ if (eqgui_toggle.get_active() && !plugin_eq_bin.get_child()) {
+ // Create the GUI
+ PluginEqGui *foo = new PluginEqGui(insert);
+ plugin_eq_bin.add( *foo );
+ plugin_eq_bin.show_all();
+ }
+
+ Gtk::Widget *gui;
+
+ if (!eqgui_toggle.get_active() && (gui = plugin_eq_bin.get_child())) {
+ // Hide & remove
+ gui->hide();
+ //plugin_eq_bin.remove(*gui);
+ plugin_eq_bin.remove();
+
+ delete gui;
+
+ Gtk::Widget *toplevel = plugin_eq_bin.get_toplevel();
+ if (!toplevel) {
+ std::cerr << "No toplevel widget?!?!" << std::endl;
+ return;
+ }
+
+ Gtk::Container *cont = dynamic_cast<Gtk::Container *>(toplevel);
+ if (!cont) {
+ std::cerr << "Toplevel widget is not a container?!?" << std::endl;
+ return;
+ }
+
+ Gtk::Allocation alloc(0, 0, 50, 50); // Just make it small
+ toplevel->size_allocate(alloc);
+ }
+}
+
+void
PlugUIBase::update_presets ()
{
vector<string> preset_labels;