X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgui_object.h;h=ee6d1cdf4ccaf42a2b4277dab98fd790687bcc09;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=849665670f2c60a8e99842108d11fc657c2d6171;hpb=80972784e348aa51522e562b3d6b250745c489f0;p=ardour.git diff --git a/gtk2_ardour/gui_object.h b/gtk2_ardour/gui_object.h index 849665670f..ee6d1cdf4c 100644 --- a/gtk2_ardour/gui_object.h +++ b/gtk2_ardour/gui_object.h @@ -28,18 +28,10 @@ #include "pbd/xml++.h" #include "pbd/id.h" -class GUIObjectState { - private: - typedef boost::variant Variant; - typedef std::map PropertyMap; - - public: - typedef std::map StringPropertyMap; - - ~GUIObjectState(); - - StringPropertyMap::const_iterator begin () const; - StringPropertyMap::const_iterator end () const; +class GUIObjectState +{ +public: + GUIObjectState (); XMLNode& get_state () const; int set_state (const XMLNode&); @@ -47,24 +39,23 @@ class GUIObjectState { static const std::string xml_node_name; void load (const XMLNode&); - GUIObjectState& operator= (const GUIObjectState& other); - std::string get_string (const std::string& id, const std::string& prop_name, bool* empty = 0); - template void set (const std::string& id, const std::string& prop_name, const T& val) { - StringPropertyMap::iterator i = _property_maps.find (id); - - if (i != _property_maps.end()) { - i->second[prop_name] = val; - } else { - _property_maps[id] = PropertyMap(); - _property_maps[id][prop_name] = val; - } + template void set_property (const std::string& id, const std::string& prop_name, const T& val) { + XMLNode* child = get_or_add_node (id); + std::stringstream s; + s << val; + child->add_property (prop_name.c_str(), s.str()); } - private: - StringPropertyMap _property_maps; - void clear_maps (); + std::list all_ids () const; + + static XMLNode* get_node (const XMLNode *, const std::string &); + XMLNode* get_or_add_node (const std::string &); + static XMLNode* get_or_add_node (XMLNode *, const std::string &); + + private: + XMLNode _state; };