def parent(self, index): if not index.isValid(): return QtCore.QModelIndex() childItem = self.getItem(index) parentItem = childItem.parent() if parentItem == self.rootItem: # is the left side childItem or parentItem? return QtCore.QModelIndex() return self.createIndex(parentItem.parent().childNumber(), 0, parentItem)
def index(self, row, column, parent=QtCore.QModelIndex()): parentNode = self.getNode(parent) childItem = parentNode.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QtCore.QModelIndex()
def index(self, row, column, parent=QtCore.QModelIndex()): if parent.isValid() and parent.column()!= 0: return QtCore.QModelIndex() parentItem = self.getItem(parent) if parentItem is None: return QtCore.QModelIndex() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QtCore.QModelIndex()
def parent(self, index): node = self.getNode(index) parentNode = node.parent() if parentNode == self._rootNode: return QtCore.QModelIndex() return self.createIndex(parentNode.row(), 0, parentNode)
def insertNode(self, parent=QtCore.QModelIndex(), data={}, nodeType=h5.Group): parentItem = self.getItem(parent) self.beginInsertRows(parent, parentItem.childCount(), parentItem.childCount()) if nodeType == h5.Dataset: parentItem.createDataset(data) elif nodeType == h5.Group: parentItem.createGroup(data) self.endInsertRows() return True
def removeRows(self, position, rows, parent=QtCore.QModelIndex()): parentNode = self.getNode(parent) self.beginRemoveRows(parent, position, position + rows - 1) for row in range(rows): success = parentNode.removeChild(position) self.endRemoveRows() return success
def onRefreshTable(self): sharedD = self.sharedD sharedD['pause'] = self.ui.pauseRefresh.isChecked() if not self.recalcSortKeys and len(self.results) == sharedD['idx']: return# Model is up to date self.recalcSortKeys = False while len(self.results) < sharedD['idx']: marketStr = self.watchlist[len(self.results)] key = cacheKey(self.watchlistName, marketStr) stats = gCache.get(key).value # When we unpickle, the DataFrame is valid but ChartData is not so call the constructor. market = parseToMarketStruct(marketStr) for i,data in enumerate(stats.dataList): market.timeframe = ALL_TIMEFRAMES[i] data.__init__(market, existingDf=data) self.results.append(stats) columns, multiColumns = self.activeColumns() filterEdit = str(self.ui.filterEdit.text()).lower() results = [] for stats in self.results: if not stats.bb: continue# Test that stats are valid - see calcStatsFromData() if filterEdit and filterEdit not in stats.marketStr.lower(): continue stats.sortKey = () for col in sorted(self.sortColumns): colName, subCol = getColumnNameAndSub(columns, multiColumns, col) numVal, strVal = getStatsValue(stats, colName, subCol) ascending = self.sortColumns[col] if numVal != None: stats.sortKey += (numVal * (-1. if ascending else 1.),) else: strVal = strVal.lower() stats.sortKey += (''.join([chr(255-ord(c)) for c in strVal]) if ascending else strVal,) results.append(stats) oldLen = self.model.rowCount(None) self.sortedMarkets = sorted(results, key=lambda stats:stats.sortKey, reverse=True) newLen = self.model.rowCount(None) self.model.beginInsertRows(QtCore.QModelIndex(), oldLen, newLen-1) self.model.endInsertRows() # Override the Stretch just for the marketStr column mode = QtGui.QHeaderView.ResizeToContents if len(columns) and columns[0] == 'marketStr' else QtGui.QHeaderView.Stretch self.ui.tableView.horizontalHeader().setResizeMode(0, mode) self.ui.statusbar.clearMessage() self.ui.statusbar.showMessage('Refreshed %i/%i' % (sharedD['idx'], len(self.watchlist)))
def openFile(self, path, mode='r'): self.beginInsertRows(QtCore.QModelIndex(), self.rootItem.childCount(), self.rootItem.childCount()+1) fd = h5.File(str(path), mode=mode) print('Opened {} in mode {}'.format(fd.filename, mode)) if mode == 'r': fileItem = HDFTreeItem(fd, parent=self.rootItem) else: fileItem = EditableItem(fd, parent=self.rootItem) self.rootItem.addChild(fileItem) self.endInsertRows()
def closeFile(self, index): """Close file associated with item at index. Returns True if successful, False if the item is not a file item.""" item = self.getItem(index) try: position = self.rootItem.children.index(item) self.beginRemoveRows(QtCore.QModelIndex(), position, position+1) item.h5node.close() self.rootItem.removeChild(position) self.endRemoveRows() return True except ValueError: return False
def insertRows(self, position, rows, parent=QtCore.QModelIndex()): success = False parentNode = self.getNode(parent) self.beginInsertRows(parent, position, position + rows - 1) for row in range(rows): childCount = parentNode.childCount() element = etree.Element("untitled" + str(childCount)) childNode = ElementNode(element) success = parentNode.insertChild(position, childNode) self.endInsertRows() return success
def removeRows(self, position, rows, parent=QtCore.QModelIndex()): parentItem = self.getItem(parent) self.beginRemoveRows(parent, position, position+rows-1) parentItem.removeChildren(position, rows, self.rootItem.columnCount()) self.endRemoveRows() return True
def insertRows(self, position, rows, parent=QtCore.QModelIndex()): parentItem = self.getItem(parent) self.beginInsertRows(parent, position, position+rows-1) parentItem.insertChildren(position, rows, self.rootItem.columnCount()) self.endInsertRows() return True
def rowCount(self, parent=QtCore.QModelIndex()): parentItem = self.getItem(parent) if parentItem is not None: return parentItem.childCount() return 0
def columnCount(self, parent=QtCore.QModelIndex()): return self.rootItem.columnCount()