diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 9bb6247fc..5d2339105 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -78,6 +78,7 @@ RemuxRecordings="Remux Recordings" Next="Next" Back="Back" Defaults="Defaults" +RestoreDefaults="Defaults" HideMixer="Hide in Mixer" TransitionOverride="Transition Override" ShowTransition="Show Transition" diff --git a/UI/forms/OBSBasicFilters.ui b/UI/forms/OBSBasicFilters.ui index aead3fdc2..06ce5e4c5 100644 --- a/UI/forms/OBSBasicFilters.ui +++ b/UI/forms/OBSBasicFilters.ui @@ -578,7 +578,7 @@ - QDialogButtonBox::Close|QDialogButtonBox::Reset + QDialogButtonBox::Close|QDialogButtonBox::RestoreDefaults diff --git a/UI/forms/OBSBasicProperties.ui b/UI/forms/OBSBasicProperties.ui new file mode 100644 index 000000000..1565b3393 --- /dev/null +++ b/UI/forms/OBSBasicProperties.ui @@ -0,0 +1,129 @@ + + + OBSBasicProperties + + + + 0 + 0 + 720 + 580 + + + + Properties + + + + + + + 0 + 400 + + + + Qt::Vertical + + + false + + + + + 0 + 3 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 20 + 150 + + + + + + + + + + 0 + 1 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults + + + + + + + + OBSQTDisplay + QWidget +
qt-display.hpp
+ 1 +
+
+ + + + +
diff --git a/UI/window-basic-filters.cpp b/UI/window-basic-filters.cpp index 75d81ffc4..cd112d747 100644 --- a/UI/window-basic-filters.cpp +++ b/UI/window-basic-filters.cpp @@ -105,10 +105,7 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_) connect(close, SIGNAL(clicked()), this, SLOT(close())); close->setDefault(true); - ui->buttonBox->button(QDialogButtonBox::Reset) - ->setText(QTStr("Defaults")); - - connect(ui->buttonBox->button(QDialogButtonBox::Reset), + connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), SIGNAL(clicked()), this, SLOT(ResetFilters())); uint32_t caps = obs_source_get_output_flags(source); diff --git a/UI/window-basic-properties.cpp b/UI/window-basic-properties.cpp index 30455d2aa..26404de6e 100644 --- a/UI/window-basic-properties.cpp +++ b/UI/window-basic-properties.cpp @@ -43,7 +43,7 @@ static void CreateTransitionScene(OBSSource scene, const char *text, OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) : QDialog(parent), - preview(new OBSQTDisplay(this)), + ui(new Ui::OBSBasicProperties), main(qobject_cast(parent)), acceptClicked(false), source(source_), @@ -51,8 +51,7 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) OBSBasicProperties::SourceRemoved, this), renamedSignal(obs_source_get_signal_handler(source), "rename", OBSBasicProperties::SourceRenamed, this), - oldSettings(obs_data_create()), - buttonBox(new QDialogButtonBox(this)) + oldSettings(obs_data_create()) { int cx = (int)config_get_int(App()->GlobalConfig(), "PropertiesWindow", "cx"); @@ -61,24 +60,12 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) enum obs_source_type type = obs_source_get_type(source); - buttonBox->setObjectName(QStringLiteral("buttonBox")); - buttonBox->setStandardButtons(QDialogButtonBox::Ok | - QDialogButtonBox::Cancel | - QDialogButtonBox::RestoreDefaults); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - buttonBox->button(QDialogButtonBox::Ok)->setText(QTStr("OK")); - buttonBox->button(QDialogButtonBox::Cancel)->setText(QTStr("Cancel")); - buttonBox->button(QDialogButtonBox::RestoreDefaults) - ->setText(QTStr("Defaults")); + ui->setupUi(this); if (cx > 400 && cy > 400) resize(cx, cy); - else - resize(720, 580); - - setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - - QMetaObject::connectSlotsByName(this); /* The OBSData constructor increments the reference once */ obs_data_release(oldSettings); @@ -93,30 +80,13 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) (PropertiesVisualUpdateCb)obs_source_update); view->setMinimumHeight(150); - preview->setMinimumSize(20, 150); - preview->setSizePolicy( - QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); - - // Create a QSplitter to keep a unified workflow here. - windowSplitter = new QSplitter(Qt::Orientation::Vertical, this); - windowSplitter->addWidget(preview); - windowSplitter->addWidget(view); - windowSplitter->setChildrenCollapsible(false); - //windowSplitter->setSizes(QList({ 16777216, 150 })); - windowSplitter->setStretchFactor(0, 3); - windowSplitter->setStretchFactor(1, 1); - - setLayout(new QVBoxLayout(this)); - layout()->addWidget(windowSplitter); + ui->propertiesLayout->addWidget(view); if (type == OBS_SOURCE_TYPE_TRANSITION) { connect(view, SIGNAL(PropertiesRefreshed()), this, SLOT(AddPreviewButton())); } - layout()->addWidget(buttonBox); - layout()->setAlignment(buttonBox, Qt::AlignBottom); - view->show(); installEventFilter(CreateShortcutFilter()); @@ -131,13 +101,13 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) this); auto addDrawCallback = [this]() { - obs_display_add_draw_callback(preview->GetDisplay(), + obs_display_add_draw_callback(ui->preview->GetDisplay(), OBSBasicProperties::DrawPreview, this); }; auto addTransitionDrawCallback = [this]() { obs_display_add_draw_callback( - preview->GetDisplay(), + ui->preview->GetDisplay(), OBSBasicProperties::DrawTransitionPreview, this); }; uint32_t caps = obs_source_get_output_flags(source); @@ -146,8 +116,8 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) bool drawable_preview = (caps & OBS_SOURCE_VIDEO) != 0; if (drawable_preview && drawable_type) { - preview->show(); - connect(preview.data(), &OBSQTDisplay::DisplayCreated, + ui->preview->show(); + connect(ui->preview, &OBSQTDisplay::DisplayCreated, addDrawCallback); } else if (type == OBS_SOURCE_TYPE_TRANSITION) { @@ -190,12 +160,12 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) connect(view, &OBSPropertiesView::Changed, updateCallback); - preview->show(); - connect(preview.data(), &OBSQTDisplay::DisplayCreated, + ui->preview->show(); + connect(ui->preview, &OBSQTDisplay::DisplayCreated, addTransitionDrawCallback); } else { - preview->hide(); + ui->preview->hide(); } } @@ -333,7 +303,7 @@ void OBSBasicProperties::UpdateProperties(void *data, calldata_t *) void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button) { - QDialogButtonBox::ButtonRole val = buttonBox->buttonRole(button); + QDialogButtonBox::ButtonRole val = ui->buttonBox->buttonRole(button); if (val == QDialogButtonBox::AcceptRole) { @@ -472,10 +442,10 @@ void OBSBasicProperties::Cleanup() config_set_int(App()->GlobalConfig(), "PropertiesWindow", "cy", height()); - obs_display_remove_draw_callback(preview->GetDisplay(), + obs_display_remove_draw_callback(ui->preview->GetDisplay(), OBSBasicProperties::DrawPreview, this); obs_display_remove_draw_callback( - preview->GetDisplay(), + ui->preview->GetDisplay(), OBSBasicProperties::DrawTransitionPreview, this); } diff --git a/UI/window-basic-properties.hpp b/UI/window-basic-properties.hpp index 2a4f6a4e2..9b2144432 100644 --- a/UI/window-basic-properties.hpp +++ b/UI/window-basic-properties.hpp @@ -27,13 +27,15 @@ class OBSPropertiesView; class OBSBasic; +#include "ui_OBSBasicProperties.h" + class OBSBasicProperties : public QDialog { Q_OBJECT private: - QPointer preview; - OBSBasic *main; + + std::unique_ptr ui; bool acceptClicked; OBSSource source;