]> git.saurik.com Git - wxWidgets.git/commitdiff
0.1.6-5
authorRoman Rolinsky <rolinsky@femagsoft.com>
Fri, 9 Sep 2005 10:44:28 +0000 (10:44 +0000)
committerRoman Rolinsky <rolinsky@femagsoft.com>
Fri, 9 Sep 2005 10:44:28 +0000 (10:44 +0000)
fixed testing for non-top-level objects

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/tools/XRCed/CHANGES.txt
wxPython/wx/tools/XRCed/tree.py
wxPython/wx/tools/XRCed/xrced.py

index 99c5cc8f0a3bfef99bafb1cd80cd096d141cfb75..5d62bed3679b2f1156fa09d543388deb1cb3ff58 100644 (file)
@@ -1,8 +1,7 @@
 0.1.6-5
 -------
 
-Testing limited to top-level objects because of references
-problem until a nice solution is found.
+Fixed testing for any element inside object tree.
 
 0.1.6-4
 -------
index 408c8fb5721f4ddc76b646879856c2ea356d5dd3..6719d5c5079e56200ca5c7709d616e644cee9022 100644 (file)
@@ -489,6 +489,8 @@ class XML_Tree(wxTreeCtrl):
         self.root = self.AddRoot('XML tree', self.rootImage,
                                  data=wxTreeItemData(self.rootObj))
         self.SetItemHasChildren(self.root)
+        self.testElem = self.dom.createElement('dummy')
+        self.mainNode.appendChild(self.testElem)
         self.Expand(self.root)
 
     # Clear old data and set new
@@ -513,6 +515,12 @@ class XML_Tree(wxTreeCtrl):
             else:
                 self.mainNode.removeChild(node)
                 node.unlink()
+        if self.mainNode.firstChild:
+            self.testElem = self.dom.createElement('dummy')
+            self.mainNode.insertBefore(self.testElem, self.mainNode.firstChild)
+        else:
+            self.testElem = self.dom.createElement('dummy')
+            self.mainNode.appendChild(self.testElem)
         self.Expand(self.root)
 
     # Add tree item for given parent item if node is DOM element node with
@@ -719,9 +727,6 @@ class XML_Tree(wxTreeCtrl):
         if g.panel.IsModified():
             self.Apply(xxx, item)       # apply changes
         treeObj = xxx.treeObject()
-        if self.GetItemParent(item) != self.root:
-            wxLogMessage('Only top-level objects can be tested')
-            return
         if treeObj.className not in ['wxFrame', 'wxPanel', 'wxDialog',
                                      'wxMenuBar', 'wxToolBar', 'wxWizard',
                                      'wxWizardPageSimple']:
@@ -796,32 +801,30 @@ class XML_Tree(wxTreeCtrl):
         # Save in memory FS
         memFile = MemoryFile('xxx.xrc')
         # Create memory XML file
-        elem = xxx.element
-        # Change window id to _XRCED_T_W. This gives some name for
-        # unnamed windows, and for named gives the possibility to
-        # write sawfish scripts.
+        elem = xxx.element.cloneNode(True)
         if not xxx.name:
             name = 'noname'
         else:
             name = xxx.name
         elem.setAttribute('name', STD_NAME)
+        oldTestNode = self.testElem
+        self.testElem = elem
+        self.mainNode.replaceChild(elem, oldTestNode)
+        oldTestNode.unlink()
         # Replace wizard page class temporarily
         if xxx.__class__ in [xxxWizardPage, xxxWizardPageSimple]:
             oldCl = elem.getAttribute('class')
             elem.setAttribute('class', 'wxPanel')
         parent = elem.parentNode
-        next = elem.nextSibling
         encd = self.rootObj.params['encoding'].value()
         if not encd: encd = None
-        self.dom.writexml(memFile, encoding=encd)
-        # Put back in place
-        # Remove temporary name or restore changed
-        if not xxx.name:
-            elem.removeAttribute('name')
-        else:
-            elem.setAttribute('name', xxx.name)
-        if xxx.__class__ in [xxxWizardPage, xxxWizardPageSimple]:
-            elem.setAttribute('class', oldCl)            
+        try:
+            self.dom.writexml(memFile, encoding=encd)
+        except:
+            inf = sys.exc_info()
+            wxLogError(traceback.format_exception(inf[0], inf[1], None)[-1])
+            wxLogError('Error writing temporary file')
+            if debug: raise            
         memFile.close()                 # write to wxMemoryFS
         xmlFlags = wxXRC_NO_SUBCLASSING
         # Use translations if encoding is not specified
index 5ef935b9f3901a60ab297a4b7c85a139c6362d4a..0a294014d9a64ee5b7f8e1b8994c755dcbb23fc9 100644 (file)
@@ -1071,6 +1071,10 @@ Homepage: http://xrced.sourceforge.net\
             #self.domCopy = tree.dom.cloneNode(True)
             self.domCopy = MyDocument()
             mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(True))
+            # Remove first child (test element)
+            testElem = mainNode.firstChild
+            mainNode.removeChild(testElem)
+            testElem.unlink()
             self.Indent(mainNode)
             self.domCopy.writexml(f, encoding = g.currentEncoding)
             f.close()