summaryrefslogtreecommitdiffstats
path: root/src/gui/ControlPanel.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-11-12 06:56:26 +0000
committerDavid Robillard <d@drobilla.net>2009-11-12 06:56:26 +0000
commit64bd557e75113743f179086b365ea7d97b72ee3e (patch)
tree6a6f5b72a8ce97616cd5ccff188f2e44e92d1ba8 /src/gui/ControlPanel.cpp
parent023dcf4cb297928879eb0e53cf0216edb562f6fa (diff)
downloadingen-64bd557e75113743f179086b365ea7d97b72ee3e.tar.gz
ingen-64bd557e75113743f179086b365ea7d97b72ee3e.tar.bz2
ingen-64bd557e75113743f179086b365ea7d97b72ee3e.zip
String port support.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2255 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/ControlPanel.cpp')
-rw-r--r--src/gui/ControlPanel.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/gui/ControlPanel.cpp b/src/gui/ControlPanel.cpp
index 99b66899..1e7d177b 100644
--- a/src/gui/ControlPanel.cpp
+++ b/src/gui/ControlPanel.cpp
@@ -111,22 +111,29 @@ ControlPanel::add_port(SharedPtr<PortModel> pm)
if (find_port(pm->path()) != NULL)
return;
- // Add port
- if (pm->type().is_control() && pm->is_input()) {
- Control* control = NULL;
+ Control* control = NULL;
- if (pm->is_toggle()) {
+ // Add port
+ if (pm->is_input()) {
+ if (pm->type().is_control() && pm->is_toggle()) {
ToggleControl* tc;
Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("toggle_control");
xml->get_widget_derived("toggle_control", tc);
control = tc;
+ } else if (pm->type().is_string()) {
+ StringControl* sc;
+ Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("string_control");
+ xml->get_widget_derived("string_control", sc);
+ control = sc;
} else {
SliderControl* sc;
Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("control_strip");
xml->get_widget_derived("control_strip", sc);
control = sc;
}
+ }
+ if (control) {
control->init(this, pm);
if (_controls.size() > 0)
@@ -223,20 +230,21 @@ ControlPanel::disable_port(const Path& path)
/** Callback for Controls to notify this of a change.
*/
void
-ControlPanel::value_changed(SharedPtr<PortModel> port, float val)
+ControlPanel::value_changed_atom(SharedPtr<PortModel> port, const Raul::Atom& val)
{
if (_callback_enabled) {
if (_all_voices_radio->get_active()) {
- App::instance().engine()->set_port_value(port->path(), Atom(val));
+ App::instance().engine()->set_port_value(port->path(), val);
port->value(val);
} else {
int voice = _voice_spinbutton->get_value_as_int();
- App::instance().engine()->set_voice_value(port->path(), voice, Atom(val));
+ App::instance().engine()->set_voice_value(port->path(), voice, val);
port->value(val);
}
}
}
+
void
ControlPanel::all_voices_selected()
{