X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fxmlwidget.py;h=a80386860c9eba455a7028a22834fce8c2b24a45;hp=a2d3ec2312d6a9a24c484e843ba4c68df92e5779;hb=ed2d6eecaf798bdd9f8129ce7186d8f30ec01467;hpb=5ca19693a97294cff7be4a2e3cbb92ce5a039794 diff --git a/sface/xmlwidget.py b/sface/xmlwidget.py index a2d3ec2..a803868 100644 --- a/sface/xmlwidget.py +++ b/sface/xmlwidget.py @@ -85,7 +85,7 @@ class DomModel(QAbstractItemModel): if not index.isValid(): return Qt.ItemIsEnabled return Qt.ItemIsEnabled | Qt.ItemIsSelectable - + def headerData(self, section, orientation, role): return QVariant() @@ -176,7 +176,7 @@ class XmlWindow(QDialog): self.model = None self.title = title - self.view = XmlView(self) + self.view = self.initView() self.delegate = XmlDelegate(self) self.view.setItemDelegate(self.delegate) self.delegate.insertNodeDelegate('element', ElemNodeDelegate()) @@ -188,6 +188,9 @@ class XmlWindow(QDialog): self.updateView() + def initView(self): + return XmlView(self) + def show(self): self.updateView() QDialog.show(self) @@ -228,6 +231,8 @@ class XmlDelegate(QItemDelegate): del self.delegates[nodeType] def paint(self, painter, option, index): + if isinstance(index.model().data(index),QVariant): + return nodeType = index.model().data(index).property('nodeType') delegate = self.delegates.get(str(nodeType.toString())) #print "TYPE:", str(type(str(nodeType.toString()))) @@ -244,6 +249,8 @@ class XmlDelegate(QItemDelegate): def sizeHint(self, option, index): fm = option.fontMetrics + if isinstance(index.model().data(index),QVariant): + return QSize(0, 0) text = index.model().data(index).property('content').toString() document = QTextDocument() document.setDefaultFont(option.font) @@ -263,9 +270,9 @@ class ElemNodeDelegate(QAbstractItemDelegate): highGlobPattern = '<%s%s>' highAttPattern = ' %s="%s"' def getHtmlText(plainText, globPattern, attPattern): - print "PLAIN TEXT:", plainText +# print "PLAIN TEXT:", plainText tmp = plainText.split(' ', 1) - print "TMP:", tmp +# print "TMP:", tmp elemName = tmp[0] AttListHtml = '' if len(tmp) > 1: @@ -281,7 +288,7 @@ class ElemNodeDelegate(QAbstractItemDelegate): def colorize(color, text): return '' + text + '' text = str(index.model().data(index).property('content').toString()) - print "TEXT:", text +# print "TEXT:", text if option.state & QStyle.State_Selected: htmlText = colorize(palette.highlightedText().color().name(), getHtmlText(text, highGlobPattern, highAttPattern)) @@ -293,7 +300,7 @@ class ElemNodeDelegate(QAbstractItemDelegate): if option.state & QStyle.State_Selected \ else palette.base().color() painter.save() - print "COLOR:", color.name() +# print "COLOR:", color.name() # voodoo: if not highlighted, filling the rect # with the base color makes no difference painter.fillRect(option.rect, color)