Auto status change to "Under Review"
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
@@ -168,9 +168,9 MainWindow::MainWindow(QWidget *parent) | |||
|
168 | 168 | openInspector(checked, true, openRightInspectorAction); |
|
169 | 169 | }); |
|
170 | 170 | |
|
171 | // //// // | |
|
172 | // Menu // | |
|
173 | // //// // | |
|
171 | // //////////////// // | |
|
172 | // Menu and Toolbar // | |
|
173 | // //////////////// // | |
|
174 | 174 | this->menuBar()->addAction(tr("File")); |
|
175 | 175 | auto toolsMenu = this->menuBar()->addMenu(tr("Tools")); |
|
176 | 176 | toolsMenu->addAction(tr("Settings..."), [this]() { |
@@ -189,6 +189,105 MainWindow::MainWindow(QWidget *parent) | |||
|
189 | 189 | auto timeWidget = new TimeWidget{}; |
|
190 | 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 | 292 | // Settings // |
|
194 | 293 | // //////// // |
@@ -49,6 +49,16 public: | |||
|
49 | 49 | /// doesn't live in a thread and access gui |
|
50 | 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 | 62 | private: |
|
53 | 63 | class SqpApplicationPrivate; |
|
54 | 64 | spimpl::unique_impl_ptr<SqpApplicationPrivate> impl; |
|
1 | NO CONTENT: modified file, binary diff hidden |
@@ -13,5 +13,10 | |||
|
13 | 13 | <file>icones/unplot.png</file> |
|
14 | 14 | <file>icones/up.png</file> |
|
15 | 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 | 21 | </qresource> |
|
17 | 22 | </RCC> |
@@ -21,7 +21,9 public: | |||
|
21 | 21 | m_TimeController{std::make_unique<TimeController>()}, |
|
22 | 22 | m_VariableController{std::make_unique<VariableController>()}, |
|
23 | 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 | 29 | // Connections between controllers // |
@@ -90,6 +92,9 public: | |||
|
90 | 92 | QThread m_VisualizationControllerThread; |
|
91 | 93 | |
|
92 | 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 | 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