#ifndef DIAGRAMCAVAS_H #define DIAGRAMCAVAS_H #include //#include "global.h" #include "common/backend/project_model.h" #include "common/core_model/topology.h" #include "common/core_model/types.h" #include "common/core_model/diagram.h" #include "common/core_model/data_transmission.h" #include "common/frontend/monitor_item.h" #include "export.hpp" QT_BEGIN_NAMESPACE namespace Ui { class diagramCavas; } QT_END_NAMESPACE class DiagramCavasPrivate; // 前向声明私有实现类 // 只声明在公共接口中使用的类型 class DrawingPanel; class PowerEntity; class MonitorPanel; class DiagramConnectSetting; class DataAccessor; struct HttpRecommandInfo; class ExtraPropertyManager; class PluginManager; class PluginItemFactory; class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea { Q_OBJECT Q_DECLARE_PRIVATE(DiagramCavas) public: DiagramCavas(QWidget *parent = nullptr); virtual ~DiagramCavas(); MonitorPanel* getMonitorPanel(QString); DataAccessor* getDataAccessor() const; void updateSubPos(); void passRecommmandHttpData(HttpRecommandInfo); //传递推荐列表数据 DiagramConnectSetting* getConnectSettingDlg(); ExtraPropertyManager* getExtraPropertyManager(); QMap getPluginShapeInfo(); public: void initial(); void setCurMode(int nMode); int getCurMode(); void showPropertyDlg(); //加载运行时属性栏 void hidePropertyDlg(); void setHMIVisiblebyName(const QString& str,bool val); //通过名称打开对应HMI signals: void prepareUpdateItems(QList,bool refresh); void prepareSelectItems(QList); void updateMonitorList(QString,QPair,int nMode = 0); //0新增1删除 void createdMonitorItems(QList); //创建的监控中item个数 void selectTarget(QObject*); void prepareUpdateTopology(QList,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级 void updateMonitorTopology(QList); void createHMI(QString,QUuid); void updateHMI(QString,QUuid,int,QString); public slots: void onSignal_addDrawingPanel(PowerEntity* p,DiagramMode = DM_edit,QString parent = QString()); //parent:派生运行时的page void onSignal_addGraphicsItem(ModelStateInfo&); void onSignal_addPage(); void onSignal_savePage(); void onSignal_loadMonitor(PowerEntity* p); void runPage(const QString); //运行时 void onSignal_runPage(); void onSignal_deletePage(); void onSignal_activatePage(const QString& name); void onSignal_panelDelete(const QString& name,int nType); //type:0editorPanel,1drawPanel void onSignal_createEntity(EntityInfo); void onSignal_changeEntity(EntityInfo); void onSignal_deleteEntity(EntityInfo); void onSignal_selectEntity(EntityInfo); void onSignal_createDiagram(DiagramInfo,DiagramMode mode = DM_edit); void onSignal_changeDiagram(DiagramInfo); void onSignal_deleteDiagram(DiagramInfo); void onSignal_selectDiagram(DiagramInfo); void onSignal_openNetSetting(); //打开网络设置 void onSignal_openStructDataPreview(); //打开结构数据界面 void onSignal_createHMI(QString,QUuid); //HMI创建 void onSignal_updateHMI(QString,QUuid,int,QString); //HMI更新 /****************************拓扑关系(层级关系)******************************/ void onSignal_updateTopology(QList,bool,bool); //更新拓扑列表 /*********************************间隔**************************************/ void onSignl_openCurrentBay(); /********************************运行时**********************************/ void onCreateHMIClicked(); //创建HMI组态按下 void onSignal_createHMIClicked(QString,QString,int); //收到设置信号 void onSignal_updateCurItems(QList,bool); //更新当前设备列表 void onSignal_selectedItems(QList); //当前选中设备 void onSignal_monitorCreated(QString,QPair); //监控已创建 void onSignal_monitorItemCreated(QList); //监控中创建的对象 void onSignal_monitorSelected(DiagramInfo); //监控选中 void onSignal_saveMonitor(QList>); //保存选中的监控 void updateMonitorListFromDB(int dest = 0); //从数据库更新监控列表 0更新外部lst 1更新内部lst void onSignal_updateMonitorTopology(QList); //通知tree更新monitor拓扑 void updateHMIlstFromDB(); //从数据库更新HMI列表 //QMap> getMapMonitor() {return m_mapMonitorPanel;} void onTargetSelected(QObject*); //选中事件(属性显示) protected: void resizeEvent(QResizeEvent* event) override; private: // 将原有私有方法改为公有或保护,因为它们需要被私有类访问 friend class DiagramCavasPrivate; // 私有实现指针 DiagramCavasPrivate* d_ptr; Q_DISABLE_COPY(DiagramCavas) // 禁止拷贝 }; #endif