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 0.1.6-5
------- -------
Testing limited to top-level objects because of references Fixed testing for any element inside object tree.
problem until a nice solution is found.
0.1.6-4 0.1.6-4
------- -------

View File

@ -489,6 +489,8 @@ class XML_Tree(wxTreeCtrl):
self.root = self.AddRoot('XML tree', self.rootImage, self.root = self.AddRoot('XML tree', self.rootImage,
data=wxTreeItemData(self.rootObj)) data=wxTreeItemData(self.rootObj))
self.SetItemHasChildren(self.root) self.SetItemHasChildren(self.root)
self.testElem = self.dom.createElement('dummy')
self.mainNode.appendChild(self.testElem)
self.Expand(self.root) self.Expand(self.root)
# Clear old data and set new # Clear old data and set new
@ -513,6 +515,12 @@ class XML_Tree(wxTreeCtrl):
else: else:
self.mainNode.removeChild(node) self.mainNode.removeChild(node)
node.unlink() 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) self.Expand(self.root)
# Add tree item for given parent item if node is DOM element node with # 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(): if g.panel.IsModified():
self.Apply(xxx, item) # apply changes self.Apply(xxx, item) # apply changes
treeObj = xxx.treeObject() 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', if treeObj.className not in ['wxFrame', 'wxPanel', 'wxDialog',
'wxMenuBar', 'wxToolBar', 'wxWizard', 'wxMenuBar', 'wxToolBar', 'wxWizard',
'wxWizardPageSimple']: 'wxWizardPageSimple']:
@ -796,32 +801,30 @@ class XML_Tree(wxTreeCtrl):
# Save in memory FS # Save in memory FS
memFile = MemoryFile('xxx.xrc') memFile = MemoryFile('xxx.xrc')
# Create memory XML file # Create memory XML file
elem = xxx.element elem = xxx.element.cloneNode(True)
# Change window id to _XRCED_T_W. This gives some name for
# unnamed windows, and for named gives the possibility to
# write sawfish scripts.
if not xxx.name: if not xxx.name:
name = 'noname' name = 'noname'
else: else:
name = xxx.name name = xxx.name
elem.setAttribute('name', STD_NAME) elem.setAttribute('name', STD_NAME)
oldTestNode = self.testElem
self.testElem = elem
self.mainNode.replaceChild(elem, oldTestNode)
oldTestNode.unlink()
# Replace wizard page class temporarily # Replace wizard page class temporarily
if xxx.__class__ in [xxxWizardPage, xxxWizardPageSimple]: if xxx.__class__ in [xxxWizardPage, xxxWizardPageSimple]:
oldCl = elem.getAttribute('class') oldCl = elem.getAttribute('class')
elem.setAttribute('class', 'wxPanel') elem.setAttribute('class', 'wxPanel')
parent = elem.parentNode parent = elem.parentNode
next = elem.nextSibling
encd = self.rootObj.params['encoding'].value() encd = self.rootObj.params['encoding'].value()
if not encd: encd = None if not encd: encd = None
self.dom.writexml(memFile, encoding=encd) try:
# Put back in place self.dom.writexml(memFile, encoding=encd)
# Remove temporary name or restore changed except:
if not xxx.name: inf = sys.exc_info()
elem.removeAttribute('name') wxLogError(traceback.format_exception(inf[0], inf[1], None)[-1])
else: wxLogError('Error writing temporary file')
elem.setAttribute('name', xxx.name) if debug: raise
if xxx.__class__ in [xxxWizardPage, xxxWizardPageSimple]:
elem.setAttribute('class', oldCl)
memFile.close() # write to wxMemoryFS memFile.close() # write to wxMemoryFS
xmlFlags = wxXRC_NO_SUBCLASSING xmlFlags = wxXRC_NO_SUBCLASSING
# Use translations if encoding is not specified # 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 = tree.dom.cloneNode(True)
self.domCopy = MyDocument() self.domCopy = MyDocument()
mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(True)) 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.Indent(mainNode)
self.domCopy.writexml(f, encoding = g.currentEncoding) self.domCopy.writexml(f, encoding = g.currentEncoding)
f.close() f.close()