summaryrefslogtreecommitdiff
path: root/gtk2_ardour/generic_pluginui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-06-12 16:43:21 +0200
committerRobin Gareus <robin@gareus.org>2016-06-12 16:43:21 +0200
commit9a7fbd53a2ef9158a397b865fe7e7e19659e9325 (patch)
tree40cd92609ebc164038dff3fc67075e31f6a2bd9d /gtk2_ardour/generic_pluginui.cc
parent99a996e836d6b7d5369e43e0e887144eedf5770b (diff)
don't show meter for integer/enum outputs in a generic plugin UI
Diffstat (limited to 'gtk2_ardour/generic_pluginui.cc')
-rw-r--r--gtk2_ardour/generic_pluginui.cc77
1 files changed, 42 insertions, 35 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 995ad26b67..cba2cc24d9 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -762,48 +762,55 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter& param,
control_ui->display->show_all ();
- /* set up a meter */
- /* TODO: only make a meter if the port is Hinted for it */
-
- MeterInfo * info = new MeterInfo();
- control_ui->meterinfo = info;
-
- info->meter = new FastMeter (
- 5, 5, FastMeter::Vertical, 0,
- 0x0000aaff,
- 0x008800ff, 0x008800ff,
- 0x00ff00ff, 0x00ff00ff,
- 0xcccc00ff, 0xcccc00ff,
- 0xffaa00ff, 0xffaa00ff,
- 0xff0000ff,
- UIConfiguration::instance().color ("meter background bottom"),
- UIConfiguration::instance().color ("meter background top")
- );
-
- info->min_unbound = desc.min_unbound;
- info->max_unbound = desc.max_unbound;
-
- info->min = desc.lower;
- info->max = desc.upper;
-
control_ui->vbox = manage (new VBox);
- control_ui->hbox = manage (new HBox);
-
- control_ui->hbox->set_spacing(1);
control_ui->vbox->set_spacing(3);
- control_ui->label.set_angle(90);
- control_ui->hbox->pack_start (control_ui->label, false, false);
- control_ui->hbox->pack_start (*info->meter, false, false);
+ if (desc.integer_step || desc.enumeration) {
+ control_ui->vbox->pack_end (*control_ui->display, false, false);
+ control_ui->vbox->pack_end (control_ui->label, false, false);
+ } else {
+ /* set up a meter for float ports */
+
+ MeterInfo * info = new MeterInfo();
+ control_ui->meterinfo = info;
- control_ui->vbox->pack_start (*control_ui->hbox, false, false);
+ info->meter = new FastMeter (
+ 5, 5, FastMeter::Vertical, 0,
+ 0x0000aaff,
+ 0x008800ff, 0x008800ff,
+ 0x00ff00ff, 0x00ff00ff,
+ 0xcccc00ff, 0xcccc00ff,
+ 0xffaa00ff, 0xffaa00ff,
+ 0xff0000ff,
+ UIConfiguration::instance().color ("meter background bottom"),
+ UIConfiguration::instance().color ("meter background top")
+ );
- control_ui->vbox->pack_start (*control_ui->display, false, false);
+ info->min_unbound = desc.min_unbound;
+ info->max_unbound = desc.max_unbound;
- control_ui->pack_start (*control_ui->vbox);
+ info->min = desc.lower;
+ info->max = desc.upper;
+
+ control_ui->label.set_angle(90);
- control_ui->meterinfo->meter->show_all();
- control_ui->meterinfo->packed = true;
+ HBox* center = manage (new HBox);
+ center->set_spacing(1);
+ center->pack_start (control_ui->label, false, false);
+ center->pack_start (*info->meter, false, false);
+
+ control_ui->hbox = manage (new HBox);
+ control_ui->hbox->pack_start (*center, true, false);
+
+ // horizontally center this hbox in the vbox
+ control_ui->vbox->pack_start (*control_ui->hbox, false, false);
+
+ control_ui->meterinfo->meter->show_all();
+ control_ui->meterinfo->packed = true;
+ control_ui->vbox->pack_start (*control_ui->display, false, false);
+ }
+
+ control_ui->pack_start (*control_ui->vbox);
output_controls.push_back (control_ui);
}