Auto status change to "Under Review"
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -168,9 +168,9 MainWindow::MainWindow(QWidget *parent) | |||||
168 | openInspector(checked, true, openRightInspectorAction); |
|
168 | openInspector(checked, true, openRightInspectorAction); | |
169 | }); |
|
169 | }); | |
170 |
|
170 | |||
171 | // //// // |
|
171 | // //////////////// // | |
172 | // Menu // |
|
172 | // Menu and Toolbar // | |
173 | // //// // |
|
173 | // //////////////// // | |
174 | this->menuBar()->addAction(tr("File")); |
|
174 | this->menuBar()->addAction(tr("File")); | |
175 | auto toolsMenu = this->menuBar()->addMenu(tr("Tools")); |
|
175 | auto toolsMenu = this->menuBar()->addMenu(tr("Tools")); | |
176 | toolsMenu->addAction(tr("Settings..."), [this]() { |
|
176 | toolsMenu->addAction(tr("Settings..."), [this]() { | |
@@ -189,6 +189,105 MainWindow::MainWindow(QWidget *parent) | |||||
189 | auto timeWidget = new TimeWidget{}; |
|
189 | auto timeWidget = new TimeWidget{}; | |
190 | mainToolBar->addWidget(timeWidget); |
|
190 | mainToolBar->addWidget(timeWidget); | |
191 |
|
191 | |||
|
192 | auto actionPointerMode = new QAction{QIcon(":/icones/pointer.png"), "Pointer", this}; | |||
|
193 | actionPointerMode->setCheckable(true); | |||
|
194 | actionPointerMode->setChecked(sqpApp->plotsInteractionMode() | |||
|
195 | == SqpApplication::PlotsInteractionMode::None); | |||
|
196 | connect(actionPointerMode, &QAction::triggered, | |||
|
197 | []() { sqpApp->setPlotsInteractionMode(SqpApplication::PlotsInteractionMode::None); }); | |||
|
198 | ||||
|
199 | auto actionZoomMode = new QAction{QIcon(":/icones/zoom.png"), "Zoom", this}; | |||
|
200 | actionZoomMode->setCheckable(true); | |||
|
201 | actionZoomMode->setChecked(sqpApp->plotsInteractionMode() | |||
|
202 | == SqpApplication::PlotsInteractionMode::ZoomBox); | |||
|
203 | connect(actionZoomMode, &QAction::triggered, []() { | |||
|
204 | sqpApp->setPlotsInteractionMode(SqpApplication::PlotsInteractionMode::ZoomBox); | |||
|
205 | }); | |||
|
206 | ||||
|
207 | auto actionOrganisationMode = new QAction{QIcon(":/icones/drag.png"), "Organize", this}; | |||
|
208 | actionOrganisationMode->setCheckable(true); | |||
|
209 | actionOrganisationMode->setChecked(sqpApp->plotsInteractionMode() | |||
|
210 | == SqpApplication::PlotsInteractionMode::DragAndDrop); | |||
|
211 | connect(actionOrganisationMode, &QAction::triggered, []() { | |||
|
212 | sqpApp->setPlotsInteractionMode(SqpApplication::PlotsInteractionMode::DragAndDrop); | |||
|
213 | }); | |||
|
214 | ||||
|
215 | auto actionZonesMode = new QAction{QIcon(":/icones/rectangle.png"), "Zones", this}; | |||
|
216 | actionZonesMode->setCheckable(true); | |||
|
217 | actionZonesMode->setChecked(sqpApp->plotsInteractionMode() | |||
|
218 | == SqpApplication::PlotsInteractionMode::SelectionZones); | |||
|
219 | connect(actionZonesMode, &QAction::triggered, []() { | |||
|
220 | sqpApp->setPlotsInteractionMode(SqpApplication::PlotsInteractionMode::SelectionZones); | |||
|
221 | }); | |||
|
222 | ||||
|
223 | auto modeActionGroup = new QActionGroup{this}; | |||
|
224 | modeActionGroup->addAction(actionZoomMode); | |||
|
225 | modeActionGroup->addAction(actionZonesMode); | |||
|
226 | modeActionGroup->addAction(actionOrganisationMode); | |||
|
227 | modeActionGroup->addAction(actionPointerMode); | |||
|
228 | modeActionGroup->setExclusive(true); | |||
|
229 | ||||
|
230 | mainToolBar->addSeparator(); | |||
|
231 | mainToolBar->addAction(actionPointerMode); | |||
|
232 | mainToolBar->addAction(actionZoomMode); | |||
|
233 | mainToolBar->addAction(actionOrganisationMode); | |||
|
234 | mainToolBar->addAction(actionZonesMode); | |||
|
235 | mainToolBar->addSeparator(); | |||
|
236 | ||||
|
237 | auto btnCursor = new QToolButton{this}; | |||
|
238 | btnCursor->setIcon(QIcon(":/icones/cursor.png")); | |||
|
239 | btnCursor->setText("Cursor"); | |||
|
240 | btnCursor->setToolTip("Cursor"); | |||
|
241 | btnCursor->setPopupMode(QToolButton::InstantPopup); | |||
|
242 | auto cursorMenu = new QMenu("CursorMenu", this); | |||
|
243 | btnCursor->setMenu(cursorMenu); | |||
|
244 | ||||
|
245 | auto noCursorAction = cursorMenu->addAction("No Cursor"); | |||
|
246 | noCursorAction->setCheckable(true); | |||
|
247 | noCursorAction->setChecked(sqpApp->plotsCursorMode() | |||
|
248 | == SqpApplication::PlotsCursorMode::NoCursor); | |||
|
249 | connect(noCursorAction, &QAction::triggered, | |||
|
250 | []() { sqpApp->setPlotsCursorMode(SqpApplication::PlotsCursorMode::NoCursor); }); | |||
|
251 | ||||
|
252 | cursorMenu->addSeparator(); | |||
|
253 | auto verticalCursorAction = cursorMenu->addAction("Vertical Cursor"); | |||
|
254 | verticalCursorAction->setCheckable(true); | |||
|
255 | verticalCursorAction->setChecked(sqpApp->plotsCursorMode() | |||
|
256 | == SqpApplication::PlotsCursorMode::Vertical); | |||
|
257 | connect(verticalCursorAction, &QAction::triggered, | |||
|
258 | []() { sqpApp->setPlotsCursorMode(SqpApplication::PlotsCursorMode::Vertical); }); | |||
|
259 | ||||
|
260 | auto temporalCursorAction = cursorMenu->addAction("Temporal Cursor"); | |||
|
261 | temporalCursorAction->setCheckable(true); | |||
|
262 | temporalCursorAction->setChecked(sqpApp->plotsCursorMode() | |||
|
263 | == SqpApplication::PlotsCursorMode::Temporal); | |||
|
264 | connect(temporalCursorAction, &QAction::triggered, | |||
|
265 | []() { sqpApp->setPlotsCursorMode(SqpApplication::PlotsCursorMode::Temporal); }); | |||
|
266 | ||||
|
267 | auto horizontalCursorAction = cursorMenu->addAction("Horizontal Cursor"); | |||
|
268 | horizontalCursorAction->setCheckable(true); | |||
|
269 | horizontalCursorAction->setChecked(sqpApp->plotsCursorMode() | |||
|
270 | == SqpApplication::PlotsCursorMode::Horizontal); | |||
|
271 | connect(horizontalCursorAction, &QAction::triggered, | |||
|
272 | []() { sqpApp->setPlotsCursorMode(SqpApplication::PlotsCursorMode::Horizontal); }); | |||
|
273 | ||||
|
274 | auto crossCursorAction = cursorMenu->addAction("Cross Cursor"); | |||
|
275 | crossCursorAction->setCheckable(true); | |||
|
276 | crossCursorAction->setChecked(sqpApp->plotsCursorMode() | |||
|
277 | == SqpApplication::PlotsCursorMode::Cross); | |||
|
278 | connect(crossCursorAction, &QAction::triggered, | |||
|
279 | []() { sqpApp->setPlotsCursorMode(SqpApplication::PlotsCursorMode::Cross); }); | |||
|
280 | ||||
|
281 | mainToolBar->addWidget(btnCursor); | |||
|
282 | ||||
|
283 | auto cursorModeActionGroup = new QActionGroup{this}; | |||
|
284 | cursorModeActionGroup->setExclusive(true); | |||
|
285 | cursorModeActionGroup->addAction(noCursorAction); | |||
|
286 | cursorModeActionGroup->addAction(verticalCursorAction); | |||
|
287 | cursorModeActionGroup->addAction(temporalCursorAction); | |||
|
288 | cursorModeActionGroup->addAction(horizontalCursorAction); | |||
|
289 | cursorModeActionGroup->addAction(crossCursorAction); | |||
|
290 | ||||
192 | // //////// // |
|
291 | // //////// // | |
193 | // Settings // |
|
292 | // Settings // | |
194 | // //////// // |
|
293 | // //////// // |
@@ -49,6 +49,16 public: | |||||
49 | /// doesn't live in a thread and access gui |
|
49 | /// doesn't live in a thread and access gui | |
50 | DragDropHelper &dragDropHelper() noexcept; |
|
50 | DragDropHelper &dragDropHelper() noexcept; | |
51 |
|
51 | |||
|
52 | enum class PlotsInteractionMode { None, ZoomBox, DragAndDrop, SelectionZones }; | |||
|
53 | ||||
|
54 | enum class PlotsCursorMode { NoCursor, Vertical, Temporal, Horizontal, Cross }; | |||
|
55 | ||||
|
56 | PlotsInteractionMode plotsInteractionMode() const; | |||
|
57 | void setPlotsInteractionMode(PlotsInteractionMode mode); | |||
|
58 | ||||
|
59 | PlotsCursorMode plotsCursorMode() const; | |||
|
60 | void setPlotsCursorMode(PlotsCursorMode mode); | |||
|
61 | ||||
52 | private: |
|
62 | private: | |
53 | class SqpApplicationPrivate; |
|
63 | class SqpApplicationPrivate; | |
54 | spimpl::unique_impl_ptr<SqpApplicationPrivate> impl; |
|
64 | spimpl::unique_impl_ptr<SqpApplicationPrivate> impl; |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -13,5 +13,10 | |||||
13 | <file>icones/unplot.png</file> |
|
13 | <file>icones/unplot.png</file> | |
14 | <file>icones/up.png</file> |
|
14 | <file>icones/up.png</file> | |
15 | <file>icones/time.png</file> |
|
15 | <file>icones/time.png</file> | |
|
16 | <file>icones/zoom.png</file> | |||
|
17 | <file>icones/rectangle.png</file> | |||
|
18 | <file>icones/drag.png</file> | |||
|
19 | <file>icones/cursor.png</file> | |||
|
20 | <file>icones/pointer.png</file> | |||
16 | </qresource> |
|
21 | </qresource> | |
17 | </RCC> |
|
22 | </RCC> |
@@ -21,7 +21,9 public: | |||||
21 | m_TimeController{std::make_unique<TimeController>()}, |
|
21 | m_TimeController{std::make_unique<TimeController>()}, | |
22 | m_VariableController{std::make_unique<VariableController>()}, |
|
22 | m_VariableController{std::make_unique<VariableController>()}, | |
23 | m_VisualizationController{std::make_unique<VisualizationController>()}, |
|
23 | m_VisualizationController{std::make_unique<VisualizationController>()}, | |
24 | m_DragDropHelper{std::make_unique<DragDropHelper>()} |
|
24 | m_DragDropHelper{std::make_unique<DragDropHelper>()}, | |
|
25 | m_PlotInterractionMode(SqpApplication::PlotsInteractionMode::None), | |||
|
26 | m_PlotCursorMode(SqpApplication::PlotsCursorMode::NoCursor) | |||
25 | { |
|
27 | { | |
26 | // /////////////////////////////// // |
|
28 | // /////////////////////////////// // | |
27 | // Connections between controllers // |
|
29 | // Connections between controllers // | |
@@ -90,6 +92,9 public: | |||||
90 | QThread m_VisualizationControllerThread; |
|
92 | QThread m_VisualizationControllerThread; | |
91 |
|
93 | |||
92 | std::unique_ptr<DragDropHelper> m_DragDropHelper; |
|
94 | std::unique_ptr<DragDropHelper> m_DragDropHelper; | |
|
95 | ||||
|
96 | SqpApplication::PlotsInteractionMode m_PlotInterractionMode; | |||
|
97 | SqpApplication::PlotsCursorMode m_PlotCursorMode; | |||
93 | }; |
|
98 | }; | |
94 |
|
99 | |||
95 |
|
100 | |||
@@ -161,3 +166,23 DragDropHelper &SqpApplication::dragDropHelper() noexcept | |||||
161 | { |
|
166 | { | |
162 | return *impl->m_DragDropHelper; |
|
167 | return *impl->m_DragDropHelper; | |
163 | } |
|
168 | } | |
|
169 | ||||
|
170 | SqpApplication::PlotsInteractionMode SqpApplication::plotsInteractionMode() const | |||
|
171 | { | |||
|
172 | return impl->m_PlotInterractionMode; | |||
|
173 | } | |||
|
174 | ||||
|
175 | void SqpApplication::setPlotsInteractionMode(SqpApplication::PlotsInteractionMode mode) | |||
|
176 | { | |||
|
177 | impl->m_PlotInterractionMode = mode; | |||
|
178 | } | |||
|
179 | ||||
|
180 | SqpApplication::PlotsCursorMode SqpApplication::plotsCursorMode() const | |||
|
181 | { | |||
|
182 | return impl->m_PlotCursorMode; | |||
|
183 | } | |||
|
184 | ||||
|
185 | void SqpApplication::setPlotsCursorMode(SqpApplication::PlotsCursorMode mode) | |||
|
186 | { | |||
|
187 | impl->m_PlotCursorMode = mode; | |||
|
188 | } |
General Comments 1
You need to be logged in to leave comments.
Login now