Support rich resource text in buffer viewer

This commit is contained in:
baldurk
2019-10-15 15:05:38 +01:00
parent 328666e71f
commit 03ddc61779
2 changed files with 58 additions and 9 deletions
+55 -9
View File
@@ -849,23 +849,42 @@ public:
if(comp < list.count())
{
QString ret;
uint32_t rowdim = el.matrixdim;
uint32_t coldim = el.format.compCount;
for(uint32_t r = 0; r < rowdim; r++)
if(rowdim == 1)
{
if(r > 0)
ret += lit("\n");
QVariant v;
if(el.rowmajor)
ret += interpretVariant(list[comp + r * coldim], el);
v = list[comp];
else
ret += interpretVariant(list[r + comp * rowdim], el);
}
v = list[comp * rowdim];
return ret;
RichResourceTextInitialise(v);
if(RichResourceTextCheck(v))
return v;
return interpretVariant(v, el);
}
else
{
QString ret;
for(uint32_t r = 0; r < rowdim; r++)
{
if(r > 0)
ret += lit("\n");
if(el.rowmajor)
ret += interpretVariant(list[comp + r * coldim], el);
else
ret += interpretVariant(list[r + comp * rowdim], el);
}
return ret;
}
}
}
@@ -1797,6 +1816,13 @@ void BufferViewer::SetupRawView()
ui->vsinData->setPinnedColumns(1);
ui->vsinData->setColumnGroupRole(columnGroupRole);
m_delegate = new RichTextViewDelegate(ui->vsinData);
ui->vsinData->setItemDelegate(m_delegate);
ui->vsinData->viewport()->installEventFilter(this);
ui->vsinData->setMouseTracking(true);
ui->formatSpecifier->setWindowTitle(tr("Buffer Format"));
ui->dockarea->addToolWindow(ui->formatSpecifier, ToolWindowManager::AreaReference(
ToolWindowManager::BottomOf,
@@ -2917,6 +2943,26 @@ void BufferViewer::ViewTexture(uint32_t arrayIdx, uint32_t mip, ResourceId id, c
processFormat(format);
}
bool BufferViewer::eventFilter(QObject *watched, QEvent *event)
{
if(!m_MeshView && watched == ui->vsinData->viewport() && event->type() == QEvent::MouseMove)
{
bool ret = QObject::eventFilter(watched, event);
QMouseEvent *mouseEvent = (QMouseEvent *)event;
if(m_delegate->linkHover(mouseEvent, font(),
ui->vsinData->indexAt(mouseEvent->localPos().toPoint())))
ui->vsinData->setCursor(QCursor(Qt::PointingHandCursor));
else
ui->vsinData->unsetCursor();
return ret;
}
return QObject::eventFilter(watched, event);
}
void BufferViewer::updateWindowTitle()
{
if(!m_MeshView)
+3
View File
@@ -138,6 +138,7 @@ protected:
void changeEvent(QEvent *event) override;
private:
bool eventFilter(QObject *watched, QEvent *event) override;
Ui::BufferViewer *ui;
ICaptureContext &m_Ctx;
@@ -198,6 +199,8 @@ private:
int m_DataColWidth;
int m_DataRowHeight;
RichTextViewDelegate *m_delegate = NULL;
QMenu *m_HeaderMenu = NULL;
QAction *m_ResetColumnSel = NULL;