00001
00026 #ifndef INC_MGUI_FORMEXTENTS_H
00027 #define INC_MGUI_FORMEXTENTS_H
00028
00029 #ifndef INC_MGUI_FORMBTXT_H
00030 #include <mgui/formbtxt.h>
00031 #endif
00032
00033 #ifndef INC_MI32_SPATREF_H
00034 #include <mi32/spatref.h>
00035 #endif
00036
00037 namespace MGUI {
00038
00039
00041 class FORM_EDIT_EXTENTS : public MGUI::FORM_COMPOSITE {
00042 public:
00043
00044 enum FLAGS {
00045 FLAG_None = 0x00,
00046 FLAG_AllowAllGeorefDatumTypes = 0x01,
00047 FLAG_NoChangeCoordRefSys = 0x02,
00048 FLAG_NoShowCRS = 0x04,
00049 FLAG_MinimalWidth = 0x08,
00050 FLAG_Precision0 = 0x10,
00051 };
00052
00054 FORM_EDIT_EXTENTS (
00055 );
00056
00058 virtual ~FORM_EDIT_EXTENTS (
00059 );
00060
00062 void ClearExtents (
00063 bool notify = true
00064 );
00065
00067 void Create (
00068 MGUI::LAYOUT_PANE_BASE& ParentPane,
00069 bool IsRangeEditable = true,
00070 FLAGS flags = FLAG_None,
00071 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00072 );
00073
00075 const DRECT2D& GetExtents (
00076 ) const { return (m_Extents); }
00077
00079 const SPATREF::COORDREFSYS& GetCoordRefSys (
00080 ) const { return (m_CoordRefSys); }
00081
00083 bool HasAllRangeValues (
00084 );
00085
00087 void SetDelegateOnChangeCoordRefSys (
00088 DELEGATE_VOID_NOPARMS delegate
00089 ) { m_DelegateOnChangeCoordRefSys = delegate; }
00090
00092 void SetDelegateOnChangeExtents (
00093 DELEGATE_VOID_NOPARMS delegate
00094 ) { m_DelegateOnChangeExtents = delegate; }
00095
00098 void SetExtents (
00099 const DRECT2D& Extents,
00100 bool notify = true
00101 );
00102
00105 void SetCoordRefSys (
00106 const SPATREF::COORDREFSYS& CoordRefSys,
00107 bool notify = true
00108 );
00109
00112 void SetCoordRefSysEditable (
00113 bool IsCRSEditable
00114 );
00115
00117 void SetRangeEditable (
00118 bool IsRangeEditable
00119 );
00120
00122 void SetRangeEnabled (
00123 bool IsRangeEnabled
00124 );
00125
00126
00127 private:
00128 #ifndef GENERATING_DOXYGEN_OUTPUT
00129 SPATREF::COORDREFSYS m_CoordRefSys;
00130 DRECT2D m_Extents;
00131 bool m_IsRangeEnabled;
00132 bool m_IsRangeEditable;
00133 FLAGS m_flags;
00134 DELEGATE_VOID_NOPARMS m_DelegateOnChangeCoordRefSys;
00135 DELEGATE_VOID_NOPARMS m_DelegateOnChangeExtents;
00136
00137 FORM_BUTTONTEXT m_BtxCoordRefSys;
00138
00139 LAYOUT_PANE m_YPane;
00140 CTRL_LABEL m_YLabel;
00141 CTRL_EDIT_NUMBER m_YInit;
00142 CTRL_LABEL m_YTo;
00143 CTRL_EDIT_NUMBER m_YLast;
00144
00145 LAYOUT_PANE m_XPane;
00146 CTRL_LABEL m_XLabel;
00147 CTRL_EDIT_NUMBER m_XInit;
00148 CTRL_LABEL m_XTo;
00149 CTRL_EDIT_NUMBER m_XLast;
00150
00151 void NotifyChangeExtents ();
00152 void OnChangeExtentsValue ();
00153 void OnBtnCoordRefSys ();
00154
00155 void UpdateProjection ();
00156 #endif // GENERATING_DOXYGEN_OUTPUT
00157 };
00158
00159 #ifndef GENERATING_DOXYGEN_OUTPUT
00160 DEFINE_ENUM_OP_BITWISE(FORM_EDIT_EXTENTS::FLAGS)
00161 #endif
00162
00163
00164
00165 }
00166
00167 #endif // INC_MGUI_FORMEXTENTS_H