#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 "export.hpp" QT_BEGIN_NAMESPACE namespace Ui { class diagramCavas; } QT_END_NAMESPACE class DrawingPanel; class PowerEntity; class GraphicsBaseModelItem; class EditBaseItem; class MonitorPanel; class CornerMonitorLauncher; class LoadMonitorPageDlg; class DiagramConnectSetting; class DataAccessor; struct HttpRecommandInfo; class StructDataPreviewDlg; class ExtraPropertyManager; class DataSourceDlg; class CreateHMIdlg; class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea { Q_OBJECT public: DiagramCavas(QWidget *parent = nullptr); ~DiagramCavas(); MonitorPanel* getMonitorPanel(QString); DataAccessor* getDataAccessor() const {return _dataAccessor;} void updateSubPos(); void passRecommmandHttpData(HttpRecommandInfo); //传递推荐列表数据 DiagramConnectSetting* getConnectSettingDlg() {return _connectSetting;} ExtraPropertyManager* getExtraPropertyManager() {return _extraPropertyManager;} public: void initial(); 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: void removePanel(PowerEntity*); void calculateLauncherVisible(); private: QMap> m_mapMonitorPanel; //监控时panel int _pageIndex; QString _curPage; CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮 LoadMonitorPageDlg* _loadMonitorPageDlg; DiagramConnectSetting* _connectSetting; DataAccessor* _dataAccessor; StructDataPreviewDlg* _structDataPreviewDlg; ExtraPropertyManager* _extraPropertyManager; CreateHMIdlg* _createHMIDlg; }; #endif