fixed testing for non-top-level objects


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Roman Rolinsky 2005-09-09 10:44:28 +00:00
parent 14653d3b83
commit 34b29ae796
3 changed files with 25 additions and 19 deletions

View 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
-------

View 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

View 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()