Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CPanelLogicsDrawingArea.hpp
Go to the documentation of this file.
1#ifndef LIBS_PANELS_CPANELLOGICSDRAWINGAREA_HPP_
2#define LIBS_PANELS_CPANELLOGICSDRAWINGAREA_HPP_
3
10
11#include <set>
12#include <string>
13#include <utility>
14
17
24{
25public:
26 CPanelLogicsDrawingArea(const std::weak_ptr<CLogicsDrawingAreaModel> &logicsDrawingAreaModel,
27 CPanelLogicsEditor *panelLogicsEditor);
34
35 [[nodiscard]] const std::shared_ptr<CLogicsDrawingAreaModel> &drawingAreaModel() const;
36 std::shared_ptr<CLogicsDrawingAreaModel> drawingAreaModel();
37
39 void grabFocus() const;
40 void redraw() const;
41 void updateLogicsElements() const;
42
47 [[nodiscard]] const std::set<AbstractCanvasItem::TId> &getSelectedLogicElements() const;
48
49 void addNewConnection();
51
54
56 void keyShortcutPaste();
57 void keyShortcutMove(bool isUp, bool isDown, bool isLeft, bool isRight);
58
60 const std::optional<iv::math::geometry::Point2d> &clickedPoint2d);
61 void showContextMenu(CMenuContext *menuContext) const;
62
63 void setGrabbed(bool grab);
64 void setGrabGlobalOrigin(const AbstractCanvasItem::TPosition2d &globalPosition);
65 void setGrabLocalOrigin(const AbstractCanvasItem::TPosition2d &localPosition);
66
67 void setDragging(bool dragging);
69 void setStartDragging(bool start);
70 static bool *getCopyModeFlag();
71
72 [[nodiscard]] bool getGrabbed() const;
74 [[nodiscard]] const AbstractCanvasItem::TPosition2d &getGrabbedLocalOrigin() const;
75
76 [[nodiscard]] bool getDragging() const;
78 [[nodiscard]] bool getStartDragging() const;
79
81
82 [[nodiscard]] bool isSelected(AbstractCanvasItem::TId id) const;
83
84 static CLogicsAllowed::TMapDBBlockParamNStr getBlockParams(const std::shared_ptr<CLogicsComponentExec> &lCExec);
85 static CLogicsAllowed::TMapDBBlockParamNStr getBlockValues(const std::shared_ptr<CLogicsComponentExec> &lCExec);
87 getBlockExternalDesc(const std::shared_ptr<CLogicsComponentExec> &lCExec);
88
90 SPrvLogicComponentRefs &sLCR, double moveVertical = 0,
91 double moveHorizontal = 0);
92 static void prvMoveLogicComponent(AbstractCanvasItem::TId componentToMove, const SPrvLogicComponentRefs &sLCR,
93 double moveVertical, double moveHorizontal);
94
95 static std::shared_ptr<CLogicsComponent>
96 prvCreateLogicsComponent(const iv::types::logic::ComponentType &componentTypeTuple, const std::string &lCName,
97 const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsDesc,
98 const SPrvLogicComponentRefs &sLCR);
99
100 static std::shared_ptr<AbstractLogicsElement>
101 prvCreateLogicsElement(const iv::types::logic::ComponentType &componentTypeTuple, const std::string &lCName,
102 const SPrvLogicComponentRefs &sLCR);
104 prvAddNewLogicsElement(const std::shared_ptr<AbstractLogicsElement> &newLC,
105 const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsDesc,
107
109
110private:
126 const std::optional<iv::math::geometry::Point2d> &clickedPoint2d);
130 bool prvVerifyEditionOnLabel(const std::string &oldLabelName, const std::string &newLabelName,
131 CLogicsComponentLabel::ELabelIOType labelIOType, std::string &msgError) const;
132
134
135 void
136 prvUpdateLibraryBlockParamsOnline(const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsExternalDescPrevious,
137 const iv::types::logic::libraryTagName &libBlockTagnamePrevious,
138 const std::shared_ptr<CLogicsComponentLibrary> &libraryLogicBlock) const;
139
141 std::shared_ptr<CLogicsDrawingAreaModel> m_logicsDrawingAreaModelRef;
143
144 std::set<AbstractCanvasItem::TId> m_copyingElementsIds;
145 std::set<AbstractCanvasItem::TId> m_selectedElementsIds;
146
150
152 static bool m_copyMode;
153 // TODO: aag. Problema de cambio de cursor a resolver
154 bool m_startDragging;// We need to know when dragging starts to show the grabbing cursor icon.
156 m_draggedLocalDistance;// TODO: aag. Uso obsoleto. Revisar si sigue siendo necesario: "used to know the direction and speed of the mouse movement when dragging"
157
159};
160
168
169#endif /* LIBS_PANELS_CPANELLOGICSDRAWINGAREA_HPP_ */
EStandOutMode
Definition AbstractCanvasItem.hpp:41
uint32_t TId
Definition AbstractCanvasItem.hpp:47
std::pair< double, double > TPosition2d
Definition AbstractCanvasItem.hpp:48
Definition AbstractComponentGUI.hpp:30
Definition CGooCanvas.hpp:19
std::map< iv::logic::ParamId, std::string > TMapDBBlockParamNStr
Definition CLogicsAllowed.hpp:25
ELabelIOType
Definition CLogicsComponentLabel.hpp:19
std::pair< std::weak_ptr< CLogicsConnectionPoint >, std::weak_ptr< CLogicsConnectionPoint > > TConnPointsRefs
Definition CLogicsConnection.hpp:18
EActionOnLogicsComponent
Definition CLogicsDrawingAreaModel.hpp:40
Definition CMenuContext.hpp:10
Definition CPanelLogicsDrawingArea.hpp:24
bool isSelected(AbstractCanvasItem::TId id) const
Definition CPanelLogicsDrawingArea.cpp:2637
CLogicsConnection::TConnPointsRefs & getConnectionToCreate()
Definition CPanelLogicsDrawingArea.cpp:2632
void setStartDragging(bool start)
Definition CPanelLogicsDrawingArea.cpp:2592
void selectLogicsElement(AbstractCanvasItem::TId id)
Definition CPanelLogicsDrawingArea.cpp:2330
const std::shared_ptr< CLogicsDrawingAreaModel > & drawingAreaModel() const
Definition CPanelLogicsDrawingArea.cpp:2230
CLogicsConnection::TConnPointsRefs m_connectionToCreate
Definition CPanelLogicsDrawingArea.hpp:158
AbstractCanvasItem::TPosition2d m_grabbedLocalOrigin
Definition CPanelLogicsDrawingArea.hpp:148
void generateLogicsGenerationParams(const iv::logic::LogicGenerationParams &generationParams)
Definition CPanelLogicsDrawingArea.cpp:1961
void prvSetComponentExecBlockParams(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3382
void prvEditOrderOfExecution(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:2909
static AbstractCanvasItem::TId prvAddNewLogicsElement(const std::shared_ptr< AbstractLogicsElement > &newLC, const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsDesc, const AbstractCanvasItem::TPosition2d &position, SPrvLogicComponentRefs &sLCR)
Definition CPanelLogicsDrawingArea.cpp:1917
void setDragging(bool dragging)
Definition CPanelLogicsDrawingArea.cpp:2582
CPanelLogicsDrawingArea & operator=(const CPanelLogicsDrawingArea &other)=delete
const std::set< AbstractCanvasItem::TId > & getSelectedLogicElements() const
Definition CPanelLogicsDrawingArea.cpp:2395
bool m_dragging
Definition CPanelLogicsDrawingArea.hpp:151
void setDraggedLocalDistance(const AbstractCanvasItem::TPosition2d &localDistance)
Definition CPanelLogicsDrawingArea.cpp:2587
bool getDragging() const
Definition CPanelLogicsDrawingArea.cpp:2617
static std::shared_ptr< AbstractLogicsElement > prvCreateLogicsElement(const iv::types::logic::ComponentType &componentTypeTuple, const std::string &lCName, const SPrvLogicComponentRefs &sLCR)
Definition CPanelLogicsDrawingArea.cpp:1872
void prvEditSelectedChannel(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3258
void setCopyingSelectedElements()
Definition CPanelLogicsDrawingArea.cpp:2450
static AbstractCanvasItem::TId prvCreateCopyLogicsComponent(AbstractCanvasItem::TId componentToCopy, SPrvLogicComponentRefs &sLCR, double moveVertical=0, double moveHorizontal=0)
Definition CPanelLogicsDrawingArea.cpp:1711
~CPanelLogicsDrawingArea()=default
void prvUpdateLibraryBlockParamsOnline(const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsExternalDescPrevious, const iv::types::logic::libraryTagName &libBlockTagnamePrevious, const std::shared_ptr< CLogicsComponentLibrary > &libraryLogicBlock) const
Definition CPanelLogicsDrawingArea.cpp:3531
bool prvVerifyEditionOnLabel(const std::string &oldLabelName, const std::string &newLabelName, CLogicsComponentLabel::ELabelIOType labelIOType, std::string &msgError) const
Definition CPanelLogicsDrawingArea.cpp:3460
void grabFocus() const
Definition CPanelLogicsDrawingArea.cpp:2277
static bool * getCopyModeFlag()
Definition CPanelLogicsDrawingArea.cpp:2597
const AbstractCanvasItem::TPosition2d & getDraggedLocalDistance() const
Definition CPanelLogicsDrawingArea.cpp:2622
void prvAddNewBackgroundItem()
Definition CPanelLogicsDrawingArea.cpp:2863
void prvEditPropertiesLibraryIOBlock(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3236
void setGrabGlobalOrigin(const AbstractCanvasItem::TPosition2d &globalPosition)
Definition CPanelLogicsDrawingArea.cpp:2572
void prvEditPropertiesText(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3016
void prvAddElementsFromModel()
Definition CPanelLogicsDrawingArea.cpp:2807
void deleteSelectedElements()
Definition CPanelLogicsDrawingArea.cpp:2440
static CLogicsAllowed::TMapDBBlockParamNStr getBlockValues(const std::shared_ptr< CLogicsComponentExec > &lCExec)
Definition CPanelLogicsDrawingArea.cpp:3419
bool m_startDragging
Definition CPanelLogicsDrawingArea.hpp:154
void prvEditSelectedBroadCastChannel(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3351
bool getGrabbed() const
Definition CPanelLogicsDrawingArea.cpp:2602
const AbstractCanvasItem::TPosition2d & getGrabbedGlobalOrigin() const
Definition CPanelLogicsDrawingArea.cpp:2607
void keyShortcutMove(bool isUp, bool isDown, bool isLeft, bool isRight)
Definition CPanelLogicsDrawingArea.cpp:2477
CPanelLogicsDrawingArea(const CPanelLogicsDrawingArea &other)=delete
AbstractCanvasItem::TPosition2d m_draggedLocalDistance
Definition CPanelLogicsDrawingArea.hpp:156
void setStandOutModeLogicsElement(AbstractCanvasItem::TId id, AbstractCanvasItem::EStandOutMode mode) const
Definition CPanelLogicsDrawingArea.cpp:2312
CPanelLogicsEditor * m_panelLogicsEditorRef
Definition CPanelLogicsDrawingArea.hpp:140
void redraw() const
Definition CPanelLogicsDrawingArea.cpp:2289
AbstractComponentGUI * buildPanel()
Definition CPanelLogicsDrawingArea.cpp:2240
AbstractCanvasItem::TPosition2d m_grabbedGlobalOrigin
Definition CPanelLogicsDrawingArea.hpp:149
CPanelLogicsDrawingArea(CPanelLogicsDrawingArea &&other)=delete
static CLogicsAllowed::TMapDBBlockParamNStr getBlockExternalDesc(const std::shared_ptr< CLogicsComponentExec > &lCExec)
Definition CPanelLogicsDrawingArea.cpp:3440
void resetConnectionToCreate()
Definition CPanelLogicsDrawingArea.cpp:2421
bool getStartDragging() const
Definition CPanelLogicsDrawingArea.cpp:2627
void prvEditPropertiesRectangle(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3045
void deleteLogicsElement(AbstractCanvasItem::TId id) const
Definition CPanelLogicsDrawingArea.cpp:2433
void updateLogicsElements() const
Definition CPanelLogicsDrawingArea.cpp:2301
CPanelLogicsDrawingArea & operator=(CPanelLogicsDrawingArea &&other)=delete
std::set< AbstractCanvasItem::TId > m_selectedElementsIds
Definition CPanelLogicsDrawingArea.hpp:145
std::set< AbstractCanvasItem::TId > m_copyingElementsIds
Definition CPanelLogicsDrawingArea.hpp:144
void prvEditPropertiesLibrary(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3111
bool m_grabbed
Definition CPanelLogicsDrawingArea.hpp:147
CPanelLogicsDrawingArea()=delete
void keyShortcutPaste()
Definition CPanelLogicsDrawingArea.cpp:2455
void setGrabLocalOrigin(const AbstractCanvasItem::TPosition2d &localPosition)
Definition CPanelLogicsDrawingArea.cpp:2577
void prvEditConstantState(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:2878
const AbstractCanvasItem::TPosition2d & getGrabbedLocalOrigin() const
Definition CPanelLogicsDrawingArea.cpp:2612
void addNewConnection()
Definition CPanelLogicsDrawingArea.cpp:2400
CGooCanvas * m_canvas
Definition CPanelLogicsDrawingArea.hpp:142
static bool m_copyMode
Definition CPanelLogicsDrawingArea.hpp:152
static std::shared_ptr< CLogicsComponent > prvCreateLogicsComponent(const iv::types::logic::ComponentType &componentTypeTuple, const std::string &lCName, const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsDesc, const SPrvLogicComponentRefs &sLCR)
Definition CPanelLogicsDrawingArea.cpp:1806
void setGrabbed(bool grab)
Definition CPanelLogicsDrawingArea.cpp:2567
void prvSelectConnections(AbstractCanvasItem::TId itemId)
Definition CPanelLogicsDrawingArea.cpp:3342
static void prvMoveLogicComponent(AbstractCanvasItem::TId componentToMove, const SPrvLogicComponentRefs &sLCR, double moveVertical, double moveHorizontal)
Definition CPanelLogicsDrawingArea.cpp:1770
void prvEditPropertiesLabel(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3168
void prvEditProperties(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:2956
void prvRecursiveSelectConnections(AbstractCanvasItem::TId itemId)
Definition CPanelLogicsDrawingArea.cpp:3509
void prvEditPropertiesBasicBlock(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:3074
void prvAddCanvasListeners()
Definition CPanelLogicsDrawingArea.cpp:2790
static CLogicsAllowed::TMapDBBlockParamNStr getBlockParams(const std::shared_ptr< CLogicsComponentExec > &lCExec)
Definition CPanelLogicsDrawingArea.cpp:3400
void prvSelectInsideBlocks(AbstractCanvasItem::TId itemId, const std::optional< iv::math::geometry::Point2d > &clickedPoint2d)
Definition CPanelLogicsDrawingArea.cpp:3282
void showContextMenu(CMenuContext *menuContext) const
Definition CPanelLogicsDrawingArea.cpp:2562
void unselectAllElements()
Definition CPanelLogicsDrawingArea.cpp:2382
void unselectLogicsElement(AbstractCanvasItem::TId id)
Definition CPanelLogicsDrawingArea.cpp:2360
std::shared_ptr< CLogicsDrawingAreaModel > m_logicsDrawingAreaModelRef
Definition CPanelLogicsDrawingArea.hpp:141
void prvEditLoadLibrary(AbstractCanvasItem::TId itemId) const
Definition CPanelLogicsDrawingArea.cpp:2930
void runContextMenuAction(CLogicsDrawingAreaModel::EActionOnLogicsComponent action, AbstractCanvasItem::TId itemId, const std::optional< iv::math::geometry::Point2d > &clickedPoint2d)
Definition CPanelLogicsDrawingArea.cpp:2507
Definition CPanelLogicsEditor.hpp:37
std::string libraryTagName
Definition types.hpp:131
Definition CPanelLogicsDrawingArea.hpp:162
std::weak_ptr< CLogicsDrawingAreaModel > m_logicsDrawingAreaModelRef
Definition CPanelLogicsDrawingArea.hpp:165
CGooCanvas * m_canvasRef
Definition CPanelLogicsDrawingArea.hpp:166
CPanelLogicsEditor * m_panelLogicsEditorRef
Definition CPanelLogicsDrawingArea.hpp:163
CPanelLogicsDrawingArea * m_panelLogicsDrawingAreaRef
Definition CPanelLogicsDrawingArea.hpp:164
Definition LogicsGenerationParams.hpp:59
Tuple containing the type of logic component (logic blocks, library blocks & others blocks).
Definition types.hpp:22