WindowAppResourceManagerTree.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. #pragma once
  2. #include "GvlManager.h"
  3. #include "Common.h"
  4. /// <summary>
  5. /// 管理多个任务的树形控件
  6. /// </summary>
  7. class WindowAppMdiFrame;
  8. class WindowApp;
  9. class WindowAppResourceManagerTree : public QTreeWidget
  10. {
  11. Q_OBJECT
  12. public:
  13. WindowAppResourceManagerTree(QTreeWidget* parent = nullptr);
  14. ~WindowAppResourceManagerTree();
  15. public:
  16. void setMdiFrame(WindowAppMdiFrame* pMdiFrame)
  17. {
  18. this->m_pMdiFrame = pMdiFrame;
  19. }
  20. //// 添加一个新节点
  21. //QWidget* addNewNode(QString strName, SUBVIEW_TYPE viewType, bool bActive = false);
  22. // 添加一个GVL节点
  23. QWidget* addGvlNode(QString strName, GVL_MODE gvlType, DllTool* pHdwTool, bool bActive = false);
  24. // 添加一个Pou节点
  25. QWidget* addPouNode(QString strName, bool bActive = false);
  26. // 添加一个Task节点
  27. QWidget* addTaskNode(QString strName, bool bActive = false);
  28. // 添加一个Ui节点
  29. QWidget* addUiNode(QString strName, bool bActive = false, bool bFromDoc = false);
  30. // 添加默认的总任务管理视图节点
  31. QWidget* addDefaultTaskMonitorNode(QString strName);
  32. // 添加默认的Log视图节点
  33. QWidget* addDefaultLogViewNode(QString strName);
  34. // 添加默认的Hardware组态视图节点
  35. QWidget* addDefaultHWConfigViewNode(QString strName);
  36. // 重置(删除所有创建的节点和子视图)
  37. void reset();
  38. // 查找子节点
  39. QTreeWidgetItem* findChildItem(const QString& strItemName);
  40. // 2022-2-22 创建默认的几个视图
  41. void initDefaultViews();
  42. // 2022-2-22 创建默认的几个节点
  43. void initDefaultNodes();
  44. // 创建初始 Task 节点
  45. void initDefaultTaskNodes(QString strTaskName);
  46. // 2022-9-20 绑定WindowApp指针,用于切换对应的ToolTab(Pou和UI)
  47. void bindWindowApp(WindowApp* ptr)
  48. {
  49. m_pWindowApp = ptr;
  50. }
  51. // 2022-9-21 根据用户选择的子窗体,激活App中对应的工具箱Tab(仅Pou和UI)
  52. void switchAppToolbox(QTreeWidgetItem* currentParentItem);
  53. // 2022-9-21 根据用户激活的子窗体的名字,激活App中对应的工具箱Tab(仅Pou和UI)
  54. void switchAppToolbox(const QString& strSubviewName);
  55. // 各个菜单项的响应函数
  56. public:
  57. // Gvl - New
  58. void doMenuGvlNew();
  59. // Gvl - 删除
  60. void doMenuGvlDelete(const QString& strName);
  61. // Pou - New
  62. void doMenuPouNew();
  63. // Pou - Import
  64. void doMenuPouImport();
  65. // Pou - Export
  66. void doMenuPouExport(const QString& strName);
  67. // Pou - Rename
  68. void doMenuPouRename(const QString& strName);
  69. // Pou - Delete
  70. void doMenuPouDelete(const QString& strName);
  71. // Pou - Change Mode
  72. void doMenuPouChangeMode(const QString& strName);
  73. // Task - New
  74. void doMenuTaskNew();
  75. // Task - Rename
  76. void doMenuTaskAddPou(const QString& strName);
  77. // Task - Del
  78. void doMenuTaskDelete(const QString& strName);
  79. // UI - New
  80. void doMenuUiNew();
  81. // UI - setMainPage
  82. void doMenuUiMainPage(const QString& strName);
  83. // UI - Del
  84. void doMenuUiDelete(const QString& strName);
  85. private:
  86. // 创建界面布局
  87. void createLayouts();
  88. // 创建各个节点的右键菜单
  89. void createMenus();
  90. // 添加子节点
  91. void addChildItem( SUBVIEW_TYPE nodeIndex, const QString& strItemName);
  92. // 删除所有子节点
  93. void removeAllSubNodes();
  94. //// 重写右键菜单事件
  95. //void contextMenuEvent(QContextMenuEvent* event);
  96. // 添加一个Pou节点到Task节点
  97. void addPouNodeToTask(QString strPouName, QString strTaskName);
  98. private slots:
  99. // 弹出右键菜单
  100. void onTreeContextMenu( const QPoint& pt);
  101. // 节点双击,切换对应子页面
  102. void onTreeItemDblClicked(QTreeWidgetItem*, int);
  103. // 各个节点的右键消息响应
  104. // GVL 菜单
  105. void onMenuGVL(QAction* action);
  106. // Pou 菜单
  107. void onMenuPou(QAction* action);
  108. // Task 菜单
  109. void onMenuTask(QAction* action);
  110. // UI 菜单
  111. void onMenuUI(QAction* action);
  112. protected:
  113. //// MainPage的名字信息
  114. //// (由于UI页面的主页后面要加main后缀,所以这里需要处理一下)
  115. // 2022-9-25 去掉了此处理
  116. //struct UI_MAINPAGE_TITLE
  117. //{
  118. // QString strShowTitle;
  119. // QString strRealTitle;
  120. //} m_uiMainTitle;
  121. // MainPage的名字信息
  122. QString m_strMainTitle;
  123. // 节点的图标
  124. QList <QIcon> m_appNodeIcons;
  125. // 各个根节点
  126. QList <QTreeWidgetItem*> m_rootNodes;
  127. // 各个根节点的名称
  128. QVector <QString> m_appNodeNames;
  129. // 顶层节点
  130. QTreeWidgetItem* topAppItem;
  131. QTreeWidgetItem* topHardwareItem;
  132. QTreeWidgetItem* topDebugItem;
  133. // 根节点的菜单
  134. QMenu* m_menuGVLRoot;
  135. QMenu* m_menuPouRoot;
  136. QMenu* m_menuTaskRoot;
  137. QMenu* m_menuUiRoot;
  138. // 子节点的菜单
  139. QMenu* m_menuGVLChild;
  140. QMenu* m_menuPouChild;
  141. QMenu* m_menuTaskChild;
  142. QMenu* m_menuUiChild;
  143. QMenu* m_menuScriptChild;
  144. // GVL Action
  145. QAction* m_actionGVLNew;
  146. QAction* m_actionGVLEdit;
  147. QAction* m_actionGVLRename;
  148. QAction* m_actionGVLDelete;
  149. // Pou Action
  150. QAction* m_actionPouNew;
  151. QAction* m_actionPouRename;
  152. QAction* m_actionPouChangeMode;
  153. QAction* m_actionPouDelete;
  154. QAction* m_actionPouExport;
  155. QAction* m_actionPouImport;
  156. // Task Manager Action
  157. QAction* m_actionTaskNew;
  158. QAction* m_actionTaskAddPou;
  159. //QAction* m_actionTaskRename;
  160. QAction* m_actionTaskDelete;
  161. // UI Action
  162. QAction* m_actionUiNew;
  163. QAction* m_actionUiMainPage;
  164. QAction* m_actionUiDelete;
  165. // Mdi控件管理单元
  166. WindowAppMdiFrame* m_pMdiFrame;
  167. // 2022-9-20,保存父窗体指针(目前用于在激活对应的子窗体时切换App界面中对应的工具箱Tab)
  168. WindowApp* m_pWindowApp;
  169. };