diff options
Diffstat (limited to 'gtk2_ardour/axis_view.h')
-rw-r--r-- | gtk2_ardour/axis_view.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/gtk2_ardour/axis_view.h b/gtk2_ardour/axis_view.h index 8de39583ef..81fe489252 100644 --- a/gtk2_ardour/axis_view.h +++ b/gtk2_ardour/axis_view.h @@ -63,20 +63,29 @@ class AxisView : public virtual PBD::ScopedConnectionList, public virtual ARDOUR */ std::string gui_property (const std::string& property_name) const; - void set_gui_property (const std::string& property_name, const char* value) { - property_hashtable.erase(property_name); - property_hashtable.emplace(property_name, value); - gui_object_state().set_property (state_id(), property_name, value); + bool get_gui_property (const std::string& property_name, std::string& value) const; + + template <typename T> + bool get_gui_property (const std::string& property_name, T& value) const + { + std::string str = gui_property (property_name); + + if (!str.empty ()) { + return PBD::string_to<T>(str, value); + } + return false; } - void set_gui_property (const std::string& property_name, const std::string& value) { - set_gui_property (property_name, value.c_str()); + void set_gui_property (const std::string& property_name, const std::string& value); + + void set_gui_property (const std::string& property_name, const char* value) { + set_gui_property (property_name, std::string(value)); } - template<typename T> void set_gui_property (const std::string& property_name, const T& value) { - property_hashtable.erase(property_name); - property_hashtable.emplace(property_name, PBD::to_string(value)); - gui_object_state().set_property<T> (state_id(), property_name, value); + template <typename T> + void set_gui_property (const std::string& property_name, const T& value) + { + set_gui_property (property_name, PBD::to_string(value)); } void cleanup_gui_properties () { |