综合平台编程器项目的远程存储
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

67 строки
1.8 KiB

  1. #pragma once
  2. #include "domain/control_logic_model.h"
  3. #include "services/logic_editor_service.h"
  4. #include "services/software_logic_executor.h"
  5. #include <QGraphicsView>
  6. #include <string>
  7. #include <vector>
  8. class QGraphicsScene;
  9. class QResizeEvent;
  10. class LogicEditorWidget final : public QGraphicsView
  11. {
  12. Q_OBJECT
  13. public:
  14. class NodeItem;
  15. class RungItem;
  16. explicit LogicEditorWidget(
  17. LogicEditorService &editor_service,
  18. QWidget *parent = nullptr);
  19. void setLogicId(const std::string &logic_id);
  20. void setEditingEnabled(bool enabled);
  21. void setRuntimeTrace(
  22. const LogicTraceSnapshot &trace,
  23. const std::string &fault_node_id = {});
  24. void clearRuntimeTrace();
  25. void reloadLogic();
  26. void selectNode(const std::string &node_id);
  27. std::string selectedNodeId() const;
  28. std::vector<std::string> selectedNodeIds() const;
  29. std::string selectedRungId() const;
  30. LogicEditorResult addRung();
  31. LogicEditorResult addCondition(const LogicNodeConfig &config);
  32. LogicEditorResult addParallelBranch(const LogicNodeConfig &config);
  33. LogicEditorResult setOutput(const LogicNodeConfig &config);
  34. LogicEditorResult deleteSelected();
  35. signals:
  36. void nodeSelected(const QString &node_id);
  37. void graphChanged();
  38. void editorError(const QString &message);
  39. protected:
  40. void resizeEvent(QResizeEvent *event) override;
  41. private:
  42. void handleSelectionChanged();
  43. void reportFailure(const LogicEditorResult &result);
  44. std::string currentRungId() const;
  45. LogicEditorService &editor_service_;
  46. QGraphicsScene *scene_ = nullptr;
  47. std::string logic_id_;
  48. std::string current_rung_id_;
  49. LogicTraceSnapshot trace_;
  50. std::string fault_node_id_;
  51. bool runtime_trace_enabled_ = false;
  52. bool editing_enabled_ = true;
  53. };