#pragma once #include #include "ui_WindowAppPouFrame.h" #include "Common.h" #include "CommonDraw.h" #include "WindowAppPouNavView.h" /// /// Pou的界面容器 /// class WindowAppPouFrame : public QWidget { Q_OBJECT public: WindowAppPouFrame(const QString& strTitle, QWidget *parent = Q_NULLPTR); ~WindowAppPouFrame(); //// 清理窗口的数据 //void reset(); // 在界面中添加新的变量(from序列化文件) void addNewVariable(VARIABLE* pNewVariable); //// 在界面和数据结构中添加新的TOOL(from序列化文件) //void addNewTool(TOOL* pNewTool, QPointF pos); //// 在界面中添加新的Link(from序列化文件) //void addNewLink(const QString& strStartInf, const QString& strEndInf, LINK_MODE linkMode); void UpdataDebugData(DebugData); // 序列化 friend QDataStream& operator<<(QDataStream& out, const WindowAppPouFrame* pFrame); // 反序列化 friend QDataStream& operator>>(QDataStream& in, WindowAppPouFrame* pFrame); // 本Pou分组的名称 QString m_strTitle; private: Ui::WindowAppPouFrame ui; private slots: // events void resizeEvent(QResizeEvent* event) override; void enterEvent(QEvent* event) override; void leaveEvent(QEvent* event) override; void slotSplitterMoved(int pos, int index); // 响应Paint事件为了刷新Undo菜单启用禁用(TODO:暂时没有找到更好的位置) void paintEvent(QPaintEvent* event) override; private slots: // Toolbar响应函数 // Toolbar - Gvl New void onToolGvlNew(); // Toolbar - Gvl MoveUp void onToolGvlMoveUp(); // Toolbar - Gvl MoveDown void onToolGvlMoveDown(); // Toolbar - Gvl Delete void onToolGvlDelete(); // 功能块序号 减 1 void onToolMoveUp(); // 功能块序号 加 1 void onToolMoveDown(); // 功能块序号 置1 void onToolMoveFirst(); // 功能块序号 置底 void onToolMoveLast(); // 功能块左对齐 void onToolAlignLeft(); // 功能块顶对齐 void onToolAlignTop(); // 功能块右对齐 void onToolAlignRight(); // 功能块底对齐 void onToolAlignBottom(); // Undo void onToolUndo(); // Redo void onToolRedo(); // Option void onToolOption(); // 执行一轮 void onToolRunOnce(); // 单步执行 void onToolSingleStep(); // 接收键盘消息 void keyPressEvent(QKeyEvent* event)override; private: // 初始化Pou子界面工具栏 void initPouToolbar(); // 初始化局部变量子界面工具栏 void initGvlToolbar(); //// 初始化变量表格 //void initTable(); // UI元素初始化 void initUI(); void ToolRunOnce(); void ToolSingleStep(); // 刷新Undo/Redo按钮 void refreshUndoMenu(); private: // 菜单的Action QAction* actionMoveUp; QAction* actionMoveDown; QAction* actionMoveFirst; QAction* actionMoveLast; QAction* actionAlignLeft; QAction* actionAlignTop; QAction* actionAlignRight; QAction* actionAlignBottom; // 2022-9-29,增加了Undo和Redo按钮 QAction* actionUndo; QAction* actionRedo; QAction* actionOption; QAction* actionRunOnce; QAction* actionSingleStep; private: // 局部变量子界面工具栏 QToolBar* m_GvlToolbar; // Pou子界面工具栏 QToolBar* m_PouToolbar; // 鸟瞰图 WindowAppPouNavView* m_pNavView; };