Engauge Digitizer  2
MainWindow.h
Go to the documentation of this file.
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"
15 #include "GridLines.h"
16 #include "MainWindowModel.h"
17 #include <QCursor>
18 #include <QMainWindow>
19 #include <QMap>
20 #include <QUrl>
21 #include "Transformation.h"
22 #include "ZoomControl.h"
23 #include "ZoomFactor.h"
24 #include "ZoomFactorInitial.h"
25 
27 class ChecklistGuide;
28 class CmdMediator;
29 class CmdStackShadow;
30 class CurveStyles;
34 class DlgSettingsCoords;
39 class DlgSettingsGeneral;
55 class ExportToFile;
56 class FileCmdScript;
57 class FittingCurve;
58 class FittingWindow;
59 class GeometryWindow;
60 class Ghosts;
61 class GraphicsScene;
62 class GraphicsView;
63 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
64 class HelpWindow;
65 #endif
66 class LoadImageFromUrl;
67 class NetworkClient;
68 class QAction;
69 class QActionGroup;
70 class QCloseEvent;
71 class QComboBox;
72 class QDomDocument;
73 class QGraphicsLineItem;
74 class QMenu;
75 class QPushButton;
76 class QSettings;
77 class QSignalMapper;
78 class QTextStream;
79 class QTimer;
80 class QToolBar;
81 class QVBoxLayout;
82 class StatusBar;
84 class TutorialDlg;
85 class ViewPointStyle;
86 class ViewSegmentFilter;
87 
88 extern const unsigned int MAX_RECENT_FILE_LIST_SIZE;
89 
91 class MainWindow : public QMainWindow
92 {
93  Q_OBJECT
94 
96  friend class CreateActions;
97  friend class CreateCentralWidget;
99  friend class CreateDockableWidgets;
100  friend class CreateFacade;
101  friend class CreateHelpWindow;
102  friend class CreateIcons;
103  friend class CreateLoadImage;
104  friend class CreateMenus;
105  friend class CreateNetwork;
106  friend class CreateScene;
107  friend class CreateSettingsDialogs;
108  friend class CreateStateContexts;
109  friend class CreateStatusBar;
110  friend class CreateToolBars;
111  friend class CreateTutorial;
112  friend class CreateZoomMaps;
113 
115  friend class TestExport;
116 
117 public:
131  MainWindow(const QString &errorReportFile,
132  const QString &fileCmdScriptFile,
133  bool isDropRegression,
134  bool isRegressionTest,
135  bool isGnuplot,
136  bool isReset,
137  bool isExportOnly,
138  bool isExtractImageOnly,
139  const QString &extractImageOnlyExtension,
140  const QStringList &loadStartupFiles,
141  const QStringList &commandLineWithoutLoadStartupFiles,
142  QWidget *parent = nullptr);
143  ~MainWindow();
144 
146  void cmdFileClose();
147 
149  void cmdFileExport(const QString &fileName);
150 
152  void cmdFileImport(const QString &fileName);
153 
155  void cmdFileOpen(const QString &fileName);
156 
159 
161  virtual bool eventFilter(QObject *, QEvent *);
162 
164  QImage imageFiltered () const;
165 
167  bool isGnuplot() const;
168 
171 
173  bool modeMap () const;
174 
176  void resizeEvent (QResizeEvent *event);
177 
179  void saveErrorReportFileAndExit(const char *comment,
180  const char *file,
181  int line,
182  const char *context);
183 
185  GraphicsScene &scene();
186 
190 
192  QString selectedGraphCurve () const;
193 
195  virtual void showEvent(QShowEvent *);
196 
198  void showTemporaryMessage (const QString &temporaryMessage);
199 
202 
204  bool transformIsDefined() const;
205 
207  void updateAfterCommand();
208 
211 
213  void updateCoordSystem(CoordSystemIndex coordSystemIndex);
214 
217 
221 
223  void updateSettingsAxesChecker(const DocumentModelAxesChecker &modelAxesChecker);
224 
226  void updateSettingsColorFilter(const DocumentModelColorFilter &modelColorFilter);
227 
229  void updateSettingsCoords(const DocumentModelCoords &modelCoords);
230 
232  void updateSettingsCurveList (const CurvesGraphs &curvesGraphs);
233 
235  void updateSettingsCurveStyles(const CurveStyles &modelCurveStyles);
236 
238  void updateSettingsDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve);
239 
241  void updateSettingsExportFormat(const DocumentModelExportFormat &modelExport);
242 
244  void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral);
245 
247  void updateSettingsGridDisplay(const DocumentModelGridDisplay &modelGridDisplay);
248 
250  void updateSettingsGridRemoval(const DocumentModelGridRemoval &modelGridRemoval);
251 
254 
256  void updateSettingsPointMatch(const DocumentModelPointMatch &modelPointMatch);
257 
259  void updateSettingsSegments(const DocumentModelSegments &modelSegments);
260 
262  void updateViewsOfSettings (const QString &activeCurve);
263 
265  GraphicsView &view ();
266 
268  const GraphicsView &view () const;
269 
270 private slots:
271  void slotBtnPrintAll();
272  void slotBtnShowAllPressed();
273  void slotBtnShowAllReleased();
274  void slotCanRedoChanged (bool);
275  void slotCanUndoChanged (bool);
276  void slotChecklistClosed ();
277  void slotCleanChanged (bool);
278  void slotCmbBackground(int);
279  void slotCmbCoordSystem(int);
280  void slotCmbCurve(int);
281  void slotContextMenuEventAxis (QString);
282  void slotContextMenuEventGraph (QStringList);
283  void slotDigitizeAxis ();
284  void slotDigitizeColorPicker ();
285  void slotDigitizeCurve ();
286  void slotDigitizePointMatch ();
287  void slotDigitizeScale ();
288  void slotDigitizeSegment ();
289  void slotDigitizeSelect ();
290  void slotEditCopy ();
291  void slotEditCut ();
292  void slotEditDelete ();
293  void slotEditMenu ();
294  void slotEditPaste ();
295  void slotEditPasteAsNew ();
296  void slotEditPasteAsNewAdvanced ();
297  void slotFileClose ();
298  void slotFileExport ();
299  void slotFileImport();
300  void slotFileImportAdvanced();
301  void slotFileImportDraggedImage(QImage);
302  void slotFileImportDraggedImageUrl(QUrl);
303  void slotFileImportImage(QString, QImage);
304  void slotFileImportImageReplace();
305  void slotFileOpen();
306  void slotFileOpenDraggedDigFile (QString);
307  void slotFilePrint();
308  bool slotFileSave();
309  bool slotFileSaveAs();
310  void slotFittingWindowClosed();
311  void slotFittingWindowCurveFit(FittingCurveCoefficients, double, double, bool, bool);
312  void slotGeometryWindowClosed();
313  void slotHelpAbout();
314  void slotHelpTutorial();
315  void slotKeyPress (Qt::Key, bool);
316  void slotLoadStartupFiles ();
317  void slotMouseMove (QPointF);
318  void slotMousePress (QPointF);
319  void slotMouseRelease (QPointF);
320  void slotRecentFileAction ();
321  void slotRecentFileClear ();
322  void slotRedoTextChanged (const QString &);
323  void slotSettingsAxesChecker ();
324  void slotSettingsColorFilter ();
325  void slotSettingsCoords ();
326  void slotSettingsCurveList ();
327  void slotSettingsCurveProperties ();
328  void slotSettingsDigitizeCurve ();
329  void slotSettingsExportFormat ();
330  void slotSettingsGeneral ();
331  void slotSettingsGridDisplay ();
332  void slotSettingsGridRemoval ();
333  void slotSettingsMainWindow ();
334  void slotSettingsPointMatch ();
335  void slotSettingsSegments ();
336  void slotTableStatusChange ();
337  void slotTimeoutRegressionErrorReport ();
338  void slotTimeoutRegressionFileCmdScript ();
339  void slotUndoTextChanged (const QString &);
340  void slotViewGridLines ();
341  void slotViewGroupBackground(QAction*);
342  void slotViewGroupCurves(QAction*);
343  void slotViewGroupStatus(QAction*);
344  void slotViewToolBarBackground ();
345  void slotViewToolBarChecklistGuide ();
346  void slotViewToolBarCoordSystem ();
347  void slotViewToolBarDigitize ();
348  void slotViewToolBarFittingWindow ();
349  void slotViewToolBarGeometryWindow ();
350  void slotViewToolBarSettingsViews ();
351  void slotViewToolTips ();
352  void slotViewZoomFactor (ZoomFactor);
353  void slotViewZoomFactorInt (int);
354  void slotViewZoom (int);
355  void slotViewZoomIn ();
356  void slotViewZoomInFromWheelEvent ();
357  void slotViewZoomOut ();
358  void slotViewZoomOutFromWheelEvent ();
359 
360 signals:
362  void signalDropRegression(QString);
363 
365  void signalZoom(int);
366 
367 private:
368  MainWindow();
369 
370  enum ImportType {
371  IMPORT_TYPE_SIMPLE,
372  IMPORT_TYPE_ADVANCED,
373  IMPORT_TYPE_IMAGE_REPLACE
374  };
375 
376  void addDockWindow (QDockWidget *dockWidget,
377  QSettings &settings,
378  const QString &settingsTokenArea,
379  const QString &settingsTokenGeometry,
380  Qt::DockWidgetArea dockWidgetArea);
381  void applyZoomFactorAfterLoad();
382  virtual void closeEvent(QCloseEvent *event);
383  ZoomFactor currentZoomFactor () const;
384 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
385  void exportAllCoordinateSystemsAfterRegressionTests();
386 #endif
387  QString exportRegressionFilenameFromInputFilename (const QString &fileName) const;
388  void fileExport(const QString &fileName,
389  ExportToFile exportStrategy);
390  void fileExtractImage (const QString &fileName);
391  void fileImport (const QString &fileName,
392  ImportType ImportType);
393  void fileImportWithPrompts (ImportType ImportType);
394  QString fileNameForExportOnly () const;
395  QString fileNameForExtractImageOnly () const;
396  void filePaste (ImportType importType);
397  void ghostsCreate ();
398  void ghostsDestroy ();
399  void handlerFileExtractImage ();
400  void loadCoordSystemListFromCmdMediator();
401  void loadCurveListFromCmdMediator();
402  void loadDocumentFile (const QString &fileName);
403  void loadErrorReportFile(const QString &errorReportFile);
404  bool loadImage (const QString &fileName,
405  const QImage &image,
406  ImportType ImportType);
407  bool loadImageNewDocument (const QString &fileName,
408  const QImage &image,
409  ImportType ImportType);
410  bool loadImageReplacingImage (const QString &fileName,
411  const QImage &image,
412  ImportType ImportType);
413  void loadInputFileForErrorReport(QDomDocument &domInputFile) const;
414  void loadToolTips ();
415  bool maybeSave();
416  DocumentModelExportFormat modelExportOverride (const DocumentModelExportFormat &modelExportFormatBefore,
417  const ExportToFile &exportStrategy,
418  const QString &selectedNameFilter) const;
419  bool modeGraph () const; // True if document is loaded and it has all graphs
420  void rebuildRecentFileListForCurrentFile(const QString &filePath);
421  bool saveDocumentFile(const QString &fileName);
422  QString saveErrorReportFileAndExitXml (const char *comment,
423  const char *file,
424  int line,
425  const char *context) const;
426  void saveStartingDocumentSnapshot();
427  void setCurrentFile(const QString &fileName);
428  void setCurrentPathFromFile (const QString &fileName);
429  void setNonFillZoomFactor (ZoomFactor newZoomFactor);
430  void setPixmap (const QString &curveSelected,
431  const QPixmap &pixmap);
432  void settingsRead (bool isReset);
433  void settingsReadEnvironment (QSettings &settings);
434  void settingsReadMainWindow (QSettings &settings);
435  void settingsWrite ();
436  bool setupAfterLoadNewDocument (const QString &fileName,
437  const QString &temporaryMessage,
438  ImportType ImportType);
439  bool setupAfterLoadReplacingImage (const QString &fileName,
440  const QString &temporaryMessage,
441  ImportType ImportType);
442  void startRegressionTestErrorReport (const QString &regressionInputFile);
443  void startRegressionDropTest (const QStringList &loadStartupFiles);
444  void startRegressionTestFileCmdScript ();
445  void updateAfterCommandStatusBarCoords ();
446  void updateChecklistGuide ();
447  void updateControls (); // Update the widgets (typically in terms of show/hide state) depending on the application state.
448  void updateFittingWindow ();
449  void updateGeometryWindow ();
450  void updateGridLines();
451  void updateHighlightOpacity();
452  void updateRecentFileList();
453  void updateSettingsMainWindow();
454  void updateSmallDialogs();
455  void updateTransformationAndItsDependencies();
456  void updateViewedCurves ();
457  void updateViewsOfSettings (); // Private version gets active curve name from DigitizeContext
458  void updateWindowTitle ();
459  void writeCheckpointToLogFile();
460 
461  QString m_originalFile; // Original filename for error report
462  bool m_originalFileWasImported; // True/false for imported/opened
463  bool m_isDocumentExported;
464  QString m_engaugeFile; // Not empty when a Document is currently loaded AND it was loaded and/or saved as an Engauge file
465  QString m_currentFile; // Not empty when a Document is currently loaded. No path or file extension
466  QString m_currentFileWithPathAndFileExtension; // Adds path and file extension to m_currentFile. For display
467  MainTitleBarFormat m_titleBarFormat;
468 
469  QMenu *m_menuFile;
470  QAction *m_actionImport;
471  QAction *m_actionImportAdvanced;
472  QAction *m_actionImportImageReplace;
473  QAction *m_actionOpen;
474  QMenu *m_menuFileOpenRecent;
475  QList<QAction*> m_actionRecentFiles;
476  QAction *m_actionClose;
477  QAction *m_actionSave;
478  QAction *m_actionSaveAs;
479  QAction *m_actionExport;
480  QAction *m_actionPrint;
481  QAction *m_actionExit;
482 
483  QMenu *m_menuEdit;
484  QAction *m_actionEditUndo;
485  QAction *m_actionEditRedo;
486  QAction *m_actionEditCut;
487  QAction *m_actionEditCopy;
488  QAction *m_actionEditPaste;
489  QAction *m_actionEditDelete;
490  QAction *m_actionEditPasteAsNew;
491  QAction *m_actionEditPasteAsNewAdvanced;
492 
493  QMenu *m_menuDigitize;
494  QActionGroup *m_groupDigitize;
495  QAction *m_actionDigitizeSelect;
496  QAction *m_actionDigitizeAxis;
497  QAction *m_actionDigitizeScale;
498  QAction *m_actionDigitizeCurve;
499  QAction *m_actionDigitizePointMatch;
500  QAction *m_actionDigitizeColorPicker;
501  QAction *m_actionDigitizeSegment;
502 
503  QMenu *m_menuView;
504  QAction *m_actionViewBackground;
505  QAction *m_actionViewChecklistGuide;
506  QAction *m_actionViewCoordSystem;
507  QAction *m_actionViewDigitize;
508  QAction *m_actionViewFittingWindow;
509  QAction *m_actionViewGeometryWindow;
510  QAction *m_actionViewSettingsViews;
511  QAction *m_actionViewToolTips;
512  QAction *m_actionViewGridLines;
513  QMenu *m_menuViewBackground;
514  QActionGroup *m_groupBackground;
515  QAction *m_actionViewBackgroundNone;
516  QAction *m_actionViewBackgroundOriginal;
517  QAction *m_actionViewBackgroundFiltered;
518  QMenu *m_menuViewCurves;
519  QActionGroup *m_groupCurves;
520  QAction *m_actionViewCurvesNone;
521  QAction *m_actionViewCurvesSelected;
522  QAction *m_actionViewCurvesAll;
523  QMenu *m_menuViewStatus;
524  QActionGroup *m_groupStatus;
525  QAction *m_actionStatusNever;
526  QAction *m_actionStatusTemporary;
527  QAction *m_actionStatusAlways;
528  QMenu *m_menuViewZoom;
529  QAction *m_actionZoomOut;
530  QAction *m_actionZoomIn;
531  QActionGroup *m_groupZoom;
532  QSignalMapper *m_mapperZoomFactor;
533  QAction *m_actionZoomFill;
534  QAction *m_actionZoom16To1;
535  QAction *m_actionZoom16To1Farther;
536  QAction *m_actionZoom8To1Closer;
537  QAction *m_actionZoom8To1;
538  QAction *m_actionZoom8To1Farther;
539  QAction *m_actionZoom4To1Closer;
540  QAction *m_actionZoom4To1;
541  QAction *m_actionZoom4To1Farther;
542  QAction *m_actionZoom2To1Closer;
543  QAction *m_actionZoom2To1;
544  QAction *m_actionZoom2To1Farther;
545  QAction *m_actionZoom1To1Closer;
546  QAction *m_actionZoom1To1;
547  QAction *m_actionZoom1To1Farther;
548  QAction *m_actionZoom1To2Closer;
549  QAction *m_actionZoom1To2;
550  QAction *m_actionZoom1To2Farther;
551  QAction *m_actionZoom1To4Closer;
552  QAction *m_actionZoom1To4;
553  QAction *m_actionZoom1To4Farther;
554  QAction *m_actionZoom1To8Closer;
555  QAction *m_actionZoom1To8;
556  QAction *m_actionZoom1To8Farther;
557  QAction *m_actionZoom1To16Closer;
558  QAction *m_actionZoom1To16;
559 
560  QMenu *m_menuSettings;
561  QAction *m_actionSettingsAxesChecker;
562  QAction *m_actionSettingsColorFilter;
563  QAction *m_actionSettingsCoords;
564  QAction *m_actionSettingsCurveList;
565  QAction *m_actionSettingsCurveProperties;
566  QAction *m_actionSettingsDigitizeCurve;
567  QAction *m_actionSettingsExport;
568  QAction *m_actionSettingsGeneral;
569  QAction *m_actionSettingsGridDisplay;
570  QAction *m_actionSettingsGridRemoval;
571  QAction *m_actionSettingsMainWindow;
572  QAction *m_actionSettingsPointMatch;
573  QAction *m_actionSettingsSegments;
574 
575  QMenu *m_menuHelp;
576  QAction *m_actionHelpAbout;
577  QAction *m_actionHelpChecklistGuideWizard;
578  QAction *m_actionHelpHelp;
579  QAction *m_actionHelpTutorial;
580  QAction *m_actionHelpWhatsThis;
581 
582  QVBoxLayout *m_layout;
583  GraphicsScene *m_scene;
584  GraphicsView *m_view;
585 
586  StatusBar *m_statusBar;
587  Transformation m_transformation;
588 
589  QComboBox *m_cmbCurve;
590  QToolBar *m_toolDigitize;
591  LoadImageFromUrl *m_loadImageFromUrl;
592 
593  QComboBox *m_cmbBackground;
594  QToolBar *m_toolBackground;
595 
596  ViewPointStyle *m_viewPointStyle;
597  ViewSegmentFilter *m_viewSegmentFilter;
598  QToolBar *m_toolSettingsViews;
599  ChecklistGuide *m_dockChecklistGuide;
600  FittingWindow *m_dockFittingWindow;
601  GeometryWindow *m_dockGeometryWindow;
602 
603  QComboBox *m_cmbCoordSystem;
604  QPushButton *m_btnPrintAll;
605  QPushButton *m_btnShowAll;
606  QToolBar *m_toolCoordSystem;
607 
608 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
609  HelpWindow *m_helpWindow;
610 #endif
611  TutorialDlg *m_tutorialDlg;
612 
613  CmdMediator *m_cmdMediator;
614  CmdStackShadow *m_cmdStackShadow;
615 
616  // State machine for user interface states
617  DigitizeStateContext *m_digitizeStateContext;
618 
619  // State machine for transformation states
620  TransformationStateContext *m_transformationStateContext;
621 
622  // State machine for background image
623  BackgroundStateContext *m_backgroundStateContext;
624 
625  DlgSettingsAxesChecker *m_dlgSettingsAxesChecker;
626  DlgSettingsColorFilter *m_dlgSettingsColorFilter;
627  DlgSettingsCoords *m_dlgSettingsCoords;
628  DlgSettingsCurveList *m_dlgSettingsCurveList;
629  DlgSettingsCurveProperties *m_dlgSettingsCurveProperties;
630  DlgSettingsDigitizeCurve *m_dlgSettingsDigitizeCurve;
631  DlgSettingsExportFormat *m_dlgSettingsExportFormat;
632  DlgSettingsGeneral *m_dlgSettingsGeneral;
633  DlgSettingsGridDisplay *m_dlgSettingsGridDisplay;
634  DlgSettingsGridRemoval *m_dlgSettingsGridRemoval;
635  DlgSettingsMainWindow *m_dlgSettingsMainWindow;
636  DlgSettingsPointMatch *m_dlgSettingsPointMatch;
637  DlgSettingsSegments *m_dlgSettingsSegments;
638 
639  // Crash reports
640  QString m_startingDocumentSnapshot; // Serialized snapshot of document at startup. Included in error report if user approves
641  NetworkClient *m_networkClient;
642 
643  // Main window settings
644  bool m_isGnuplot; // From command line
645  MainWindowModel m_modelMainWindow; // From settings file or DlgSettingsMainWindow
646 
647  // File names to be loaded at startup. Only one is loaded into the current instance, with external instances created for the other files
648  QTimer *m_timerLoadStartupFiles;
649  QStringList m_loadStartupFiles;
650 
651  // Command line arguments with load startup files omitted
652  QStringList m_commandLineWithoutLoadStartupFiles;
653 
654  // Ghosts that are created for seeing all coordinate systems at once, when there are multiple coordinate systems
655  Ghosts *m_ghosts;
656 
657  // Timers for regression testing. Neither or one is first started by the constructor for this class, but the first timeout
658  // (and all succeeding timeouts) will be from after QMainWindow::exec is called. Each timeout results in one command
659  // from the command stack getting executed
660  QTimer *m_timerRegressionErrorReport;
661  FileCmdScript *m_fileCmdScript;
662  bool m_isErrorReportRegressionTest;
663  QTimer *m_timerRegressionFileCmdScript;
664  QString m_regressionFile;
665  QString m_startupDirectory; // Used to restore original directory just before outputing regression test results, since
666  // directory changes when settings are read, and also when files are opened or imported.
667  // Restoring the directory means relative paths in the regression scripts will work consistently
668 
669  // Grid lines
670  GridLines m_gridLines;
671 
672  // Map to/from/between zoom enumerations. These eliminate the need for switch statements
673  QMap<ZoomFactorInitial, ZoomFactor> m_zoomMapFromInitial;
674  QMap<ZoomFactor, QAction*> m_zoomMapToAction;
675 
676  // Fitted curve. Null if not currently applicable/defined
677  FittingCurve *m_fittingCurve;
678 
679  // Export the single dig file that was loaded in the command line, as enforced by parseCmdLine
680  bool m_isExportOnly;
681 
682  // Extract the image from the single dig file that was loaded in the command line, as enforced by parseCmdLine
683  bool m_isExtractImageOnly;
684  QString m_extractImageOnlyExtension;
685 };
686 
687 #endif // MAIN_WINDOW_H
MainWindow::updateSettingsAxesChecker
void updateSettingsAxesChecker(const DocumentModelAxesChecker &modelAxesChecker)
Update with new axes indicator properties.
Definition: MainWindow.cpp:3584
MainWindow::updateAfterMouseRelease
void updateAfterMouseRelease()
Call MainWindow::updateControls (which is private) after the very specific case - a mouse press/relea...
Definition: MainWindow.cpp:3320
DlgSettingsCoords
Dialog for editing coordinates settings.
Definition: DlgSettingsCoords.h:26
CreateHelpWindow
Class to create help window for MainWindow class.
Definition: CreateHelpWindow.h:15
MainWindow::updateSettingsCurveStyles
void updateSettingsCurveStyles(const CurveStyles &modelCurveStyles)
Update with new curve styles.
Definition: MainWindow.cpp:3634
MainWindow::cmdMediator
CmdMediator * cmdMediator()
Accessor for commands to process the Document.
Definition: MainWindow.cpp:349
MAX_RECENT_FILE_LIST_SIZE
const unsigned int MAX_RECENT_FILE_LIST_SIZE
Definition: MainWindow.cpp:129
DlgSettingsExportFormat
Dialog for editing exporting settings.
Definition: DlgSettingsExportFormat.h:27
CreateScene
Class to create QGraphicsScene for MainWindow class.
Definition: CreateScene.h:15
ZoomFactor.h
DigitizeStateContext
Container for all DigitizeStateAbstractBase subclasses. This functions as the context class in a stan...
Definition: DigitizeStateContext.h:26
MainWindow::resizeEvent
void resizeEvent(QResizeEvent *event)
Intercept resize event so graphics scene can be appropriately resized when in Fill mode.
Definition: MainWindow.cpp:1254
MainWindow::updateSettingsGeneral
void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral)
Update with new general properties.
Definition: MainWindow.cpp:3659
FittingCurveCoefficients
QVector< double > FittingCurveCoefficients
Coefficients x0, x1, ... in y = a0 + a1 * x + a2 * x^2 + ...
Definition: FittingCurveCoefficients.h:12
CreateCentralWidget
Class to the central QWidget for MainWindow class.
Definition: CreateCentralWidget.h:15
Ghosts
Class for showing points and lines for all coordinate systems simultaneously, even though the code no...
Definition: Ghosts.h:25
TutorialDlg
Tutorial using a strategy like a comic strip with decision points deciding which panels appear.
Definition: TutorialDlg.h:18
MainWindowModel.h
MainWindow::signalZoom
void signalZoom(int)
Send zoom selection, picked from menu or keystroke, to StatusBar.
CreateStateContexts
Class to create state contexts, which wrap state machine design patterns, for MainWindow class.
Definition: CreateStateContexts.h:16
MainWindow::updateSettingsSegments
void updateSettingsSegments(const DocumentModelSegments &modelSegments)
Update with new segments properties.
Definition: MainWindow.cpp:3724
CreateSettingsDialogs
Class to create settings dialogs for MainWindow class.
Definition: CreateSettingsDialogs.h:15
DlgSettingsSegments
Dialog for editing Segments settings, for DigitizeStateSegment.
Definition: DlgSettingsSegments.h:26
MainWindow::updateSettingsColorFilter
void updateSettingsColorFilter(const DocumentModelColorFilter &modelColorFilter)
Update with new color filter properties.
Definition: MainWindow.cpp:3604
DocumentModelGridDisplay
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
Definition: DocumentModelGridDisplay.h:17
DlgSettingsGridDisplay
Dialog for editing grid display settings.
Definition: DlgSettingsGridDisplay.h:25
BackgroundImage.h
MainWindow::updateSettingsMainWindow
void updateSettingsMainWindow(const MainWindowModel &modelMainWindow)
Update with new main window properties.
Definition: MainWindow.cpp:3709
MainWindow::selectedGraphCurve
QString selectedGraphCurve() const
Curve name that is currently selected in m_cmbCurve.
Definition: MainWindow.cpp:1478
CreateLoadImage
Class to create LoadImageFromUrl for MainWindow class.
Definition: CreateLoadImage.h:15
CreateDockableWidgets
Class to create QDockWidget items for MainWindow class.
Definition: CreateDockableWidgets.h:15
MainWindow::modeMap
bool modeMap() const
True if document scale is set using a scale bar, otherwise using axis points.
Definition: MainWindow.cpp:1171
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
DlgSettingsPointMatch
Dialog for editing point match settings, for DigitizeStatePointMatch.
Definition: DlgSettingsPointMatch.h:23
MainWindow::updateSettingsExportFormat
void updateSettingsExportFormat(const DocumentModelExportFormat &modelExport)
Update with new export properties.
Definition: MainWindow.cpp:3652
DlgSettingsCurveProperties
Dialog for editing curve properties settings.
Definition: DlgSettingsCurveProperties.h:22
MainWindow::~MainWindow
~MainWindow()
Definition: MainWindow.cpp:230
ViewPointStyle
Class that displays a view of the current Curve's point style.
Definition: ViewPointStyle.h:15
MainWindow::signalDropRegression
void signalDropRegression(QString)
Send drag and drop regression test url.
MainWindow::modelMainWindow
MainWindowModel modelMainWindow() const
Get method for main window model.
Definition: MainWindow.cpp:1231
MainWindow::cmdFileImport
void cmdFileImport(const QString &fileName)
Import file. This is called from a file script command.
Definition: MainWindow.cpp:332
DocumentModelColorFilter
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Definition: DocumentModelColorFilter.h:20
MainWindow::showEvent
virtual void showEvent(QShowEvent *)
Processing performed after gui becomes available.
Definition: MainWindow.cpp:1893
CoordSystemIndex
unsigned int CoordSystemIndex
Zero-based index for identifying CoordSystem instantiations.
Definition: CoordSystemIndex.h:10
DigitizeStateAbstractBase.h
MainWindow::updateSettingsCoords
void updateSettingsCoords(const DocumentModelCoords &modelCoords)
Update with new coordinate properties.
Definition: MainWindow.cpp:3618
MainWindow::imageFiltered
QImage imageFiltered() const
Background image that has been filtered for the current curve. This asserts if a curve-specific image...
Definition: MainWindow.cpp:843
MainWindowModel
Model for DlgSettingsMainWindow.
Definition: MainWindowModel.h:29
CreateActions
Class to create actions for MainWindow class.
Definition: CreateActions.h:15
CreateFacade
Facade class that wraps around all of the create classes for MainWindow.
Definition: CreateFacade.h:15
GraphicsView
QGraphicsView class with event handling added. Typically the events are sent to the active digitizing...
Definition: GraphicsView.h:19
Transformation.h
CreateNetwork
Class to create network for MainWindow class.
Definition: CreateNetwork.h:15
ZoomFactor
ZoomFactor
Zoom factors ordered by zoom level so next one above/below is the next zoom level.
Definition: ZoomFactor.h:10
DocumentModelGeneral
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Definition: DocumentModelGeneral.h:15
MainWindow::updateAfterCommand
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
Definition: MainWindow.cpp:3240
StatusBar
Wrapper around QStatusBar to manage permanent widgets.
Definition: StatusBar.h:23
DlgSettingsAxesChecker
Dialog for editing axes checker settings.
Definition: DlgSettingsAxesChecker.h:23
CreateIcons
Class to create icons for MainWindow class.
Definition: CreateIcons.h:15
DlgSettingsCurveList
Dialog for editing curve names settings.
Definition: DlgSettingsCurveList.h:23
MainWindow
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:90
MainWindow::cmdFileOpen
void cmdFileOpen(const QString &fileName)
Open file. This is called from a file script command.
Definition: MainWindow.cpp:341
DocumentAxesPointsRequired.h
MainWindow::updateCoordSystem
void updateCoordSystem(CoordSystemIndex coordSystemIndex)
Select a different CoordSystem.
Definition: MainWindow.cpp:3416
MainWindow::cmdFileClose
void cmdFileClose()
Close file. This is called from a file script command.
Definition: MainWindow.cpp:315
TransformationStateContext
Context class for transformation state machine.
Definition: TransformationStateContext.h:20
FittingCurveCoefficients.h
DigitizeState
DigitizeState
Set of possible states of Digitize toolbar.
Definition: DigitizeStateAbstractBase.h:23
ExportToFile
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
Definition: ExportToFile.h:24
GraphicsScene
Add point and line handling to generic QGraphicsScene.
Definition: GraphicsScene.h:35
CreateCommandStackShadow
Class to create CmdStackShadow for MainWindow class.
Definition: CreateCommandStackShadow.h:15
MainWindow::transformation
Transformation transformation() const
Return read-only copy of transformation.
Definition: MainWindow.cpp:3230
MainWindow::eventFilter
virtual bool eventFilter(QObject *, QEvent *)
Catch secret keypresses.
Definition: MainWindow.cpp:370
FittingWindow
Window that displays curve fitting as applied to the currently selected curve.
Definition: FittingWindow.h:33
MainWindow::updateGraphicsLinesToMatchGraphicsPoints
void updateGraphicsLinesToMatchGraphicsPoints()
Update the graphics lines so they follow the graphics points, after a drag, addition,...
Definition: MainWindow.cpp:3514
CreateStatusBar
Class to create status bar for MainWindow class.
Definition: CreateStatusBar.h:15
GridLines
Container class for GridLine objects.
Definition: GridLines.h:17
DocumentModelExportFormat
Model for DlgSettingsExportFormat and CmdSettingsExportFormat.
Definition: DocumentModelExportFormat.h:22
DocumentModelSegments
Model for DlgSettingsSegments and CmdSettingsSegments.
Definition: DocumentModelSegments.h:16
MainWindow::view
GraphicsView & view()
View for the QImage and QGraphicsItems, without const.
Definition: MainWindow.cpp:3856
NetworkClient
Client for interacting with Engauge server.
Definition: NetworkClient.h:15
CurvesGraphs
Container for all graph curves. The axes point curve is external to this class.
Definition: CurvesGraphs.h:23
MainWindow::updateSettingsDigitizeCurve
void updateSettingsDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)
Update with new curve digitization styles.
Definition: MainWindow.cpp:3643
MainTitleBarFormat
MainTitleBarFormat
Format format in MainWindow title bar.
Definition: MainTitleBarFormat.h:10
ZoomFactorInitial.h
CreateMenus
Class to create menus for MainWindow class.
Definition: CreateMenus.h:15
MainWindow::transformIsDefined
bool transformIsDefined() const
Return true if all three axis points have been defined.
Definition: MainWindow.cpp:3235
FittingCurve
Curve that overlays the current scene so the regression-fitted curve is visible.
Definition: FittingCurve.h:15
DlgSettingsColorFilter
Dialog for editing filtering settings.
Definition: DlgSettingsColorFilter.h:28
CreateZoomMaps
Class to create zoom factor maps for MainWindow class.
Definition: CreateZoomMaps.h:15
MainWindow::selectOriginal
BackgroundImage selectOriginal(BackgroundImage backgroundImage)
Make original background visible, for DigitizeStateColorPicker.
Definition: MainWindow.cpp:1464
CmdStackShadow
Command stack that shadows the CmdMediator command stack at startup when reading commands from an err...
Definition: CmdStackShadow.h:29
DlgSettingsDigitizeCurve
Dialog for editing DigitizeStateCurve settings.
Definition: DlgSettingsDigitizeCurve.h:25
HelpWindow
Dockable help window.
Definition: HelpWindow.h:15
FileCmdScript
File that manages a command stack for regression testing of file import/open/export/close.
Definition: FileCmdScript.h:19
DocumentModelDigitizeCurve
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Definition: DocumentModelDigitizeCurve.h:17
MainWindow::updateSettingsCurveList
void updateSettingsCurveList(const CurvesGraphs &curvesGraphs)
Update with new curves.
Definition: MainWindow.cpp:3625
MainWindow::updateDigitizeStateIfSoftwareTriggered
void updateDigitizeStateIfSoftwareTriggered(DigitizeState digitizeState)
After software-triggered state transition, this method manually triggers the action as if user had cl...
Definition: MainWindow.cpp:3435
DocumentModelPointMatch
Model for DlgSettingsPointMatch and CmdSettingsPointMatch.
Definition: DocumentModelPointMatch.h:16
CmdMediator
Command queue stack.
Definition: CmdMediator.h:22
CoordSystemIndex.h
MainWindow::scene
GraphicsScene & scene()
Scene container for the QImage and QGraphicsItems.
Definition: MainWindow.cpp:1458
DocumentModelAxesChecker
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
Definition: DocumentModelAxesChecker.h:17
BackgroundImage
BackgroundImage
Background selection.
Definition: BackgroundImage.h:12
LoadImageFromUrl
Load QImage from url. This is trivial for a file, but requires an asynchronous download step for http...
Definition: LoadImageFromUrl.h:21
ViewSegmentFilter
Class that displays the current Segment Filter in a MainWindow toolbar.
Definition: ViewSegmentFilter.h:17
GridLines.h
MainWindow::updateSettingsPointMatch
void updateSettingsPointMatch(const DocumentModelPointMatch &modelPointMatch)
Update with new point match properties.
Definition: MainWindow.cpp:3717
DlgSettingsGridRemoval
Dialog for editing grid removal settings.
Definition: DlgSettingsGridRemoval.h:22
DocumentModelGridRemoval
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval. The settings are unstable until the user...
Definition: DocumentModelGridRemoval.h:16
DlgSettingsMainWindow
Dialog for editing main window settings, which are entirely independent of all documents.
Definition: DlgSettingsMainWindow.h:23
GeometryWindow
Window that displays the geometry information, as a table, for the current curve.
Definition: GeometryWindow.h:27
ZoomControl.h
MainWindow::showTemporaryMessage
void showTemporaryMessage(const QString &temporaryMessage)
Show temporary message in status bar.
Definition: MainWindow.cpp:1910
CurveStyles
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
Definition: CurveStyles.h:21
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition: DocumentModelCoords.h:19
MainWindow::cmdFileExport
void cmdFileExport(const QString &fileName)
Export file. This is called from a file script command.
Definition: MainWindow.cpp:323
BackgroundStateContext
Context class that manages the background image state machine.
Definition: BackgroundStateContext.h:31
ChecklistGuide
Dockable text window containing checklist guide.
Definition: ChecklistGuide.h:15
MainWindow::updateSettingsGridRemoval
void updateSettingsGridRemoval(const DocumentModelGridRemoval &modelGridRemoval)
Update with new grid removal properties.
Definition: MainWindow.cpp:3674
CreateToolBars
Class to create toolbars for MainWindow class.
Definition: CreateToolBars.h:15
MainWindow::saveErrorReportFileAndExit
void saveErrorReportFileAndExit(const char *comment, const char *file, int line, const char *context)
Save error report and exit.
Definition: MainWindow.cpp:1303
TestExport
Unit test of Export classes.
Definition: TestExport.h:16
CreateTutorial
Class to TutorialDlg for MainWindow class.
Definition: CreateTutorial.h:15
MainWindow::updateSettingsGridDisplay
void updateSettingsGridDisplay(const DocumentModelGridDisplay &modelGridDisplay)
Update with new grid display properties.
Definition: MainWindow.cpp:3666
DlgSettingsGeneral
Dialog for editing general settings.
Definition: DlgSettingsGeneral.h:17
MainWindow::isGnuplot
bool isGnuplot() const
Get method for gnuplot flag.
Definition: MainWindow.cpp:848
MainWindow::updateViewsOfSettings
void updateViewsOfSettings(const QString &activeCurve)
Update curve-specific view of settings. Private version gets active curve name from DigitizeStateCont...
Definition: MainWindow.cpp:3797