2019-12-11 14:52:12 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QAbstractTableModel>
|
|
|
|
#include <QPixmap>
|
2021-01-03 17:41:08 +00:00
|
|
|
#include <QTableView>
|
|
|
|
#include <QTextDocument>
|
|
|
|
#include <QStyledItemDelegate>
|
|
|
|
#include <QApplication>
|
|
|
|
#include <QPainter>
|
|
|
|
#include <QStyleOptionViewItem>
|
|
|
|
#include <QModelIndex>
|
2019-12-11 14:52:12 +00:00
|
|
|
|
|
|
|
#include "MIPS.h"
|
|
|
|
#include "VirtualMachineStateView.h"
|
|
|
|
|
2024-03-21 14:24:08 -04:00
|
|
|
class CDisAsmTableModel : public QAbstractTableModel
|
2019-12-11 14:52:12 +00:00
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
2019-12-19 22:20:32 +00:00
|
|
|
enum DISASM_TYPE
|
|
|
|
{
|
|
|
|
DISASM_STANDARD,
|
|
|
|
DISASM_VU
|
|
|
|
};
|
2019-12-11 14:52:12 +00:00
|
|
|
|
2024-03-21 14:24:08 -04:00
|
|
|
CDisAsmTableModel(QTableView* parent, CVirtualMachine&, CMIPS*, uint64, uint32, DISASM_TYPE = DISASM_TYPE::DISASM_STANDARD);
|
|
|
|
~CDisAsmTableModel() = default;
|
2024-03-21 11:44:24 -04:00
|
|
|
|
2019-12-11 14:52:12 +00:00
|
|
|
int rowCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE;
|
|
|
|
int columnCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE;
|
|
|
|
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
|
|
|
|
|
2024-03-20 19:33:37 -04:00
|
|
|
void SetWindowCenter(uint32);
|
2024-03-21 11:44:24 -04:00
|
|
|
|
2019-12-11 14:52:12 +00:00
|
|
|
void Redraw();
|
|
|
|
void Redraw(uint32);
|
2019-12-19 22:20:32 +00:00
|
|
|
|
2021-01-04 18:05:53 +00:00
|
|
|
uint32 TranslateModelIndexToAddress(const QModelIndex&) const;
|
2024-03-20 19:33:37 -04:00
|
|
|
QModelIndex TranslateAddressToModelIndex(uint32) const;
|
2021-01-04 18:05:53 +00:00
|
|
|
|
2021-02-12 11:48:13 -05:00
|
|
|
int GetLinePixMapWidth() const;
|
|
|
|
|
2019-12-11 14:52:12 +00:00
|
|
|
protected:
|
|
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE;
|
|
|
|
|
2024-03-20 19:33:37 -04:00
|
|
|
void BuildIcons();
|
2024-03-21 11:44:24 -04:00
|
|
|
|
2019-12-11 14:52:12 +00:00
|
|
|
uint32 GetInstruction(uint32) const;
|
2024-03-20 19:33:37 -04:00
|
|
|
virtual std::string GetInstructionDetails(int, uint32) const;
|
|
|
|
std::string GetInstructionMetadata(uint32) const;
|
|
|
|
|
2019-12-11 14:52:12 +00:00
|
|
|
CMIPS* m_ctx;
|
|
|
|
CVirtualMachine& m_virtualMachine;
|
|
|
|
uint32 m_instructionSize;
|
2024-03-20 19:33:37 -04:00
|
|
|
uint64 m_size = 0;
|
|
|
|
uint32 m_windowStart = 0;
|
|
|
|
uint32 m_windowSize = 0;
|
2019-12-19 22:20:32 +00:00
|
|
|
DISASM_TYPE m_disAsmType;
|
2019-12-11 14:52:12 +00:00
|
|
|
|
|
|
|
QVariantList m_headers;
|
2019-12-19 13:51:41 +00:00
|
|
|
QPixmap m_start_line = QPixmap(22, 22);
|
|
|
|
QPixmap m_end_line = QPixmap(22, 22);
|
|
|
|
QPixmap m_line = QPixmap(22, 22);
|
|
|
|
QPixmap m_arrow = QPixmap(22, 22);
|
|
|
|
QPixmap m_breakpoint = QPixmap(22, 22);
|
|
|
|
QPixmap m_breakpoint_arrow = QPixmap(22, 22);
|
2019-12-11 14:52:12 +00:00
|
|
|
};
|
2021-01-03 17:41:08 +00:00
|
|
|
|
|
|
|
class TableColumnDelegateTargetComment : public QStyledItemDelegate
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
explicit TableColumnDelegateTargetComment(QObject* = nullptr);
|
|
|
|
|
|
|
|
void paint(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const Q_DECL_OVERRIDE;
|
2024-03-20 19:33:37 -04:00
|
|
|
};
|