Files
BloomPatched/src/Insight/UserInterfaces/InsightWindow/InsightWindow.hpp

103 lines
3.2 KiB
C++
Raw Normal View History

2021-04-04 21:04:12 +01:00
#pragma once
#include <QtCore>
#include <QMainWindow>
#include <QtUiTools/QtUiTools>
#include <memory>
#include <optional>
#include "src/ApplicationConfig.hpp"
#include "src/Insight/InsightWorker/InsightWorker.hpp"
2021-04-04 21:04:12 +01:00
#include "src/Targets/TargetState.hpp"
2021-04-04 21:04:12 +01:00
#include "src/Targets/TargetDescriptor.hpp"
#include "src/Targets/TargetVariant.hpp"
#include "Widgets/TargetWidgets/TargetPackageWidget.hpp"
2021-09-04 18:11:52 +01:00
#include "Widgets/TargetRegistersPane/TargetRegistersPaneWidget.hpp"
#include "AboutWindow.hpp"
2021-04-04 21:04:12 +01:00
namespace Bloom
{
class InsightWindow: public QObject
{
Q_OBJECT
private:
2021-05-30 16:53:24 +01:00
InsightConfig insightConfig;
EnvironmentConfig environmentConfig;
TargetConfig targetConfig;
InsightWorker& insightWorker;
2021-05-30 16:53:24 +01:00
bool activated = false;
Targets::TargetDescriptor targetDescriptor;
Targets::TargetState targetState = Targets::TargetState::UNKNOWN;
2021-04-04 21:04:12 +01:00
QWidget* mainWindowWidget = nullptr;
AboutWindow* aboutWindowWidget = nullptr;
QMenuBar* mainMenuBar = nullptr;
QMenu* variantMenu = nullptr;
QWidget* header = nullptr;
QToolButton* refreshIoInspectionButton = nullptr;
2021-09-04 18:11:52 +01:00
QWidget* leftPanel = nullptr;
int leftPanelMinWidth = 300;
QWidget* leftPanelLayoutContainer = nullptr;
Widgets::TargetRegistersPaneWidget* targetRegistersSidePane = nullptr;
QToolButton* targetRegistersButton = nullptr;
2021-04-04 21:04:12 +01:00
QWidget* ioContainerWidget = nullptr;
2021-05-30 16:53:24 +01:00
QLabel* ioUnavailableWidget = nullptr;
Widgets::InsightTargetWidgets::TargetPackageWidget* targetPackageWidget = nullptr;
2021-04-04 21:04:12 +01:00
QWidget* footer = nullptr;
QLabel* targetStatusLabel = nullptr;
QLabel* programCounterValueLabel = nullptr;
2021-05-30 16:53:24 +01:00
std::map<QString, Targets::TargetVariant> supportedVariantsByName;
const Targets::TargetVariant* selectedVariant = nullptr;
2021-04-04 21:04:12 +01:00
bool uiDisabled = false;
2021-06-21 00:14:31 +01:00
static bool isVariantSupported(const Targets::TargetVariant& variant);
2021-04-04 21:04:12 +01:00
void selectVariant(const Targets::TargetVariant* variant);
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
void toggleUi(bool disable);
void activate();
void deactivate();
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
public:
InsightWindow(QApplication& application, InsightWorker& insightWorker);
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
void setEnvironmentConfig(const EnvironmentConfig& environmentConfig) {
this->environmentConfig = environmentConfig;
this->targetConfig = environmentConfig.targetConfig;
2021-04-04 21:04:12 +01:00
}
2021-05-30 16:53:24 +01:00
void setInsightConfig(const InsightConfig& insightConfig) {
this->insightConfig = insightConfig;
}
2021-04-04 21:04:12 +01:00
void init(Targets::TargetDescriptor targetDescriptor);
2021-04-04 21:04:12 +01:00
void show();
public slots:
2021-09-04 18:11:52 +01:00
void onLeftPanelHandleSlide(int horizontalPosition);
2021-05-30 16:53:24 +01:00
void onTargetControllerSuspended();
void onTargetControllerResumed(const Bloom::Targets::TargetDescriptor& targetDescriptor);
void onTargetStateUpdate(Targets::TargetState newState);
2021-04-04 21:04:12 +01:00
void onTargetProgramCounterUpdate(quint32 programCounter);
void close();
void openReportIssuesUrl();
2021-09-04 18:12:32 +01:00
void openGettingStartedUrl();
2021-04-04 21:04:12 +01:00
void openAboutWindow();
2021-09-04 18:11:52 +01:00
void toggleTargetRegistersPane();
2021-04-04 21:04:12 +01:00
signals:
void refreshTargetPinStates(int variantId);
};
}