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) {
this->setObjectName("current-item");
this->setFixedHeight(30);
this->titleLabel->setText("Current value");
this->titleLabel->setText("Current Value");
this->layout->addWidget(titleLabel, 0, Qt::AlignmentFlag::AlignLeft);
this->layout->setContentsMargins(5, 0, 5, 0);
}

View File

@@ -2,17 +2,30 @@
background-color: #373835;
}
#register-name {
font-size: 15px;
#register-details-container QPlainTextEdit {
min-height: 100px;
max-height: 100px;
}
#register-value-container,
#register-details-container {
border: 1px solid #2F2F2D;
#read-only-indicator-label,
#register-details-label {
color: #8a8a8d;
}
#register-value-text-input-container {
border-top: 1px solid #41423f;
#register-details-name-label {
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 {
@@ -35,9 +48,15 @@
font-size: 12px;
}
/* Actions */
#actions {
border-top: 1px solid #2F2F2D;
min-height: 50px;
}
/* RegisterHistoryWidget */
#target-register-history-widget #container {
border: 1px solid #2F2F2D;
border-right: 1px solid #2F2F2D;
}
#target-register-history-widget #title-bar {

View File

@@ -3,6 +3,7 @@
#include <QVBoxLayout>
#include <QMargins>
#include <QDesktopServices>
#include <QPlainTextEdit>
#include "src/Insight/UserInterfaces/InsightWindow/UiLoader.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->setMinimumSize(this->size());
this->container->setContentsMargins(containerMargins);
this->container->setContentsMargins(QMargins(0, 0, 0, 0));
this->registerNameLabel = this->container->findChild<QLabel*>("register-name");
this->registerDescriptionLabel = this->container->findChild<QLabel*>("register-description");
this->contentContainer = this->container->findChild<QWidget*>("content-container");
this->registerValueContainer = this->container->findChild<QWidget*>("register-value-container");
this->registerValueTextInput = this->container->findChild<QLineEdit*>("register-value-text-input");
this->registerValueBitsetWidgetContainer = this->container->findChild<QWidget*>(
this->contentContainer = this->container->findChild<QScrollArea*>("content-container");
auto* contentContainerViewport = this->contentContainer->widget();
this->contentContainer->setContentsMargins(0, 0, 0, 0);
contentContainerViewport->setContentsMargins(0, 0, 0, 0);
contentContainerViewport->layout()->setContentsMargins(0, 0, 10, 0);
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"
);
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->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->registerDescriptor,
this->registerValue,
@@ -100,27 +95,30 @@ namespace Bloom::Widgets
);
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* registerValueContainer = this->container->findChild<QWidget*>("register-value-container");
registerValueContainer->setContentsMargins(15, 15, 15, 15);
registerDetailsContainer->setContentsMargins(15, 15, 15, 15);
auto* registerDetailsContainer = this->contentContainer->findChild<QWidget*>("register-details-container");
auto* registerDetailsNameInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-name-input"
);
auto* registerDetailsSizeInput = registerDetailsContainer->findChild<QLineEdit*>(
"register-details-size-input"
);
auto* registerDetailsStartAddressInput = registerDetailsContainer->findChild<QLineEdit*>(
"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);
registerDetailsSizeInput->setText(QString::number(this->registerDescriptor.size));
registerDetailsStartAddressInput->setText(
"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) {
this->registerValueTextInput->setDisabled(true);
@@ -224,6 +222,7 @@ namespace Bloom::Widgets
this->height()
);
}
bool TargetRegisterInspectorWindow::registerSupported(const Targets::TargetRegisterDescriptor& descriptor) {
return (descriptor.size > 0 && descriptor.size <= 8);
}

View File

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

View File

@@ -1,254 +1,442 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<widget class="QWidget" name="container">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"/>
</property>
<layout class="QVBoxLayout">
<item alignment="Qt::AlignHCenter">
<widget class="SvgWidget" name="icon">
<property name="svgFilePath">
<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>
<property name="spacing">
<number>0</number>
</property>
<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">
<property name="spacing">
<number>20</number>
<number>0</number>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QWidget" name="content-container">
<layout class="QVBoxLayout" name="content-layout">
<property name="spacing">
<number>20</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>
<item alignment="Qt::AlignTop">
<widget class="QWidget" name="register-details-container">
<layout class="QVBoxLayout">
<property name="spacing">
<number>10</number>
<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>
<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>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="TextInput" name="register-details-name-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-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">
<widget class="QWidget" name="register-value-container">
<layout class="QVBoxLayout">
<property name="spacing">
<number>20</number>
<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>
</widget>
</item>
<item>
<widget class="TextInput" name="register-details-name-input">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"/>
</property>
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</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>
<spacer name="vertical-spacer">
<property name="sizeHint">
<size>
<height>20</height>
</size>
</property>
<item alignment="Qt::AlignLeft">
<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 - it cannot be manipulated via
Insight.</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="TextInput" name="register-value-text-input"/>
</item>
<item alignment="Qt::AlignLeft">
<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="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item>
<widget class="LabeledSeparator" name="register-value-separator">
<property name="title">
<string>Register Value</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 alignment="Qt::AlignTop">
<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">
<number>15</number>
</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>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<layout class="QHBoxLayout">
<property name="spacing">
<number>15</number>
</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>
</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>
</item>
</layout>
</widget>
</item>
<item alignment="Qt::AlignTop">
<spacer name="vertical-spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<spacer name="horizontal-spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="sizeHint">
<size>
<width>5</width>
</size>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
</spacer>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="close-btn">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</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>
</widget>
</ui>