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 virtual void setSmallDialogs (bool smallDialogs);
00040
00041 private slots:
00042 void slotCartesianPolar (bool);
00043 void slotDate (const QString &);
00044 void slotPolarOriginRadius(const QString &);
00045 void slotTime (const QString &);
00046 void slotUnitsXTheta(const QString &);
00047 void slotUnitsYRadius(const QString &);
00048 void slotXThetaLinear();
00049 void slotXThetaLog();
00050 void slotYRadiusLinear();
00051 void slotYRadiusLog();
00052
00053 protected:
00054 virtual void handleOk ();
00055
00056 private:
00057
00058 void annotateAngles(const QFont &defaultFont);
00059 void annotateRadiusAtOrigin(const QFont &defaultFont);
00060 QRectF boundingRectGraph (CmdMediator &cmdMediator,
00061 bool &isEmpty) const;
00062 void createDateTime(QGridLayout *layout,
00063 int &row);
00064 void createGroupCoordsType(QGridLayout *layout,
00065 int &row);
00066 void createGroupXTheta(QGridLayout *layout,
00067 int &row);
00068 void createGroupYRadius(QGridLayout *layout,
00069 int &row);
00070 void createPreview(QGridLayout *layout,
00071 int &row);
00072 void drawCartesianLinearX();
00073 void drawCartesianLinearY();
00074 void drawCartesianLogX();
00075 void drawCartesianLogY();
00076 void drawPolarLinearRadius();
00077 void drawPolarLogRadius();
00078 void drawPolarTheta();
00079 void loadComboBoxDate();
00080 void loadComboBoxTime();
00081 void loadComboBoxUnitsNonPolar (QComboBox &cmb,
00082 CoordUnitsNonPolarTheta coordUnits);
00083 void loadComboBoxUnitsPolar (QComboBox &cmb,
00084 CoordUnitsPolarTheta coordUnits);
00085 void resetSceneRectangle();
00086 void updateControls();
00087 void updateCoordUnits();
00088 void updatePreview();
00089
00090 QGroupBox *m_boxCoordsType;
00091 QRadioButton *m_btnCartesian;
00092 QRadioButton *m_btnPolar;
00093
00094 QGroupBox *m_boxXTheta;
00095 QRadioButton *m_xThetaLinear;
00096 QRadioButton *m_xThetaLog;
00097 QComboBox *m_cmbXThetaUnits;
00098
00099 QGroupBox *m_boxYRadius;
00100 QRadioButton *m_yRadiusLinear;
00101 QRadioButton *m_yRadiusLog;
00102 QComboBox *m_cmbYRadiusUnits;
00103 QLineEdit *m_editOriginRadius;
00104 DlgValidatorAbstract *m_validatorOriginRadius;
00105
00106 QComboBox *m_cmbDate;
00107 QComboBox *m_cmbTime;
00108
00109 QGraphicsScene *m_scenePreview;
00110 ViewPreview *m_viewPreview;
00111
00112 DocumentModelCoords *m_modelCoordsBefore;
00113 DocumentModelCoords *m_modelCoordsAfter;
00114 };
00115
00116 #endif // DLG_SETTINGS_COORDS_H