From 9cf9c1e8b1837cb4c1fd82d9414547317de92db5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 14 Feb 2017 15:36:10 +0000 Subject: [PATCH] Add file list to shader viewer when enough files are visible --- qrenderdoc/Windows/ShaderViewer.cpp | 29 +++++++++++++++++++++++------ qrenderdoc/Windows/ShaderViewer.h | 2 ++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index 3f237a97e..5d1872eea 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -24,6 +24,7 @@ #include "ShaderViewer.h" #include +#include #include #include "3rdparty/scintilla/include/SciLexer.h" #include "3rdparty/scintilla/include/qt/ScintillaEdit.h" @@ -160,9 +161,8 @@ void ShaderViewer::editShader(bool customShader, const QString &entryPoint, cons setWindowTitle(title); - // TODO File list - // if(files.count() > 2) - // addFileList(); + if(files.count() > 2) + addFileList(); m_Errors = MakeEditor("errors", "", false); m_Errors->setReadOnly(true); @@ -246,9 +246,8 @@ void ShaderViewer::debugShader(const ShaderBindpointMapping *bind, const ShaderR if(trace) sel = m_DisassemblyView; - // TODO File list - // if(shader->DebugInfo.files.count > 2) - // addFileList(); + if(shader->DebugInfo.files.count > 2) + addFileList(); ToolWindowManager::raiseToolWindow(sel); } @@ -683,6 +682,24 @@ QTreeWidgetItem *ShaderViewer::makeResourceRegister(const BindpointMap &bind, ui } } +void ShaderViewer::addFileList() +{ + QListWidget *list = new QListWidget(this); + list->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + list->setSelectionMode(QAbstractItemView::SingleSelection); + QObject::connect(list, &QListWidget::currentRowChanged, + [this](int idx) { ToolWindowManager::raiseToolWindow(m_Scintillas[idx]); }); + list->setWindowTitle(tr("File List")); + + for(ScintillaEdit *s : m_Scintillas) + list->addItem(s->windowTitle()); + + ui->docking->addToolWindow( + list, ToolWindowManager::AreaReference(ToolWindowManager::LeftOf, + ui->docking->areaOf(m_Scintillas.front()), 0.2f)); + ui->docking->setToolWindowProperties(list, ToolWindowManager::HideCloseButton); +} + void ShaderViewer::updateDebugging() { if(!m_Trace || m_CurrentStep < 0 || m_CurrentStep >= m_Trace->states.count) diff --git a/qrenderdoc/Windows/ShaderViewer.h b/qrenderdoc/Windows/ShaderViewer.h index 49487cb1e..55c5aaebd 100644 --- a/qrenderdoc/Windows/ShaderViewer.h +++ b/qrenderdoc/Windows/ShaderViewer.h @@ -137,6 +137,8 @@ private: static const int BREAKPOINT_MARKER = 2; static const int FINISHED_MARKER = 4; + void addFileList(); + ScintillaEdit *MakeEditor(const QString &name, const QString &text, bool src); ScintillaEdit *AddFileScintilla(const QString &name, const QString &text);