Refactor qrenderdoc to provide stable, clean and deliberate API

* Note, this API is still in-flux and beta, so there may still be some
  more changes before it's 'stable', and even then it will still be
  subject to some amount of change.
* This API is then exposed to python via SWIG bindings and hides
  internals that don't need to be visible, and means the actual API is
  easier to work with.
* We also use this API to reduce inter-dependencies between different
  windows that need to interact with each other at a high level.
* The naming is python/standard RenderDoc TitleCase method names, not
  Qt style camelCase methods.

# Conflicts:
#	qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp
#	qrenderdoc/Windows/TextureViewer.cpp
This commit is contained in:
baldurk
2017-04-06 14:11:42 +01:00
parent 6969b5b677
commit 094c4164dc
61 changed files with 1973 additions and 1562 deletions
+18 -18
View File
@@ -32,7 +32,7 @@ static const int EIDRole = Qt::UserRole + 1;
class DebugMessageItemModel : public QAbstractItemModel
{
public:
DebugMessageItemModel(CaptureContext &ctx, QObject *parent)
DebugMessageItemModel(ICaptureContext &ctx, QObject *parent)
: QAbstractItemModel(parent), m_Ctx(ctx)
{
}
@@ -54,7 +54,7 @@ public:
QModelIndex parent(const QModelIndex &index) const override { return QModelIndex(); }
int rowCount(const QModelIndex &parent = QModelIndex()) const override
{
return m_Ctx.DebugMessages.count();
return m_Ctx.DebugMessages().count();
}
int columnCount(const QModelIndex &parent = QModelIndex()) const override { return 6; }
Qt::ItemFlags flags(const QModelIndex &index) const override
@@ -93,7 +93,7 @@ public:
if(col >= 0 && col < columnCount() && row < rowCount())
{
const DebugMessage &msg = m_Ctx.DebugMessages[row];
const DebugMessage &msg = m_Ctx.DebugMessages()[row];
switch(col)
{
@@ -109,20 +109,20 @@ public:
}
if(index.isValid() && role == EIDRole && index.row() >= 0 &&
index.row() < m_Ctx.DebugMessages.count())
return m_Ctx.DebugMessages[index.row()].eventID;
index.row() < m_Ctx.DebugMessages().count())
return m_Ctx.DebugMessages()[index.row()].eventID;
return QVariant();
}
private:
CaptureContext &m_Ctx;
ICaptureContext &m_Ctx;
};
class DebugMessageFilterModel : public QSortFilterProxyModel
{
public:
DebugMessageFilterModel(CaptureContext &ctx, QObject *parent)
DebugMessageFilterModel(ICaptureContext &ctx, QObject *parent)
: QSortFilterProxyModel(parent), m_Ctx(ctx)
{
}
@@ -164,7 +164,7 @@ protected:
bool isVisibleRow(int sourceRow) const
{
const DebugMessage &msg = m_Ctx.DebugMessages[sourceRow];
const DebugMessage &msg = m_Ctx.DebugMessages()[sourceRow];
if(m_HiddenSources.contains(msg.source))
return false;
@@ -183,8 +183,8 @@ protected:
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
{
const DebugMessage &leftMsg = m_Ctx.DebugMessages[left.row()];
const DebugMessage &rightMsg = m_Ctx.DebugMessages[right.row()];
const DebugMessage &leftMsg = m_Ctx.DebugMessages()[left.row()];
const DebugMessage &rightMsg = m_Ctx.DebugMessages()[right.row()];
if(leftMsg.eventID < rightMsg.eventID)
return true;
@@ -205,10 +205,10 @@ protected:
}
private:
CaptureContext &m_Ctx;
ICaptureContext &m_Ctx;
};
DebugMessageView::DebugMessageView(CaptureContext &ctx, QWidget *parent)
DebugMessageView::DebugMessageView(ICaptureContext &ctx, QWidget *parent)
: QFrame(parent), ui(new Ui::DebugMessageView), m_Ctx(ctx)
{
ui->setupUi(this);
@@ -254,7 +254,7 @@ DebugMessageView::DebugMessageView(CaptureContext &ctx, QWidget *parent)
DebugMessageView::~DebugMessageView()
{
m_Ctx.windowClosed(this);
m_Ctx.BuiltinWindowClosed(this);
m_Ctx.RemoveLogViewer(this);
delete ui;
@@ -278,8 +278,8 @@ void DebugMessageView::RefreshMessageList()
ui->messages->resizeColumnsToContents();
if(m_Ctx.UnreadMessageCount > 0)
setWindowTitle(tr("(%1) Errors and Warnings").arg(m_Ctx.UnreadMessageCount));
if(m_Ctx.UnreadMessageCount() > 0)
setWindowTitle(tr("(%1) Errors and Warnings").arg(m_Ctx.UnreadMessageCount()));
else
setWindowTitle(tr("Errors and Warnings"));
}
@@ -348,7 +348,7 @@ void DebugMessageView::messages_contextMenu(const QPoint &pos)
{
index = m_FilterModel->mapToSource(index);
const DebugMessage &msg = m_Ctx.DebugMessages[index.row()];
const DebugMessage &msg = m_Ctx.DebugMessages()[index.row()];
QString hide = tr("Hide");
QString show = tr("Show");
@@ -375,9 +375,9 @@ void DebugMessageView::messages_contextMenu(const QPoint &pos)
void DebugMessageView::paintEvent(QPaintEvent *e)
{
if(m_Ctx.UnreadMessageCount > 0)
if(m_Ctx.UnreadMessageCount() > 0)
{
m_Ctx.UnreadMessageCount = 0;
m_Ctx.MarkMessagesRead();
RefreshMessageList();
}