DialogDataLink.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #pragma once
  2. #include <QDialog>
  3. #include "ui_DialogDataLink.h"
  4. #include "Common.h"
  5. /// <summary>
  6. /// 用于配置属性表中Datalink信息的对话框
  7. /// </summary>
  8. class VControlObject;
  9. class DialogDataLink : public QDialog
  10. {
  11. Q_OBJECT
  12. public:
  13. DialogDataLink(
  14. const QString& strPropertyName,
  15. VControlObject* pCurrentObject,
  16. const DataLink& value,
  17. QWidget *parent = Q_NULLPTR
  18. );
  19. ~DialogDataLink();
  20. DataLink getValue() const;
  21. // 设置数值
  22. void setValue(const DataLink& value);
  23. //// 将如下几个函数设置为静态公开函数(用于反序列化使用)
  24. //
  25. //// 绑定dll中的信息用于后续同步
  26. //static bool bindSyncInformation(const DataLink& dataLink, VControlObject* pVControl);
  27. //// 绑定dll中的信息用于后续同步(控件类型)
  28. //static bool bindSyncByControl(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl);
  29. //// 绑定dll中的信息用于后续同步(数值类型)
  30. //static bool bindSyncByValue(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl);
  31. private:
  32. Ui::DialogDataLink ui;
  33. protected:
  34. // 对话框初始化
  35. void initUI();
  36. // 初始化数据链接分组
  37. void initComboGroup();
  38. // 按照一些特殊的属性名称来分组(例如Image中的图像链接、HObject、HTuple链接等等)
  39. void initComboGroupByPropertyName();
  40. // 按Button类型初始化分组
  41. void initComboGroupByButton();
  42. // 按ValueControl类型初始化分组
  43. void initComboGroupByValue();
  44. // 其他控件类型初始化分组
  45. void initComboGroupByOther();
  46. // 添加系统命令
  47. void AddSystemCmdToTree();
  48. // 添加选中的Pou Tool到树形结构中
  49. void AddPouToolsToTree(const QString& strGroup);
  50. // 按Button类型添加Pou Tool
  51. void AddPouToolsByButton(POU* pPou);
  52. // 按ValueControl类型添加Pou Tool
  53. void AddPouToolsByValue(POU* pPou);
  54. // 按复杂控件类型添加Pou Tool
  55. void AddPouToolsByComplexValue(POU* pPou);
  56. // 按其他控件类型添加Pou Tool
  57. void AddPouToolsByOther(POU* pPou);
  58. // 按照一些特殊的属性名称添加Pou Tool
  59. void AddPouToolsByPropertyName(POU* pPou);
  60. // 添加兼容的Pou变量到树形结构中
  61. void AddPouVariablesToTree(const QString& strGroup);
  62. // 添加Tool子节点
  63. QTreeWidgetItem* AddToolTreeItem(const QString& toolName);
  64. // 添加接口子节点
  65. void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf);
  66. // 保存Button类型的选择信息
  67. bool saveSelectionByButton(QTreeWidgetItem* pItem);
  68. // 保存其他类型的选择信息
  69. bool saveSelectionByOther(QTreeWidgetItem* pItem);
  70. private slots:
  71. // select按钮
  72. void onButtonSelectClicked();
  73. // clear按钮
  74. void onButtonClearClicked();
  75. // Combo框选择变更时,需要切换对应的变量列表
  76. void onComboGroupChanged(int nIndex);
  77. protected:
  78. VControlObject* m_pControlObject;
  79. DataLink m_DataLink;
  80. QString m_strPropertyName;
  81. QString m_strPropertyShortName; // 去掉后面数字后的属性名
  82. // 保存属性字段和数值类型的对应关系,用于绑定
  83. QMap<QString, VALUE_TYPE> m_propertiesNameToType;
  84. };