mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 09:00:44 +00:00
Add settings dialog for Qt
This commit is contained in:
@@ -90,6 +90,8 @@ bool PersistantConfig::Deserialize(QString filename)
|
||||
{
|
||||
QFile f(filename);
|
||||
|
||||
m_Filename = filename;
|
||||
|
||||
// silently allow missing configs
|
||||
if(!f.exists())
|
||||
return true;
|
||||
@@ -115,13 +117,16 @@ bool PersistantConfig::Deserialize(QString filename)
|
||||
|
||||
bool PersistantConfig::Serialize(QString filename)
|
||||
{
|
||||
if(filename != "")
|
||||
m_Filename = filename;
|
||||
|
||||
QVariantMap values = storeValues();
|
||||
|
||||
QFile f(filename);
|
||||
QFile f(m_Filename);
|
||||
if(f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
|
||||
return SaveToJSON(values, f, JSON_ID, JSON_VER);
|
||||
|
||||
qWarning() << "Couldn't write to " << filename << " " << f.errorString();
|
||||
qWarning() << "Couldn't write to " << m_Filename << " " << f.errorString();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -71,6 +71,8 @@ typedef QMap<QString, QString> QStringMap;
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, EventBrowser_HideEmpty, false) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, EventBrowser_HideAPICalls, false) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, EventBrowser_ApplyColours, true) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, EventBrowser_ColourEventRow, true) \
|
||||
@@ -85,6 +87,10 @@ typedef QMap<QString, QString> QStringMap;
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, Font_PreferMonospaced, false) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, QString, QString, Android_AdbExecutablePath, "") \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, int, int, Android_MaxConnectTimeout, 30) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, CheckUpdate_AllowChecks, true) \
|
||||
\
|
||||
CONFIG_SETTING_VAL(public, bool, bool, CheckUpdate_UpdateAvailable, false) \
|
||||
@@ -112,6 +118,7 @@ public:
|
||||
Milliseconds,
|
||||
Microseconds,
|
||||
Nanoseconds,
|
||||
Count,
|
||||
};
|
||||
|
||||
CONFIG_SETTINGS()
|
||||
@@ -119,7 +126,7 @@ public:
|
||||
public:
|
||||
PersistantConfig() {}
|
||||
bool Deserialize(QString filename);
|
||||
bool Serialize(QString filename);
|
||||
bool Serialize(QString filename = "");
|
||||
|
||||
void SetupFormatting();
|
||||
|
||||
@@ -145,4 +152,6 @@ public:
|
||||
private:
|
||||
QVariantMap storeValues() const;
|
||||
void applyValues(const QVariantMap &values);
|
||||
|
||||
QString m_Filename;
|
||||
};
|
||||
|
||||
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
|
||||
QCoreApplication::sendPostedEvents();
|
||||
}
|
||||
|
||||
config.Serialize(configFilename);
|
||||
config.Serialize();
|
||||
}
|
||||
|
||||
delete[] argv_mod;
|
||||
|
||||
@@ -74,6 +74,8 @@ public:
|
||||
void setExecutableFilename(QString filename);
|
||||
void loadSettings(QString filename);
|
||||
|
||||
void updateGlobalHook();
|
||||
|
||||
private slots:
|
||||
// automatic slots
|
||||
void on_exePathBrowse_clicked();
|
||||
@@ -105,7 +107,6 @@ private:
|
||||
OnCaptureMethod m_CaptureCallback;
|
||||
OnInjectMethod m_InjectCallback;
|
||||
|
||||
void updateGlobalHook();
|
||||
void setEnvironmentModifications(const QList<EnvironmentModification> &modifications);
|
||||
void triggerCapture();
|
||||
|
||||
|
||||
@@ -0,0 +1,336 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#include "SettingsDialog.h"
|
||||
#include "Code/CaptureContext.h"
|
||||
#include "Code/PersistantConfig.h"
|
||||
#include "Code/QRDUtils.h"
|
||||
#include "CaptureDialog.h"
|
||||
#include "ui_SettingsDialog.h"
|
||||
|
||||
SettingsDialog::SettingsDialog(CaptureContext *ctx, QWidget *parent)
|
||||
: QDialog(parent), ui(new Ui::SettingsDialog)
|
||||
{
|
||||
m_Ctx = ctx;
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->tabWidget->tabBar()->setVisible(false);
|
||||
|
||||
for(int i = 0; i < ui->tabWidget->count(); i++)
|
||||
ui->pages->addItem(ui->tabWidget->tabText(i));
|
||||
|
||||
m_Init = true;
|
||||
|
||||
for(int i = 0; i < (int)PersistantConfig::TimeUnit::Count; i++)
|
||||
{
|
||||
ui->EventBrowser_TimeUnit->addItem(PersistantConfig::UnitPrefix((PersistantConfig::TimeUnit)i));
|
||||
}
|
||||
|
||||
ui->pages->clearSelection();
|
||||
ui->pages->setItemSelected(ui->pages->item(0), true);
|
||||
ui->tabWidget->setCurrentIndex(0);
|
||||
|
||||
ui->saveDirectory->setText(m_Ctx->Config.DefaultCaptureSaveDirectory);
|
||||
ui->tempDirectory->setText(m_Ctx->Config.TemporaryCaptureDirectory);
|
||||
|
||||
// TODO external disassembler
|
||||
/*
|
||||
ui->ExternalDisassemblerEnabled->setChecked(m_Ctx->Config.ExternalDisassemblerEnabled);
|
||||
ui->externalDisassemblerArgs->setText(m_Ctx->Config.GetDefaultExternalDisassembler().args);
|
||||
ui->externalDisassemblePath->setText(m_Ctx->Config.GetDefaultExternalDisassembler().executable);
|
||||
*/
|
||||
ui->Android_AdbExecutablePath->setText(m_Ctx->Config.Android_AdbExecutablePath);
|
||||
ui->Android_MaxConnectTimeout->setValue(m_Ctx->Config.Android_MaxConnectTimeout);
|
||||
|
||||
ui->TextureViewer_ResetRange->setChecked(m_Ctx->Config.TextureViewer_ResetRange);
|
||||
ui->TextureViewer_PerTexSettings->setChecked(m_Ctx->Config.TextureViewer_PerTexSettings);
|
||||
ui->ShaderViewer_FriendlyNaming->setChecked(m_Ctx->Config.ShaderViewer_FriendlyNaming);
|
||||
ui->CheckUpdate_AllowChecks->setChecked(m_Ctx->Config.CheckUpdate_AllowChecks);
|
||||
ui->Font_PreferMonospaced->setChecked(m_Ctx->Config.Font_PreferMonospaced);
|
||||
|
||||
ui->AlwaysReplayLocally->setChecked(m_Ctx->Config.AlwaysReplayLocally);
|
||||
|
||||
ui->AllowGlobalHook->setChecked(m_Ctx->Config.AllowGlobalHook);
|
||||
|
||||
ui->EventBrowser_TimeUnit->setCurrentIndex((int)m_Ctx->Config.EventBrowser_TimeUnit);
|
||||
ui->EventBrowser_HideEmpty->setChecked(m_Ctx->Config.EventBrowser_HideEmpty);
|
||||
ui->EventBrowser_HideAPICalls->setChecked(m_Ctx->Config.EventBrowser_HideAPICalls);
|
||||
ui->EventBrowser_ApplyColours->setChecked(m_Ctx->Config.EventBrowser_ApplyColours);
|
||||
ui->EventBrowser_ColourEventRow->setChecked(m_Ctx->Config.EventBrowser_ColourEventRow);
|
||||
|
||||
// disable sub-checkbox
|
||||
ui->EventBrowser_ColourEventRow->setEnabled(ui->EventBrowser_ApplyColours->isChecked());
|
||||
|
||||
ui->Formatter_MinFigures->setValue(m_Ctx->Config.Formatter_MinFigures);
|
||||
ui->Formatter_MaxFigures->setValue(m_Ctx->Config.Formatter_MaxFigures);
|
||||
ui->Formatter_NegExp->setValue(m_Ctx->Config.Formatter_NegExp);
|
||||
ui->Formatter_PosExp->setValue(m_Ctx->Config.Formatter_PosExp);
|
||||
|
||||
m_Init = false;
|
||||
|
||||
QObject::connect(ui->Formatter_MinFigures, OverloadedSlot<int>::of(&QSpinBox::valueChanged), this,
|
||||
&SettingsDialog::formatter_valueChanged);
|
||||
QObject::connect(ui->Formatter_MaxFigures, OverloadedSlot<int>::of(&QSpinBox::valueChanged), this,
|
||||
&SettingsDialog::formatter_valueChanged);
|
||||
QObject::connect(ui->Formatter_NegExp, OverloadedSlot<int>::of(&QSpinBox::valueChanged), this,
|
||||
&SettingsDialog::formatter_valueChanged);
|
||||
QObject::connect(ui->Formatter_PosExp, OverloadedSlot<int>::of(&QSpinBox::valueChanged), this,
|
||||
&SettingsDialog::formatter_valueChanged);
|
||||
}
|
||||
|
||||
SettingsDialog::~SettingsDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void SettingsDialog::on_pages_itemSelectionChanged()
|
||||
{
|
||||
QList<QListWidgetItem *> sel = ui->pages->selectedItems();
|
||||
|
||||
if(sel.empty())
|
||||
{
|
||||
ui->pages->setItemSelected(ui->pages->item(ui->tabWidget->currentIndex()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->tabWidget->setCurrentIndex(ui->pages->row(sel[0]));
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsDialog::on_okButton_accepted()
|
||||
{
|
||||
setResult(1);
|
||||
accept();
|
||||
}
|
||||
|
||||
// general
|
||||
void SettingsDialog::formatter_valueChanged(int val)
|
||||
{
|
||||
m_Ctx->Config.Formatter_MinFigures = ui->Formatter_MinFigures->value();
|
||||
m_Ctx->Config.Formatter_MaxFigures = ui->Formatter_MaxFigures->value();
|
||||
m_Ctx->Config.Formatter_NegExp = ui->Formatter_NegExp->value();
|
||||
m_Ctx->Config.Formatter_PosExp = ui->Formatter_PosExp->value();
|
||||
|
||||
m_Ctx->Config.SetupFormatting();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_tempDirectory_textEdited(const QString &dir)
|
||||
{
|
||||
if(QDir(dir).exists())
|
||||
m_Ctx->Config.TemporaryCaptureDirectory = dir;
|
||||
else
|
||||
m_Ctx->Config.TemporaryCaptureDirectory = "";
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_saveDirectory_textEdited(const QString &dir)
|
||||
{
|
||||
if(QDir(dir).exists() || dir == "")
|
||||
m_Ctx->Config.DefaultCaptureSaveDirectory = dir;
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_browseSaveCaptureDirectory_clicked()
|
||||
{
|
||||
QString dir = RDDialog::getExistingDirectory(this, "Choose default directory for saving captures",
|
||||
m_Ctx->Config.DefaultCaptureSaveDirectory);
|
||||
|
||||
if(dir != "")
|
||||
m_Ctx->Config.DefaultCaptureSaveDirectory = dir;
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_AllowGlobalHook_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.AllowGlobalHook = ui->AllowGlobalHook->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
|
||||
if(m_Ctx->hasCaptureDialog())
|
||||
m_Ctx->captureDialog()->updateGlobalHook();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_CheckUpdate_AllowChecks_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.CheckUpdate_AllowChecks = ui->CheckUpdate_AllowChecks->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_Font_PreferMonospaced_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.Font_PreferMonospaced = ui->Font_PreferMonospaced->isChecked();
|
||||
|
||||
m_Ctx->Config.SetupFormatting();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_AlwaysReplayLocally_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.AlwaysReplayLocally = ui->AlwaysReplayLocally->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
// core
|
||||
void SettingsDialog::on_chooseSearchPaths_clicked()
|
||||
{
|
||||
// TODO ordered list editor
|
||||
}
|
||||
|
||||
// texture viewer
|
||||
void SettingsDialog::on_TextureViewer_PerTexSettings_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.TextureViewer_PerTexSettings = ui->TextureViewer_PerTexSettings->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_TextureViewer_ResetRange_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.TextureViewer_ResetRange = ui->TextureViewer_ResetRange->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
// shader viewer
|
||||
void SettingsDialog::on_ShaderViewer_FriendlyNaming_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.ShaderViewer_FriendlyNaming = ui->ShaderViewer_FriendlyNaming->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_ExternalDisassemblerEnabled_toggled(bool checked)
|
||||
{
|
||||
// TODO external disassembler
|
||||
// m_Ctx->Config.ExternalDisassemblerEnabled = ui->ExternalDisassemblerEnabled->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_browseExtDisasemble_clicked()
|
||||
{
|
||||
// TODO external disassembler
|
||||
}
|
||||
|
||||
void SettingsDialog::on_externalDisassemblePath_textEdited(const QString &disasm)
|
||||
{
|
||||
// TODO external disassembler
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_externalDisassemblerArgs_textEdited(const QString &args)
|
||||
{
|
||||
// TODO external disassembler
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
// event browser
|
||||
void SettingsDialog::on_EventBrowser_TimeUnit_currentIndexChanged(int index)
|
||||
{
|
||||
if(m_Init)
|
||||
return;
|
||||
|
||||
m_Ctx->Config.EventBrowser_TimeUnit =
|
||||
(PersistantConfig::TimeUnit)ui->EventBrowser_TimeUnit->currentIndex();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_EventBrowser_HideEmpty_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.EventBrowser_HideEmpty = ui->EventBrowser_HideEmpty->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_EventBrowser_HideAPICalls_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.EventBrowser_HideAPICalls = ui->EventBrowser_HideAPICalls->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_EventBrowser_ApplyColours_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.EventBrowser_ApplyColours = ui->EventBrowser_ApplyColours->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_EventBrowser_ColourEventRow_toggled(bool checked)
|
||||
{
|
||||
m_Ctx->Config.EventBrowser_ColourEventRow = ui->EventBrowser_ColourEventRow->isChecked();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
// android
|
||||
void SettingsDialog::on_browseTempCaptureDirectory_clicked()
|
||||
{
|
||||
QString dir = RDDialog::getExistingDirectory(this, "Choose directory for temporary captures",
|
||||
m_Ctx->Config.TemporaryCaptureDirectory);
|
||||
|
||||
if(dir != "")
|
||||
m_Ctx->Config.TemporaryCaptureDirectory = dir;
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_browseAdbPath_clicked()
|
||||
{
|
||||
QString adb = RDDialog::getExecutableFileName(
|
||||
this, "Locate adb executable",
|
||||
QFileInfo(m_Ctx->Config.Android_AdbExecutablePath).absoluteDir().path());
|
||||
|
||||
if(adb != "")
|
||||
m_Ctx->Config.Android_AdbExecutablePath = adb;
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_MaxConnectTimeout_valueChanged(double timeout)
|
||||
{
|
||||
m_Ctx->Config.Android_MaxConnectTimeout = ui->Android_MaxConnectTimeout->value();
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_Android_AdbExecutablePath_textEdited(const QString &adb)
|
||||
{
|
||||
if(QFileInfo::exists(adb))
|
||||
m_Ctx->Config.Android_AdbExecutablePath = adb;
|
||||
|
||||
m_Ctx->Config.Serialize();
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class SettingsDialog;
|
||||
}
|
||||
|
||||
class QListWidgetItem;
|
||||
|
||||
class CaptureContext;
|
||||
|
||||
class SettingsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SettingsDialog(CaptureContext *ctx, QWidget *parent = 0);
|
||||
~SettingsDialog();
|
||||
|
||||
private slots:
|
||||
// automatic slots
|
||||
|
||||
// global
|
||||
void on_pages_itemSelectionChanged();
|
||||
void on_okButton_accepted();
|
||||
|
||||
// general
|
||||
void on_tempDirectory_textEdited(const QString &temp);
|
||||
void on_saveDirectory_textEdited(const QString &save);
|
||||
void on_browseSaveCaptureDirectory_clicked();
|
||||
void on_AllowGlobalHook_toggled(bool checked);
|
||||
void on_CheckUpdate_AllowChecks_toggled(bool checked);
|
||||
void on_Font_PreferMonospaced_toggled(bool checked);
|
||||
void on_AlwaysReplayLocally_toggled(bool checked);
|
||||
|
||||
// core
|
||||
void on_chooseSearchPaths_clicked();
|
||||
|
||||
// texture viewer
|
||||
void on_TextureViewer_PerTexSettings_toggled(bool checked);
|
||||
void on_TextureViewer_ResetRange_toggled(bool checked);
|
||||
|
||||
// shader viewer
|
||||
void on_ShaderViewer_FriendlyNaming_toggled(bool checked);
|
||||
|
||||
void on_ExternalDisassemblerEnabled_toggled(bool checked);
|
||||
void on_browseExtDisasemble_clicked();
|
||||
void on_externalDisassemblePath_textEdited(const QString &path);
|
||||
void on_externalDisassemblerArgs_textEdited(const QString &args);
|
||||
|
||||
// event browser
|
||||
void on_EventBrowser_TimeUnit_currentIndexChanged(int index);
|
||||
void on_EventBrowser_HideEmpty_toggled(bool checked);
|
||||
void on_EventBrowser_HideAPICalls_toggled(bool checked);
|
||||
void on_EventBrowser_ApplyColours_toggled(bool checked);
|
||||
void on_EventBrowser_ColourEventRow_toggled(bool checked);
|
||||
|
||||
// android
|
||||
void on_browseTempCaptureDirectory_clicked();
|
||||
void on_browseAdbPath_clicked();
|
||||
void on_MaxConnectTimeout_valueChanged(double timeout);
|
||||
void on_Android_AdbExecutablePath_textEdited(const QString &path);
|
||||
|
||||
// manual slots
|
||||
void formatter_valueChanged(int value);
|
||||
|
||||
private:
|
||||
Ui::SettingsDialog *ui;
|
||||
|
||||
CaptureContext *m_Ctx;
|
||||
bool m_Init = false;
|
||||
};
|
||||
@@ -0,0 +1,954 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SettingsDialog</class>
|
||||
<widget class="QWidget" name="SettingsDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>614</width>
|
||||
<height>470</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="1" column="2">
|
||||
<widget class="QDialogButtonBox" name="okButton">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QListWidget" name="pages">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Panel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="tabPosition">
|
||||
<enum>QTabWidget::West</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="documentMode">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="general">
|
||||
<attribute name="title">
|
||||
<string>General</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>General</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="toolTip">
|
||||
<string>Any numbers larger than this exponent will be displayed in scientific notation.
|
||||
e.g. 1000 * 10 = 1e4</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Positive exponential cutoff value</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="toolTip">
|
||||
<string>Wherever possible a monospaced font will be used instead of the default font</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Prefer monospaced fonts in UI (restart required)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="Formatter_MinFigures">
|
||||
<property name="toolTip">
|
||||
<string>Decimals will display at least this many digits.
|
||||
e.g. a value of 2 means 0 will display as 0.00, 0.5 as 0.50</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>2</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="toolTip">
|
||||
<string>Changes the default directory for the save dialog when saving capture files.
|
||||
|
||||
Defaults to blank, which follows system default behaviour.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Default save directory for captures</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="toolTip">
|
||||
<string>Any numbers smaller than this exponent will be displayed in scientific notation.
|
||||
E.g. a value of 3 means 0.005 / 10 = 5E-4</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Negative exponential cutoff value</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="toolTip">
|
||||
<string>Decimals will display at least this many digits.
|
||||
e.g. a value of 2 means 0 will display as 0.00, 0.5 as 0.50</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Minimum decimal places on float values</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="toolTip">
|
||||
<string>Enables functionality on the capture application window that will insert RenderDoc automatically
|
||||
into all new processes created - then inject into the target (matching) executable.
|
||||
|
||||
Useful for capturing programs indirectly that can't easily be launched directly by RenderDoc
|
||||
|
||||
Since this is a global system hook it must be used carefully and only when necessary!</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Allow global process hooking - be careful!</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="toolTip">
|
||||
<string>No more significant figures than this will be displayed on floats.
|
||||
e.g. a value of 5 means 0.123456789 will display as 0.12345</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Maximum significant figures on decimals</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="toolTip">
|
||||
<string>Allows RenderDoc to phone home to https://renderdoc.org to anonymously check for new versions.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Allow periodic anonymous update checks</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="toolTip">
|
||||
<string>Changes the directory where capture files are saved after being created, until saved manually or deleted.
|
||||
|
||||
Defaults to %TEMP%.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Directory for temporary capture files</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="Formatter_NegExp">
|
||||
<property name="toolTip">
|
||||
<string>Any numbers smaller than this exponent will be displayed in scientific notation.
|
||||
E.g. a value of 3 means 0.005 / 10 = 5E-4</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>216</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLineEdit" name="tempDirectory">
|
||||
<property name="toolTip">
|
||||
<string>Changes the directory where capture files are saved after being created, until saved manually or deleted.
|
||||
|
||||
Defaults to %TEMP%.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QPushButton" name="browseTempCaptureDirectory">
|
||||
<property name="toolTip">
|
||||
<string>Changes the directory where capture files are saved after being created, until saved manually or deleted.
|
||||
|
||||
Defaults to %TEMP%.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QPushButton" name="browseSaveCaptureDirectory">
|
||||
<property name="toolTip">
|
||||
<string>Changes the default directory for the save dialog when saving capture files.
|
||||
|
||||
Defaults to blank, which follows system default behaviour.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QCheckBox" name="AllowGlobalHook">
|
||||
<property name="toolTip">
|
||||
<string>Enables functionality on the capture application window that will insert RenderDoc automatically
|
||||
into all new processes created - then inject into the target (matching) executable.
|
||||
|
||||
Useful for capturing programs indirectly that can't easily be launched directly by RenderDoc
|
||||
|
||||
Since this is a global system hook it must be used carefully and only when necessary!</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QCheckBox" name="CheckUpdate_AllowChecks">
|
||||
<property name="toolTip">
|
||||
<string>Allows RenderDoc to phone home to https://renderdoc.org to anonymously check for new versions.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<widget class="QCheckBox" name="Font_PreferMonospaced">
|
||||
<property name="toolTip">
|
||||
<string>Wherever possible a monospaced font will be used instead of the default font</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="Formatter_MaxFigures">
|
||||
<property name="toolTip">
|
||||
<string>No more significant figures than this will be displayed on floats.
|
||||
e.g. a value of 5 means 0.123456789 will display as 0.12345</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLineEdit" name="saveDirectory">
|
||||
<property name="toolTip">
|
||||
<string>Changes the default directory for the save dialog when saving capture files.
|
||||
|
||||
Defaults to blank, which follows system default behaviour.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QSpinBox" name="Formatter_PosExp">
|
||||
<property name="toolTip">
|
||||
<string>Any numbers larger than this exponent will be displayed in scientific notation.
|
||||
e.g. 1000 * 10 = 1e4</string>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>7</number>
|
||||
</property>
|
||||
<property name="displayIntegerBase">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="toolTip">
|
||||
<string>If a capture is marked as being created on a significantly different system (different OS or platform)
|
||||
as is currently running, then by default the UI will prompt to ask if you want to replay on a remote context.
|
||||
|
||||
This option overrides that and will always replay locally if the local context is selected.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Always replay logs locally, never prompt about it</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1">
|
||||
<widget class="QCheckBox" name="AlwaysReplayLocally">
|
||||
<property name="toolTip">
|
||||
<string>If a capture is marked as being created on a significantly different system (different OS or platform)
|
||||
as is currently running, then by default the UI will prompt to ask if you want to replay on a remote context.
|
||||
|
||||
This option overrides that and will always replay locally if the local context is selected.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="core">
|
||||
<attribute name="title">
|
||||
<string>Core</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Core</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Shader debug search paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="chooseSearchPaths">
|
||||
<property name="text">
|
||||
<string>Choose paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>387</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="textureTab">
|
||||
<attribute name="title">
|
||||
<string>Texture Viewer</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Texture Viewer</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reset visible range when changing event or texture</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset Range on changing selection</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="TextureViewer_ResetRange">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reset visible range when changing event or texture</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The visible channels (RGBA) and selected mip/slice are remembered and restored per-texture.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Visible channels & mip/slice saved per-texture</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="TextureViewer_PerTexSettings">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The visible channels (RGBA) and selected mip/slice are remembered and restored per-texture.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>378</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="shaderTab">
|
||||
<attribute name="title">
|
||||
<string>Shader Viewer</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Shader Viewer</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>In disassembly view, rename constant registers to their names from shader reflection data</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rename disassembly registers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="ShaderViewer_FriendlyNaming">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>In disassembly view, rename constant registers to their names from shader reflection data</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_5">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Vulkan Shaders</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="toolTip">
|
||||
<string>Use an external tool to disassemble SPIR-V instead of RenderDoc's built-in disassembly.
|
||||
|
||||
This is useful if you want to disassemble directly to a high level language like GLSL or HLSL that can be compiled for editing.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use External Disassembler</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="ExternalDisassemblerEnabled">
|
||||
<property name="toolTip">
|
||||
<string>Use an external tool to disassemble SPIR-V instead of RenderDoc's built-in disassembly.
|
||||
|
||||
This is useful if you want to disassemble directly to a high level language like GLSL or HLSL that can be compiled for editing.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLineEdit" name="externalDisassemblePath">
|
||||
<property name="toolTip">
|
||||
<string>Choose the executable file to invoke every time a shader needs to be disassembled</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>External Disassembler command line arguments</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="browseExtDisasemble">
|
||||
<property name="toolTip">
|
||||
<string>Choose the executable file to invoke every time a shader needs to be disassembled</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="text">
|
||||
<string>External Disassembler executable</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLineEdit" name="externalDisassemblerArgs">
|
||||
<property name="toolTip">
|
||||
<string>The command line arguments to the executable.
|
||||
|
||||
The {spv_bin} and {spv_disas} tags indicate the (temporary) path to the SPIR-V binary file, and the expected SPIR-V disassembled file to create.
|
||||
|
||||
If {spv_disas} is not used, the tool is expected to output the disassembly on stdout.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_18">
|
||||
<property name="text">
|
||||
<string>NOTE: Use the {spv_bin} and {spv_disas} tags to indicate to the external disassembler the input SPIR-V binary and the output SPIR-V disassembly respectively.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="eventTab">
|
||||
<attribute name="title">
|
||||
<string>Event Browser</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_6">
|
||||
<property name="title">
|
||||
<string>Event Browser</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_7">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The time unit to use when displaying the duration column in the event browser</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Time unit used for drawcall durations</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<spacer name="verticalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>297</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="EventBrowser_TimeUnit">
|
||||
<property name="toolTip">
|
||||
<string>The time unit to use when displaying the duration column in the event browser</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_20">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections that contain no API calls or drawcalls will be completely removed</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Hide empty marker sections (requires file reload)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="EventBrowser_HideEmpty">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections that contain no API calls or drawcalls will be completely removed</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="EventBrowser_HideAPICalls">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections that contain only non-draw API calls - e.g. only queries, or only state setting - will be completely removed</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_21">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections that contain only non-draw API calls - e.g. only queries, or only state setting - will be completely removed</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Hide marker sections with only non-draw API calls (requires file reload)</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="EventBrowser_ApplyColours">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections and marker labels will be coloured with an API-specified colour.
|
||||
</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="EventBrowser_ColourEventRow">
|
||||
<property name="toolTip">
|
||||
<string>When colouring marker sections in the Event Browser, the whole row of a marker region will be coloured, not just a bar to the left of its children.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="toolTip">
|
||||
<string>In the Event Browser and Timeline Bar, marker sections and marker labels will be coloured with an API-specified colour.
|
||||
</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Apply marker colours (requires file reload)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="toolTip">
|
||||
<string>When colouring marker sections in the Event Browser, the whole row of a marker region will be coloured, not just a bar to the left of its children.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> - Colourise whole row for marker regions</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="androidTab">
|
||||
<attribute name="title">
|
||||
<string>Android</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_7">
|
||||
<property name="title">
|
||||
<string>Android</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="toolTip">
|
||||
<string>The location of adb.exe, used to control Android devices.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Android ADB executable path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<spacer name="verticalSpacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>325</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_25">
|
||||
<property name="toolTip">
|
||||
<string>Maximum time to try connecting to the target app.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Max Connection Timeout (seconds)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="Android_MaxConnectTimeout">
|
||||
<property name="toolTip">
|
||||
<string>Maximum time to try connecting to the target app.</string>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>100.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="Android_AdbExecutablePath">
|
||||
<property name="toolTip">
|
||||
<string>The location of adb.exe, used to control Android devices.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="browseAdbPath">
|
||||
<property name="toolTip">
|
||||
<string>The location of adb.exe, used to control Android devices.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "Windows/Dialogs/AboutDialog.h"
|
||||
#include "Windows/Dialogs/CaptureDialog.h"
|
||||
#include "Windows/Dialogs/LiveCapture.h"
|
||||
#include "Windows/Dialogs/SettingsDialog.h"
|
||||
#include "APIInspector.h"
|
||||
#include "BufferViewer.h"
|
||||
#include "ConstantBufferPreviewer.h"
|
||||
@@ -1121,6 +1122,12 @@ void MainWindow::on_action_Resolve_Symbols_triggered()
|
||||
thread->start();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_Settings_triggered()
|
||||
{
|
||||
SettingsDialog about(m_Ctx, this);
|
||||
RDDialog::show(&about);
|
||||
}
|
||||
|
||||
void MainWindow::saveLayout_triggered()
|
||||
{
|
||||
LoadSaveLayout(qobject_cast<QAction *>(QObject::sender()), true);
|
||||
|
||||
@@ -97,6 +97,7 @@ private slots:
|
||||
void on_action_Statistics_Viewer_triggered();
|
||||
void on_action_Inject_into_Process_triggered();
|
||||
void on_action_Resolve_Symbols_triggered();
|
||||
void on_action_Settings_triggered();
|
||||
|
||||
// manual slots
|
||||
void saveLayout_triggered();
|
||||
|
||||
@@ -50,10 +50,11 @@
|
||||
<string>&Tools</string>
|
||||
</property>
|
||||
<addaction name="action_Resolve_Symbols"/>
|
||||
<addaction name="action_Log_Statistics"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_Options"/>
|
||||
<addaction name="action_Manage_Replay_Devices"/>
|
||||
<addaction name="action_Settings"/>
|
||||
<addaction name="action_Manage_Remote_Servers"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_Start_Android_Remote_Server"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menu_File">
|
||||
<property name="title">
|
||||
@@ -329,14 +330,14 @@
|
||||
<string>&Log Statistics</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_Options">
|
||||
<action name="action_Settings">
|
||||
<property name="text">
|
||||
<string>&Options</string>
|
||||
<string>&Settings</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_Manage_Replay_Devices">
|
||||
<action name="action_Manage_Remote_Servers">
|
||||
<property name="text">
|
||||
<string>&Manage Replay Devices</string>
|
||||
<string>&Manage Remote Servers</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionView_Documentation">
|
||||
@@ -389,6 +390,11 @@
|
||||
<string>Statisti&cs Viewer</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_Start_Android_Remote_Server">
|
||||
<property name="text">
|
||||
<string>Start &Android Remote Server</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
|
||||
@@ -133,7 +133,8 @@ SOURCES += Code/qrenderdoc.cpp \
|
||||
Windows/BufferViewer.cpp \
|
||||
Widgets/Extended/RDTableView.cpp \
|
||||
Windows/DebugMessageView.cpp \
|
||||
Windows/StatisticsViewer.cpp
|
||||
Windows/StatisticsViewer.cpp \
|
||||
Windows/Dialogs/SettingsDialog.cpp
|
||||
|
||||
HEADERS += Code/CaptureContext.h \
|
||||
Code/qprocessinfo.h \
|
||||
@@ -171,7 +172,8 @@ HEADERS += Code/CaptureContext.h \
|
||||
Windows/BufferViewer.h \
|
||||
Widgets/Extended/RDTableView.h \
|
||||
Windows/DebugMessageView.h \
|
||||
Windows/StatisticsViewer.h
|
||||
Windows/StatisticsViewer.h \
|
||||
Windows/Dialogs/SettingsDialog.h
|
||||
|
||||
FORMS += Windows/Dialogs/AboutDialog.ui \
|
||||
Windows/MainWindow.ui \
|
||||
@@ -193,7 +195,8 @@ FORMS += Windows/Dialogs/AboutDialog.ui \
|
||||
Windows/BufferViewer.ui \
|
||||
Windows/ShaderViewer.ui \
|
||||
Windows/DebugMessageView.ui \
|
||||
Windows/StatisticsViewer.ui
|
||||
Windows/StatisticsViewer.ui \
|
||||
Windows/Dialogs/SettingsDialog.ui
|
||||
|
||||
RESOURCES += resources.qrc
|
||||
|
||||
|
||||
@@ -519,6 +519,7 @@
|
||||
<ClCompile Include="generated\moc_ScintillaEdit.cpp" />
|
||||
<ClCompile Include="generated\moc_ScintillaEditBase.cpp" />
|
||||
<ClCompile Include="generated\moc_ScintillaQt.cpp" />
|
||||
<ClCompile Include="generated\moc_SettingsDialog.cpp" />
|
||||
<ClCompile Include="generated\moc_ShaderViewer.cpp" />
|
||||
<ClCompile Include="generated\moc_StatisticsViewer.cpp" />
|
||||
<ClCompile Include="generated\moc_TextureGoto.cpp" />
|
||||
@@ -550,6 +551,7 @@
|
||||
<ClCompile Include="Windows\Dialogs\AboutDialog.cpp" />
|
||||
<ClCompile Include="Windows\Dialogs\CaptureDialog.cpp" />
|
||||
<ClCompile Include="Windows\Dialogs\LiveCapture.cpp" />
|
||||
<ClCompile Include="Windows\Dialogs\SettingsDialog.cpp" />
|
||||
<ClCompile Include="Windows\Dialogs\TextureSaveDialog.cpp" />
|
||||
<ClCompile Include="Windows\EventBrowser.cpp" />
|
||||
<ClCompile Include="3rdparty\flowlayout\FlowLayout.cpp">
|
||||
@@ -661,6 +663,7 @@
|
||||
<ClInclude Include="generated\ui_MainWindow.h" />
|
||||
<ClInclude Include="generated\ui_PipelineStateViewer.h" />
|
||||
<ClInclude Include="generated\ui_ResourcePreview.h" />
|
||||
<ClInclude Include="generated\ui_SettingsDialog.h" />
|
||||
<ClInclude Include="generated\ui_ShaderViewer.h" />
|
||||
<ClInclude Include="generated\ui_StatisticsViewer.h" />
|
||||
<ClInclude Include="generated\ui_TextureSaveDialog.h" />
|
||||
@@ -688,6 +691,7 @@
|
||||
<ClInclude Include="Windows\Dialogs\AboutDialog.h" />
|
||||
<ClInclude Include="Windows\Dialogs\CaptureDialog.h" />
|
||||
<ClInclude Include="Windows\Dialogs\LiveCapture.h" />
|
||||
<ClInclude Include="Windows\Dialogs\SettingsDialog.h" />
|
||||
<ClInclude Include="Windows\Dialogs\TextureSaveDialog.h" />
|
||||
<ClInclude Include="Windows\EventBrowser.h" />
|
||||
<ClInclude Include="3rdparty\flowlayout\FlowLayout.h" />
|
||||
@@ -717,6 +721,7 @@
|
||||
<None Include="Windows\Dialogs\AboutDialog.ui" />
|
||||
<None Include="Windows\Dialogs\CaptureDialog.ui" />
|
||||
<None Include="Windows\Dialogs\LiveCapture.ui" />
|
||||
<None Include="Windows\Dialogs\SettingsDialog.ui" />
|
||||
<None Include="Windows\Dialogs\TextureSaveDialog.ui" />
|
||||
<None Include="Windows\EventBrowser.ui" />
|
||||
<None Include="Windows\MainWindow.ui" />
|
||||
|
||||
@@ -478,6 +478,12 @@
|
||||
<ClCompile Include="Windows\StatisticsViewer.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Windows\Dialogs\SettingsDialog.cpp">
|
||||
<Filter>Windows\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="generated\moc_SettingsDialog.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="3rdparty\flowlayout\FlowLayout.h">
|
||||
@@ -849,6 +855,12 @@
|
||||
<ClInclude Include="Windows\StatisticsViewer.h">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Windows\Dialogs\SettingsDialog.h">
|
||||
<Filter>Windows\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="generated\ui_SettingsDialog.h">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="resources.qrc">
|
||||
@@ -1087,6 +1099,9 @@
|
||||
</None>
|
||||
<None Include="Windows\DebugMessageView.ui" />
|
||||
<None Include="Windows\StatisticsViewer.ui" />
|
||||
<None Include="Windows\Dialogs\SettingsDialog.ui">
|
||||
<Filter>Windows\Dialogs</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="generated\ui_AboutDialog.h">
|
||||
|
||||
Reference in New Issue
Block a user