DiagramDesigner/diagramCavas/include/diagramCavas.h

132 lines
5.1 KiB
C++

#ifndef DIAGRAMCAVAS_H
#define DIAGRAMCAVAS_H
#include <QMdiArea>
//#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<HierarchyItem>,bool refresh);
void prepareSelectItems(QList<HierarchyItem>);
void updateMonitorList(QString,QPair<QString,QUuid>,int nMode = 0); //0新增1删除
void createdMonitorItems(QList<HierarchyItem>); //创建的监控中item个数
void selectTarget(QObject*);
void prepareUpdateTopology(QList<HierarchyItem>,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级
void updateMonitorTopology(QList<QUuid>);
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<HierarchyItem>,bool,bool); //更新拓扑列表
/*********************************间隔**************************************/
void onSignl_openCurrentBay();
/********************************运行时**********************************/
void onCreateHMIClicked(); //创建HMI组态按下
void onSignal_createHMIClicked(QString,QString,int); //收到设置信号
void onSignal_updateCurItems(QList<HierarchyItem>,bool); //更新当前设备列表
void onSignal_selectedItems(QList<HierarchyItem>); //当前选中设备
void onSignal_monitorCreated(QString,QPair<QString,QUuid>); //监控已创建
void onSignal_monitorItemCreated(QList<HierarchyItem>); //监控中创建的对象
void onSignal_monitorSelected(DiagramInfo); //监控选中
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控
void updateMonitorListFromDB(int dest = 0); //从数据库更新监控列表 0更新外部lst 1更新内部lst
void onSignal_updateMonitorTopology(QList<QUuid>); //通知tree更新monitor拓扑
void updateHMIlstFromDB(); //从数据库更新HMI列表
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
void onTargetSelected(QObject*); //选中事件(属性显示)
protected:
void resizeEvent(QResizeEvent* event) override;
private:
void removePanel(PowerEntity*);
void calculateLauncherVisible();
private:
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
int _pageIndex;
QString _curPage;
CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮
LoadMonitorPageDlg* _loadMonitorPageDlg;
DiagramConnectSetting* _connectSetting;
DataAccessor* _dataAccessor;
StructDataPreviewDlg* _structDataPreviewDlg;
ExtraPropertyManager* _extraPropertyManager;
CreateHMIdlg* _createHMIDlg;
};
#endif