XNSim/XNMonitor/DataMonitorWidget/DataMonitorWidget.h

244 lines
6.4 KiB
C
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file DataMonitorWidget.h
* @author jinchao
* @brief
* @version 1.0
* @date 2025-03-10
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include <QWidget>
#include <QSplitter>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QTableWidget>
#include "../TypeDefine.h"
#include "DataMonitorThread.h"
#include "../XNCustomPlot.h"
/**
* @brief
*/
class DataMonitorWidget : public QWidget
{
Q_OBJECT
public:
/**
* @brief
* @param parent
*/
explicit DataMonitorWidget(QWidget *parent = nullptr);
/**
* @brief
*/
~DataMonitorWidget();
signals:
/**
* @brief
* @param modelName
* @param topicName
* @param varName
*/
void monitoringStarted(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
*/
void monitoringStopped(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
*/
void monitoringPaused(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
*/
void monitoringResumed(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief 线
* @param bActive
*/
void controlDataMonitorThread(bool bActive);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
* @param value
*/
void injectOnceData(const QString &modelName, const QString &topicName, const QString &varName,
const double &value);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
* @param value
*/
void injectContinuousData(const QString &modelName, const QString &topicName,
const QString &varName, const double &value);
/**
* @brief
* @param modelName
* @param topicName
* @param varName
*/
void stopInjectContinuousData(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param modelDefinition
*/
void saveModelDefinition(const QSharedPointer<ModelDefinition> &modelDefinition);
/**
* @brief
* @param modelName
*/
void deleteModelDefinition(const QString &modelName);
/**
* @brief
* @param type
* @param message
*/
void sendDebugMessage(int type, const QString &message);
public slots:
/**
* @brief
* @param index
*/
void onSetCurrentTabIndex(int index);
/**
* @brief
*/
void openModelInterfaceFile();
/**
* @brief
* @param modelName
* @param topicName
* @param varName
* @param dataType
*/
void addMonitoringData(const QString &modelName, const QString &topicName,
const QString &varName, const QString &dataType);
/**
* @brief
* @param varName
* @param value
*/
void updateMonitoringData(const QString &varName, const QString &value);
/**
* @brief
* @param type
* @param message
*/
void onSendDebugMessage(int type, const QString &message);
private:
/**
* @brief 线
*/
void InitialDataMonitorThread();
/**
* @brief
*/
void setupTabDataMonitoring();
/**
* @brief
* @param splitter
*/
void setupTabDataMonitoringLeftPanel(QSplitter *splitter);
/**
* @brief
* @param modelDefinition
*/
void updateInterfaceInfoPage(QSharedPointer<ModelDefinition> modelDefinition);
/**
* @brief
* @param modelName
* @param topicNameList
* @param ns
* @param parentItem
* @param tree
*/
void addNameSpaceToTree(const QString &modelName, const QStringList &topicNameList,
const QSharedPointer<NamespaceDefinition> &ns,
QTreeWidgetItem *parentItem, QTreeWidget *tree);
/**
* @brief
* @param splitter
*/
void setupTabDataMonitoringRightPanel(QSplitter *splitter);
/**
* @brief
* @param dataMonitoringTableWidget
*/
void setupDataMonitoringTableWidget(QTableWidget *dataMonitoringTableWidget);
/**
* @brief
* @param dataMonitoringChartWidget
*/
void setupDataMonitoringChartWidget(QWidget *dataMonitoringChartWidget);
/**
* @brief
* @param customPlot
*/
void setupPlotWidget(XNCustomPlot *customPlot);
/**
* @brief
* @param text
*/
void searchModelInterface(const QString &text);
/**
* @brief
* @param item
*/
void showAllTreeItems(QTreeWidgetItem *item);
/**
* @brief
* @param item
*/
void hideAllTreeItems(QTreeWidgetItem *item);
/**
* @brief
* @param item
* @param text
* @return
*/
bool searchAndShowMatchingItems(QTreeWidgetItem *item, const QString &text);
private:
/**
* @brief
*/
int currentTabIndex = 0;
/**
* @brief 线
*/
DataMonitorThread *dataMonitorThread;
/**
* @brief
*/
QMap<QString, QVector<double>> varDataMap;
/**
* @brief
*/
QCPItemTracer *m_tracer;
/**
* @brief
*/
QCPItemText *m_coordLabel;
};