self.setAttribute(Qt.WA_MacShowFocusRect, 0)
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ def expandMatchingText(self, txt):
+ self.collapseAll()
+ self.expandToDepth(0)
+
+ def recursiveExpand(index):
+ parent = index.parent()
+ if parent and parent.isValid():
+ recursiveExpand(parent)
+ self.expand(index)
+
+ def search(index):
+ if index.data().toString() == txt:
+ recursiveExpand(index)
+ self.scrollTo(index, self.PositionAtCenter)
+
+ rows = model.rowCount(index)
+ for r in range(rows):
+ child_index = index.child(r, 0)
+ search(child_index)
+
+ model = self.model()
+ root_rows = model.rowCount()
+ for r in range(root_rows):
+ index = model.index(r, 0)
+ search(index)
+
class DomModel(QAbstractItemModel):
def __init__(self, document, parent = 0):
return QModelIndex()
return self.createIndex(parentItem.row(), 0, parentItem)
- def rowCount(self, parent):
- if not parent.isValid():
+ def rowCount(self, parent=None):
+ if not parent or not parent.isValid():
parentItem = self.rootItem
else:
parentItem = parent.internalPointer()
return self.rowNumber
-class RSpecWidget(QWidget):
+class RSpecWindow(QDialog):
def __init__(self, parent=None):
- QWidget.__init__(self, parent)
+ QDialog.__init__(self, parent)
+ self.setWindowTitle("RSPec View")
self.document = None
self.model = None
self.setLayout(layout)
self.updateView()
+
+ def show(self):
+ self.updateView()
+ QDialog.show(self)
+ def showNode(self, hostname):
+ self.view.expandMatchingText(hostname)
+
def updateView(self):
del self.document
del self.model
self.view.expand(self.model.index(0, 0)) #expand first level only
-class RSpecScreen(SfaScreen):
- def __init__(self, parent):
- SfaScreen.__init__(self, parent)
-
- widget = RSpecWidget(self)
- self.init(widget, "RSpec Window", "RSPec View")
-
- def rspecUpdated(self):
- self.widget.updateView()
-
- def configurationChanged(self):
- self.widget.updateView()