Updated register inspection window appearance to be consistent with the Manage Memory Regions window

This commit is contained in:
Nav
2022-02-14 18:00:04 +00:00
parent 97695b91d2
commit d88e545496
5 changed files with 467 additions and 260 deletions

View File

@@ -11,7 +11,7 @@ namespace Bloom::Widgets
): Item(registerValue, parent) { ): Item(registerValue, parent) {
this->setObjectName("current-item"); this->setObjectName("current-item");
this->setFixedHeight(30); this->setFixedHeight(30);
this->titleLabel->setText("Current value"); this->titleLabel->setText("Current Value");
this->layout->addWidget(titleLabel, 0, Qt::AlignmentFlag::AlignLeft); this->layout->addWidget(titleLabel, 0, Qt::AlignmentFlag::AlignLeft);
this->layout->setContentsMargins(5, 0, 5, 0); this->layout->setContentsMargins(5, 0, 5, 0);
} }

View File

@@ -2,17 +2,30 @@
background-color: #373835; background-color: #373835;
} }
#register-name { #register-details-container QPlainTextEdit {
font-size: 15px; min-height: 100px;
max-height: 100px;
} }
#register-value-container, #read-only-indicator-label,
#register-details-container { #register-details-label {
border: 1px solid #2F2F2D; color: #8a8a8d;
} }
#register-value-text-input-container { #register-details-name-label {
border-top: 1px solid #41423f; min-width: 60px;
max-width: 60px;
}
#register-details-start-address-label,
#register-details-size-label,
#register-details-description-label {
min-width: 130px;
max-width: 130px;
}
#register-details-name-input {
max-width: 500px;
} }
#apply-btn { #apply-btn {
@@ -35,9 +48,15 @@
font-size: 12px; font-size: 12px;
} }
/* Actions */
#actions {
border-top: 1px solid #2F2F2D;
min-height: 50px;
}
/* RegisterHistoryWidget */ /* RegisterHistoryWidget */
#target-register-history-widget #container { #target-register-history-widget #container {
border: 1px solid #2F2F2D; border-right: 1px solid #2F2F2D;
} }
#target-register-history-widget #title-bar { #target-register-history-widget #title-bar {

View File

@@ -3,6 +3,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QMargins> #include <QMargins>
#include <QDesktopServices> #include <QDesktopServices>
#include <QPlainTextEdit>
#include "src/Insight/UserInterfaces/InsightWindow/UiLoader.hpp" #include "src/Insight/UserInterfaces/InsightWindow/UiLoader.hpp"
#include "src/Insight/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.hpp" #include "src/Insight/UserInterfaces/InsightWindow/Widgets/ErrorDialogue/ErrorDialogue.hpp"
@@ -68,14 +69,17 @@ namespace Bloom::Widgets
this->container = uiLoader.load(&windowUiFile, this); this->container = uiLoader.load(&windowUiFile, this);
this->container->setMinimumSize(this->size()); this->container->setMinimumSize(this->size());
this->container->setContentsMargins(containerMargins); this->container->setContentsMargins(QMargins(0, 0, 0, 0));
this->registerNameLabel = this->container->findChild<QLabel*>("register-name"); this->contentContainer = this->container->findChild<QScrollArea*>("content-container");
this->registerDescriptionLabel = this->container->findChild<QLabel*>("register-description"); auto* contentContainerViewport = this->contentContainer->widget();
this->contentContainer = this->container->findChild<QWidget*>("content-container"); this->contentContainer->setContentsMargins(0, 0, 0, 0);
this->registerValueContainer = this->container->findChild<QWidget*>("register-value-container"); contentContainerViewport->setContentsMargins(0, 0, 0, 0);
this->registerValueTextInput = this->container->findChild<QLineEdit*>("register-value-text-input"); contentContainerViewport->layout()->setContentsMargins(0, 0, 10, 0);
this->registerValueBitsetWidgetContainer = this->container->findChild<QWidget*>(
this->registerValueContainer = this->contentContainer->findChild<QWidget*>("register-value-container");
this->registerValueTextInput = this->contentContainer->findChild<QLineEdit*>("register-value-text-input");
this->registerValueBitsetWidgetContainer = this->registerValueContainer->findChild<QWidget*>(
"register-value-bitset-widget-container" "register-value-bitset-widget-container"
); );
this->refreshValueButton = this->container->findChild<QPushButton*>("refresh-value-btn"); this->refreshValueButton = this->container->findChild<QPushButton*>("refresh-value-btn");
@@ -83,15 +87,6 @@ namespace Bloom::Widgets
this->helpButton = this->container->findChild<QPushButton*>("help-btn"); this->helpButton = this->container->findChild<QPushButton*>("help-btn");
this->closeButton = this->container->findChild<QPushButton*>("close-btn"); this->closeButton = this->container->findChild<QPushButton*>("close-btn");
this->registerNameLabel->setText(registerName);
if (this->registerDescriptor.description.has_value()) {
this->registerDescriptionLabel->setText(
QString::fromStdString(this->registerDescriptor.description.value())
);
this->registerDescriptionLabel->setVisible(true);
}
this->registerHistoryWidget = new RegisterHistoryWidget( this->registerHistoryWidget = new RegisterHistoryWidget(
this->registerDescriptor, this->registerDescriptor,
this->registerValue, this->registerValue,
@@ -100,27 +95,30 @@ namespace Bloom::Widgets
); );
auto* contentLayout = this->container->findChild<QHBoxLayout*>("content-layout"); auto* contentLayout = this->container->findChild<QHBoxLayout*>("content-layout");
contentLayout->insertWidget(0, this->registerHistoryWidget, 0, Qt::AlignmentFlag::AlignTop); contentLayout->insertWidget(0, this->registerHistoryWidget, 0);
auto* registerDetailsContainer = this->container->findChild<QWidget*>("register-details-container"); auto* registerDetailsContainer = this->contentContainer->findChild<QWidget*>("register-details-container");
auto* registerValueContainer = this->container->findChild<QWidget*>("register-value-container");
registerValueContainer->setContentsMargins(15, 15, 15, 15);
registerDetailsContainer->setContentsMargins(15, 15, 15, 15);
auto* registerDetailsNameInput = registerDetailsContainer->findChild<QLineEdit*>( auto* registerDetailsNameInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-name-input" "register-details-name-input"
); );
auto* registerDetailsSizeInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-size-input"
);
auto* registerDetailsStartAddressInput = registerDetailsContainer->findChild<QLineEdit*>( auto* registerDetailsStartAddressInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-start-address-input" "register-details-start-address-input"
); );
auto* registerDetailsSizeInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-size-input"
);
auto* registerDetailsDescriptionInput = registerDetailsContainer->findChild<QPlainTextEdit*>(
"register-details-description-input"
);
registerDetailsNameInput->setText(registerName); registerDetailsNameInput->setText(registerName);
registerDetailsSizeInput->setText(QString::number(this->registerDescriptor.size));
registerDetailsStartAddressInput->setText( registerDetailsStartAddressInput->setText(
"0x" + QString::number(this->registerDescriptor.startAddress.value(), 16).toUpper() "0x" + QString::number(this->registerDescriptor.startAddress.value(), 16).toUpper()
); );
registerDetailsSizeInput->setText(QString::number(this->registerDescriptor.size));
registerDetailsDescriptionInput->setPlainText(
QString::fromStdString(this->registerDescriptor.description.value_or(""))
);
if (!this->registerDescriptor.writable) { if (!this->registerDescriptor.writable) {
this->registerValueTextInput->setDisabled(true); this->registerValueTextInput->setDisabled(true);
@@ -224,6 +222,7 @@ namespace Bloom::Widgets
this->height() this->height()
); );
} }
bool TargetRegisterInspectorWindow::registerSupported(const Targets::TargetRegisterDescriptor& descriptor) { bool TargetRegisterInspectorWindow::registerSupported(const Targets::TargetRegisterDescriptor& descriptor) {
return (descriptor.size > 0 && descriptor.size <= 8); return (descriptor.size > 0 && descriptor.size <= 8);
} }

View File

@@ -8,6 +8,7 @@
#include <QSize> #include <QSize>
#include <QString> #include <QString>
#include <QEvent> #include <QEvent>
#include <QScrollArea>
#include <optional> #include <optional>
#include "src/Targets/TargetRegister.hpp" #include "src/Targets/TargetRegister.hpp"
@@ -49,7 +50,7 @@ namespace Bloom::Widgets
QLabel* registerNameLabel = nullptr; QLabel* registerNameLabel = nullptr;
QLabel* registerDescriptionLabel = nullptr; QLabel* registerDescriptionLabel = nullptr;
QWidget* contentContainer = nullptr; QScrollArea* contentContainer = nullptr;
RegisterHistoryWidget* registerHistoryWidget = nullptr; RegisterHistoryWidget* registerHistoryWidget = nullptr;
QWidget* registerValueContainer = nullptr; QWidget* registerValueContainer = nullptr;

View File

@@ -1,254 +1,442 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<widget class="QWidget" name="container"> <widget class="QWidget" name="container">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"/>
</property>
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item alignment="Qt::AlignHCenter"> <property name="spacing">
<widget class="SvgWidget" name="icon"> <number>0</number>
<property name="svgFilePath"> </property>
<string>:/compiled/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegisterInspector/Images/icon.svg</string>
</property>
<property name="containerHeight">
<number>46</number>
</property>
<property name="containerWidth">
<number>57</number>
</property>
</widget>
</item>
<item alignment="Qt::AlignHCenter">
<widget class="QLabel" name="register-name"/>
</item>
<item alignment="Qt::AlignHCenter">
<widget class="QLabel" name="register-description">
<property name="visible">
<bool>false</bool>
</property>
</widget>
</item>
<item> <item>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>20</height>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout" name="content-layout"> <layout class="QHBoxLayout" name="content-layout">
<property name="spacing"> <property name="spacing">
<number>20</number> <number>0</number>
</property> </property>
<item alignment="Qt::AlignLeft"> <item alignment="Qt::AlignLeft">
<widget class="QWidget" name="content-container"> <spacer name="horizontal-spacer">
<layout class="QVBoxLayout" name="content-layout"> <property name="sizeHint">
<property name="spacing"> <size>
<number>20</number> <width>10</width>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item>
<widget class="QScrollArea" name="content-container">
<property name="widgetResizable"><bool>true</bool></property>
<property name="verticalScrollBarPolicy"><enum>Qt::ScrollBarAsNeeded</enum></property>
<property name="sizeAdjustPolicy"><enum>QAbstractScrollArea::AdjustToContents</enum></property>
<property name="horizontalScrollBarPolicy"><enum>Qt::ScrollBarAlwaysOff</enum></property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"/>
</property>
<widget class="QWidget" name="viewport">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"/>
</property> </property>
<layout class="QVBoxLayout" name="content-layout">
<item alignment="Qt::AlignTop"> <property name="spacing">
<widget class="QWidget" name="register-details-container"> <number>0</number>
<layout class="QVBoxLayout"> </property>
<property name="spacing"> <item alignment="Qt::AlignTop">
<number>10</number> <widget class="QWidget" name="register-details-container">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</property> </property>
<item alignment="Qt::AlignLeft"> <layout class="QVBoxLayout">
<layout class="QHBoxLayout" name="register-details-row"> <property name="spacing">
<property name="spacing"> <number>0</number>
<number>20</number> </property>
</property> <item>
<item alignment="Qt::AlignLeft"> <spacer name="vertical-spacer">
<widget class="QLabel" name="register-details-name-label"> <property name="sizeHint">
<property name="text"> <size>
<string>Name:</string> <height>10</height>
</property> </size>
</widget> </property>
</item> <property name="sizeType">
<item alignment="Qt::AlignLeft"> <enum>QSizePolicy::Fixed</enum>
<widget class="TextInput" name="register-details-name-input"> </property>
<property name="enabled"> </spacer>
<bool>false</bool> </item>
</property> <item alignment="Qt::AlignLeft">
<property name="minimumWidth"> <layout class="QHBoxLayout" name="register-details-row">
<number>350</number> <property name="spacing">
</property> <number>20</number>
</widget> </property>
</item> <item>
</layout> <widget class="QLabel" name="register-details-name-label">
</item> <property name="sizePolicy">
<item alignment="Qt::AlignLeft"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
<layout class="QHBoxLayout" name="register-details-row"> </property>
<property name="spacing"> <property name="text">
<number>20</number> <string>Name:</string>
</property> </property>
<item alignment="Qt::AlignLeft"> </widget>
<widget class="QLabel" name="register-details-size-label"> </item>
<property name="text"> <item>
<string>Size (bytes):</string> <widget class="TextInput" name="register-details-name-input">
</property> <property name="sizePolicy">
</widget> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</item> </property>
<item alignment="Qt::AlignLeft"> <property name="enabled">
<widget class="TextInput" name="register-details-size-input"> <bool>false</bool>
<property name="enabled"> </property>
<bool>false</bool> </widget>
</property> </item>
<property name="minimumWidth"> <item>
<number>350</number> <spacer name="horizontal-spacer">
</property> <property name="orientation">
</widget> <enum>Qt::Horizontal</enum>
</item> </property>
</layout> </spacer>
</item> </item>
<item alignment="Qt::AlignLeft"> </layout>
<layout class="QHBoxLayout" name="register-details-row"> </item>
<property name="spacing"> <item>
<number>20</number> <spacer name="vertical-spacer">
</property> <property name="sizeHint">
<item alignment="Qt::AlignLeft"> <size>
<widget class="QLabel" name="register-details-start-address-label"> <height>15</height>
<property name="text"> </size>
<string>Start Address:</string> </property>
</property> <property name="sizeType">
</widget> <enum>QSizePolicy::Fixed</enum>
</item> </property>
<item alignment="Qt::AlignLeft"> </spacer>
<widget class="TextInput" name="register-details-start-address-input"> </item>
<property name="enabled"> <item>
<bool>false</bool> <widget class="LabeledSeparator" name="register-details-separator">
</property> <property name="title">
<property name="minimumWidth"> <string>Register Details</string>
<number>350</number> </property>
</property> </widget>
</widget> </item>
</item> <item>
</layout> <spacer name="vertical-spacer">
</item> <property name="sizeHint">
</layout> <size>
</widget> <height>15</height>
</item> </size>
</property>
<item alignment="Qt::AlignTop"> <property name="sizeType">
<widget class="QWidget" name="register-value-container"> <enum>QSizePolicy::Fixed</enum>
<layout class="QVBoxLayout"> </property>
<property name="spacing"> </spacer>
<number>20</number> </item>
<item>
<widget class="QLabel" name="register-details-label">
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="alignment">
<enum>Qt::AlignLeft</enum>
</property>
<property name="text">
<string>Register details reside in Bloom's source code and cannot be manipulated via Insight. To report any inaccuracies, report an issue via Help -> Report An Issue.</string>
</property>
</widget>
</item>
<item>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>15</height>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="register-details-start-address-label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
</property>
<property name="text">
<string>Start address:</string>
</property>
</widget>
</item>
<item>
<widget class="TextInput" name="register-details-start-address-input">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>10</height>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="register-details-size-label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
</property>
<property name="text">
<string>Size (bytes):</string>
</property>
</widget>
</item>
<item>
<widget class="TextInput" name="register-details-size-input">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>10</height>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QLabel" name="register-details-description-label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
</property>
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="register-details-description-input">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>20</height>
</size>
</property> </property>
<item alignment="Qt::AlignLeft"> <property name="sizeType">
<widget class="QLabel" name="read-only-indicator-label"> <enum>QSizePolicy::Fixed</enum>
<property name="visible"> </property>
<bool>false</bool> </spacer>
</property> </item>
<property name="wordWrap"> <item>
<bool>false</bool> <widget class="LabeledSeparator" name="register-value-separator">
</property> <property name="title">
<property name="alignment"> <string>Register Value</string>
<enum>Qt::AlignLeft</enum> </property>
</property> </widget>
<property name="text"> </item>
<string>This register is configured as read-only - it cannot be manipulated via <item>
Insight.</string> <spacer name="vertical-spacer">
</property> <property name="sizeHint">
</widget> <size>
</item> <height>15</height>
<item alignment="Qt::AlignLeft"> </size>
<widget class="TextInput" name="register-value-text-input"/> </property>
</item> <property name="sizeType">
<item alignment="Qt::AlignLeft"> <enum>QSizePolicy::Fixed</enum>
<widget class="QWidget" name="register-value-bitset-widget-container"> </property>
<property name="minimumHeight"> </spacer>
<number>60</number> </item>
</property> <item alignment="Qt::AlignTop">
<layout class="QVBoxLayout" name="register-value-bitset-widget-layout"> <widget class="QWidget" name="register-value-container">
<layout class="QVBoxLayout">
<property name="spacing">
<number>20</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="read-only-indicator-label">
<property name="visible">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="alignment">
<enum>Qt::AlignLeft</enum>
</property>
<property name="text">
<string>This register is configured as read-only - its value cannot be manipulated via Insight.</string>
</property>
</widget>
</item>
<item>
<widget class="TextInput" name="register-value-text-input"/>
</item>
<item>
<widget class="QWidget" name="register-value-bitset-widget-container">
<property name="minimumHeight">
<number>60</number>
</property>
<layout class="QVBoxLayout" name="register-value-bitset-widget-layout">
<property name="spacing">
<number>15</number>
</property>
</layout>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout">
<property name="spacing"> <property name="spacing">
<number>15</number> <number>15</number>
</property> </property>
<item alignment="Qt::AlignCenter">
<widget class="QPushButton" name="refresh-value-btn">
<property name="text">
<string>Refresh Value</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignCenter">
<spacer name="horizontal-spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignCenter">
<widget class="QPushButton" name="apply-btn">
<property name="text">
<string>Write Value</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </item>
</item> </layout>
<item alignment="Qt::AlignLeft"> </widget>
<layout class="QHBoxLayout"> </item>
<property name="spacing"> <item alignment="Qt::AlignTop">
<number>15</number> <spacer name="vertical-spacer">
</property> <property name="orientation">
<item alignment="Qt::AlignCenter"> <enum>Qt::Vertical</enum>
<widget class="QPushButton" name="refresh-value-btn"> </property>
<property name="text"> </spacer>
<string>Refresh Value</string> </item>
</property> </layout>
</widget> </widget>
</item>
<item alignment="Qt::AlignCenter">
<spacer name="horizontal-spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignCenter">
<widget class="QPushButton" name="apply-btn">
<property name="text">
<string>Write Value</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item alignment="Qt::AlignHCenter">
<spacer name="vertical-spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item alignment="Qt::AlignHCenter">
<spacer name="vertical-spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout">
<property name="spacing">
<number>15</number>
</property>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="help-btn">
<property name="text">
<string>Help</string>
</property>
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignLeft"> <item alignment="Qt::AlignLeft">
<spacer name="horizontal-spacer"> <spacer name="horizontal-spacer">
<property name="orientation"> <property name="sizeHint">
<enum>Qt::Horizontal</enum> <size>
<width>5</width>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property> </property>
</spacer> </spacer>
</item> </item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="close-btn">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item>
<widget class="QWidget" name="actions">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</property>
<layout class="QHBoxLayout">
<property name="spacing">
<number>15</number>
</property>
<item>
<spacer name="horizontal-spacer">
<property name="sizeHint">
<size>
<width>10</width>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="help-btn">
<property name="text">
<string>Help</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<spacer name="horizontal-spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="close-btn">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontal-spacer">
<property name="sizeHint">
<size>
<width>10</width>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</ui> </ui>