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 14 class DlgValidatorAbstract; 15 class DocumentModelCoords; 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 26 /// Dialog for editing coordinates settings. 27 class DlgSettingsCoords : public DlgSettingsAbstractBase 28 { 29 Q_OBJECT; 30 31 public: 32 /// Single constructor. 33 DlgSettingsCoords(MainWindow &mainWindow); 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 void boundingRectGraph (CmdMediator &cmdMediator, 61 bool &isEmpty, 62 QPointF &boundingRectGraphMin, 63 QPointF &boundingRectGraphMax) const; 64 void createDateTime(QGridLayout *layout, 65 int &row); 66 void createGroupCoordsType(QGridLayout *layout, 67 int &row); 68 void createGroupXTheta(QGridLayout *layout, 69 int &row); 70 void createGroupYRadius(QGridLayout *layout, 71 int &row); 72 void createPreview(QGridLayout *layout, 73 int &row); 74 void drawCartesianLinearX(); 75 void drawCartesianLinearY(); 76 void drawCartesianLogX(); 77 void drawCartesianLogY(); 78 void drawPolarLinearRadius(); 79 void drawPolarLogRadius(); 80 void drawPolarTheta(); 81 void loadComboBoxDate(); 82 void loadComboBoxTime(); 83 void loadComboBoxUnitsNonPolar (QComboBox &cmb, 84 CoordUnitsNonPolarTheta coordUnits); 85 void loadComboBoxUnitsPolar (QComboBox &cmb, 86 CoordUnitsPolarTheta coordUnits); 87 void resetSceneRectangle(); 88 void updateControls(); 89 void updateCoordUnits(); 90 void updatePreview(); 91 92 QGroupBox *m_boxCoordsType; 93 QRadioButton *m_btnCartesian; 94 QRadioButton *m_btnPolar; 95 96 QGroupBox *m_boxXTheta; 97 QRadioButton *m_xThetaLinear; 98 QRadioButton *m_xThetaLog; 99 QComboBox *m_cmbXThetaUnits; 100 101 QGroupBox *m_boxYRadius; 102 QRadioButton *m_yRadiusLinear; 103 QRadioButton *m_yRadiusLog; 104 QComboBox *m_cmbYRadiusUnits; 105 QLineEdit *m_editOriginRadius; 106 DlgValidatorAbstract *m_validatorOriginRadius; 107 108 QComboBox *m_cmbDate; 109 QComboBox *m_cmbTime; 110 111 QGraphicsScene *m_scenePreview; 112 ViewPreview *m_viewPreview; 113 114 DocumentModelCoords *m_modelCoordsBefore; 115 DocumentModelCoords *m_modelCoordsAfter; 116 }; 117 118 #endif // DLG_SETTINGS_COORDS_H 119