diff options
author | David Robillard <d@drobilla.net> | 2009-11-12 06:56:26 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-11-12 06:56:26 +0000 |
commit | 64bd557e75113743f179086b365ea7d97b72ee3e (patch) | |
tree | 6a6f5b72a8ce97616cd5ccff188f2e44e92d1ba8 /src/gui/Controls.cpp | |
parent | 023dcf4cb297928879eb0e53cf0216edb562f6fa (diff) | |
download | ingen-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/Controls.cpp')
-rw-r--r-- | src/gui/Controls.cpp | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/src/gui/Controls.cpp b/src/gui/Controls.cpp index a6a2ead3..39c18a88 100644 --- a/src/gui/Controls.cpp +++ b/src/gui/Controls.cpp @@ -279,7 +279,6 @@ SliderControl::update_value_from_spinner() _control_panel->value_changed(_port_model, value); - //m_port_model->value(value); _enable_signal = true; } } @@ -469,5 +468,84 @@ ToggleControl::toggled() } +// ///////////// StringControl ////////////// // + + +StringControl::StringControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml) + : Control(cobject, xml) +{ + xml->get_widget("string_control_name_label", _name_label); + xml->get_widget("string_control_entry", _entry); +} + + +void +StringControl::init(ControlPanel* panel, SharedPtr<PortModel> pm) +{ + _enable_signal = false; + + Control::init(panel, pm); + + assert(_name_label); + assert(_entry); + + set_name(pm->path().name()); + + _entry->signal_activate().connect(sigc::mem_fun(*this, &StringControl::activated)); + set_value(pm->value()); + + _enable_signal = true; + show_all(); +} + + +void +StringControl::set_name(const string& name) +{ + string name_label = "<span weight=\"bold\">"; + name_label += name + "</span>"; + _name_label->set_markup(name_label); +} + + +void +StringControl::set_value(const Atom& val) +{ + _enable_signal = false; + if (val.type() == Atom::STRING) + _entry->set_text(val.get_string()); + else + cerr << "ERROR: Non-string value for string port" << endl; + _enable_signal = true; +} + + +void +StringControl::enable() +{ + _entry->property_sensitive() = true; + _name_label->property_sensitive() = true; +} + + +void +StringControl::disable() +{ + _entry->property_sensitive() = false; + _name_label->property_sensitive() = false; +} + + +void +StringControl::activated() +{ + if (_enable_signal) { + const string& value = _entry->get_text(); + cerr << "String control activated: " << value << endl; + _control_panel->value_changed(_port_model, value.c_str()); + } +} + + } // namespace GUI } // namespace Ingen |