Qt: Add reload button to postprocessing UI

This commit is contained in:
Connor McLaughlin 2020-09-13 20:21:33 +10:00
parent 7a5f167c1c
commit 3232e3b164
5 changed files with 35 additions and 1 deletions

View File

@ -1,6 +1,7 @@
#include "postprocessingchainconfigwidget.h"
#include "frontend-common/postprocessing_chain.h"
#include "postprocessingshaderconfigwidget.h"
#include "qthostinterface.h"
#include <QtGui/QCursor>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMessageBox>
@ -21,6 +22,7 @@ void PostProcessingChainConfigWidget::connectUi()
connect(m_ui.clear, &QPushButton::clicked, this, &PostProcessingChainConfigWidget::onClearButtonClicked);
connect(m_ui.moveUp, &QPushButton::clicked, this, &PostProcessingChainConfigWidget::onMoveUpButtonClicked);
connect(m_ui.moveDown, &QPushButton::clicked, this, &PostProcessingChainConfigWidget::onMoveDownButtonClicked);
connect(m_ui.reload, &QPushButton::clicked, this, &PostProcessingChainConfigWidget::onReloadButtonClicked);
connect(m_ui.shaderSettings, &QPushButton::clicked, this,
&PostProcessingChainConfigWidget::onShaderConfigButtonClicked);
connect(m_ui.shaders, &QListWidget::itemSelectionChanged, this, &PostProcessingChainConfigWidget::updateButtonStates);
@ -73,6 +75,7 @@ void PostProcessingChainConfigWidget::updateButtonStates()
std::optional<u32> index = getSelectedIndex();
m_ui.remove->setEnabled(index.has_value());
m_ui.clear->setEnabled(!m_chain.IsEmpty());
m_ui.reload->setEnabled(!m_chain.IsEmpty());
m_ui.shaderSettings->setEnabled(index.has_value() && (index.value() < m_chain.GetStageCount()) &&
m_chain.GetShaderStage(index.value()).HasOptions());
@ -177,3 +180,8 @@ void PostProcessingChainConfigWidget::onShaderConfigButtonClicked()
shader_config.exec();
}
}
void PostProcessingChainConfigWidget::onReloadButtonClicked()
{
QtHostInterface::GetInstance()->reloadPostProcessingShaders();
}

View File

@ -31,6 +31,7 @@ private Q_SLOTS:
void onMoveUpButtonClicked();
void onMoveDownButtonClicked();
void onShaderConfigButtonClicked();
void onReloadButtonClicked();
void updateButtonStates();
private:

View File

@ -82,6 +82,17 @@
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="reload">
<property name="text">
<string>&amp;Reload Shaders</string>
</property>
<property name="icon">
<iconset resource="resources/icons.qrc">
<normaloff>:/icons/view-refresh.png</normaloff>:/icons/view-refresh.png</iconset>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">

View File

@ -1024,7 +1024,7 @@ void QtHostInterface::setCheatEnabled(quint32 index, bool enabled)
SetCheatCodeState(index, enabled, g_settings.auto_load_cheats);
}
void QtHostInterface::applyCheat(u32 index)
void QtHostInterface::applyCheat(quint32 index)
{
if (!isOnWorkerThread())
{
@ -1035,6 +1035,17 @@ void QtHostInterface::applyCheat(u32 index)
ApplyCheatCode(index);
}
void QtHostInterface::reloadPostProcessingShaders()
{
if (!isOnWorkerThread())
{
QMetaObject::invokeMethod(this, "reloadPostProcessingShaders", Qt::QueuedConnection);
return;
}
ReloadPostProcessingShaders();
}
void QtHostInterface::loadState(const QString& filename)
{
if (!isOnWorkerThread())

View File

@ -40,6 +40,8 @@ public:
explicit QtHostInterface(QObject* parent = nullptr);
~QtHostInterface();
ALWAYS_INLINE static QtHostInterface* GetInstance() { return static_cast<QtHostInterface*>(g_host_interface); }
const char* GetFrontendName() const override;
bool Initialize() override;
@ -164,6 +166,7 @@ public Q_SLOTS:
void loadCheatList(const QString& filename);
void setCheatEnabled(quint32 index, bool enabled);
void applyCheat(quint32 index);
void reloadPostProcessingShaders();
private Q_SLOTS:
void doStopThread();