Beispiel #1
0
 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)
Beispiel #2
0
    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()
Beispiel #3
0
 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()
Beispiel #4
0
    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)
Beispiel #5
0
 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
Beispiel #6
0
    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
Beispiel #7
0
    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)))
Beispiel #8
0
 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()
Beispiel #9
0
 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
Beispiel #10
0
    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
Beispiel #11
0
 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
Beispiel #12
0
 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
Beispiel #13
0
 def rowCount(self, parent=QtCore.QModelIndex()):
     parentItem = self.getItem(parent)
     if parentItem is not None:
         return parentItem.childCount()
     return 0
Beispiel #14
0
 def columnCount(self, parent=QtCore.QModelIndex()):
     return self.rootItem.columnCount()