From: Roman Rolinsky Date: Fri, 9 Sep 2005 10:44:28 +0000 (+0000) Subject: 0.1.6-5 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/34b29ae796059f5a0f856dbfc6883ab30d897a39 0.1.6-5 fixed testing for non-top-level objects git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/wx/tools/XRCed/CHANGES.txt b/wxPython/wx/tools/XRCed/CHANGES.txt index 99c5cc8f0a..5d62bed367 100644 --- a/wxPython/wx/tools/XRCed/CHANGES.txt +++ b/wxPython/wx/tools/XRCed/CHANGES.txt @@ -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 ------- diff --git a/wxPython/wx/tools/XRCed/tree.py b/wxPython/wx/tools/XRCed/tree.py index 408c8fb572..6719d5c507 100644 --- a/wxPython/wx/tools/XRCed/tree.py +++ b/wxPython/wx/tools/XRCed/tree.py @@ -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 diff --git a/wxPython/wx/tools/XRCed/xrced.py b/wxPython/wx/tools/XRCed/xrced.py index 5ef935b9f3..0a294014d9 100644 --- a/wxPython/wx/tools/XRCed/xrced.py +++ b/wxPython/wx/tools/XRCed/xrced.py @@ -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()