00001
00029 #ifndef INC_MGUI_FORMGEOCATALOG_H
00030 #define INC_MGUI_FORMGEOCATALOG_H
00031
00032 #ifndef INC_MGUI_FORMLIST_H
00033 #include <mgui/formlist.h>
00034 #endif
00035
00036 #ifndef INC_MGUI_FORM_EDIT_EXTENTS_H
00037 #include <mgui/formextents.h>
00038 #endif
00039
00040 #ifndef INC_MGUI_FORM_EDIT_COORD_H
00041 #include <mgui/formcoord.h>
00042 #endif
00043
00044 #ifndef INC_MGUI_MENU_H
00045 #include <mgui/menu.h>
00046 #endif
00047
00048 #ifndef INC_MGUI_LISTBOX_H
00049 #include <mgui/listbox.h>
00050 #endif
00051
00052 #ifndef INC_MI32_GEOCAT_H
00053 #include <mi32/geocat.h>
00054 #endif
00055
00056 #ifndef INC_MI32_MICON_H
00057 #include <mi32/micon.h>
00058 #endif
00059
00060 #ifndef INC_RVC_OBJITEMLIST_H
00061 #include <rvc/objitemlist.h>
00062 #endif
00063
00064 namespace MGUI {
00065
00067 class FORM_GEOCATALOG : public MGUI::FORM_COMPOSITE {
00068 public:
00069 FORM_GEOCATALOG (
00070 );
00071
00072 ~FORM_GEOCATALOG (
00073 );
00074
00076 ERRVALUE CreateSearchForm (
00077 MGUI::LAYOUT_PANE_BASE& ParentPane
00078 );
00079
00081 ERRVALUE CreateResultsForm (
00082 MGUI::LAYOUT_PANE_BASE& ParentPane
00083 );
00084
00086 ERRVALUE CreateListForm (
00087 MGUI::LAYOUT_PANE_BASE& ParentPane
00088 );
00089
00091 void DoSearch ();
00092
00094 void GetObjItemListResults (
00095 RVC::OBJITEMLIST& ObjItemList
00096 );
00097
00099 void GetObjItemListSelected (
00100 RVC::OBJITEMLIST& ObjItemList
00101 );
00102
00104 bool HasResults (
00105 ) const;
00106
00108 bool HasSelected (
00109 ) const;
00110
00112 void SetObjTypeSet (
00113 const RVC::OBJTYPESET& objtypeset
00114 ) { m_SearchObjTypes = objtypeset; m_NeedNewSearch = true; }
00115
00117 void SetFilePattern (
00118 const MISTRING& pattern
00119 ) { m_Pattern = pattern; m_NeedNewSearch = true; }
00120
00122 void SetClickDelegate (
00123 FastDelegate<void(const RVC::OBJITEM&)> delegate
00124 ) { m_ClickDelegate = delegate; }
00125
00127 void SetDoubleClickDelegate (
00128 FastDelegate<void(const RVC::OBJITEM&)> delegate
00129 ) { m_DoubleClickDelegate = delegate; }
00130
00132 void SetSearchDelegate (
00133 FastDelegate<void()> delegate
00134 ) { m_SearchDelegate = delegate; }
00135
00136 private:
00137 #ifndef GENERATING_DOXYGEN_OUTPUT
00138 int m_COL_Location;
00139 int m_COL_NameTooltip;
00140 int m_COL_Name;
00141 int m_COL_Type;
00142 int m_COL_Format;
00143 int m_COL_RecCreateDate;
00144 int m_COL_RecModDate;
00145 int m_COL_ObjModDate;
00146 int m_COL_LonWest;
00147 int m_COL_LonEast;
00148 int m_COL_LatSouth;
00149 int m_COL_LatNorth;
00150 int m_COL_CRS;
00151 int m_COL_Dimensions;
00152 int m_COL_Scale;
00153 int m_COL_ScaleX;
00154 int m_COL_ScaleY;
00155 int m_COL_DataType;
00156 int m_COL_NumCols;
00157
00158 bool m_NeedNewSearch;
00159 bool m_SortAscending;
00160 mutable bool m_CatFileListChanged;
00161 MILIST<GEOCAT*> m_GeoCatList;
00162 RVC::OBJTYPESET m_SearchObjTypes;
00163 MISTRING m_Pattern;
00164 RVC::OBJITEMLIST m_ObjItemListSearchAreas;
00165 SIMPLE_ARRAY<bool> m_CatUseArray;
00166 UOM::CONVERTER m_converter;
00167 MGUI::MENU m_UnitMenu;
00168 UINT32 m_BaseNumItems;
00169 SPATREF::COORDREFSYS m_CRS;
00170
00171 MGUI::FORM_LIST m_resultslist;
00172 MGUI::FORM_LIST m_catalogslist;
00173 MGUI::LAYOUT_PANE m_ParentPane;
00174 MGUI::LAYOUT_PANE m_RangePane;
00175 MGUI::LAYOUT_PANE m_PointPane;
00176 MGUI::LAYOUT_PANE m_ObjectPane;
00177 MGUI::CTRL_PUSHBUTTON m_AddFilesButton;
00178 MGUI::CTRL_PUSHBUTTON m_RemoveFilesButton;
00179 MGUI::CTRL_PUSHBUTTON m_SearchButton;
00180 MGUI::CTRL_TOGGLEBUTTON m_ExtentsToggle;
00181 MGUI::CTRL_COMBOBOX m_ContainmentCombo;
00182 MGUI::CTRL_LISTBOX m_ListBox;
00183 MGUI::CTRL_PUSHBUTTON m_AddObjectPB;
00184 MGUI::CTRL_PUSHBUTTON m_FindLocationPB;
00185 MGUI::FORM_EDIT_STRING m_FormSearchText;
00186 MGUI::FORM_EDIT_EXTENTS m_FormExtents;
00187 MGUI::FORM_EDIT_EXTENTS m_FormObjectExtents;
00188 MGUI::FORM_EDIT_COORD m_FormEditCoord;
00189
00190 void AddCatalogFile ();
00191 void OnAddObject ();
00192 void OnFindLocation ();
00193 void OnExtentsToggle ();
00194 void OnNeedSearch ();
00195 void OnObjectSelect ();
00196 void RemoveCatalogFile ();
00197 void SaveCatFileListIni () const;
00198 ERRVALUE UpdateRegions ();
00199 void OnUnitMenu (MGUI::ID id, bool state);
00200 void GetLatLonExtents(const GEOCAT::CONST_ITERATOR& iter, int pos);
00201
00202 bool OnClick(int itemnum, int fieldnum, const MGUI::POINT& pt, MGUI::POINTERBUTTON button, MGUI::KEYSTATE keystate);
00203 bool OnDoubleClick(int itemnum, int fieldnum, const MGUI::POINT& pt, MGUI::POINTERBUTTON button, MGUI::KEYSTATE keystate);
00204 int OnDimensionsCompare(int itemnum1, int itemnum2, int fieldnum);
00205 int OnScaleCompare(int itemnum1, int itemnum2, int fieldnum);
00206 bool OnToolTip(int itemnum, int fieldnum, MGUI::CTRL_TOOLTIP& tooltip);
00207
00208 bool OnListClick(int itemnum, int fieldnum, const MGUI::POINT& pt, MGUI::POINTERBUTTON button, MGUI::KEYSTATE keystate);
00209
00210 void OnPageInitCatalogs (MGUI::LAYOUT_PAGE& page);
00211 void OnPageInitSearch (MGUI::LAYOUT_PAGE& page);
00212 void OnPageInitResults (MGUI::LAYOUT_PAGE& page);
00213 void OnPageSetActiveResults (MGUI::LAYOUT_PAGE& page);
00214
00215 FastDelegate<void(const RVC::OBJITEM&)> m_ClickDelegate;
00216 FastDelegate<void(const RVC::OBJITEM&)> m_DoubleClickDelegate;
00217 FastDelegate<void()> m_SearchDelegate;
00218
00219 #endif
00220 };
00221
00222 }
00223
00224 #endif //INC_MGUI_FORMGEOCATALOG_H