diff --git a/qrenderdoc/Windows/Dialogs/OrderedListEditor.cpp b/qrenderdoc/Widgets/OrderedListEditor.cpp similarity index 58% rename from qrenderdoc/Windows/Dialogs/OrderedListEditor.cpp rename to qrenderdoc/Widgets/OrderedListEditor.cpp index f814fc015..fed5c9448 100644 --- a/qrenderdoc/Windows/Dialogs/OrderedListEditor.cpp +++ b/qrenderdoc/Widgets/OrderedListEditor.cpp @@ -23,49 +23,54 @@ ******************************************************************************/ #include "OrderedListEditor.h" +#include #include #include #include "Code/QRDUtils.h" #include "Code/Resources.h" -#include "ui_OrderedListEditor.h" -OrderedListEditor::OrderedListEditor(const QString &windowName, const QString &itemName, - BrowseMode browse, QWidget *parent) - : QDialog(parent), ui(new Ui::OrderedListEditor) +OrderedListEditor::OrderedListEditor(const QString &itemName, BrowseMode browse, QWidget *parent) + : RDTableWidget(parent) { - ui->setupUi(this); - - ui->list->setFont(Formatter::PreferredFont()); - - setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setFont(Formatter::PreferredFont()); m_BrowseMode = browse; - setWindowTitle(windowName); + setDragEnabled(true); + setDragDropOverwriteMode(false); + setDragDropMode(QAbstractItemView::InternalMove); + setDefaultDropAction(Qt::MoveAction); + setAlternatingRowColors(true); + setSelectionMode(QAbstractItemView::SingleSelection); + setSelectionBehavior(QAbstractItemView::SelectRows); + setCornerButtonEnabled(false); + + horizontalHeader()->setHighlightSections(false); + horizontalHeader()->setMinimumSectionSize(50); + verticalHeader()->setHighlightSections(false); if(m_BrowseMode == BrowseMode::None) { - ui->list->setColumnCount(1); - ui->list->setHorizontalHeaderLabels({itemName}); - ui->list->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); + setColumnCount(1); + setHorizontalHeaderLabels({itemName}); + horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); } else { QStringList labels; labels << itemName << tr("Browse"); - ui->list->setColumnCount(2); - ui->list->setHorizontalHeaderLabels(labels); + setColumnCount(2); + setHorizontalHeaderLabels(labels); - ui->list->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); - ui->list->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); + horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); } - QObject::connect(ui->list, &RDTableWidget::keyPress, this, &OrderedListEditor::list_keyPress); + QObject::connect(this, &RDTableWidget::cellChanged, this, &OrderedListEditor::cellChanged); } OrderedListEditor::~OrderedListEditor() { - delete ui; } QToolButton *OrderedListEditor::makeBrowseButton() @@ -75,24 +80,24 @@ QToolButton *OrderedListEditor::makeBrowseButton() ret->setIcon(Icons::folder_page_white()); ret->setAutoRaise(true); - QObject::connect(ret, &QToolButton::clicked, this, &OrderedListEditor::browse_clicked); + QObject::connect(ret, &QToolButton::clicked, this, &OrderedListEditor::browse); return ret; } void OrderedListEditor::setItems(const QStringList &strings) { - ui->list->setUpdatesEnabled(false); - ui->list->clearContents(); + setUpdatesEnabled(false); + clearContents(); - ui->list->setRowCount(strings.count()); + setRowCount(strings.count()); for(int i = 0; i < strings.count(); i++) { - ui->list->setItem(i, 0, new QTableWidgetItem(strings[i])); + setItem(i, 0, new QTableWidgetItem(strings[i])); if(m_BrowseMode != BrowseMode::None) - ui->list->setCellWidget(i, 1, makeBrowseButton()); + setCellWidget(i, 1, makeBrowseButton()); } // if we added any strings above the new item row was automatically @@ -100,28 +105,28 @@ void OrderedListEditor::setItems(const QStringList &strings) if(strings.count() == 0) addNewItemRow(); - ui->list->resizeColumnToContents(0); + resizeColumnToContents(0); if(m_BrowseMode != BrowseMode::None) - ui->list->resizeColumnToContents(1); + resizeColumnToContents(1); - ui->list->setUpdatesEnabled(true); + setUpdatesEnabled(true); } void OrderedListEditor::addNewItemRow() { - ui->list->insertRow(ui->list->rowCount()); + insertRow(rowCount()); QTableWidgetItem *item = new QTableWidgetItem(QString()); item->setFlags(item->flags() & ~(Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled)); - ui->list->setItem(ui->list->rowCount() - 1, 0, item); + setItem(rowCount() - 1, 0, item); if(m_BrowseMode != BrowseMode::None) { item = new QTableWidgetItem(QString()); item->setFlags(item->flags() & ~(Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled)); - ui->list->setItem(ui->list->rowCount() - 1, 1, item); + setItem(rowCount() - 1, 1, item); - ui->list->setCellWidget(ui->list->rowCount() - 1, 1, makeBrowseButton()); + setCellWidget(rowCount() - 1, 1, makeBrowseButton()); } } @@ -130,13 +135,13 @@ QStringList OrderedListEditor::getItems() QStringList ret; // don't include the last 'new item' entry - for(int i = 0; i < ui->list->rowCount() - 1; i++) - ret << ui->list->item(i, 0)->text(); + for(int i = 0; i < rowCount() - 1; i++) + ret << item(i, 0)->text(); return ret; } -void OrderedListEditor::on_list_cellChanged(int row, int column) +void OrderedListEditor::cellChanged(int row, int column) { // hack :(. Assume this will only be hit on single UI thread. static bool recurse = false; @@ -147,38 +152,36 @@ void OrderedListEditor::on_list_cellChanged(int row, int column) recurse = true; // if the last row has something added to it, make a new final row - if(row == ui->list->rowCount() - 1) + if(row == rowCount() - 1) { - if(!ui->list->item(row, column)->data(Qt::DisplayRole).toString().trimmed().isEmpty()) + if(!item(row, column)->data(Qt::DisplayRole).toString().trimmed().isEmpty()) { // enable dragging - ui->list->item(row, 0)->setFlags(ui->list->item(row, 0)->flags() | - (Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled)); + item(row, 0)->setFlags(item(row, 0)->flags() | (Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled)); if(m_BrowseMode != BrowseMode::None) - delete ui->list->takeItem(row, 1); + delete takeItem(row, 1); addNewItemRow(); } } - if(row > 0 && column == 0 && - ui->list->item(row, column)->data(Qt::DisplayRole).toString().trimmed().isEmpty()) + if(row > 0 && column == 0 && item(row, column)->data(Qt::DisplayRole).toString().trimmed().isEmpty()) { - ui->list->removeRow(row); + removeRow(row); } recurse = false; } -void OrderedListEditor::browse_clicked() +void OrderedListEditor::browse() { QWidget *tool = qobject_cast(QObject::sender()); if(tool) { - for(int i = 0; i < ui->list->rowCount(); i++) + for(int i = 0; i < rowCount(); i++) { - QWidget *rowButton = ui->list->cellWidget(i, 1); + QWidget *rowButton = cellWidget(i, 1); if(rowButton == tool) { QString sel; @@ -188,21 +191,23 @@ void OrderedListEditor::browse_clicked() sel = RDDialog::getOpenFileName(this, tr("Browse for a file")); if(!sel.isEmpty()) - ui->list->item(i, 0)->setText(sel); + item(i, 0)->setText(sel); } } } } -void OrderedListEditor::list_keyPress(QKeyEvent *event) +void OrderedListEditor::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Delete) { int row = -1; - if(ui->list->selectionModel()->selectedIndexes().count() > 0) - row = ui->list->selectionModel()->selectedIndexes()[0].row(); + if(selectionModel()->selectedIndexes().count() > 0) + row = selectionModel()->selectedIndexes()[0].row(); if(row >= 0) - ui->list->removeRow(row); + removeRow(row); } + + RDTableWidget::keyPress(event); } diff --git a/qrenderdoc/Windows/Dialogs/OrderedListEditor.h b/qrenderdoc/Widgets/OrderedListEditor.h similarity index 78% rename from qrenderdoc/Windows/Dialogs/OrderedListEditor.h rename to qrenderdoc/Widgets/OrderedListEditor.h index a15c9a635..0b5d61147 100644 --- a/qrenderdoc/Windows/Dialogs/OrderedListEditor.h +++ b/qrenderdoc/Widgets/OrderedListEditor.h @@ -22,14 +22,10 @@ * THE SOFTWARE. ******************************************************************************/ -#include +#pragma once -namespace Ui -{ -class OrderedListEditor; -} +#include "Widgets/Extended/RDTableWidget.h" -class RDTreeWidgetItem; class QToolButton; enum class BrowseMode @@ -39,28 +35,24 @@ enum class BrowseMode File, }; -class OrderedListEditor : public QDialog +class OrderedListEditor : public RDTableWidget { Q_OBJECT public: - explicit OrderedListEditor(const QString &windowName, const QString &itemName, BrowseMode browse, - QWidget *parent = 0); + explicit OrderedListEditor(const QString &itemName, BrowseMode browse, QWidget *parent = 0); ~OrderedListEditor(); void setItems(const QStringList &strings); QStringList getItems(); private slots: - // automatic slots - void on_list_cellChanged(int row, int column); - // manual slots - void browse_clicked(); - void list_keyPress(QKeyEvent *event); + void cellChanged(int row, int column); + void browse(); private: - Ui::OrderedListEditor *ui; + void keyPressEvent(QKeyEvent *e) override; BrowseMode m_BrowseMode; diff --git a/qrenderdoc/Windows/Dialogs/OrderedListEditor.ui b/qrenderdoc/Windows/Dialogs/OrderedListEditor.ui deleted file mode 100644 index 6d7ed64b1..000000000 --- a/qrenderdoc/Windows/Dialogs/OrderedListEditor.ui +++ /dev/null @@ -1,102 +0,0 @@ - - - OrderedListEditor - - - - 0 - 0 - 400 - 300 - - - - - - - true - - - false - - - QAbstractItemView::InternalMove - - - Qt::MoveAction - - - true - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectRows - - - false - - - false - - - 50 - - - false - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - RDTableWidget - QTableWidget -
Widgets/Extended/RDTableWidget.h
-
-
- - - - buttonBox - accepted() - OrderedListEditor - accept() - - - 199 - 278 - - - 199 - 149 - - - - - buttonBox - rejected() - OrderedListEditor - reject() - - - 199 - 278 - - - 199 - 149 - - - - -
diff --git a/qrenderdoc/Windows/Dialogs/SettingsDialog.cpp b/qrenderdoc/Windows/Dialogs/SettingsDialog.cpp index deaee7f4f..be417b6b0 100644 --- a/qrenderdoc/Windows/Dialogs/SettingsDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/SettingsDialog.cpp @@ -26,7 +26,7 @@ #include "Code/Interface/QRDInterface.h" #include "Code/QRDUtils.h" #include "Styles/StyleData.h" -#include "Windows/Dialogs/OrderedListEditor.h" +#include "Widgets/OrderedListEditor.h" #include "CaptureDialog.h" #include "ui_SettingsDialog.h" @@ -250,18 +250,33 @@ void SettingsDialog::on_AlwaysReplayLocally_toggled(bool checked) // core void SettingsDialog::on_chooseSearchPaths_clicked() { - OrderedListEditor listEd(tr("Shader debug info search paths"), tr("Search Path"), - BrowseMode::Folder, this); + QDialog listEditor; + + listEditor.setWindowTitle(tr("Shader debug info search paths")); + listEditor.setWindowFlags(listEditor.windowFlags() & ~Qt::WindowContextHelpButtonHint); + + OrderedListEditor list(tr("Search Path"), BrowseMode::Folder); + + QVBoxLayout layout; + QDialogButtonBox okCancel; + okCancel.setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); + layout.addWidget(&list); + layout.addWidget(&okCancel); + + QObject::connect(&okCancel, &QDialogButtonBox::accepted, &listEditor, &QDialog::accept); + QObject::connect(&okCancel, &QDialogButtonBox::rejected, &listEditor, &QDialog::reject); + + listEditor.setLayout(&layout); QString setting = m_Ctx.Config().GetConfigSetting("shader.debug.searchPaths"); - listEd.setItems(setting.split(QLatin1Char(';'), QString::SkipEmptyParts)); + list.setItems(setting.split(QLatin1Char(';'), QString::SkipEmptyParts)); - int res = RDDialog::show(&listEd); + int res = RDDialog::show(&listEditor); if(res) m_Ctx.Config().SetConfigSetting(lit("shader.debug.searchPaths"), - listEd.getItems().join(QLatin1Char(';'))); + list.getItems().join(QLatin1Char(';'))); } // texture viewer diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index df4f83920..4eb7f762b 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -211,7 +211,7 @@ SOURCES += Code/qrenderdoc.cpp \ Windows/StatisticsViewer.cpp \ Windows/TimelineBar.cpp \ Windows/Dialogs/SettingsDialog.cpp \ - Windows/Dialogs/OrderedListEditor.cpp \ + Widgets/OrderedListEditor.cpp \ Widgets/Extended/RDTableWidget.cpp \ Windows/Dialogs/SuggestRemoteDialog.cpp \ Windows/Dialogs/VirtualFileDialog.cpp \ @@ -284,7 +284,7 @@ HEADERS += Code/CaptureContext.h \ Windows/StatisticsViewer.h \ Windows/TimelineBar.h \ Windows/Dialogs/SettingsDialog.h \ - Windows/Dialogs/OrderedListEditor.h \ + Widgets/OrderedListEditor.h \ Widgets/Extended/RDTableWidget.h \ Windows/Dialogs/SuggestRemoteDialog.h \ Windows/Dialogs/VirtualFileDialog.h \ @@ -326,7 +326,6 @@ FORMS += Windows/Dialogs/AboutDialog.ui \ Windows/CommentView.ui \ Windows/StatisticsViewer.ui \ Windows/Dialogs/SettingsDialog.ui \ - Windows/Dialogs/OrderedListEditor.ui \ Windows/Dialogs/SuggestRemoteDialog.ui \ Windows/Dialogs/VirtualFileDialog.ui \ Windows/Dialogs/RemoteManager.ui \ diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj index 6c692e9bd..20f3ac3f4 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj +++ b/qrenderdoc/qrenderdoc_local.vcxproj @@ -687,6 +687,7 @@ + @@ -706,7 +707,6 @@ - @@ -917,7 +917,6 @@ - @@ -1091,6 +1090,12 @@ MOC %(Filename).h $(IntDir)generated\moc_%(Filename).cpp + + %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe;%(AdditionalInputs) + "$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(ProjectDir)3rdparty\qt\$(Platform)\mkspecs/win32-msvc2015" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtWidgets" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtGui" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" + MOC %(Filename).h + $(IntDir)generated\moc_%(Filename).cpp + %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe;%(AdditionalInputs) "$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(ProjectDir)3rdparty\qt\$(Platform)\mkspecs/win32-msvc2015" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtWidgets" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtGui" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" @@ -1175,12 +1180,6 @@ MOC %(Filename).h $(IntDir)generated\moc_%(Filename).cpp - - %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe;%(AdditionalInputs) - "$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(ProjectDir)3rdparty\qt\$(Platform)\mkspecs/win32-msvc2015" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtWidgets" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtGui" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" - MOC %(Filename).h - $(IntDir)generated\moc_%(Filename).cpp - %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe;%(AdditionalInputs) "$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(ProjectDir)3rdparty\qt\$(Platform)\mkspecs/win32-msvc2015" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtWidgets" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtGui" -I"$(ProjectDir)3rdparty\qt\$(Platform)\include\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" @@ -1428,12 +1427,6 @@ UIC %(Filename).ui $(IntDir)generated\ui_%(Filename).h - - %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\uic.exe;%(AdditionalInputs) - "$(ProjectDir)3rdparty\qt\$(Platform)\bin\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h" - UIC %(Filename).ui - $(IntDir)generated\ui_%(Filename).h - %(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\uic.exe;%(AdditionalInputs) "$(ProjectDir)3rdparty\qt\$(Platform)\bin\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h" diff --git a/qrenderdoc/qrenderdoc_local.vcxproj.filters b/qrenderdoc/qrenderdoc_local.vcxproj.filters index 951679304..8dbdd985e 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj.filters +++ b/qrenderdoc/qrenderdoc_local.vcxproj.filters @@ -357,8 +357,8 @@ Windows\Dialogs - - Windows\Dialogs + + Widgets Widgets\Extended @@ -947,9 +947,6 @@ Generated Files - - Generated Files - Generated Files @@ -1145,9 +1142,6 @@ Widgets - - Windows\Dialogs - Windows\Dialogs @@ -1253,8 +1247,8 @@ Windows\Dialogs - - Windows\Dialogs + + Widgets Windows\PipelineState