diff options
author | Robin Gareus <robin@gareus.org> | 2016-06-12 16:43:21 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-06-12 16:43:21 +0200 |
commit | 9a7fbd53a2ef9158a397b865fe7e7e19659e9325 (patch) | |
tree | 40cd92609ebc164038dff3fc67075e31f6a2bd9d /gtk2_ardour | |
parent | 99a996e836d6b7d5369e43e0e887144eedf5770b (diff) |
don't show meter for integer/enum outputs in a generic plugin UI
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 77 |
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); } |