TemplateProgramPage.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #pragma once
  2. #ifndef TEMPLATE_PROGRAM_PAGE
  3. #define TEMPLATE_PROGRAM_PAGE
  4. //#include "Src/Sql/SqlOperation.h"
  5. #include "CViewInterface.h"
  6. #include "Src/RewriteControl/Controls/SpinBox.h"
  7. #include "Src/RewriteControl/Controls/DoubleSpinBox.h"
  8. #include "ui_TemplateProgramPage.h"
  9. #include "CModule.h"
  10. #include "CCamerAndLamp.h"
  11. #include "Src/common/JMessageTip.h"
  12. #include <QWidget>
  13. #include <QGroupBox>
  14. #include <QCheckBox>
  15. #include <QLabel>
  16. #include <QFileDialog>
  17. //#include <QTextStream>
  18. #include <QHeaderView>
  19. #include <QTableWidget>
  20. #include <QPushButton>
  21. #include <QVBoxLayout>
  22. #include <QHBoxLayout>
  23. //#include <QSqlQuery>
  24. //#include <QJsonDocument>
  25. //#include <QJsonObject>
  26. #include <QMessageBox>
  27. //#include <QtWidgets/qcombobox.h>
  28. #include <QComboBox.h>
  29. #include <unordered_map>
  30. class TemplateProgramPage : public QWidget {
  31. Q_OBJECT
  32. public:
  33. explicit TemplateProgramPage(QWidget* parent = nullptr);
  34. private:
  35. void AddPrStrategyPage(int vectorIndex, _PR_STRATEGY prStrategy);
  36. void AddPrTemplatePage(int vectorIndex, PR_TEMPLATE& prTemplate);
  37. void UpdatePrStrategyUI();
  38. void UpdatePrTemplateUI(int vectorIndex, PR_TEMPLATE prTemplate);
  39. // 初始化数据
  40. void initPage();
  41. bool eventFilter(QObject* obj, QEvent* event);
  42. void setSelectedStyle(QWidget* selectedWidget);
  43. LONG DeletePrTemplate(UINT iTemplateId);
  44. LONG DeleteStrategy(UINT iStrategyId);
  45. LONG CreateTemplate(UINT _choseCameraId, int stratIndex);
  46. void refreshCurrentTabLayout();
  47. void TemplateMoveToXYZRAxisPosition(UINT iModuleType, X_Y_Z_R_STRUCT pos);
  48. private slots:
  49. void showLargeImage(const QPixmap& pixmap, int index);
  50. void closeLargeImage();
  51. void updateComboBox(UINT currentStrategyId);
  52. void onMoveTemplate(QWidget* pageWidget, bool moveLeft);
  53. void onAddStrategyClicked();
  54. void onDeleteStrategyClicked();
  55. void onAddTemplateClicked();
  56. public:
  57. bool m_StrategyOrTemplateChanged = false;
  58. private:
  59. Ui::TemplateProgramPageClass ui;
  60. CManageDB* m_manageDB = nullptr;
  61. CProduct* m_pProduct = nullptr;
  62. ns_module::CCamerAndLamp* m_CamerAndLamp = nullptr;
  63. ns_module::CViewInterface* m_pTemplateCViewInterface = nullptr;
  64. static std::unordered_map<int, bool> m_IdIsUsedMap;
  65. bool m_isInitializing = false;
  66. std::vector<ns_db::PR_STRATEGY> m_vecPrStrategy;
  67. std::vector<ns_db::PR_TEMPLATE> m_vecPrTemplate;
  68. ns_db::PR_STRATEGY* curentPrStrategy = nullptr;
  69. //QMap<int, vector<QWidget*> > m_mapStrategyIdToTemplateWidgetVec;//PrStrategyID 和 每个模板widget的对应 : 都不会重复
  70. QMap<int, QWidget*> m_mapIndexPrStrategyWidget;//PrStrategyID 和 每个模板widget的对应
  71. QMap<QWidget*, int> m_mapPrStrategyWidgetIndex;//每个模板widget的对应 和 PrStrategyID
  72. QMap<int, QWidget*> m_mapIndexPrTemplateWidget;//PrTemplateID 和 每个模板widget的对应
  73. QMap<QWidget*, int> m_mapPrTemplateWidgetIndex;//PrTemplateID 和 每个模板widget的对应
  74. QWidget* m_currentSelectedWidget = nullptr; // 用于追踪当前选中的outWidget
  75. // Tab 页中,放所有 outWidget 的容器布局
  76. QTabWidget * ui_tabWidget = nullptr;
  77. QVector<QLabel*> m_imageLabels;
  78. QVector<QPixmap> m_imagePixmaps;
  79. QVBoxLayout* layout = nullptr;
  80. QDialog* largeImageDialog = nullptr;
  81. QLabel* largeImageLabel = nullptr;
  82. QMap<QGroupBox*, int> m_mapWaferGroupBoxIndex;
  83. };
  84. #endif // TEMPLATE_PROGRAM_PAGE