]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/wxrcedit/xmlhelpr.cpp
added wxFrame::IsMDIChild() (msw only, protected)
[wxWidgets.git] / contrib / utils / wxrcedit / xmlhelpr.cpp
index c5a56f854e3da328dc18f390b8b23c69e513ddad..73a69129c671fb0a98741353d1ee1d65340d5b8f 100644 (file)
@@ -55,19 +55,36 @@ wxXmlNode *XmlFindNode(wxXmlNode *parent, const wxString& path)
 
 
 
-void XmlWriteValue(wxXmlNode *parent, const wxString& name, const wxString& value)
+wxXmlNode *XmlCreateNode(wxXmlNode *parent, const wxString& name)
 {
-    wxXmlNode *n = XmlFindNode(parent, name);
-    if (n == NULL) 
+    wxXmlNode *n;
+    wxString nm;
+
+    wxStringTokenizer tkn(name, _T("/"));
+    n = parent;
+    while (tkn.HasMoreTokens())
     {
-        wxString pname = name.BeforeLast(_T('/'));
-        if (pname.IsEmpty()) pname = name;
-        wxXmlNode *p = XmlFindNode(parent, pname);
-        if (p == NULL) p = parent;
-        n = new wxXmlNode(wxXML_ELEMENT_NODE, name.AfterLast(_T('/')));
-        p->AddChild(n);
-        n->AddChild(new wxXmlNode(wxXML_TEXT_NODE, wxEmptyString));
+        parent = n;
+        nm = tkn.GetNextToken();
+        n = XmlFindNodeSimple(parent, nm);
+        if (n) continue;
+        
+        // n == NULL:
+        n = new wxXmlNode(wxXML_ELEMENT_NODE, nm);
+        parent->AddChild(n);        
     }
+    n->AddChild(new wxXmlNode(wxXML_TEXT_NODE, wxEmptyString));
+    
+    return n;
+}
+
+
+
+void XmlWriteValue(wxXmlNode *parent, const wxString& name, const wxString& value)
+{
+    wxXmlNode *n = XmlFindNode(parent, name);
+    if (n == NULL)
+        n = XmlCreateNode(parent, name);
     
     n = n->GetChildren();