summaryrefslogtreecommitdiff
path: root/gtk2_ardour/generic_pluginui.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/generic_pluginui.cc')
-rw-r--r--gtk2_ardour/generic_pluginui.cc56
1 files changed, 52 insertions, 4 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 678405eddd..af21227c0f 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -50,6 +50,7 @@
#include "utils.h"
#include "gui_thread.h"
#include "automation_controller.h"
+#include "plugin_eq_gui.h"
#include "i18n.h"
@@ -64,6 +65,7 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
: PlugUIBase (pi),
button_table (initial_button_rows, initial_button_cols),
output_table (initial_output_rows, initial_output_cols),
+ eqgui_toggle(_("Freq Analysis")),
hAdjustment(0.0, 0.0, 0.0),
vAdjustment(0.0, 0.0, 0.0),
scroller_view(hAdjustment, vAdjustment),
@@ -72,7 +74,9 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
{
set_name ("PluginEditor");
set_border_width (10);
- set_homogeneous (false);
+ //set_homogeneous (false);
+
+ pack1(main_contents);
settings_box.set_homogeneous (false);
@@ -92,10 +96,11 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
constraint_hbox->set_spacing (5);
constraint_hbox->pack_start (*smaller_hbox, true, false);
constraint_hbox->pack_end (bypass_button, false, false);
+ constraint_hbox->pack_start (eqgui_toggle, false, false);
settings_box.pack_end (*constraint_hbox, false, false);
- pack_start (settings_box, false, false);
+ main_contents.pack_start (settings_box, false, false);
if ( is_scrollable ) {
scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
@@ -104,13 +109,16 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
scroller_view.add (hpacker);
scroller.add (scroller_view);
- pack_start (scroller, true, true);
+ main_contents.pack_start (scroller, true, true);
}
else {
- pack_start (hpacker, false, false);
+ main_contents.pack_start (hpacker, false, false);
}
+ eqgui_toggle.set_active (false);
+ eqgui_toggle.signal_toggled().connect( mem_fun(*this, &GenericPluginUI::toggle_plugin_analysis));
+
pi->ActiveChanged.connect (bind(mem_fun(*this, &GenericPluginUI::processor_active_changed),
boost::weak_ptr<Processor>(pi)));
bypass_button.set_active (!pi->active());
@@ -817,3 +825,43 @@ GenericPluginUI::setup_scale_values(guint32 port_index, ControlUI* cui)
return enums;
}
+
+
+void
+GenericPluginUI::toggle_plugin_analysis()
+{
+
+
+
+ if (eqgui_toggle.get_active() && !get_child2()) {
+ // Create the GUI
+ PluginEqGui *foo = new PluginEqGui(insert);
+ pack2( *foo );
+ show_all();
+ }
+
+ Gtk::Widget *gui;
+
+ if (!eqgui_toggle.get_active() && (gui = get_child2())) {
+ // Hide & remove
+ gui->hide();
+ remove(*gui);
+
+ delete gui;
+
+ Gtk::Widget *toplevel = 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);
+ }
+}