13
0

Use combo box for plugin controls for ports marked as

lv2:enumeration.


git-svn-id: svn://localhost/ardour2/branches/3.0@11745 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2012-03-21 16:43:01 +00:00
parent 0af622521b
commit 21a0b7ace0
3 changed files with 16 additions and 2 deletions

View File

@ -518,8 +518,12 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
*/
int const steps = desc.integer_step ? (desc.upper - desc.lower + 1) / desc.step : 0;
if (control_ui->scale_points && steps && control_ui->scale_points->size() == steps) {
/* There is a label for each possible value of this input, so build a combo box */
if (control_ui->scale_points && ((steps && control_ui->scale_points->size() == steps) || desc.enumeration)) {
/* Either:
* a) There is a label for each possible value of this input, or
* b) This port is marked as being an enumeration.
*/
std::vector<std::string> labels;
for (

View File

@ -84,6 +84,11 @@ class Plugin : public PBD::StatefulDestructible, public Latent
struct ParameterDescriptor {
/* XXX: it would probably be nice if this initialised everything */
ParameterDescriptor ()
: enumeration (false)
{}
/* essentially a union of LADSPA and VST info */
bool integer_step;
@ -98,6 +103,7 @@ class Plugin : public PBD::StatefulDestructible, public Latent
float largestep;
bool min_unbound;
bool max_unbound;
bool enumeration;
};
XMLNode& get_state ();

View File

@ -105,6 +105,7 @@ public:
LilvNode* lv2_integer;
LilvNode* lv2_sampleRate;
LilvNode* lv2_toggled;
LilvNode* lv2_enumeration;
LilvNode* midi_MidiEvent;
LilvNode* ui_GtkUI;
LilvNode* ui_external;
@ -985,6 +986,8 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c
desc.largestep = delta / 10.0f;
}
desc.enumeration = lilv_port_has_property(_impl->plugin, port, _world.lv2_enumeration);
lilv_node_free(def);
lilv_node_free(min);
lilv_node_free(max);
@ -1336,6 +1339,7 @@ LV2World::LV2World()
lv2_integer = lilv_new_uri(world, LILV_NS_LV2 "integer");
lv2_sampleRate = lilv_new_uri(world, LILV_NS_LV2 "sampleRate");
lv2_toggled = lilv_new_uri(world, LILV_NS_LV2 "toggled");
lv2_enumeration = lilv_new_uri(world, LILV_NS_LV2 "enumeration");
midi_MidiEvent = lilv_new_uri(world, LILV_URI_MIDI_EVENT);
ui_GtkUI = lilv_new_uri(world, NS_UI "GtkUI");
ui_external = lilv_new_uri(world, NS_UI "external");