Mercurial > lcfOS
view python/ide/disasm.py @ 387:34ac19044b8a
Hello world with paging in emulator
author | Windel Bouwman |
---|---|
date | Thu, 01 May 2014 22:09:18 +0200 |
parents | dcae6574c974 |
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)