Remove internal edit mode and add "content" tool.
[ardour.git] / gtk2_ardour / gui_object.cc
index 2b516d04dac97e64b16bf0230cd6f14d329cec6f..3e21f82fa424280bd76d56991081b0c5bc7453f3 100644 (file)
@@ -34,10 +34,11 @@ GUIObjectState::GUIObjectState ()
 }
 
 XMLNode *
-GUIObjectState::find_node (const string& id) const
+GUIObjectState::get_node (const XMLNode* parent, const string& id)
 {
-       XMLNodeList const & children = _state.children ();
+       XMLNodeList const & children = parent->children ();
        for (XMLNodeList::const_iterator i = children.begin(); i != children.end(); ++i) {
+
                if ((*i)->name() != X_("Object")) {
                        continue;
                }
@@ -51,6 +52,25 @@ GUIObjectState::find_node (const string& id) const
        return 0;
 }
 
+XMLNode *
+GUIObjectState::get_or_add_node (XMLNode* parent, const string& id)
+{
+       XMLNode* child = get_node (parent, id);
+       if (!child) {
+               child = new XMLNode (X_("Object"));
+               child->add_property (X_("id"), id);
+               parent->add_child_nocopy (*child);
+       }
+
+       return child;
+}
+
+XMLNode *
+GUIObjectState::get_or_add_node (const string& id)
+{
+       return get_or_add_node (&_state, id);
+}
+
 /** Get a string from our state.
  *  @param id property of Object node to look for.
  *  @param prop_name name of the Object property to return.
@@ -61,7 +81,8 @@ GUIObjectState::find_node (const string& id) const
 string 
 GUIObjectState::get_string (const string& id, const string& prop_name, bool* empty)
 {
-       XMLNode* child = find_node (id);
+       XMLNode* child = get_node (&_state, id);
+
        if (!child) {
                if (empty) {
                        *empty = true;
@@ -107,13 +128,6 @@ GUIObjectState::load (const XMLNode& node)
        (void) set_state (node);
 }
 
-GUIObjectState&
-GUIObjectState::operator= (const GUIObjectState& other)
-{
-       _state = other._state;
-       return *this;
-}
-
 std::list<string>
 GUIObjectState::all_ids () const
 {