From 380cd7ac53070856a8f303d9bb80582f17c2281d Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 18 Aug 2018 17:39:37 -0400 Subject: [PATCH] Qt: add move up/down button for shader passes --- intl/msg_hash_ja.h | 4 + intl/msg_hash_us.h | 4 + msg_hash.h | 2 + ui/drivers/qt/shaderparamsdialog.cpp | 121 ++++++++++++++++++++++++++- ui/drivers/qt/shaderparamsdialog.h | 2 + ui/drivers/qt/ui_qt_window.cpp | 2 - 6 files changed, 131 insertions(+), 4 deletions(-) diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 33ce9f1920..a8e823afb7 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -3756,3 +3756,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT_CONTRIBUTORS, "作成者") MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, "現在のシェーダー") +MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_DOWN, + "下へ移動") +MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_UP, + "上へ移動") diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index ae6b760e09..729bc127de 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -4258,3 +4258,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT_CONTRIBUTORS, "Contributors") MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, "Current shader") +MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_DOWN, + "Move Down") +MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_UP, + "Move Up") diff --git a/msg_hash.h b/msg_hash.h index 8857983952..de082a40af 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1980,6 +1980,8 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FINISHED, MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FAILED, MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, + MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_DOWN, + MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_UP, MENU_LABEL(MIDI_INPUT), MENU_LABEL(MIDI_OUTPUT), diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp index c51bef5def..fbd48501b7 100644 --- a/ui/drivers/qt/shaderparamsdialog.cpp +++ b/ui/drivers/qt/shaderparamsdialog.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include "shaderparamsdialog.h" #include "../ui_qt.h" @@ -281,6 +282,98 @@ void ShaderParamsDialog::onScaleComboBoxIndexChanged(int) } } +void ShaderParamsDialog::onShaderPassMoveDownClicked() +{ + QPushButton *button = qobject_cast(sender()); + QVariant passVariant; + struct video_shader *menu_shader = NULL; + struct video_shader *video_shader = NULL; + int pass = 0; + bool ok = false; + + getShaders(&menu_shader, &video_shader); + + if (!button) + return; + + passVariant = button->property("pass"); + + if (!passVariant.isValid()) + return; + + pass = passVariant.toInt(&ok); + + if (!ok) + return; + + if (pass < 0) + return; + + if (video_shader) + { + if (pass >= static_cast(video_shader->passes) - 1) + return; + + std::swap(video_shader->pass[pass], video_shader->pass[pass + 1]); + } + + if (menu_shader) + { + if (pass >= static_cast(menu_shader->passes) - 1) + return; + + std::swap(menu_shader->pass[pass], menu_shader->pass[pass + 1]); + } + + command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); +} + +void ShaderParamsDialog::onShaderPassMoveUpClicked() +{ + QPushButton *button = qobject_cast(sender()); + QVariant passVariant; + struct video_shader *menu_shader = NULL; + struct video_shader *video_shader = NULL; + int pass = 0; + bool ok = false; + + getShaders(&menu_shader, &video_shader); + + if (!button) + return; + + passVariant = button->property("pass"); + + if (!passVariant.isValid()) + return; + + pass = passVariant.toInt(&ok); + + if (!ok) + return; + + if (pass <= 0) + return; + + if (video_shader) + { + if (pass > static_cast(video_shader->passes) - 1) + return; + + std::swap(video_shader->pass[pass - 1], video_shader->pass[pass]); + } + + if (menu_shader) + { + if (pass > static_cast(menu_shader->passes) - 1) + return; + + std::swap(menu_shader->pass[pass - 1], menu_shader->pass[pass]); + } + + command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); +} + void ShaderParamsDialog::reload() { struct video_shader *menu_shader = NULL; @@ -325,11 +418,29 @@ void ShaderParamsDialog::reload() QHBoxLayout *filterScaleHBoxLayout = NULL; QComboBox *filterComboBox = new QComboBox(); QComboBox *scaleComboBox = new QComboBox(); + QPushButton *moveDownButton = NULL; + QPushButton *moveUpButton = NULL; unsigned j = 0; filterComboBox->setProperty("pass", i); scaleComboBox->setProperty("pass", i); + /* Can't move down if we're already at the bottom. */ + if (i < static_cast(video_shader->passes) - 1) + { + moveDownButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_DOWN)); + moveDownButton->setProperty("pass", i); + connect(moveDownButton, SIGNAL(clicked()), this, SLOT(onShaderPassMoveDownClicked())); + } + + /* Can't move up if we're already at the top. */ + if (i > 0) + { + moveUpButton = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SHADER_MOVE_UP)); + moveUpButton->setProperty("pass", i); + connect(moveUpButton, SIGNAL(clicked()), this, SLOT(onShaderPassMoveUpClicked())); + } + for (;;) { QString filterLabel = getFilterLabel(j); @@ -371,11 +482,17 @@ void ShaderParamsDialog::reload() m_layout->addWidget(groupBox); filterScaleHBoxLayout = new QHBoxLayout(); - filterScaleHBoxLayout->addWidget(new QLabel(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FILTER))); + filterScaleHBoxLayout->addWidget(new QLabel(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FILTER)) + ":")); filterScaleHBoxLayout->addWidget(filterComboBox); - filterScaleHBoxLayout->addWidget(new QLabel(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCALE))); + filterScaleHBoxLayout->addWidget(new QLabel(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCALE)) + ":")); filterScaleHBoxLayout->addWidget(scaleComboBox); + if (moveUpButton) + filterScaleHBoxLayout->addWidget(moveUpButton); + + if (moveDownButton) + filterScaleHBoxLayout->addWidget(moveDownButton); + form->addRow("", filterScaleHBoxLayout); for (j = 0; j < video_shader->num_parameters; j++) diff --git a/ui/drivers/qt/shaderparamsdialog.h b/ui/drivers/qt/shaderparamsdialog.h index 5fb5376862..8bd7ed8f3c 100644 --- a/ui/drivers/qt/shaderparamsdialog.h +++ b/ui/drivers/qt/shaderparamsdialog.h @@ -27,6 +27,8 @@ private slots: void onShaderParamDoubleSpinBoxValueChanged(double value); void onFilterComboBoxIndexChanged(int index); void onScaleComboBoxIndexChanged(int index); + void onShaderPassMoveDownClicked(); + void onShaderPassMoveUpClicked(); private: QString getFilterLabel(unsigned filter); void addShaderParam(struct video_shader_parameter *param, int parameter, QFormLayout *form); diff --git a/ui/drivers/qt/ui_qt_window.cpp b/ui/drivers/qt/ui_qt_window.cpp index d9c25546c5..7134bcc2c2 100644 --- a/ui/drivers/qt/ui_qt_window.cpp +++ b/ui/drivers/qt/ui_qt_window.cpp @@ -223,7 +223,6 @@ CoreInfoWidget::CoreInfoWidget(CoreInfoLabel *label, QWidget *parent) : ,m_label(label) ,m_scrollArea(new QScrollArea(this)) { - //m_scrollArea->setFrameShape(QFrame::NoFrame); m_scrollArea->setWidgetResizable(true); m_scrollArea->setWidget(m_label); } @@ -601,7 +600,6 @@ void MainWindow::onGridItemClicked(ThumbnailWidget *widget) if (m_currentGridWidget) { m_currentGridWidget->setObjectName("thumbnailWidget"); - //m_currentGridWidget->setFrameStyle(QFrame::Plain); m_currentGridWidget->style()->unpolish(m_currentGridWidget); m_currentGridWidget->style()->polish(m_currentGridWidget); }