mirror of https://github.com/Xaymar/obs-StreamFX
wip setup ui
This commit is contained in:
parent
5dfb8bcab1
commit
c6aec2b5fd
|
@ -1499,6 +1499,8 @@ if(T_CHECK)
|
|||
"source/ui/ui-about-entry.cpp"
|
||||
"source/ui/ui-obs-browser-widget.hpp"
|
||||
"source/ui/ui-obs-browser-widget.cpp"
|
||||
"source/ui/ui-setup.hpp"
|
||||
"source/ui/ui-setup.cpp"
|
||||
)
|
||||
list(APPEND PROJECT_INCLUDE_DIRS
|
||||
"source/ui"
|
||||
|
|
|
@ -39,6 +39,17 @@ UI.Menu.Twitter="Follow StreamFX on Twitter"
|
|||
UI.Menu.YouTube="Subscribe to StreamFX on YouTube"
|
||||
UI.Menu.About="About StreamFX"
|
||||
|
||||
# Front-end - Setup
|
||||
UI.Setup.Title="Welcome to StreamFX"
|
||||
UI.Setup.Header.Website="Website"
|
||||
UI.Setup.Header.Patreon="Patreon"
|
||||
UI.Setup.Header.Discord="Discord"
|
||||
UI.Setup.Banner="StreamFX is made possible through support by"
|
||||
UI.Setup.Control.Cancel="Cancel"
|
||||
UI.Setup.Control.Previous="Previous"
|
||||
UI.Setup.Control.Next="Next"
|
||||
UI.Setup.Control.Finish="Finish"
|
||||
|
||||
# Front-end - About StreamFX
|
||||
UI.About.Title="About StreamFX"
|
||||
UI.About.Text="<html><head/><body><p>StreamFX is made possible by all the supporters on <a href='https://patreon.com/Xaymar'><span style='text-decoration: underline;'>Patreon</span></a>, on <a href='https://github.com/sponsors/xaymar'><span style='text-decoration: underline;'>Github Sponsors</span></a>, and anyone donating through <a href='https://paypal.me/Xaymar'><span style='text-decoration: underline;'>PayPal</span></a>. Additional thanks go out to all the translators helping out with the localization on <a href='https://crowdin.com/project/obs-stream-effects'><span style='text-decoration: underline;'>Crowdin</span></a>. You all are amazing!</p></body></html>"
|
||||
|
|
|
@ -0,0 +1,309 @@
|
|||
|
||||
#include "ui-setup.hpp"
|
||||
#include "version.hpp"
|
||||
|
||||
#include "warning-disable.hpp"
|
||||
#include <QCoreApplication>
|
||||
#include <QHBoxLayout>
|
||||
#include <QPixmap>
|
||||
#include <QSizePolicy>
|
||||
#include <QVBoxLayout>
|
||||
#include "warning-enable.hpp"
|
||||
|
||||
streamfx::ui::setup::setup(QWidget* parent) : QDialog(parent)
|
||||
{
|
||||
// Don't delete this window when it is closed.
|
||||
|
||||
// Set up basics, like not deleting self on close.
|
||||
setObjectName(QString::fromUtf8("setup"));
|
||||
setAttribute(Qt::WA_DeleteOnClose, false);
|
||||
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
||||
setModal(false);
|
||||
|
||||
// Set up overall layout.
|
||||
auto layout = new QVBoxLayout(this);
|
||||
layout->setContentsMargins(5, 5, 5, 5);
|
||||
layout->setSpacing(10);
|
||||
//setLayout(layout);
|
||||
|
||||
// Create a font for multi-language support.
|
||||
QStringList families;
|
||||
families.append(QString::fromUtf8("Roboto"));
|
||||
families.append(QString::fromUtf8("MS Shell Dlg 2"));
|
||||
families.append(QString::fromUtf8("MS Gothic"));
|
||||
families.append(QString::fromUtf8("Malgun Gothic"));
|
||||
|
||||
{ // Set up header.
|
||||
auto header_layout = new QVBoxLayout();
|
||||
header_layout->setContentsMargins(0, 0, 0, 0);
|
||||
header_layout->setSpacing(10);
|
||||
|
||||
{
|
||||
_header_logo = new QLabel(this);
|
||||
_header_logo->setObjectName(QString::fromUtf8("logo"));
|
||||
QSizePolicy size_policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
size_policy.setHorizontalStretch(0);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_header_logo->sizePolicy().hasHeightForWidth());
|
||||
_header_logo->setSizePolicy(size_policy);
|
||||
{
|
||||
QPixmap logo{QString::fromUtf8(":/logos/streamfx_logo")};
|
||||
_header_logo->setPixmap(logo);
|
||||
_header_logo->setMinimumSize(logo.size());
|
||||
_header_logo->setMaximumSize(logo.size());
|
||||
}
|
||||
_header_logo->setScaledContents(false);
|
||||
header_layout->addWidget(_header_logo, 0, Qt::AlignCenter);
|
||||
}
|
||||
|
||||
{
|
||||
auto links_layout = new QHBoxLayout();
|
||||
links_layout->setContentsMargins(0, 0, 0, 0);
|
||||
links_layout->setSpacing(10);
|
||||
header_layout->addLayout(links_layout);
|
||||
|
||||
QFont font;
|
||||
font.setFamilies(families);
|
||||
font.setPointSize(12);
|
||||
|
||||
QSizePolicy size_policy(QSizePolicy::Expanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(0);
|
||||
size_policy.setVerticalStretch(0);
|
||||
|
||||
{
|
||||
_header_website = new QLabel(this);
|
||||
_header_website->setObjectName(QString::fromUtf8("website"));
|
||||
size_policy.setHeightForWidth(_header_website->sizePolicy().hasHeightForWidth());
|
||||
_header_website->setSizePolicy(size_policy);
|
||||
_header_website->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
_header_website->setWordWrap(false);
|
||||
_header_website->setOpenExternalLinks(true);
|
||||
_header_website->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard | Qt::LinksAccessibleByMouse);
|
||||
_header_website->setFont(font);
|
||||
links_layout->addWidget(_header_website);
|
||||
}
|
||||
|
||||
{
|
||||
_header_patreon = new QLabel(this);
|
||||
_header_patreon->setObjectName(QString::fromUtf8("patreon"));
|
||||
size_policy.setHeightForWidth(_header_patreon->sizePolicy().hasHeightForWidth());
|
||||
_header_patreon->setSizePolicy(size_policy);
|
||||
_header_patreon->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
_header_patreon->setWordWrap(false);
|
||||
_header_patreon->setOpenExternalLinks(true);
|
||||
_header_patreon->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard | Qt::LinksAccessibleByMouse);
|
||||
_header_patreon->setFont(font);
|
||||
links_layout->addWidget(_header_patreon);
|
||||
}
|
||||
|
||||
{
|
||||
_header_discord = new QLabel(this);
|
||||
_header_discord->setObjectName(QString::fromUtf8("discord"));
|
||||
size_policy.setHeightForWidth(_header_discord->sizePolicy().hasHeightForWidth());
|
||||
_header_discord->setSizePolicy(size_policy);
|
||||
_header_discord->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
_header_discord->setWordWrap(false);
|
||||
_header_discord->setOpenExternalLinks(true);
|
||||
_header_discord->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard | Qt::LinksAccessibleByMouse);
|
||||
_header_discord->setFont(font);
|
||||
links_layout->addWidget(_header_discord);
|
||||
}
|
||||
}
|
||||
|
||||
layout->addLayout(header_layout);
|
||||
}
|
||||
|
||||
layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||
|
||||
{ // Set up footer.
|
||||
auto footer_layout = new QVBoxLayout();
|
||||
footer_layout->setContentsMargins(0, 0, 0, 0);
|
||||
footer_layout->setSpacing(10);
|
||||
|
||||
{ // Banner
|
||||
auto container_layout = new QHBoxLayout();
|
||||
container_layout->setContentsMargins(0, 0, 0, 0);
|
||||
container_layout->setSpacing(0);
|
||||
|
||||
auto banner_layout = new QVBoxLayout();
|
||||
banner_layout->setContentsMargins(0, 0, 0, 0);
|
||||
banner_layout->setSpacing(10);
|
||||
|
||||
{ // Title
|
||||
QFont font;
|
||||
font.setFamilies(families);
|
||||
font.setPointSize(9);
|
||||
|
||||
_banner_title = new QLabel(this);
|
||||
_banner_title->setObjectName(QString::fromUtf8("banner_title"));
|
||||
_banner_title->setFont(font);
|
||||
banner_layout->addWidget(_banner_title, 0, Qt::AlignLeft | Qt::AlignVCenter);
|
||||
}
|
||||
|
||||
{ // Content
|
||||
if (streamfx::ui::obs_browser_widget::is_available()) {
|
||||
_banner_content =
|
||||
new streamfx::ui::obs_browser_widget(QUrl(QString::fromUtf8("https://www.xaymar.com/")), this);
|
||||
} else {
|
||||
_banner_content = new QLabel(this);
|
||||
}
|
||||
_banner_content->setObjectName(QString::fromUtf8("banner_content"));
|
||||
_banner_content->setFixedSize(728, 90);
|
||||
_banner_content->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
banner_layout->addWidget(_banner_content, 0, Qt::AlignCenter);
|
||||
}
|
||||
|
||||
container_layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
|
||||
container_layout->addLayout(banner_layout);
|
||||
container_layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
|
||||
|
||||
footer_layout->addLayout(container_layout);
|
||||
}
|
||||
|
||||
{ // Controls
|
||||
auto control_layout = new QHBoxLayout();
|
||||
|
||||
QFont font;
|
||||
font.setFamilies(families);
|
||||
font.setPointSize(12);
|
||||
|
||||
{ // Cancel
|
||||
_control_cancel = new QPushButton(this);
|
||||
QSizePolicy size_policy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(1);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_control_cancel->sizePolicy().hasHeightForWidth());
|
||||
_control_cancel->setSizePolicy(size_policy);
|
||||
_control_cancel->setFont(font);
|
||||
control_layout->addWidget(_control_cancel, 2, Qt::AlignLeft);
|
||||
}
|
||||
|
||||
{ // Previous
|
||||
_control_prev = new QPushButton(this);
|
||||
QSizePolicy size_policy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(1);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_control_prev->sizePolicy().hasHeightForWidth());
|
||||
_control_prev->setSizePolicy(size_policy);
|
||||
_control_prev->setFont(font);
|
||||
control_layout->addWidget(_control_prev, 2, Qt::AlignLeft);
|
||||
}
|
||||
|
||||
control_layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
|
||||
|
||||
{ // Next
|
||||
_control_next = new QPushButton(this);
|
||||
QSizePolicy size_policy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(1);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_control_next->sizePolicy().hasHeightForWidth());
|
||||
_control_next->setSizePolicy(size_policy);
|
||||
_control_next->setFont(font);
|
||||
control_layout->addWidget(_control_next, 3, Qt::AlignRight);
|
||||
}
|
||||
|
||||
{ // Finish
|
||||
_control_finish = new QPushButton(this);
|
||||
QSizePolicy size_policy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(1);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_control_finish->sizePolicy().hasHeightForWidth());
|
||||
_control_finish->setSizePolicy(size_policy);
|
||||
_control_finish->setFont(font);
|
||||
control_layout->addWidget(_control_finish, 3, Qt::AlignRight);
|
||||
}
|
||||
|
||||
footer_layout->addLayout(control_layout);
|
||||
}
|
||||
|
||||
{ // Info Line
|
||||
auto info_layout = new QHBoxLayout();
|
||||
|
||||
QFont font;
|
||||
font.setFamilies(families);
|
||||
font.setPointSize(9);
|
||||
|
||||
{ // Version
|
||||
_info_version = new QLabel(this);
|
||||
_info_version->setObjectName(QString::fromUtf8("version"));
|
||||
QSizePolicy size_policy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
size_policy.setHorizontalStretch(0);
|
||||
size_policy.setVerticalStretch(0);
|
||||
size_policy.setHeightForWidth(_info_version->sizePolicy().hasHeightForWidth());
|
||||
_info_version->setSizePolicy(size_policy);
|
||||
_info_version->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
_info_version->setWordWrap(false);
|
||||
_info_version->setOpenExternalLinks(true);
|
||||
_info_version->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard | Qt::LinksAccessibleByMouse);
|
||||
_info_version->setFont(font);
|
||||
info_layout->addWidget(_info_version);
|
||||
}
|
||||
|
||||
footer_layout->addLayout(info_layout);
|
||||
}
|
||||
|
||||
layout->addLayout(footer_layout);
|
||||
}
|
||||
|
||||
// Translate initial text.
|
||||
retranslate();
|
||||
|
||||
// Connect any named objects directly.
|
||||
QMetaObject::connectSlotsByName(this);
|
||||
|
||||
// Ensure we fit the content.
|
||||
resize(400, 300);
|
||||
adjustSize();
|
||||
}
|
||||
|
||||
streamfx::ui::setup::~setup() {}
|
||||
|
||||
void streamfx::ui::setup::retranslate()
|
||||
{
|
||||
setWindowTitle(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Title", ""));
|
||||
|
||||
{ // Header
|
||||
|
||||
{ // Website
|
||||
char buffer[2048];
|
||||
auto text = QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Header.Website", "");
|
||||
snprintf(buffer, sizeof(buffer), "<a href='%s'>%s</a>", "https://streamfx.xaymar.com/",
|
||||
text.toStdString().c_str());
|
||||
_header_website->setText(QString::fromUtf8(buffer));
|
||||
};
|
||||
|
||||
{ // Patreon
|
||||
char buffer[2048];
|
||||
auto text = QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Header.Patreon", "");
|
||||
snprintf(buffer, sizeof(buffer), "<a href='%s'>%s</a>", "https://s.xaymar.com/streamfx/patreon",
|
||||
text.toStdString().c_str());
|
||||
_header_patreon->setText(QString::fromUtf8(buffer));
|
||||
};
|
||||
|
||||
{ // Discord
|
||||
char buffer[2048];
|
||||
auto text = QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Header.Discord", "");
|
||||
snprintf(buffer, sizeof(buffer), "<a href='%s'>%s</a>", "https://s.xaymar.com/streamfx/discord",
|
||||
text.toStdString().c_str());
|
||||
_header_discord->setText(QString::fromUtf8(buffer));
|
||||
}
|
||||
}
|
||||
|
||||
{ // Footer
|
||||
|
||||
{ // Banner
|
||||
_banner_title->setText(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Banner"));
|
||||
}
|
||||
|
||||
{ // Controls
|
||||
_control_cancel->setText(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Control.Cancel"));
|
||||
_control_prev->setText(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Control.Previous"));
|
||||
_control_next->setText(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Control.Next"));
|
||||
_control_finish->setText(QCoreApplication::translate("Setup", "StreamFX::UI.Setup.Control.Finish"));
|
||||
}
|
||||
|
||||
_info_version->setText(STREAMFX_VERSION_STRING);
|
||||
}
|
||||
|
||||
layout()->invalidate();
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
#pragma once
|
||||
#include "ui-obs-browser-widget.hpp"
|
||||
|
||||
#include "warning-disable.hpp"
|
||||
#include <QDialog>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QWidget>
|
||||
|
||||
#include "warning-enable.hpp"
|
||||
|
||||
namespace streamfx::ui {
|
||||
class setup : public QDialog {
|
||||
Q_OBJECT;
|
||||
|
||||
QLabel* _header_logo;
|
||||
QLabel* _header_website;
|
||||
QLabel* _header_patreon;
|
||||
QLabel* _header_discord;
|
||||
|
||||
QLabel* _banner_title;
|
||||
QWidget* _banner_content;
|
||||
|
||||
QPushButton* _control_cancel;
|
||||
QPushButton* _control_prev;
|
||||
QPushButton* _control_next;
|
||||
QPushButton* _control_finish;
|
||||
|
||||
QLabel* _info_version;
|
||||
|
||||
public:
|
||||
setup(QWidget* parent = nullptr);
|
||||
virtual ~setup();
|
||||
|
||||
void retranslate();
|
||||
|
||||
Q_SIGNALS:
|
||||
|
||||
protected Q_SLOTS:
|
||||
};
|
||||
} // namespace streamfx::ui
|
|
@ -10,6 +10,7 @@
|
|||
#include "obs/obs-tools.hpp"
|
||||
#include "plugin.hpp"
|
||||
#include "ui/ui-obs-browser-widget.hpp"
|
||||
#include "ui/ui-setup.hpp"
|
||||
|
||||
#include "warning-disable.hpp"
|
||||
#include <string_view>
|
||||
|
@ -121,6 +122,9 @@ void streamfx::ui::handler::on_obs_loaded()
|
|||
// Create the 'About StreamFX' dialog.
|
||||
_about_dialog = new streamfx::ui::about();
|
||||
|
||||
auto ptr = new streamfx::ui::setup(reinterpret_cast<QWidget*>(obs_frontend_get_main_window()));
|
||||
ptr->show();
|
||||
|
||||
{ // Create and build the StreamFX menu
|
||||
_menu = new QMenu(reinterpret_cast<QWidget*>(obs_frontend_get_main_window()));
|
||||
|
||||
|
|
|
@ -0,0 +1,209 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>699</width>
|
||||
<height>848</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>StreamFX::UI.Setup.Title</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="logo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="streamfx.qrc">:/logos/streamfx_logo</pixmap>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="websiteLabel">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Website</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="patreonLabel">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Patreon</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="versionLabel">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Version</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="setupPager">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<widget class="QWidget" name="aboutPage">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="updaterPage">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="OBSBrowserWidget" name="widget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>600</width>
|
||||
<height>160</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="prevButton">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Previous</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="abortButton">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Cancel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="nextButton">
|
||||
<property name="text">
|
||||
<string>StreamFX::UI.Setup.Next</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>OBSBrowserWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>obsbrowserwidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>nextButton</tabstop>
|
||||
<tabstop>prevButton</tabstop>
|
||||
<tabstop>abortButton</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="streamfx.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue