123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #pragma once
- #include "WindowAppBlockBase.h"
- /// <summary>
- /// 标准类型的工具功能块图基类,目前包括了Standard工具和Goto工具和Parallel工具三个子类
- /// </summary>
- class WindowAppBlockStandardBase : public WindowAppBlockBase
- {
- Q_OBJECT
- // 添加这一行,否则会出现警告:Warning: qobject_cast to QGraphicsItem will not work!
- Q_INTERFACES(QGraphicsItem)
- protected:
- // bShowOnly 是否仅供展示使用,展示使用的话不提供右键菜单以及其他互动功能
- WindowAppBlockStandardBase(TOOL* pTool, POU* Pou, bool bShowOnly = false, QGraphicsObject* parent = nullptr);
- public:
- //// 设定本Item的自定义类型
- //enum { Type = ITEM_TYPE_STANDARDBASE };
- //int type() const override
- //{
- // return Type;
- //}
- // 添加接口
- virtual void addItemInterfaces();
- // 添加单个接口
- WindowAppItemInterface* addItemInterface(_INTERFACE* pInfInfo);
- // 更新Block的相关位置和尺寸
- void updatePosition();
- // 是否是StandardBase系列的Block
- bool isStandardBasedBlock();
- // MoveUp
- void onBlockMoveUp();
- // MoveDown
- void onBlockMoveDown();
- // MoveFirst
- void onBlockMoveFirst();
- // MoveLast
- void onBlockMoveLast();
- // 2022-9-28,直接给工具设置一个新的Index
- void setToolIndex(const int& newIndex);
- protected:
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
- //// 计算区域边界
- //QRectF boundingRect() const override;
- //// 显示右键菜单
- //void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
- // 功能块有变动时
- // QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
- //// 双击弹出工具dll中的对话框
- //void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event);
- //signals:
- //
- // // 当工具功能块被双击时触发
- // void blockDoubleClick(QGraphicsItem* pSelBlock);
- //QRectF boundingRect() const;
- protected:
- // 绘制功能块
- void DrawBlock(QPainter* painter, bool withToolName = true);
- // 绘制功能块名字
- void DrawBlockTitle(QPainter* painter, bool withInstName = true);
- // 绘制序号
- void DrawIndex(QPainter* painter);
- // 绘制断点标识
- void DrawBreakPoint(QPainter* painter);
- // 绘制程序指针
- void DrawPointer(QPainter* painter);
- // 设定功能块执行状态
- void SetExecStatus(QPainter* painter);
- // 更新矩形区域的尺寸
- virtual void updateRect();
- // 添加Tool接口(Start、End)
- void addItemToolInterfaces();
- // 菜单相关
- protected:
- // 初始化功能块的右键菜单
- void createContextMenu();
- // 各个菜单的响应函数
- // 菜单 - Execute
- void onMenuExecute();
- // 菜单 - ExecuteSubsequent
- void onMenuExecuteSub();
- // 菜单 - ExecuteAll
- void onMenuExecuteAll();
- // 菜单 - BreakPoint
- void onMenuBreakPoint();
- // 菜单 - MoveUp
- void onMenuMoveUp();
- // 菜单 - MoveDown
- void onMenuMoveDown();
- // 菜单 - MoveFirst
- void onMenuMoveFirst();
- // 菜单 - MoveLast
- void onMenuMoveLast();
- // 菜单 - Delete
- void onMenuDelete();
- // 菜单 - Property
- void onMenuProperty();
- // 菜单 - Copy block
- void onMenuCopyblock();
- // 菜单 - Copy data
- void onMenuCopydata();
- // 菜单 - Paste
- void onMenuPaste();
- // - Execute
- void MenuExecute();
- // - ExecuteSubsequent
- void MenuExecuteSub();
- // - ExecuteAll
- void MenuExecuteAll();
- };
|