2021-04-04 21:04:12 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QtCore>
|
|
|
|
|
#include <QMainWindow>
|
2022-01-22 16:14:03 +00:00
|
|
|
#include <QEvent>
|
2021-04-04 21:04:12 +01:00
|
|
|
#include <memory>
|
|
|
|
|
#include <optional>
|
|
|
|
|
|
2022-01-22 16:14:03 +00:00
|
|
|
#include "src/ProjectSettings.hpp"
|
2021-12-31 17:05:31 +00:00
|
|
|
#include "src/ProjectConfig.hpp"
|
2021-09-02 21:19:46 +01:00
|
|
|
#include "src/Insight/InsightWorker/InsightWorker.hpp"
|
2021-04-04 21:04:12 +01:00
|
|
|
#include "src/Targets/TargetState.hpp"
|
2021-09-02 21:19:46 +01:00
|
|
|
|
2021-04-04 21:04:12 +01:00
|
|
|
#include "src/Targets/TargetDescriptor.hpp"
|
|
|
|
|
#include "src/Targets/TargetVariant.hpp"
|
|
|
|
|
|
2021-10-06 00:39:40 +01:00
|
|
|
#include "Widgets/PanelWidget.hpp"
|
|
|
|
|
|
2022-05-03 20:00:52 +01:00
|
|
|
#include "Widgets/Label.hpp"
|
2021-12-08 00:18:59 +00:00
|
|
|
#include "Widgets/SvgToolButton.hpp"
|
2021-09-26 18:18:12 +01:00
|
|
|
#include "Widgets/TargetWidgets/TargetPackageWidgetContainer.hpp"
|
2021-09-02 21:19:46 +01:00
|
|
|
#include "Widgets/TargetWidgets/TargetPackageWidget.hpp"
|
2021-09-04 18:11:52 +01:00
|
|
|
#include "Widgets/TargetRegistersPane/TargetRegistersPaneWidget.hpp"
|
2021-10-17 20:44:40 +01:00
|
|
|
#include "Widgets/TargetMemoryInspectionPane/TargetMemoryInspectionPane.hpp"
|
2021-12-25 01:46:47 +00:00
|
|
|
#include "Widgets/TargetMemoryInspectionPane/TargetMemoryInspectionPaneSettings.hpp"
|
2021-09-02 21:19:46 +01:00
|
|
|
#include "AboutWindow.hpp"
|
|
|
|
|
|
2021-04-04 21:04:12 +01:00
|
|
|
namespace Bloom
|
|
|
|
|
{
|
2021-10-06 00:39:40 +01:00
|
|
|
class InsightWindow: public QMainWindow
|
2021-04-04 21:04:12 +01:00
|
|
|
{
|
2021-10-06 21:12:31 +01:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
2021-12-31 19:45:15 +00:00
|
|
|
InsightWindow(
|
|
|
|
|
InsightWorker& insightWorker,
|
|
|
|
|
const EnvironmentConfig& environmentConfig,
|
2022-01-22 16:14:03 +00:00
|
|
|
const InsightConfig& insightConfig,
|
|
|
|
|
InsightProjectSettings& insightProjectSettings
|
2021-12-31 19:45:15 +00:00
|
|
|
);
|
2021-10-06 21:12:31 +01:00
|
|
|
|
|
|
|
|
void setEnvironmentConfig(const EnvironmentConfig& environmentConfig) {
|
|
|
|
|
this->environmentConfig = environmentConfig;
|
|
|
|
|
this->targetConfig = environmentConfig.targetConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setInsightConfig(const InsightConfig& insightConfig) {
|
|
|
|
|
this->insightConfig = insightConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void init(Targets::TargetDescriptor targetDescriptor);
|
|
|
|
|
|
2022-04-28 21:06:57 +01:00
|
|
|
signals:
|
|
|
|
|
void activatedSignal();
|
|
|
|
|
|
2021-10-06 21:12:31 +01:00
|
|
|
protected:
|
|
|
|
|
void resizeEvent(QResizeEvent* event) override;
|
|
|
|
|
void showEvent(QShowEvent* event) override;
|
2022-01-22 16:14:03 +00:00
|
|
|
void closeEvent(QCloseEvent* event) override;
|
2021-10-06 21:12:31 +01:00
|
|
|
|
2021-04-04 21:04:12 +01:00
|
|
|
private:
|
2022-01-22 16:14:03 +00:00
|
|
|
InsightProjectSettings& insightProjectSettings;
|
|
|
|
|
|
2021-05-30 16:53:24 +01:00
|
|
|
InsightConfig insightConfig;
|
|
|
|
|
EnvironmentConfig environmentConfig;
|
|
|
|
|
TargetConfig targetConfig;
|
|
|
|
|
|
2021-09-02 21:19:46 +01:00
|
|
|
InsightWorker& insightWorker;
|
|
|
|
|
|
2021-05-30 16:53:24 +01:00
|
|
|
bool activated = false;
|
|
|
|
|
|
2021-05-24 20:58:49 +01:00
|
|
|
Targets::TargetDescriptor targetDescriptor;
|
|
|
|
|
Targets::TargetState targetState = Targets::TargetState::UNKNOWN;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-10-06 00:39:40 +01:00
|
|
|
QWidget* windowContainer = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
QMenuBar* mainMenuBar = nullptr;
|
2021-10-06 00:39:40 +01:00
|
|
|
QWidget* layoutContainer = nullptr;
|
|
|
|
|
QWidget* container = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
QMenu* variantMenu = nullptr;
|
2022-05-03 20:00:52 +01:00
|
|
|
Widgets::Label* targetNameLabel = nullptr;
|
|
|
|
|
Widgets::Label* targetIdLabel = nullptr;
|
2021-10-06 00:39:40 +01:00
|
|
|
AboutWindow* aboutWindowWidget = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
|
|
|
|
QWidget* header = nullptr;
|
2021-12-08 00:18:59 +00:00
|
|
|
Widgets::SvgToolButton* refreshIoInspectionButton = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-10-06 00:39:40 +01:00
|
|
|
QWidget* leftMenuBar = nullptr;
|
|
|
|
|
Widgets::PanelWidget* leftPanel = nullptr;
|
2021-09-04 18:11:52 +01:00
|
|
|
Widgets::TargetRegistersPaneWidget* targetRegistersSidePane = nullptr;
|
|
|
|
|
QToolButton* targetRegistersButton = nullptr;
|
2021-10-06 00:39:40 +01:00
|
|
|
|
2022-05-03 20:00:52 +01:00
|
|
|
Widgets::Label* ioUnavailableWidget = nullptr;
|
2021-10-06 23:29:05 +01:00
|
|
|
Widgets::InsightTargetWidgets::TargetPackageWidgetContainer* ioContainerWidget = nullptr;
|
2021-07-07 20:54:45 +01:00
|
|
|
Widgets::InsightTargetWidgets::TargetPackageWidget* targetPackageWidget = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-10-06 00:39:40 +01:00
|
|
|
QWidget* bottomMenuBar = nullptr;
|
|
|
|
|
Widgets::PanelWidget* bottomPanel = nullptr;
|
2021-10-17 20:44:40 +01:00
|
|
|
Widgets::TargetMemoryInspectionPane* ramInspectionPane = nullptr;
|
2021-11-05 23:43:22 +00:00
|
|
|
Widgets::TargetMemoryInspectionPane* eepromInspectionPane = nullptr;
|
2021-12-25 01:46:47 +00:00
|
|
|
std::map<
|
|
|
|
|
Targets::TargetMemoryType,
|
|
|
|
|
Widgets::TargetMemoryInspectionPaneSettings
|
|
|
|
|
> memoryInspectionPaneSettingsByMemoryType;
|
2021-10-06 23:29:05 +01:00
|
|
|
QToolButton* ramInspectionButton = nullptr;
|
2021-11-05 23:43:22 +00:00
|
|
|
QToolButton* eepromInspectionButton = nullptr;
|
2021-10-06 00:39:40 +01:00
|
|
|
|
2021-04-04 21:04:12 +01:00
|
|
|
QWidget* footer = nullptr;
|
2022-05-03 20:00:52 +01:00
|
|
|
Widgets::Label* targetStatusLabel = nullptr;
|
|
|
|
|
Widgets::Label* programCounterValueLabel = nullptr;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-05-30 16:53:24 +01:00
|
|
|
std::map<QString, Targets::TargetVariant> supportedVariantsByName;
|
2021-05-24 20:58:49 +01:00
|
|
|
const Targets::TargetVariant* selectedVariant = nullptr;
|
2021-12-08 20:12:36 +00:00
|
|
|
std::optional<Targets::TargetVariant> previouslySelectedVariant;
|
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
|
|
|
|
2021-12-08 00:33:13 +00:00
|
|
|
void setUiDisabled(bool disable);
|
2021-12-08 20:12:36 +00:00
|
|
|
|
2021-05-30 16:53:24 +01:00
|
|
|
void activate();
|
2021-12-08 20:12:36 +00:00
|
|
|
void populateVariantMenu();
|
|
|
|
|
void selectDefaultVariant();
|
|
|
|
|
void selectVariant(const Targets::TargetVariant* variant);
|
|
|
|
|
void createPanes();
|
|
|
|
|
void destroyPanes();
|
2021-05-30 16:53:24 +01:00
|
|
|
void deactivate();
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-10-06 00:39:40 +01:00
|
|
|
void adjustPanels();
|
2021-12-27 04:10:25 +00:00
|
|
|
void adjustMinimumSize();
|
2021-12-08 00:33:13 +00:00
|
|
|
|
|
|
|
|
void onTargetControllerSuspended();
|
|
|
|
|
void onTargetControllerResumed(const Bloom::Targets::TargetDescriptor& targetDescriptor);
|
|
|
|
|
void onTargetStateUpdate(Targets::TargetState newState);
|
|
|
|
|
void onTargetProgramCounterUpdate(quint32 programCounter);
|
|
|
|
|
void refresh();
|
|
|
|
|
void openReportIssuesUrl();
|
|
|
|
|
void openGettingStartedUrl();
|
|
|
|
|
void openAboutWindow();
|
|
|
|
|
void toggleTargetRegistersPane();
|
|
|
|
|
void toggleRamInspectionPane();
|
|
|
|
|
void toggleEepromInspectionPane();
|
2022-07-19 22:58:38 +01:00
|
|
|
void onRegistersPaneStateChanged();
|
2022-07-16 19:12:12 +01:00
|
|
|
void onRamInspectionPaneStateChanged();
|
|
|
|
|
void onEepromInspectionPaneStateChanged();
|
2022-06-05 17:00:56 +01:00
|
|
|
void onProgrammingModeEnabled();
|
|
|
|
|
void onProgrammingModeDisabled();
|
2021-04-04 21:04:12 +01:00
|
|
|
};
|
|
|
|
|
}
|