Example #1
0
class PageTableModel(QAbstractTableModel, object):
    def __init__(self, parent=None):
        super(PageTableModel, self).__init__(parent)

        self._parent = parent
        self._page_table = PageTable(self._parent.mem)

        self.headers = [u'页号', u'块号']


    def headerData(self, section, orientation, role=Qt.DisplayRole):
        if role == Qt.DisplayRole and orientation == Qt.Horizontal:
            return self.headers[section]


    def rowCount(self, index=None, *args, **kwargs):
        return len(self._page_table.table)


    def columnCount(self, index=None, *args, **kwargs):
        return 2


    def data(self, index, role=Qt.DisplayRole):
        row, col = index.row(), index.column()

        if not index.isValid() \
            or not (0 <= row < self.rowCount()) \
            or not (0 <= col < self.columnCount()):
            return QVariant()

        page = self._page_table.table.keys()[row]
        block = self._page_table.get_block(page)
        if role == Qt.DisplayRole:
            if col == 0:
                return QVariant(page)
            elif col == 1:
                return QVariant(block)
        elif role == Qt.TextAlignmentRole:
            return Qt.AlignLeft | Qt.AlignVCenter

        return QVariant()


    def register(self, blocks):
        self._page_table.register(blocks)
        self.emit(SIGNAL('dataChanged(QModelIndex, QModelIndex)'),
                  QModelIndex(), QModelIndex())


    def release(self, pages):
        self._page_table.release(*pages)
        self.emit(SIGNAL('dataChanged(QModelIndex, QModelIndex)'),
                  QModelIndex(), QModelIndex())
Example #2
0
    def __init__(self, parent=None):
        super(PageTableModel, self).__init__(parent)

        self._parent = parent
        self._page_table = PageTable(self._parent.mem)

        self.headers = [u'页号', u'块号']