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  virtual void setSmallDialogs (bool smallDialogs);
40 
41 private slots:
42  void slotCartesianPolar (bool);
43  void slotDate (const QString &);
44  void slotPolarOriginRadius(const QString &);
45  void slotTime (const QString &);
46  void slotUnitsXTheta(const QString &);
47  void slotUnitsYRadius(const QString &);
48  void slotXThetaLinear();
49  void slotXThetaLog();
50  void slotYRadiusLinear();
51  void slotYRadiusLog();
52 
53 protected:
54  virtual void handleOk ();
55 
56 private:
57 
58  void annotateAngles(const QFont &defaultFont);
59  void annotateRadiusAtOrigin(const QFont &defaultFont);
60  QRectF boundingRectGraph (CmdMediator &cmdMediator,
61  bool &isEmpty) const;
62  void createDateTime(QGridLayout *layout,
63  int &row);
64  void createGroupCoordsType(QGridLayout *layout,
65  int &row);
66  void createGroupXTheta(QGridLayout *layout,
67  int &row);
68  void createGroupYRadius(QGridLayout *layout,
69  int &row);
70  void createPreview(QGridLayout *layout,
71  int &row);
72  void drawCartesianLinearX();
73  void drawCartesianLinearY();
74  void drawCartesianLogX();
75  void drawCartesianLogY();
76  void drawPolarLinearRadius();
77  void drawPolarLogRadius();
78  void drawPolarTheta();
79  void loadComboBoxDate();
80  void loadComboBoxTime();
81  void loadComboBoxUnitsNonPolar (QComboBox &cmb,
82  CoordUnitsNonPolarTheta coordUnits);
83  void loadComboBoxUnitsPolar (QComboBox &cmb,
84  CoordUnitsPolarTheta coordUnits);
85  void resetSceneRectangle();
86  void updateControls();
87  void updateCoordUnits();
88  void updatePreview();
89 
90  QGroupBox *m_boxCoordsType;
91  QRadioButton *m_btnCartesian;
92  QRadioButton *m_btnPolar;
93 
94  QGroupBox *m_boxXTheta;
95  QRadioButton *m_xThetaLinear;
96  QRadioButton *m_xThetaLog;
97  QComboBox *m_cmbXThetaUnits;
98 
99  QGroupBox *m_boxYRadius;
100  QRadioButton *m_yRadiusLinear;
101  QRadioButton *m_yRadiusLog;
102  QComboBox *m_cmbYRadiusUnits;
103  QLineEdit *m_editOriginRadius;
104  DlgValidatorAbstract *m_validatorOriginRadius;
105 
106  QComboBox *m_cmbDate;
107  QComboBox *m_cmbTime;
108 
109  QGraphicsScene *m_scenePreview;
110  ViewPreview *m_viewPreview;
111 
112  DocumentModelCoords *m_modelCoordsBefore;
113  DocumentModelCoords *m_modelCoordsAfter;
114 };
115 
116 #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.
virtual void setSmallDialogs(bool smallDialogs)
If false then dialogs have a minimum size so all controls are visible.
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:89
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
DlgSettingsCoords(MainWindow &mainWindow)
Single constructor.