91 ControlElementButton(wxWindow* parent, wxString label, std::unique_ptr<ControlElement> iconElement, wxWindowID
id,
GUIColour* guiColour,
double buttonScale = 1.0);
95 virtual void OnPaint(wxPaintEvent& event);
96 virtual void OnMouseEnter(wxMouseEvent& event);
97 virtual void OnMouseLeave(wxMouseEvent& event);
98 virtual void OnLeftClickDown(wxMouseEvent& event);
99 virtual void OnLeftClickUp(wxMouseEvent& event);
103 std::unique_ptr<ControlElement> m_iconElement;
107 double m_buttonScale = 1.0;
108 wxPoint m_labelPosition;
112 wxPoint m_imagePosition;
114 int m_borderSize = 2;
115 bool m_mouseAbove =
false;
116 bool m_selected =
false;
124 enum class ControlEditorMode :
int {
138 int ioflags = IOControl::IN_TERMINAL_VOLTAGE | IOControl::IN_VELOCITY | IOControl::OUT_FIELD_VOLTAGE |
139 IOControl::OUT_MEC_POWER);
142 virtual void AddElement(ControlElementButtonID
id);
144 virtual void Redraw() { m_cePanel->Refresh(); }
145 virtual void SetJustOpened(
bool justOpened) { m_justOpened = justOpened; }
146 virtual void RotateSelectedElements(
bool clockwise);
147 virtual void DeleteSelectedElements();
148 virtual void CheckConnections();
149 virtual std::vector< std::shared_ptr<ConnectionLine> > GetConnectionLineList()
const {
return m_connectionList; }
150 virtual std::vector< std::shared_ptr<ControlElement> > GetControlElementList()
const {
return m_elementList; }
151 virtual void SetElementsList(
const std::vector< std::shared_ptr<ControlElement> >& elementList);
152 virtual void SetConnectionsList(
const std::vector< std::shared_ptr<ConnectionLine> >& connectionList) { m_connectionList = connectionList; }
155 virtual void SetPlotLib(
int plotLib) { m_plotLib = plotLib; }
157 virtual std::vector<Element*> GetElementList()
const;
160 virtual void OnClose(wxCloseEvent& event);
161 virtual void OnTestClick(wxCommandEvent& event);
162 virtual void OnButtonOKClick(wxCommandEvent& event) { Close(); }
163 virtual void OnImportClick(wxCommandEvent& event);
164 virtual void OnExportClick(wxCommandEvent& event);
165 virtual void OnKeyDown(wxKeyEvent& event);
166 virtual void OnIdle(wxIdleEvent& event);
167 virtual void OnScroll(wxMouseEvent& event);
168 virtual void OnDoubleClick(wxMouseEvent& event);
169 virtual void OnLeftClickDown(wxMouseEvent& event);
170 virtual void OnLeftClickUp(wxMouseEvent& event);
171 virtual void OnMiddleDown(wxMouseEvent& event);
172 virtual void OnMiddleUp(wxMouseEvent& event);
173 virtual void OnMouseMotion(wxMouseEvent& event);
174 virtual void OnPaint(wxPaintEvent& event);
175 virtual void LeftClickDown(wxMouseEvent& event);
177 virtual void BuildColourList();
178 virtual wxColour GetNextColour();
180 void BuildControlElementPanel();
183 virtual void OnMiddleDoubleClick(wxMouseEvent& event);
184 virtual void OnFitClick(wxCommandEvent& event);
185 virtual void OnCopyClick(wxCommandEvent& event);
186 virtual void OnDeleteClick(wxCommandEvent& event);
187 virtual void OnDragClick(wxCommandEvent& event);
188 virtual void OnMoveClick(wxCommandEvent& event);
189 virtual void OnNewClick(wxCommandEvent& event);
190 virtual void OnPasteClick(wxCommandEvent& event);
191 virtual void OnRedoClick(wxCommandEvent& event);
192 virtual void OnUndoClick(wxCommandEvent& event);
196 std::vector< std::shared_ptr<ConnectionLine> >::iterator DeleteLineFromList(std::vector< std::shared_ptr<ConnectionLine> >::iterator& it);
202 void CopySelectionToClipboard();
203 bool PasteFromClipboard();
205 void SaveCurrentState();
206 void SetPreviousState();
210 bool GetElementsCorners(wxPoint2DDouble& leftUpCorner,
211 wxPoint2DDouble& rightDownCorner,
212 const std::vector<Element*>& elementList)
const;
214 void ApplyFontToElements();
215 wxPoint GetEditorMouseClientPoint()
const;
216 wxPoint2DDouble GetEditorMouseWorldPoint()
const;
218 Camera* m_camera =
nullptr;
223 ControlEditorMode m_mode = ControlEditorMode::MODE_EDIT;
225 wxRect2DDouble m_selectionRect;
226 wxPoint2DDouble m_startSelRect;
229 std::vector< std::shared_ptr<ControlElement> > m_elementList;
231 std::vector< std::shared_ptr<ConnectionLine> > m_connectionList;
236 bool m_justOpened =
false;
240 double m_startTime = 1.0;
241 double m_slope = 1.0;
242 double m_timeStep = 1e-4;
243 double m_simTime = 10.0;
246 std::vector<wxColour> m_colourList;
247 std::vector<wxColour>::iterator m_itColourList;
250 std::vector<std::vector<std::shared_ptr<ControlElement>>> m_elementListState;
251 std::vector<std::vector<std::shared_ptr<ConnectionLine>>> m_connectionListState;
252 int m_currentState = -1;
253 int m_maxStates = 100;