Engauge Digitizer 2
Loading...
Searching...
No Matches
MainWindow.h
1/******************************************************************************************************
2 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7#ifndef MAIN_WINDOW_H
8#define MAIN_WINDOW_H
9
10#include "BackgroundImage.h"
11#include "CoordSystemIndex.h"
12#include "DigitizeStateAbstractBase.h"
13#include "DocumentAxesPointsRequired.h"
14#include "MainWindowModel.h"
15#include <QCursor>
16#include <QMainWindow>
17#include <QUrl>
18#include "Transformation.h"
19#include "ZoomControl.h"
20#include "ZoomFactor.h"
21
23class ChecklistGuide;
24class CmdMediator;
25class CmdStackShadow;
26class CurveStyles;
49class ExportToFile;
50class FileCmdScript;
51class Ghosts;
52class GraphicsScene;
53class GraphicsView;
54class HelpWindow;
56class NetworkClient;
57class QAction;
58class QActionGroup;
59class QCloseEvent;
60class QComboBox;
61class QDomDocument;
62class QGraphicsLineItem;
63class QMenu;
64class QPushButton;
65class QSettings;
66class QTextStream;
67class QTimer;
68class QToolBar;
69class QVBoxLayout;
70class StatusBar;
72class TutorialDlg;
73class ViewPointStyle;
75
77class MainWindow : public QMainWindow
78{
79 Q_OBJECT
80
81public:
89 MainWindow(const QString &errorReportFile,
90 const QString &fileCmdScriptFile,
91 bool isRegressionTest,
92 bool isGnuplot,
93 QStringList loadStartupFiles,
94 QWidget *parent = 0);
96
98 void cmdFileClose();
99
101 void cmdFileExport(const QString &fileName);
102
104 void cmdFileImport(const QString &fileName);
105
107 void cmdFileOpen(const QString &fileName);
108
111
113 virtual bool eventFilter(QObject *, QEvent *);
114
116 QImage imageFiltered () const;
117
119 bool isGnuplot() const;
120
123
125 void resizeEvent (QResizeEvent *event);
126
128 void saveErrorReportFileAndExit(const char *comment,
129 const char *file,
130 int line,
131 const char *context) const;
132
135
138 BackgroundImage selectOriginal(BackgroundImage backgroundImage);
139
141 QString selectedGraphCurve () const;
142
144 virtual void showEvent(QShowEvent *);
145
147 void showTemporaryMessage (const QString &temporaryMessage);
148
151
153 bool transformIsDefined() const;
154
156 void updateAfterCommand();
157
160
162 void updateCoordSystem(CoordSystemIndex coordSystemIndex);
163
165 void updateDigitizeStateIfSoftwareTriggered (DigitizeState digitizeState);
166
170
172 void updateSettingsAxesChecker(const DocumentModelAxesChecker &modelAxesChecker);
173
175 void updateSettingsColorFilter(const DocumentModelColorFilter &modelColorFilter);
176
178 void updateSettingsCoords(const DocumentModelCoords &modelCoords);
179
181 void updateSettingsCurveAddRemove (const CurvesGraphs &curvesGraphs);
182
184 void updateSettingsCurveStyles(const CurveStyles &modelCurveStyles);
185
187 void updateSettingsDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve);
188
191
193 void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral);
194
196 void updateSettingsGridRemoval(const DocumentModelGridRemoval &modelGridRemoval);
197
200
202 void updateSettingsPointMatch(const DocumentModelPointMatch &modelPointMatch);
203
205 void updateSettingsSegments(const DocumentModelSegments &modelSegments);
206
208 void updateViewsOfSettings (const QString &activeCurve);
209
211 GraphicsView &view ();
212
214 const GraphicsView &view () const;
215
216private slots:
217 void slotBtnPrintAll();
218 void slotBtnShowAllPressed();
219 void slotBtnShowAllReleased();
220 void slotCanRedoChanged (bool);
221 void slotCanUndoChanged (bool);
222 void slotChecklistClosed ();
223 void slotCleanChanged (bool);
224 void slotCmbBackground(int);
225 void slotCmbCoordSystem(int);
226 void slotCmbCurve(int);
227 void slotContextMenuEvent (QString);
228 void slotDigitizeAxis ();
229 void slotDigitizeColorPicker ();
230 void slotDigitizeCurve ();
231 void slotDigitizePointMatch ();
232 void slotDigitizeSegment ();
233 void slotDigitizeSelect ();
234 void slotEditCopy ();
235 void slotEditCut ();
236 void slotEditDelete ();
237 void slotEditMenu ();
238 void slotEditPaste ();
239 void slotEditPasteAsNew ();
240 void slotEditPasteAsNewAdvanced ();
241 void slotFileClose ();
242 void slotFileExport ();
243 void slotFileImport();
244 void slotFileImportAdvanced();
245 void slotFileImportDraggedImage(QImage);
246 void slotFileImportDraggedImageUrl(QUrl);
247 void slotFileImportImage(QString, QImage);
248 void slotFileOpen();
249 void slotFileOpenDraggedDigFile (QString);
250 void slotFilePrint();
251 bool slotFileSave();
252 bool slotFileSaveAs();
253 void slotHelpAbout();
254 void slotHelpTutorial();
255 void slotKeyPress (Qt::Key, bool);
256 void slotLeave ();
257 void slotLoadStartupFiles ();
258 void slotMouseMove (QPointF);
259 void slotMousePress (QPointF);
260 void slotMouseRelease (QPointF);
261 void slotRecentFileAction ();
262 void slotRecentFileClear ();
263 void slotRedoTextChanged (const QString &);
264 void slotSetOverrideCursor (QCursor);
265 void slotSettingsAxesChecker ();
266 void slotSettingsColorFilter ();
267 void slotSettingsCoords ();
268 void slotSettingsCurveAddRemove ();
269 void slotSettingsCurveProperties ();
270 void slotSettingsDigitizeCurve ();
271 void slotSettingsExportFormat ();
272 void slotSettingsGeneral ();
273 void slotSettingsGridRemoval ();
274 void slotSettingsMainWindow ();
275 void slotSettingsPointMatch ();
276 void slotSettingsSegments ();
277 void slotTimeoutRegressionErrorReport ();
278 void slotTimeoutRegressionFileCmdScript ();
279 void slotUndoTextChanged (const QString &);
280 void slotViewGroupBackground(QAction*);
281 void slotViewGroupCurves(QAction*);
282 void slotViewGroupStatus(QAction*);
283 void slotViewToolBarBackground ();
284 void slotViewToolBarChecklistGuide ();
285 void slotViewToolBarCoordSystem ();
286 void slotViewToolBarDigitize ();
287 void slotViewToolBarSettingsViews ();
288 void slotViewToolTips ();
289 void slotViewZoom16To1 ();
290 void slotViewZoom8To1 ();
291 void slotViewZoom4To1 ();
292 void slotViewZoom2To1 ();
293 void slotViewZoom1To1 ();
294 void slotViewZoom1To2 ();
295 void slotViewZoom1To4 ();
296 void slotViewZoom1To8 ();
297 void slotViewZoom1To16 ();
298 void slotViewZoom (int);
299 void slotViewZoomFill ();
300 void slotViewZoomIn ();
301 void slotViewZoomInFromWheelEvent ();
302 void slotViewZoomOut ();
303 void slotViewZoomOutFromWheelEvent ();
304
305signals:
307 void signalZoom(int);
308
309private:
310 MainWindow();
311
312 enum ImportType {
313 IMPORT_TYPE_SIMPLE,
314 IMPORT_TYPE_ADVANCED
315 };
316
317 void applyZoomFactorAfterLoad();
318 virtual void closeEvent(QCloseEvent *event);
319 void createActions();
320 void createActionsDigitize ();
321 void createActionsEdit ();
322 void createActionsFile ();
323 void createActionsHelp ();
324 void createActionsSettings ();
325 void createActionsView ();
326 void createCentralWidget ();
327 void createCommandStackShadow ();
328 void createHelpWindow ();
329 void createIcons();
330 void createLoadImageFromUrl ();
331 void createMenus();
332 void createNetwork();
333 void createScene ();
334 void createSettingsDialogs ();
335 void createStateContextBackground();
336 void createStateContextDigitize();
337 void createStateContextTransformation();
338 void createStatusBar();
339 void createToolBars();
340 void createTutorial();
341 ZoomFactor currentZoomFactor () const;
342 void exportAllCoordinateSystems();
343 QString exportFilenameFromInputFilename (const QString &fileName) const;
344 void fileExport(const QString &fileName,
345 ExportToFile exportStrategy);
346 void fileImport (const QString &fileName,
347 ImportType ImportType);
348 void fileImportWithPrompts (ImportType ImportType);
349 void filePaste (ImportType importType);
350 void ghostsCreate ();
351 void ghostsDestroy ();
352 void loadCoordSystemListFromCmdMediator();
353 void loadCurveListFromCmdMediator();
354 void loadDocumentFile (const QString &fileName);
355 void loadErrorReportFile(const QString &initialPath,
356 const QString &errorReportFile);
357 bool loadImage (const QString &fileName,
358 const QImage &image,
359 ImportType ImportType);
360 void loadInputFileForErrorReport(QDomDocument &domInputFile) const;
361 void loadToolTips ();
362 bool maybeSave();
363 DocumentModelExportFormat modelExportOverride (const DocumentModelExportFormat &modelExportFormatBefore,
364 const ExportToFile &exportStrategy,
365 const QString &selectedNameFilter) const;
366 void rebuildRecentFileListForCurrentFile(const QString &filePath);
367 bool saveDocumentFile(const QString &fileName);
368 QString saveErrorReportFileAndExitXml (const char *comment,
369 const char *file,
370 int line,
371 const char *context) const;
372 void saveStartingDocumentSnapshot();
373 void setCurrentFile(const QString &fileName);
374 void setCurrentPathFromFile (const QString &fileName);
375 void setPixmap (const QPixmap &pixmap);
376 void settingsRead ();
377 void settingsReadEnvironment (QSettings &settings);
378 void settingsReadMainWindow (QSettings &settings);
379 void settingsWrite ();
380 bool setupAfterLoad (const QString &fileName,
381 const QString &temporaryMessage,
382 ImportType ImportType);
383 void startRegressionTestErrorReport (const QString &regressionInputFile);
384 void startRegressionTestFileCmdScript ();
385 void updateAfterCommandStatusBarCoords ();
386 void updateControls (); // Update the widgets (typically in terms of show/hide state) depending on the application state.
387 void updateRecentFileList();
388 void updateSettingsMainWindow();
389 void updateTransformationAndItsDependencies();
390 void updateViewedCurves ();
391 void updateViewsOfSettings (); // Private version gets active curve name from DigitizeContext
392 void updateWindowTitle ();
393 void writeCheckpointToLogFile();
394
395 QString m_originalFile; // Original filename for error report
396 bool m_originalFileWasImported; // True/false for imported/opened
397 bool m_isDocumentExported;
398 QString m_engaugeFile; // Not empty when a Document is currently loaded AND it was loaded and/or saved as an Engauge file
399 QString m_currentFile; // Not empty when a Document is currently loaded. No path or file extension
400 QString m_currentFileWithPathAndFileExtension; // Adds path and file extension to m_currentFile. For display
401 MainTitleBarFormat m_titleBarFormat;
402
403 QMenu *m_menuFile;
404 QAction *m_actionImport;
405 QAction *m_actionImportAdvanced;
406 QAction *m_actionOpen;
407 QMenu *m_menuFileOpenRecent;
408 QList<QAction*> m_actionRecentFiles;
409 QAction *m_actionClose;
410 QAction *m_actionSave;
411 QAction *m_actionSaveAs;
412 QAction *m_actionExport;
413 QAction *m_actionPrint;
414 QAction *m_actionExit;
415
416 QMenu *m_menuEdit;
417 QAction *m_actionEditUndo;
418 QAction *m_actionEditRedo;
419 QAction *m_actionEditCut;
420 QAction *m_actionEditCopy;
421 QAction *m_actionEditPaste;
422 QAction *m_actionEditDelete;
423 QAction *m_actionEditPasteAsNew;
424 QAction *m_actionEditPasteAsNewAdvanced;
425
426 QMenu *m_menuDigitize;
427 QActionGroup *m_groupDigitize;
428 QAction *m_actionDigitizeSelect;
429 QAction *m_actionDigitizeAxis;
430 QAction *m_actionDigitizeCurve;
431 QAction *m_actionDigitizePointMatch;
432 QAction *m_actionDigitizeColorPicker;
433 QAction *m_actionDigitizeSegment;
434
435 QMenu *m_menuView;
436 QAction *m_actionViewBackground;
437 QAction *m_actionViewChecklistGuide;
438 QAction *m_actionViewCoordSystem;
439 QAction *m_actionViewDigitize;
440 QAction *m_actionViewSettingsViews;
441 QAction *m_actionViewToolTips;
442 QMenu *m_menuViewBackground;
443 QActionGroup *m_groupBackground;
444 QAction *m_actionViewBackgroundNone;
445 QAction *m_actionViewBackgroundOriginal;
446 QAction *m_actionViewBackgroundFiltered;
447 QMenu *m_menuViewCurves;
448 QActionGroup *m_groupCurves;
449 QAction *m_actionViewCurvesNone;
450 QAction *m_actionViewCurvesSelected;
451 QAction *m_actionViewCurvesAll;
452 QMenu *m_menuViewStatus;
453 QActionGroup *m_groupStatus;
454 QAction *m_actionStatusNever;
455 QAction *m_actionStatusTemporary;
456 QAction *m_actionStatusAlways;
457 QMenu *m_menuViewZoom;
458 QAction *m_actionZoomOut;
459 QAction *m_actionZoomIn;
460 QActionGroup *m_groupZoom;
461 QAction *m_actionZoomFill;
462 QAction *m_actionZoom16To1;
463 QAction *m_actionZoom8To1;
464 QAction *m_actionZoom4To1;
465 QAction *m_actionZoom2To1;
466 QAction *m_actionZoom1To1;
467 QAction *m_actionZoom1To2;
468 QAction *m_actionZoom1To4;
469 QAction *m_actionZoom1To8;
470 QAction *m_actionZoom1To16;
471
472 QMenu *m_menuSettings;
473 QAction *m_actionSettingsAxesChecker;
474 QAction *m_actionSettingsColorFilter;
475 QAction *m_actionSettingsCoords;
476 QAction *m_actionSettingsCurveAddRemove;
477 QAction *m_actionSettingsCurveProperties;
478 QAction *m_actionSettingsDigitizeCurve;
479 QAction *m_actionSettingsExport;
480 QAction *m_actionSettingsGeneral;
481 QAction *m_actionSettingsGridRemoval;
482 QAction *m_actionSettingsMainWindow;
483 QAction *m_actionSettingsPointMatch;
484 QAction *m_actionSettingsSegments;
485
486 QMenu *m_menuHelp;
487 QAction *m_actionHelpAbout;
488 QAction *m_actionHelpChecklistGuideWizard;
489 QAction *m_actionHelpHelp;
490 QAction *m_actionHelpTutorial;
491 QAction *m_actionHelpWhatsThis;
492
493 QVBoxLayout *m_layout;
494 GraphicsScene *m_scene;
495 GraphicsView *m_view;
496
497 StatusBar *m_statusBar;
498 Transformation m_transformation;
499
500 QComboBox *m_cmbCurve;
501 QToolBar *m_toolDigitize;
502 LoadImageFromUrl *m_loadImageFromUrl;
503
504 QComboBox *m_cmbBackground;
505 QToolBar *m_toolBackground;
506
507 ViewPointStyle *m_viewPointStyle;
508 ViewSegmentFilter *m_viewSegmentFilter;
509 QToolBar *m_toolSettingsViews;
510 ChecklistGuide *m_dockChecklistGuide;
511
512 QComboBox *m_cmbCoordSystem;
513 QPushButton *m_btnPrintAll;
514 QPushButton *m_btnShowAll;
515 QToolBar *m_toolCoordSystem;
516
517 HelpWindow *m_helpWindow;
518 TutorialDlg *m_tutorialDlg;
519
520 CmdMediator *m_cmdMediator;
521 CmdStackShadow *m_cmdStackShadow;
522
523 // State machine for user interface states
524 DigitizeStateContext *m_digitizeStateContext;
525
526 // State machine for transformation states
527 TransformationStateContext *m_transformationStateContext;
528
529 // State machine for background image
530 BackgroundStateContext *m_backgroundStateContext;
531
532 DlgSettingsAxesChecker *m_dlgSettingsAxesChecker;
533 DlgSettingsColorFilter *m_dlgSettingsColorFilter;
534 DlgSettingsCoords *m_dlgSettingsCoords;
535 DlgSettingsCurveAddRemove *m_dlgSettingsCurveAddRemove;
536 DlgSettingsCurveProperties *m_dlgSettingsCurveProperties;
537 DlgSettingsDigitizeCurve * m_dlgSettingsDigitizeCurve;
538 DlgSettingsExportFormat *m_dlgSettingsExportFormat;
539 DlgSettingsGeneral *m_dlgSettingsGeneral;
540 DlgSettingsGridRemoval *m_dlgSettingsGridRemoval;
541 DlgSettingsMainWindow *m_dlgSettingsMainWindow;
542 DlgSettingsPointMatch *m_dlgSettingsPointMatch;
543 DlgSettingsSegments *m_dlgSettingsSegments;
544
545 // Crash reports
546 QString m_startingDocumentSnapshot; // Serialized snapshot of document at startup. Included in error report if user approves
547 NetworkClient *m_networkClient;
548
549 // Main window settings
550 bool m_isGnuplot; // From command line
551 MainWindowModel m_modelMainWindow; // From settings file or DlgSettingsMainWindow
552
553 // File names to be loaded at startup. Only one is loaded into the current instance, with external instances created for the other files
554 QTimer *m_timerLoadStartupFiles;
555 QStringList m_loadStartupFiles;
556
557 // Ghosts that are created for seeing all coordinate systems at once, when there are multiple coordinate systems
558 Ghosts *m_ghosts;
559
560 // Timers for regression testing. Neither or one is first started by the constructor for this class, but the first timeout
561 // (and all succeeding timeouts) will be from after QMainWindow::exec is called. Each timeout results in one command
562 // from the command stack getting executed
563 QTimer *m_timerRegressionErrorReport;
564 FileCmdScript *m_fileCmdScript;
565 QTimer *m_timerRegressionFileCmdScript;
566 QString m_regressionFile;
567};
568
569#endif // MAIN_WINDOW_H
Context class that manages the background image state machine.
Dockable text window containing checklist guide.
Command queue stack.
Definition CmdMediator.h:24
Command stack that shadows the CmdMediator command stack at startup when reading commands from an err...
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
Definition CurveStyles.h:23
Container for all graph curves. The axes point curve is external to this class.
Container for all DigitizeStateAbstractBase subclasses. This functions as the context class in a stan...
Dialog for editing axes checker settings.
Dialog for editing filtering settings.
Dialog for editing coordinates settings.
Dialog for editing curve names settings.
Dialog for editing curve properties settings.
Dialog for editing DigitizeStateCurve settings.
Dialog for editing exporting settings.
Dialog for editing general settings.
Dialog for editing grid removal settings.
Dialog for editing main window settings, which are entirely independent of all documents.
Dialog for editing point match settings, for DigitizeStatePointMatch.
Dialog for editing Segments settings, for DigitizeStateSegment.
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Model for DlgSettingsCoords and CmdSettingsCoords.
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
Model for DlgSettingsSegments and CmdSettingsSegments.
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
File that manages a command stack for regression testing of file import/open/export/close.
Class for showing points and lines for all coordinate systems simultaneously, even though the code no...
Definition Ghosts.h:27
Add point and line handling to generic QGraphicsScene.
QGraphicsView class with event handling added. Typically the events are sent to the active digitizing...
Dockable help window.
Definition HelpWindow.h:14
Load QImage from url. This is trivial for a file, but requires an asynchronous download step for http...
Model for DlgSettingsMainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:78
void updateSettingsGridRemoval(const DocumentModelGridRemoval &modelGridRemoval)
Update with new grid removal properties.
void showTemporaryMessage(const QString &temporaryMessage)
Show temporary message in status bar.
CmdMediator * cmdMediator()
Accessor for commands to process the Document.
virtual bool eventFilter(QObject *, QEvent *)
Catch secret keypresses.
void updateSettingsAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)
Update with new axes indicator properties.
virtual void showEvent(QShowEvent *)
Processing performed after gui becomes available.
void updateSettingsDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)
Update with new curve digitization styles.
bool isGnuplot() const
Get method for gnuplot flag.
void updateSettingsCurveStyles(const CurveStyles &modelCurveStyles)
Update with new curve styles.
bool transformIsDefined() const
Return true if all three axis points have been defined.
MainWindowModel modelMainWindow() const
Get method for main window model.
void cmdFileOpen(const QString &fileName)
Open file. This is called from a file script command.
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
void updateSettingsExportFormat(const DocumentModelExportFormat &modelExport)
Update with new export properties.
void updateSettingsSegments(const DocumentModelSegments &modelSegments)
Update with new segments properties.
BackgroundImage selectOriginal(BackgroundImage backgroundImage)
Make original background visible, for DigitizeStateColorPicker.
void updateSettingsCurveAddRemove(const CurvesGraphs &curvesGraphs)
Update with new curves.
void saveErrorReportFileAndExit(const char *comment, const char *file, int line, const char *context) const
Save error report and exit.
void cmdFileExport(const QString &fileName)
Export file. This is called from a file script command.
void updateViewsOfSettings(const QString &activeCurve)
Update curve-specific view of settings. Private version gets active curve name from DigitizeStateCont...
void updateSettingsMainWindow(const MainWindowModel &modelMainWindow)
Update with new main window properties.
void cmdFileClose()
Close file. This is called from a file script command.
void updateDigitizeStateIfSoftwareTriggered(DigitizeState digitizeState)
After software-triggered state transition, this method manually triggers the action as if user had cl...
void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral)
Update with new general properties.
void signalZoom(int)
Send zoom selection, picked from menu or keystroke, to StatusBar.
void updateSettingsPointMatch(const DocumentModelPointMatch &modelPointMatch)
Update with new point match properties.
void cmdFileImport(const QString &fileName)
Import file. This is called from a file script command.
void updateGraphicsLinesToMatchGraphicsPoints()
Update the graphics lines so they follow the graphics points, after a drag, addition,...
QImage imageFiltered() const
Background image that has been filtered for the current curve. This asserts if a curve-specific image...
QString selectedGraphCurve() const
Curve name that is currently selected in m_cmbCurve.
GraphicsScene & scene()
Scene container for the QImage and QGraphicsItems.
void updateAfterMouseRelease()
Call MainWindow::updateControls (which is private) after the very specific case - a mouse press/relea...
void resizeEvent(QResizeEvent *event)
Intercept resize event so graphics scene can be appropriately resized when in Fill mode.
Transformation transformation() const
Return read-only copy of transformation.
void updateSettingsColorFilter(const DocumentModelColorFilter &modelColorFilter)
Update with new color filter properties.
void updateCoordSystem(CoordSystemIndex coordSystemIndex)
Select a different CoordSystem.
void updateSettingsCoords(const DocumentModelCoords &modelCoords)
Update with new coordinate properties.
GraphicsView & view()
View for the QImage and QGraphicsItems, without const.
Client for interacting with Engauge server.
Wrapper around QStatusBar to manage permanent widgets.
Definition StatusBar.h:22
Context class for transformation state machine.
Affine transformation between screen and graph coordinates, based on digitized axis points.
Tutorial using a strategy like a comic strip with decision points deciding which panels appear.
Definition TutorialDlg.h:20
Class that displays a view of the current Curve's point style.
Class that displays the current Segment Filter in a MainWindow toolbar.