00001
00002
00003
00004
00005
00006
00007 #ifndef DLG_SETTINGS_COORDS_H
00008 #define DLG_SETTINGS_COORDS_H
00009
00010 #include "CoordUnitsNonPolarTheta.h"
00011 #include "CoordUnitsPolarTheta.h"
00012 #include "DlgSettingsAbstractBase.h"
00013
00014 class DlgValidatorAbstract;
00015 class DocumentModelCoords;
00016 class QComboBox;
00017 class QDoubleValidator;
00018 class QGridLayout;
00019 class QGroupBox;
00020 class QGraphicsScene;
00021 class QGraphicsView;
00022 class QLineEdit;
00023 class QRadioButton;
00024 class ViewPreview;
00025
00027 class DlgSettingsCoords : public DlgSettingsAbstractBase
00028 {
00029 Q_OBJECT;
00030
00031 public:
00033 DlgSettingsCoords(MainWindow &mainWindow);
00034 virtual ~DlgSettingsCoords();
00035
00036 virtual void createOptionalSaveDefault (QHBoxLayout *layout);
00037 virtual QWidget *createSubPanel ();
00038 virtual void load (CmdMediator &cmdMediator);
00039
00040 private slots:
00041 void slotCartesianPolar (bool);
00042 void slotDate (const QString &);
00043 void slotPolarOriginRadius(const QString &);
00044 void slotTime (const QString &);
00045 void slotUnitsXTheta(const QString &);
00046 void slotUnitsYRadius(const QString &);
00047 void slotXThetaLinear();
00048 void slotXThetaLog();
00049 void slotYRadiusLinear();
00050 void slotYRadiusLog();
00051
00052 protected:
00053 virtual void handleOk ();
00054
00055 private:
00056
00057 void annotateAngles(const QFont &defaultFont);
00058 void annotateRadiusAtOrigin(const QFont &defaultFont);
00059 QRectF boundingRectGraph (CmdMediator &cmdMediator,
00060 bool &isEmpty) const;
00061 void createDateTime(QGridLayout *layout,
00062 int &row);
00063 void createGroupCoordsType(QGridLayout *layout,
00064 int &row);
00065 void createGroupXTheta(QGridLayout *layout,
00066 int &row);
00067 void createGroupYRadius(QGridLayout *layout,
00068 int &row);
00069 void createPreview(QGridLayout *layout,
00070 int &row);
00071 void drawCartesianLinearX();
00072 void drawCartesianLinearY();
00073 void drawCartesianLogX();
00074 void drawCartesianLogY();
00075 void drawPolarLinearRadius();
00076 void drawPolarLogRadius();
00077 void drawPolarTheta();
00078 void loadComboBoxDate();
00079 void loadComboBoxTime();
00080 void loadComboBoxUnitsNonPolar (QComboBox &cmb,
00081 CoordUnitsNonPolarTheta coordUnits);
00082 void loadComboBoxUnitsPolar (QComboBox &cmb,
00083 CoordUnitsPolarTheta coordUnits);
00084 void resetSceneRectangle();
00085 void updateControls();
00086 void updateCoordUnits();
00087 void updatePreview();
00088
00089 QGroupBox *m_boxCoordsType;
00090 QRadioButton *m_btnCartesian;
00091 QRadioButton *m_btnPolar;
00092
00093 QGroupBox *m_boxXTheta;
00094 QRadioButton *m_xThetaLinear;
00095 QRadioButton *m_xThetaLog;
00096 QComboBox *m_cmbXThetaUnits;
00097
00098 QGroupBox *m_boxYRadius;
00099 QRadioButton *m_yRadiusLinear;
00100 QRadioButton *m_yRadiusLog;
00101 QComboBox *m_cmbYRadiusUnits;
00102 QLineEdit *m_editOriginRadius;
00103 DlgValidatorAbstract *m_validatorOriginRadius;
00104
00105 QComboBox *m_cmbDate;
00106 QComboBox *m_cmbTime;
00107
00108 QGraphicsScene *m_scenePreview;
00109 ViewPreview *m_viewPreview;
00110
00111 DocumentModelCoords *m_modelCoordsBefore;
00112 DocumentModelCoords *m_modelCoordsAfter;
00113 };
00114
00115 #endif // DLG_SETTINGS_COORDS_H