X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Frspecscreen.py;h=75be23a9e0b5b632239c98c14d5a723b1e604f5d;hp=dc79c8361e9fd7a14ce24ef7ca0c5b6d5678c094;hb=654a48a3138958f039b4ab8b214fe7c1ab2235d8;hpb=0f6d855d510b419a752cb8e5f67a5489c04d92e9 diff --git a/sface/screens/rspecscreen.py b/sface/screens/rspecscreen.py index dc79c83..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,29 +160,36 @@ class DomItem: return self.rowNumber - class RSpecWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) - self.updateView() + 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) + self.document = QDomDocument("RSpec") + self.document.setContent(open(rspec_file,'r').read()) + self.model = DomModel(self.document, self) - view = RSpecView(self) - view.setModel(model) -# too slow! -# view.expandAll() - - 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): @@ -205,3 +201,6 @@ class RSpecScreen(SfaScreen): def rspecUpdated(self): self.widget.updateView() + + def configurationChanged(self): + self.widget.updateView()