Play-/Source/ui_qt/DebugSupport/QtDisAsmTableModel.h
Jean-Philip Desjardins 2a75aade11 Style cleanup.
2024-03-21 12:59:49 -04:00

77 lines
2 KiB
C++

#pragma once
#include <QAbstractTableModel>
#include <QPixmap>
#include <QTableView>
#include <QTextDocument>
#include <QStyledItemDelegate>
#include <QApplication>
#include <QPainter>
#include <QStyleOptionViewItem>
#include <QModelIndex>
#include "MIPS.h"
#include "VirtualMachineStateView.h"
class CQtDisAsmTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
enum DISASM_TYPE
{
DISASM_STANDARD,
DISASM_VU
};
CQtDisAsmTableModel(QTableView* parent, CVirtualMachine&, CMIPS*, uint64, uint32, DISASM_TYPE = DISASM_TYPE::DISASM_STANDARD);
~CQtDisAsmTableModel() = default;
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;
void SetWindowCenter(uint32);
void Redraw();
void Redraw(uint32);
uint32 TranslateAddress(uint32) const;
uint32 TranslateModelIndexToAddress(const QModelIndex&) const;
QModelIndex TranslateAddressToModelIndex(uint32) const;
int GetLinePixMapWidth() const;
protected:
QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE;
void BuildIcons();
uint32 GetInstruction(uint32) const;
virtual std::string GetInstructionDetails(int, uint32) const;
std::string GetInstructionMetadata(uint32) const;
CMIPS* m_ctx;
CVirtualMachine& m_virtualMachine;
uint32 m_instructionSize;
uint64 m_size = 0;
uint32 m_windowStart = 0;
uint32 m_windowSize = 0;
DISASM_TYPE m_disAsmType;
QVariantList m_headers;
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);
};
class TableColumnDelegateTargetComment : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit TableColumnDelegateTargetComment(QObject* = nullptr);
void paint(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const Q_DECL_OVERRIDE;
};