Engauge Digitizer  2
DlgSettingsCoords.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 DLG_SETTINGS_COORDS_H
8 #define DLG_SETTINGS_COORDS_H
9 
10 #include "CoordUnitsNonPolarTheta.h"
11 #include "CoordUnitsPolarTheta.h"
12 #include "DlgSettingsAbstractBase.h"
13 
16 class QComboBox;
17 class QDoubleValidator;
18 class QGridLayout;
19 class QGroupBox;
20 class QGraphicsScene;
21 class QGraphicsView;
22 class QLineEdit;
23 class QRadioButton;
24 class ViewPreview;
25 
28 {
29  Q_OBJECT;
30 
31 public:
34  virtual ~DlgSettingsCoords();
35 
36  virtual void createOptionalSaveDefault (QHBoxLayout *layout);
37  virtual QWidget *createSubPanel ();
38  virtual void load (CmdMediator &cmdMediator);
39 
40 private slots:
41  void slotCartesianPolar (bool);
42  void slotDate (const QString &);
43  void slotPolarOriginRadius(const QString &);
44  void slotTime (const QString &);
45  void slotUnitsXTheta(const QString &);
46  void slotUnitsYRadius(const QString &);
47  void slotXThetaLinear();
48  void slotXThetaLog();
49  void slotYRadiusLinear();
50  void slotYRadiusLog();
51 
52 protected:
53  virtual void handleOk ();
54 
55 private:
56 
57  void annotateAngles(const QFont &defaultFont);
58  void annotateRadiusAtOrigin(const QFont &defaultFont);
59  QRectF boundingRectGraph (CmdMediator &cmdMediator,
60  bool &isEmpty) const;
61  void createDateTime(QGridLayout *layout,
62  int &row);
63  void createGroupCoordsType(QGridLayout *layout,
64  int &row);
65  void createGroupXTheta(QGridLayout *layout,
66  int &row);
67  void createGroupYRadius(QGridLayout *layout,
68  int &row);
69  void createPreview(QGridLayout *layout,
70  int &row);
71  void drawCartesianLinearX();
72  void drawCartesianLinearY();
73  void drawCartesianLogX();
74  void drawCartesianLogY();
75  void drawPolarLinearRadius();
76  void drawPolarLogRadius();
77  void drawPolarTheta();
78  void loadComboBoxDate();
79  void loadComboBoxTime();
80  void loadComboBoxUnitsNonPolar (QComboBox &cmb,
81  CoordUnitsNonPolarTheta coordUnits);
82  void loadComboBoxUnitsPolar (QComboBox &cmb,
83  CoordUnitsPolarTheta coordUnits);
84  void resetSceneRectangle();
85  void updateControls();
86  void updateCoordUnits();
87  void updatePreview();
88 
89  QGroupBox *m_boxCoordsType;
90  QRadioButton *m_btnCartesian;
91  QRadioButton *m_btnPolar;
92 
93  QGroupBox *m_boxXTheta;
94  QRadioButton *m_xThetaLinear;
95  QRadioButton *m_xThetaLog;
96  QComboBox *m_cmbXThetaUnits;
97 
98  QGroupBox *m_boxYRadius;
99  QRadioButton *m_yRadiusLinear;
100  QRadioButton *m_yRadiusLog;
101  QComboBox *m_cmbYRadiusUnits;
102  QLineEdit *m_editOriginRadius;
103  DlgValidatorAbstract *m_validatorOriginRadius;
104 
105  QComboBox *m_cmbDate;
106  QComboBox *m_cmbTime;
107 
108  QGraphicsScene *m_scenePreview;
109  ViewPreview *m_viewPreview;
110 
111  DocumentModelCoords *m_modelCoordsBefore;
112  DocumentModelCoords *m_modelCoordsAfter;
113 };
114 
115 #endif // DLG_SETTINGS_COORDS_H
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
Abstract validator for all numeric formats.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
Class that modifies QGraphicsView to automatically expand/shrink the view to fit the window...
Definition: ViewPreview.h:14
Model for DlgSettingsCoords and CmdSettingsCoords.
Dialog for editing coordinates settings.
Command queue stack.
Definition: CmdMediator.h:23
Abstract base class for all Settings dialogs.
MainWindow & mainWindow()
Get method for MainWindow.
virtual void handleOk()
Process slotOk.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:83
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
DlgSettingsCoords(MainWindow &mainWindow)
Single constructor.