X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Frspecscreen.py;h=75be23a9e0b5b632239c98c14d5a723b1e604f5d;hp=772f4cb6ef038e0b6443bb34422d72a8de6eb1fc;hb=654a48a3138958f039b4ab8b214fe7c1ab2235d8;hpb=8c9d054133c19052e03bc3029ade2476271ac55d diff --git a/sface/screens/rspecscreen.py b/sface/screens/rspecscreen.py index 772f4cb..75be23a 100644 --- a/sface/screens/rspecscreen.py +++ b/sface/screens/rspecscreen.py @@ -30,8 +30,7 @@ class DomModel(QAbstractItemModel): childList = document.childNodes() for i in range(childList.count()): currElem = childList.item(i) - if (currElem.nodeType() == - QDomNode.ProcessingInstructionNode): + if (currElem.nodeType() == QDomNode.ProcessingInstructionNode): document.removeChild(currElem) break self.rootItem = DomItem(document, 0); @@ -50,16 +49,9 @@ class DomModel(QAbstractItemModel): qslist = QStringList() for i in range(attributeMap.count()): attr = attributeMap.item(i) - elem = (attr.nodeName() - .append(QString('="')) - .append(attr.nodeValue()) - .append(QString('"'))) + elem = '%s="%s"' % (attr.nodeName(), attr.nodeValue()) qslist.append(elem) - return (QString('<'). - append(node.nodeName()). - append(' '). - append(qslist.join(' ')). - append('>')) + return QString("<%s %s>" % (node.nodeName(), qslist.join(' '))) elif node.nodeType() == QDomNode.AttributeNode: return QString('Whozat?!') elif node.nodeType() == QDomNode.TextNode: @@ -95,14 +87,13 @@ class DomModel(QAbstractItemModel): def flags(self, index): if not index.isValid(): return Qt.ItemIsEnabled - # does this `|` thing hold? return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): return QVariant() - def index(self, row, column, parent): - if not parent.isValid(): + def index(self, row, column, parent=None): + if not parent or not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() @@ -133,16 +124,14 @@ class DomModel(QAbstractItemModel): return parentItem.node().childNodes().count() def columnCount(self, parent): - # just one column - # we'll print tag name (and attributes) - # or the tag content + # just one column we'll print tag name (and attributes) or the + # tag content return 1 class DomItem: - # wrapper around PyQt4.QtXml.QDomNode - # it keeps an hash of childrens for - # performance reasons + # wrapper around PyQt4.QtXml.QDomNode it keeps an hash of + # childrens for performance reasons def __init__(self, node, row, parent = 0): # node is of type PyQt4.QtXml.QDomNode @@ -171,32 +160,36 @@ class DomItem: return self.rowNumber - class RSpecWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) + self.document = None + self.model = None + self.view = RSpecView(self) + layout = QVBoxLayout() + layout.addWidget(self.view) + self.setLayout(layout) + self.updateView() - def updateView(self): - document = QDomDocument("RSpec") + del self.document + del self.model + self.document = None + self.model = None + rspec_file = config.getSliceRSpecFile() if not os.path.exists(rspec_file): return - document.setContent(open(rspec_file,'r').read()) - model = DomModel(document, self) - - view = RSpecView(self) - view.setModel(model) -# too slow! -# view.expandAll() + self.document = QDomDocument("RSpec") + self.document.setContent(open(rspec_file,'r').read()) + self.model = DomModel(self.document, self) - layout = QVBoxLayout() - layout.addWidget(view) - self.setLayout(layout) + self.view.setModel(self.model) + self.view.expand(self.model.index(0, 0)) #expand first level only class RSpecScreen(SfaScreen): @@ -208,3 +201,6 @@ class RSpecScreen(SfaScreen): def rspecUpdated(self): self.widget.updateView() + + def configurationChanged(self): + self.widget.updateView()