Play-/Source/ui_qt/DebugSupport/DisAsmTableModel.h

77 lines
2 KiB
C
Raw Permalink Normal View History

2019-12-11 14:52:12 +00:00
#pragma once
#include <QAbstractTableModel>
#include <QPixmap>
#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
};
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
};