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  bool modeMap () const;
140 
142  void resizeEvent (QResizeEvent *event);
143 
145  void saveErrorReportFileAndExit(const char *comment,
146  const char *file,
147  int line,
148  const char *context) const;
149 
151  GraphicsScene &scene();
152 
155  BackgroundImage selectOriginal(BackgroundImage backgroundImage);
156 
158  QString selectedGraphCurve () const;
159 
161  virtual void showEvent(QShowEvent *);
162 
164  void showTemporaryMessage (const QString &temporaryMessage);
165 
168 
170  bool transformIsDefined() const;
171 
173  void updateAfterCommand();
174 
177 
179  void updateCoordSystem(CoordSystemIndex coordSystemIndex);
180 
182  void updateDigitizeStateIfSoftwareTriggered (DigitizeState digitizeState);
183 
187 
189  void updateSettingsAxesChecker(const DocumentModelAxesChecker &modelAxesChecker);
190 
192  void updateSettingsColorFilter(const DocumentModelColorFilter &modelColorFilter);
193 
195  void updateSettingsCoords(const DocumentModelCoords &modelCoords);
196 
198  void updateSettingsCurveAddRemove (const CurvesGraphs &curvesGraphs);
199 
201  void updateSettingsCurveStyles(const CurveStyles &modelCurveStyles);
202 
204  void updateSettingsDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve);
205 
207  void updateSettingsExportFormat(const DocumentModelExportFormat &modelExport);
208 
210  void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral);
211 
213  void updateSettingsGridDisplay(const DocumentModelGridDisplay &modelGridDisplay);
214 
216  void updateSettingsGridRemoval(const DocumentModelGridRemoval &modelGridRemoval);
217 
220 
222  void updateSettingsPointMatch(const DocumentModelPointMatch &modelPointMatch);
223 
225  void updateSettingsSegments(const DocumentModelSegments &modelSegments);
226 
228  void updateViewsOfSettings (const QString &activeCurve);
229 
231  GraphicsView &view ();
232 
234  const GraphicsView &view () const;
235 
236 private slots:
237  void slotBtnPrintAll();
238  void slotBtnShowAllPressed();
239  void slotBtnShowAllReleased();
240  void slotCanRedoChanged (bool);
241  void slotCanUndoChanged (bool);
242  void slotChecklistClosed ();
243  void slotCleanChanged (bool);
244  void slotCmbBackground(int);
245  void slotCmbCoordSystem(int);
246  void slotCmbCurve(int);
247  void slotContextMenuEventAxis (QString);
248  void slotContextMenuEventGraph (QStringList);
249  void slotDigitizeAxis ();
250  void slotDigitizeColorPicker ();
251  void slotDigitizeCurve ();
252  void slotDigitizePointMatch ();
253  void slotDigitizeScale ();
254  void slotDigitizeSegment ();
255  void slotDigitizeSelect ();
256  void slotEditCopy ();
257  void slotEditCut ();
258  void slotEditDelete ();
259  void slotEditMenu ();
260  void slotEditPaste ();
261  void slotEditPasteAsNew ();
262  void slotEditPasteAsNewAdvanced ();
263  void slotFileClose ();
264  void slotFileExport ();
265  void slotFileImport();
266  void slotFileImportAdvanced();
267  void slotFileImportDraggedImage(QImage);
268  void slotFileImportDraggedImageUrl(QUrl);
269  void slotFileImportImage(QString, QImage);
270  void slotFileImportImageReplace();
271  void slotFileOpen();
272  void slotFileOpenDraggedDigFile (QString);
273  void slotFilePrint();
274  bool slotFileSave();
275  bool slotFileSaveAs();
276  void slotFittingWindowClosed();
277  void slotFittingWindowCurveFit(FittingCurveCoefficients, double, double, bool, bool);
278  void slotGeometryWindowClosed();
279  void slotHelpAbout();
280  void slotHelpTutorial();
281  void slotKeyPress (Qt::Key, bool);
282  void slotLoadStartupFiles ();
283  void slotMouseMove (QPointF);
284  void slotMousePress (QPointF);
285  void slotMouseRelease (QPointF);
286  void slotRecentFileAction ();
287  void slotRecentFileClear ();
288  void slotRedoTextChanged (const QString &);
289  void slotSettingsAxesChecker ();
290  void slotSettingsColorFilter ();
291  void slotSettingsCoords ();
292  void slotSettingsCurveAddRemove ();
293  void slotSettingsCurveProperties ();
294  void slotSettingsDigitizeCurve ();
295  void slotSettingsExportFormat ();
296  void slotSettingsGeneral ();
297  void slotSettingsGridDisplay ();
298  void slotSettingsGridRemoval ();
299  void slotSettingsMainWindow ();
300  void slotSettingsPointMatch ();
301  void slotSettingsSegments ();
302  void slotTableStatusChange ();
303  void slotTimeoutRegressionErrorReport ();
304  void slotTimeoutRegressionFileCmdScript ();
305  void slotUndoTextChanged (const QString &);
306  void slotViewGridLines ();
307  void slotViewGroupBackground(QAction*);
308  void slotViewGroupCurves(QAction*);
309  void slotViewGroupStatus(QAction*);
310  void slotViewToolBarBackground ();
311  void slotViewToolBarChecklistGuide ();
312  void slotViewToolBarCoordSystem ();
313  void slotViewToolBarDigitize ();
314  void slotViewToolBarFittingWindow ();
315  void slotViewToolBarGeometryWindow ();
316  void slotViewToolBarSettingsViews ();
317  void slotViewToolTips ();
318  void slotViewZoomFactor (ZoomFactor);
319  void slotViewZoomFactorInt (int);
320  void slotViewZoom (int);
321  void slotViewZoomIn ();
322  void slotViewZoomInFromWheelEvent ();
323  void slotViewZoomOut ();
324  void slotViewZoomOutFromWheelEvent ();
325 
326 signals:
328  void signalZoom(int);
329 
330 private:
331  MainWindow();
332 
333  enum ImportType {
334  IMPORT_TYPE_SIMPLE,
335  IMPORT_TYPE_ADVANCED,
336  IMPORT_TYPE_IMAGE_REPLACE
337  };
338 
339  void addDockWindow (QDockWidget *dockWidget,
340  QSettings &settings,
341  const QString &settingsTokenArea,
342  const QString &settingsTokenGeometry,
343  Qt::DockWidgetArea dockWidgetArea);
344  void applyZoomFactorAfterLoad();
345  virtual void closeEvent(QCloseEvent *event);
346  void createActions();
347  void createActionsDigitize ();
348  void createActionsEdit ();
349  void createActionsFile ();
350  void createActionsHelp ();
351  void createActionsSettings ();
352  void createActionsView ();
353  void createCentralWidget ();
354  void createCommandStackShadow ();
355  void createDockableWidgets ();
356  void createHelpWindow ();
357  void createIcons();
358  void createLoadImageFromUrl ();
359  void createMenus();
360  void createNetwork();
361  void createScene ();
362  void createSettingsDialogs ();
363  void createStateContextBackground();
364  void createStateContextDigitize();
365  void createStateContextTransformation();
366  void createStatusBar();
367  void createToolBars();
368  void createTutorial();
369  void createZoomMaps ();
370  ZoomFactor currentZoomFactor () const;
371 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
372  void exportAllCoordinateSystemsAfterRegressionTests();
373 #endif
374  QString exportFilenameFromInputFilename (const QString &fileName) const;
375  void fileExport(const QString &fileName,
376  ExportToFile exportStrategy);
377  void fileImport (const QString &fileName,
378  ImportType ImportType);
379  void fileImportWithPrompts (ImportType ImportType);
380  void filePaste (ImportType importType);
381  void ghostsCreate ();
382  void ghostsDestroy ();
383  void loadCoordSystemListFromCmdMediator();
384  void loadCurveListFromCmdMediator();
385  void loadDocumentFile (const QString &fileName);
386  void loadErrorReportFile(const QString &errorReportFile);
387  bool loadImage (const QString &fileName,
388  const QImage &image,
389  ImportType ImportType);
390  bool loadImageNewDocument (const QString &fileName,
391  const QImage &image,
392  ImportType ImportType);
393  bool loadImageReplacingImage (const QString &fileName,
394  const QImage &image,
395  ImportType ImportType);
396  void loadInputFileForErrorReport(QDomDocument &domInputFile) const;
397  void loadToolTips ();
398  bool maybeSave();
399  DocumentModelExportFormat modelExportOverride (const DocumentModelExportFormat &modelExportFormatBefore,
400  const ExportToFile &exportStrategy,
401  const QString &selectedNameFilter) const;
402  bool modeGraph () const; // True if document is loaded and it has all graphs
403  void rebuildRecentFileListForCurrentFile(const QString &filePath);
404  bool saveDocumentFile(const QString &fileName);
405  QString saveErrorReportFileAndExitXml (const char *comment,
406  const char *file,
407  int line,
408  const char *context) const;
409  void saveStartingDocumentSnapshot();
410  void setCurrentFile(const QString &fileName);
411  void setCurrentPathFromFile (const QString &fileName);
412  void setNonFillZoomFactor (ZoomFactor newZoomFactor);
413  void setPixmap (const QString &curveSelected,
414  const QPixmap &pixmap);
415  void settingsRead (bool isReset);
416  void settingsReadEnvironment (QSettings &settings);
417  void settingsReadMainWindow (QSettings &settings);
418  void settingsWrite ();
419  bool setupAfterLoadNewDocument (const QString &fileName,
420  const QString &temporaryMessage,
421  ImportType ImportType);
422  bool setupAfterLoadReplacingImage (const QString &fileName,
423  const QString &temporaryMessage,
424  ImportType ImportType);
425  void startRegressionTestErrorReport (const QString &regressionInputFile);
426  void startRegressionTestFileCmdScript ();
427  void updateAfterCommandStatusBarCoords ();
428  void updateChecklistGuide ();
429  void updateControls (); // Update the widgets (typically in terms of show/hide state) depending on the application state.
430  void updateFittingWindow ();
431  void updateGeometryWindow ();
432  void updateGridLines();
433  void updateHighlightOpacity();
434  void updateRecentFileList();
435  void updateSettingsMainWindow();
436  void updateSmallDialogs();
437  void updateTransformationAndItsDependencies();
438  void updateViewedCurves ();
439  void updateViewsOfSettings (); // Private version gets active curve name from DigitizeContext
440  void updateWindowTitle ();
441  void writeCheckpointToLogFile();
442 
443  QString m_originalFile; // Original filename for error report
444  bool m_originalFileWasImported; // True/false for imported/opened
445  bool m_isDocumentExported;
446  QString m_engaugeFile; // Not empty when a Document is currently loaded AND it was loaded and/or saved as an Engauge file
447  QString m_currentFile; // Not empty when a Document is currently loaded. No path or file extension
448  QString m_currentFileWithPathAndFileExtension; // Adds path and file extension to m_currentFile. For display
449  MainTitleBarFormat m_titleBarFormat;
450 
451  QMenu *m_menuFile;
452  QAction *m_actionImport;
453  QAction *m_actionImportAdvanced;
454  QAction *m_actionImportImageReplace;
455  QAction *m_actionOpen;
456  QMenu *m_menuFileOpenRecent;
457  QList<QAction*> m_actionRecentFiles;
458  QAction *m_actionClose;
459  QAction *m_actionSave;
460  QAction *m_actionSaveAs;
461  QAction *m_actionExport;
462  QAction *m_actionPrint;
463  QAction *m_actionExit;
464 
465  QMenu *m_menuEdit;
466  QAction *m_actionEditUndo;
467  QAction *m_actionEditRedo;
468  QAction *m_actionEditCut;
469  QAction *m_actionEditCopy;
470  QAction *m_actionEditPaste;
471  QAction *m_actionEditDelete;
472  QAction *m_actionEditPasteAsNew;
473  QAction *m_actionEditPasteAsNewAdvanced;
474 
475  QMenu *m_menuDigitize;
476  QActionGroup *m_groupDigitize;
477  QAction *m_actionDigitizeSelect;
478  QAction *m_actionDigitizeAxis;
479  QAction *m_actionDigitizeScale;
480  QAction *m_actionDigitizeCurve;
481  QAction *m_actionDigitizePointMatch;
482  QAction *m_actionDigitizeColorPicker;
483  QAction *m_actionDigitizeSegment;
484 
485  QMenu *m_menuView;
486  QAction *m_actionViewBackground;
487  QAction *m_actionViewChecklistGuide;
488  QAction *m_actionViewCoordSystem;
489  QAction *m_actionViewDigitize;
490  QAction *m_actionViewFittingWindow;
491  QAction *m_actionViewGeometryWindow;
492  QAction *m_actionViewSettingsViews;
493  QAction *m_actionViewToolTips;
494  QAction *m_actionViewGridLines;
495  QMenu *m_menuViewBackground;
496  QActionGroup *m_groupBackground;
497  QAction *m_actionViewBackgroundNone;
498  QAction *m_actionViewBackgroundOriginal;
499  QAction *m_actionViewBackgroundFiltered;
500  QMenu *m_menuViewCurves;
501  QActionGroup *m_groupCurves;
502  QAction *m_actionViewCurvesNone;
503  QAction *m_actionViewCurvesSelected;
504  QAction *m_actionViewCurvesAll;
505  QMenu *m_menuViewStatus;
506  QActionGroup *m_groupStatus;
507  QAction *m_actionStatusNever;
508  QAction *m_actionStatusTemporary;
509  QAction *m_actionStatusAlways;
510  QMenu *m_menuViewZoom;
511  QAction *m_actionZoomOut;
512  QAction *m_actionZoomIn;
513  QActionGroup *m_groupZoom;
514  QSignalMapper *m_mapperZoomFactor;
515  QAction *m_actionZoomFill;
516  QAction *m_actionZoom16To1;
517  QAction *m_actionZoom16To1Farther;
518  QAction *m_actionZoom8To1Closer;
519  QAction *m_actionZoom8To1;
520  QAction *m_actionZoom8To1Farther;
521  QAction *m_actionZoom4To1Closer;
522  QAction *m_actionZoom4To1;
523  QAction *m_actionZoom4To1Farther;
524  QAction *m_actionZoom2To1Closer;
525  QAction *m_actionZoom2To1;
526  QAction *m_actionZoom2To1Farther;
527  QAction *m_actionZoom1To1Closer;
528  QAction *m_actionZoom1To1;
529  QAction *m_actionZoom1To1Farther;
530  QAction *m_actionZoom1To2Closer;
531  QAction *m_actionZoom1To2;
532  QAction *m_actionZoom1To2Farther;
533  QAction *m_actionZoom1To4Closer;
534  QAction *m_actionZoom1To4;
535  QAction *m_actionZoom1To4Farther;
536  QAction *m_actionZoom1To8Closer;
537  QAction *m_actionZoom1To8;
538  QAction *m_actionZoom1To8Farther;
539  QAction *m_actionZoom1To16Closer;
540  QAction *m_actionZoom1To16;
541 
542  QMenu *m_menuSettings;
543  QAction *m_actionSettingsAxesChecker;
544  QAction *m_actionSettingsColorFilter;
545  QAction *m_actionSettingsCoords;
546  QAction *m_actionSettingsCurveAddRemove;
547  QAction *m_actionSettingsCurveProperties;
548  QAction *m_actionSettingsDigitizeCurve;
549  QAction *m_actionSettingsExport;
550  QAction *m_actionSettingsGeneral;
551  QAction *m_actionSettingsGridDisplay;
552  QAction *m_actionSettingsGridRemoval;
553  QAction *m_actionSettingsMainWindow;
554  QAction *m_actionSettingsPointMatch;
555  QAction *m_actionSettingsSegments;
556 
557  QMenu *m_menuHelp;
558  QAction *m_actionHelpAbout;
559  QAction *m_actionHelpChecklistGuideWizard;
560  QAction *m_actionHelpHelp;
561  QAction *m_actionHelpTutorial;
562  QAction *m_actionHelpWhatsThis;
563 
564  QVBoxLayout *m_layout;
565  GraphicsScene *m_scene;
566  GraphicsView *m_view;
567 
568  StatusBar *m_statusBar;
569  Transformation m_transformation;
570 
571  QComboBox *m_cmbCurve;
572  QToolBar *m_toolDigitize;
573  LoadImageFromUrl *m_loadImageFromUrl;
574 
575  QComboBox *m_cmbBackground;
576  QToolBar *m_toolBackground;
577 
578  ViewPointStyle *m_viewPointStyle;
579  ViewSegmentFilter *m_viewSegmentFilter;
580  QToolBar *m_toolSettingsViews;
581  ChecklistGuide *m_dockChecklistGuide;
582  FittingWindow *m_dockFittingWindow;
583  GeometryWindow *m_dockGeometryWindow;
584 
585  QComboBox *m_cmbCoordSystem;
586  QPushButton *m_btnPrintAll;
587  QPushButton *m_btnShowAll;
588  QToolBar *m_toolCoordSystem;
589 
590 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
591  HelpWindow *m_helpWindow;
592 #endif
593  TutorialDlg *m_tutorialDlg;
594 
595  CmdMediator *m_cmdMediator;
596  CmdStackShadow *m_cmdStackShadow;
597 
598  // State machine for user interface states
599  DigitizeStateContext *m_digitizeStateContext;
600 
601  // State machine for transformation states
602  TransformationStateContext *m_transformationStateContext;
603 
604  // State machine for background image
605  BackgroundStateContext *m_backgroundStateContext;
606 
607  DlgSettingsAxesChecker *m_dlgSettingsAxesChecker;
608  DlgSettingsColorFilter *m_dlgSettingsColorFilter;
609  DlgSettingsCoords *m_dlgSettingsCoords;
610  DlgSettingsCurveAddRemove *m_dlgSettingsCurveAddRemove;
611  DlgSettingsCurveProperties *m_dlgSettingsCurveProperties;
612  DlgSettingsDigitizeCurve * m_dlgSettingsDigitizeCurve;
613  DlgSettingsExportFormat *m_dlgSettingsExportFormat;
614  DlgSettingsGeneral *m_dlgSettingsGeneral;
615  DlgSettingsGridDisplay *m_dlgSettingsGridDisplay;
616  DlgSettingsGridRemoval *m_dlgSettingsGridRemoval;
617  DlgSettingsMainWindow *m_dlgSettingsMainWindow;
618  DlgSettingsPointMatch *m_dlgSettingsPointMatch;
619  DlgSettingsSegments *m_dlgSettingsSegments;
620 
621  // Crash reports
622  QString m_startingDocumentSnapshot; // Serialized snapshot of document at startup. Included in error report if user approves
623  NetworkClient *m_networkClient;
624 
625  // Main window settings
626  bool m_isGnuplot; // From command line
627  MainWindowModel m_modelMainWindow; // From settings file or DlgSettingsMainWindow
628 
629  // File names to be loaded at startup. Only one is loaded into the current instance, with external instances created for the other files
630  QTimer *m_timerLoadStartupFiles;
631  QStringList m_loadStartupFiles;
632 
633  // Ghosts that are created for seeing all coordinate systems at once, when there are multiple coordinate systems
634  Ghosts *m_ghosts;
635 
636  // Timers for regression testing. Neither or one is first started by the constructor for this class, but the first timeout
637  // (and all succeeding timeouts) will be from after QMainWindow::exec is called. Each timeout results in one command
638  // from the command stack getting executed
639  QTimer *m_timerRegressionErrorReport;
640  FileCmdScript *m_fileCmdScript;
641  bool m_isErrorReportRegressionTest;
642  QTimer *m_timerRegressionFileCmdScript;
643  QString m_regressionFile;
644  QString m_startupDirectory; // Used to restore original directory just before outputing regression test results, since
645  // directory changes when settings are read, and also when files are opened or imported.
646  // Restoring the directory means relative paths in the regression scripts will work consistently
647 
648  // Grid lines
649  GridLines m_gridLines;
650 
651  // Map to/from/between zoom enumerations. These eliminate the need for switch statements
652  QMap<ZoomFactorInitial, ZoomFactor> m_zoomMapFromInitial;
653  QMap<ZoomFactor, QAction*> m_zoomMapToAction;
654 
655  // Fitted curve. Null if not currently applicable/defined
656  FittingCurve *m_fittingCurve;
657 };
658 
659 #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...
bool modeMap() const
True if document scale is set using a scale bar, otherwise using axis points.
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.