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,30 +1,258 @@
<?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">
<string>:/compiled/src/Insight/UserInterfaces/InsightWindow/Widgets/TargetRegisterInspector/Images/icon.svg</string>
</property> </property>
<property name="containerHeight"> <item>
<number>46</number> <layout class="QHBoxLayout" name="content-layout">
<property name="spacing">
<number>0</number>
</property> </property>
<property name="containerWidth"> <item alignment="Qt::AlignLeft">
<number>57</number> <spacer name="horizontal-spacer">
<property name="sizeHint">
<size>
<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>
<layout class="QVBoxLayout" name="content-layout">
<property name="spacing">
<number>0</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QWidget" name="register-details-container">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>0</number>
</property>
<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 alignment="Qt::AlignLeft">
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="register-details-name-label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
</property>
<property name="text">
<string>Name:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignHCenter"> <item>
<widget class="QLabel" name="register-name"/> <widget class="TextInput" name="register-details-name-input">
</item> <property name="sizePolicy">
<item alignment="Qt::AlignHCenter"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
<widget class="QLabel" name="register-description"> </property>
<property name="visible"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontal-spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
</layout>
</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>
<widget class="LabeledSeparator" name="register-details-separator">
<property name="title">
<string>Register Details</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>
<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> <item>
<spacer name="vertical-spacer"> <spacer name="vertical-spacer">
<property name="sizeHint"> <property name="sizeHint">
@@ -37,109 +265,35 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item alignment="Qt::AlignLeft"> <item>
<layout class="QHBoxLayout" name="content-layout"> <widget class="LabeledSeparator" name="register-value-separator">
<property name="spacing"> <property name="title">
<number>20</number> <string>Register Value</string>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QWidget" name="content-container">
<layout class="QVBoxLayout" name="content-layout">
<property name="spacing">
<number>20</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QWidget" name="register-details-container">
<layout class="QVBoxLayout">
<property name="spacing">
<number>10</number>
</property>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QLabel" name="register-details-name-label">
<property name="text">
<string>Name:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignLeft"> <item>
<widget class="TextInput" name="register-details-name-input"> <spacer name="vertical-spacer">
<property name="enabled"> <property name="sizeHint">
<bool>false</bool> <size>
<height>15</height>
</size>
</property> </property>
<property name="minimumWidth"> <property name="sizeType">
<number>350</number> <enum>QSizePolicy::Fixed</enum>
</property> </property>
</widget> </spacer>
</item> </item>
</layout>
</item>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QLabel" name="register-details-size-label">
<property name="text">
<string>Size (bytes):</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="TextInput" name="register-details-size-input">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumWidth">
<number>350</number>
</property>
</widget>
</item>
</layout>
</item>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout" name="register-details-row">
<property name="spacing">
<number>20</number>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QLabel" name="register-details-start-address-label">
<property name="text">
<string>Start Address:</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="TextInput" name="register-details-start-address-input">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumWidth">
<number>350</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item alignment="Qt::AlignTop"> <item alignment="Qt::AlignTop">
<widget class="QWidget" name="register-value-container"> <widget class="QWidget" name="register-value-container">
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<property name="spacing"> <property name="spacing">
<number>20</number> <number>20</number>
</property> </property>
<item alignment="Qt::AlignLeft"> <property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="read-only-indicator-label"> <widget class="QLabel" name="read-only-indicator-label">
<property name="visible"> <property name="visible">
<bool>false</bool> <bool>false</bool>
@@ -151,15 +305,14 @@
<enum>Qt::AlignLeft</enum> <enum>Qt::AlignLeft</enum>
</property> </property>
<property name="text"> <property name="text">
<string>This register is configured as read-only - it cannot be manipulated via <string>This register is configured as read-only - its value cannot be manipulated via Insight.</string>
Insight.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignLeft"> <item>
<widget class="TextInput" name="register-value-text-input"/> <widget class="TextInput" name="register-value-text-input"/>
</item> </item>
<item alignment="Qt::AlignLeft"> <item>
<widget class="QWidget" name="register-value-bitset-widget-container"> <widget class="QWidget" name="register-value-bitset-widget-container">
<property name="minimumHeight"> <property name="minimumHeight">
<number>60</number> <number>60</number>
@@ -202,7 +355,7 @@ Insight.</string>
</layout> </layout>
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignHCenter"> <item alignment="Qt::AlignTop">
<spacer name="vertical-spacer"> <spacer name="vertical-spacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -211,21 +364,43 @@ Insight.</string>
</item> </item>
</layout> </layout>
</widget> </widget>
</widget>
</item> </item>
</layout> <item alignment="Qt::AlignLeft">
</item> <spacer name="horizontal-spacer">
<item alignment="Qt::AlignHCenter"> <property name="sizeHint">
<spacer name="vertical-spacer"> <size>
<property name="orientation"> <width>5</width>
<enum>Qt::Vertical</enum> </size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property> </property>
</spacer> </spacer>
</item> </item>
</layout>
</item>
<item> <item>
<widget class="QWidget" name="actions">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</property>
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<property name="spacing"> <property name="spacing">
<number>15</number> <number>15</number>
</property> </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"> <item alignment="Qt::AlignRight">
<widget class="QPushButton" name="help-btn"> <widget class="QPushButton" name="help-btn">
<property name="text"> <property name="text">
@@ -247,7 +422,20 @@ Insight.</string>
</property> </property>
</widget> </widget>
</item> </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> </layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>