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