Mercurial > lcfOS
view python/ide/disasm.py @ 333:dcae6574c974
Increment to qt5
author | Windel Bouwman |
---|---|
date | Sun, 09 Feb 2014 15:27:57 +0100 |
parents | 917eab04b8b7 |
children |
line wrap: on
line source
import binascii from qtwrapper import QtGui, QtCore, QtWidgets, Qt class DisAsmModel(QtCore.QAbstractTableModel): def __init__(self): super().__init__() self.outs = None self.instructions = [] self.headers = ['Address', 'Bytes', 'Instruction'] self.txts = [] self.txts.append(lambda i: '0x{:08x}'.format(i.address)) self.txts.append(lambda i: binascii.hexlify(i.encode()).decode('ascii')) self.txts.append(lambda i: str(i)) def rowCount(self, parent): return len(self.instructions) def columnCount(self, parent): return len(self.headers) def data(self, index, role): if not index.isValid(): return row, col = index.row(), index.column() if role == Qt.DisplayRole: i = self.instructions[row] return self.txts[col](i) def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.headers[section] def setInstructions(self, ins): self.instructions = ins self.modelReset.emit() class Disassembly(QtWidgets.QTableView): def __init__(self): super().__init__() self.dm = DisAsmModel() self.setModel(self.dm) def showPos(self, p): for i in self.dm.instructions: if i.address == p: row = self.dm.instructions.index(i) self.selectRow(row)