From: smbaker Date: Tue, 14 Jun 2011 00:38:00 +0000 (-0700) Subject: fix scrolling issues and display of xml tag X-Git-Tag: sface-0.1-15~3 X-Git-Url: http://git.onelab.eu/?p=sface.git;a=commitdiff_plain;h=3439851d679809141ed08e5e486531cd2cbd4f9a fix scrolling issues and display of xml tag --- diff --git a/sface/xmlwidget.py b/sface/xmlwidget.py index be53182..47dedeb 100644 --- a/sface/xmlwidget.py +++ b/sface/xmlwidget.py @@ -13,14 +13,6 @@ class DomModel(QAbstractItemModel): def __init__(self, document, parent = 0): QAbstractItemModel.__init__(self, parent) self.domDocument = document - # one of the children of the rootItem is the 'xml' thing. - # here I delete it. - childList = document.childNodes() - for i in range(childList.count()): - currElem = childList.item(i) - if (currElem.nodeType() == QDomNode.ProcessingInstructionNode): - document.removeChild(currElem) - break self.rootItem = DomItem(document, 0); def data(self, index, role = Qt.DisplayRole): @@ -59,7 +51,10 @@ class DomModel(QAbstractItemModel): elif node.nodeType() == QDomNode.EntityNode: return QString('unsupported node type') elif node.nodeType() == QDomNode.ProcessingInstructionNode: - return QVariant() + obj = QObject() + obj.setProperty('nodeType', QString('element')) + obj.setProperty('content', node.nodeName() + " " + node.nodeValue()) + return obj elif node.nodeType() == QDomNode.CommentNode: obj = QObject() obj.setProperty('nodeType', QString('comment')) @@ -195,7 +190,7 @@ class XmlWindow(QDialog): def show(self): self.updateView() QDialog.show(self) - + def updateView(self): del self.document del self.model @@ -206,7 +201,6 @@ class XmlWindow(QDialog): self.model = DomModel(self.document, self) self.view.setModel(self.model) - self.view.expand(self.model.index(0, 0)) #expand first level only #move the code below to rspec window rspec_file = config.getSliceRSpecFile() @@ -215,6 +209,18 @@ class XmlWindow(QDialog): self.document.setContent(open(rspec_file,'r').read()) + if self.document.childNodes().count() == 0: + # empty document - do nothing + pass + elif self.document.childNodes().item(0).nodeType() == QDomNode.ProcessingInstructionNode: + # the first item is the tag, so expand the second + self.view.expand(self.model.index(1,0)) + else: + # the document didn't start with an tag; let's try to expand + # the first item on the assumption that it is our root level xml + # tag. + self.view.expand(self.model.index(0,0)) + class XmlDelegate(QItemDelegate): @@ -258,7 +264,7 @@ class XmlDelegate(QItemDelegate): document.setHtml(text) # the +5 is for margin. The +4 is voodoo; # fm.height just give it too small. - return QSize(document.idealWidth() + 5, fm.height() + 4) + return QSize(document.idealWidth() + 5, fm.height() + 4) class ElemNodeDelegate(QAbstractItemDelegate): def paint(self, painter, option, index):