00001
00020 #ifndef INC_RVC_UIFORMSELECTELEMENTS_H
00021 #define INC_RVC_UIFORMSELECTELEMENTS_H
00022
00023 #ifndef INC_RVC_UIFORMOBJECTLIST_H
00024 #include <rvc/uiformobjectlist.h>
00025 #endif
00026
00027 #ifndef INC_RVC_GEOMETRC_H
00028 #include <rvc/geometrc.h>
00029 #endif
00030
00031 #ifndef INC_MGUI_COMBOBOX_H
00032 #include <mgui/combobox.h>
00033 #endif
00034
00035 #ifndef INC_MI32_REGION2D_H
00036 #include <mi32/region2d.h>
00037 #endif
00038
00039
00040 #ifndef GENERATING_DOXYGEN_OUTPUT
00041 class ELEMTYPESET;
00042 #endif
00043
00044
00045 namespace RVC {
00046 namespace UI {
00047
00048
00051 class FORM_SELECT_ELEMENTS_SINGLETYPE : public MGUI::FORM_COMPOSITE {
00052 public:
00053
00055 FORM_SELECT_ELEMENTS_SINGLETYPE ();
00056
00058 virtual ~FORM_SELECT_ELEMENTS_SINGLETYPE ();
00059
00060 void SetGeometricObject (
00061 const RVC::OBJITEM& ObjItem
00062 );
00063
00064 protected:
00065 ERRVALUE CreateBase (MGUI::LAYOUT_PANE_BASE& ParentPane, bool AllowNone = true);
00066 TEXTID GetTextID (ELEMTYPE ElemType);
00067 void SetElemSelectParmsItemBase (RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& item);
00068
00069 private:
00070 #ifndef GENERATING_DOXYGEN_OUTPUT
00071 typedef FORM_SELECT_ELEMENTS_SINGLETYPE THISCLASS;
00072
00073 MGUI::CTRL_COMBOBOX m_CbxElemSelect;
00074 MGUI::CTRL_PUSHBUTTON m_BtnSelect;
00075 RVC::OBJITEM m_ObjItem;
00076
00077 virtual ELEMTYPE v_GetCurElemType () const = 0;
00078 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem () = 0;
00079
00080 void OnBtnSelect ();
00081 void OnCbxElemSelect ();
00082 void UpdateState ();
00083 #endif // GENERATING_DOXYGEN_OUTPUT
00084 };
00085
00086
00088 class FORM_SELECT_ELEMENTS_FIXEDTYPE : public FORM_SELECT_ELEMENTS_SINGLETYPE {
00089 public:
00090
00092 FORM_SELECT_ELEMENTS_FIXEDTYPE ();
00093
00095 virtual ~FORM_SELECT_ELEMENTS_FIXEDTYPE ();
00096
00097 ERRVALUE Create (
00098 MGUI::LAYOUT_PANE_BASE& ParentPane,
00099 ELEMTYPE ElemType,
00100 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00101 );
00102
00103 const RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& GetElemSelectParmsItem ();
00104
00105 MGUI::CTRL_LABEL& GetLabel ();
00106
00107 void SetElemSelectParmsItem (
00108 const RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& item
00109 );
00110
00111 private:
00112 #ifndef GENERATING_DOXYGEN_OUTPUT
00113 MGUI::CTRL_LABEL m_Label;
00114 RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM m_SelectItem;
00115 ELEMTYPE m_ElemType;
00116
00117 virtual ELEMTYPE v_GetCurElemType () const;
00118 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem ();
00119 #endif // GENERATING_DOXYGEN_OUTPUT
00120 };
00121
00122
00124 class FORM_SELECT_ELEMENTS_USERTYPE : public FORM_SELECT_ELEMENTS_SINGLETYPE {
00125 public:
00126
00128 FORM_SELECT_ELEMENTS_USERTYPE ();
00129
00131 virtual ~FORM_SELECT_ELEMENTS_USERTYPE ();
00132
00133 ERRVALUE Create (
00134 MGUI::LAYOUT_PANE_BASE& ParentPane,
00135 RVC::OBJTYPE ObjType,
00136 const ELEMTYPESET& ValidTypes,
00137 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00138 );
00139
00140 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetElemSelectParms (
00141 );
00142
00143 void SetElemSelectParms (
00144 const RVC::GEOMETRIC::ELEMSELECTPARMS& parms
00145 );
00146
00147 void SetElemTypeSet (
00148 const ELEMTYPESET& ValidTypes
00149 );
00150
00151 private:
00152 #ifndef GENERATING_DOXYGEN_OUTPUT
00153 typedef FORM_SELECT_ELEMENTS_USERTYPE THISCLASS;
00154
00155 MGUI::CTRL_COMBOBOX m_CbxElemType;
00156 RVC::GEOMETRIC::ELEMSELECTPARMS m_SelectParms;
00157 ELEMTYPE m_ElemType;
00158 RVC::OBJTYPE m_ObjType;
00159
00160 virtual ELEMTYPE v_GetCurElemType () const;
00161 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem ();
00162
00163 void OnCbxElemType ();
00164 #endif // GENERATING_DOXYGEN_OUTPUT
00165 };
00166
00167
00169 class FORM_SELECT_ELEMENTS_GEOMETRIC : public MGUI::FORM_COMPOSITE {
00170 public:
00171
00172 enum REGIONFLAGS {
00173 REGIONFLAG_None = 0,
00174 REGIONFLAG_NoSelection = 1,
00175 REGIONFLAG_AddApplyToAllBtn = 2
00176 };
00177
00179 FORM_SELECT_ELEMENTS_GEOMETRIC ();
00180
00182 virtual ~FORM_SELECT_ELEMENTS_GEOMETRIC ();
00183
00184 void Clear ();
00185
00186 ERRVALUE Create (
00187 MGUI::LAYOUT_PANE_BASE& ParentPane,
00188 RVC::OBJTYPE DestObjType,
00189 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00190 REGIONFLAGS RegionFlags = REGIONFLAG_None
00191 );
00192
00193 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetElemSelectParms (
00194 );
00195
00196 bool IsAddBorderEnabled (
00197 ) const;
00198
00199 void SetAddBorder (
00200 bool value
00201 );
00202
00203 void SetDelegateOnApplyRegionToAll (
00204 DELEGATE_VOID_NOPARMS delegate
00205 );
00206
00207 void SetElemSelectParms (
00208 const RVC::GEOMETRIC::ELEMSELECTPARMS& parms
00209 );
00210
00211 void SetObject (
00212 const RVC::OBJITEM& ObjItem
00213 );
00214
00215 private:
00216 #ifndef GENERATING_DOXYGEN_OUTPUT
00217
00218 class FORM_REGION : public MGUI::FORM_COMPOSITE {
00219 public:
00220
00222 FORM_REGION ();
00223
00225 virtual ~FORM_REGION ();
00226
00227 ERRVALUE Create (
00228 MGUI::LAYOUT_PANE_BASE& ParentPane,
00229 RVC::OBJTYPE DestObjType,
00230 bool AddApplyToAllBtn = false,
00231 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00232 );
00233
00234 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT GetExtractMode () const;
00235
00236 MGUI::CTRL_LABEL& GetLabel ()
00237 { return (m_CbxExtractMode.GetLabel()); }
00238
00239 const REGION2D& GetRegion () const
00240 { return (m_Region); }
00241
00242 bool IsAddBorderEnabled () const;
00243
00244 void SetAddBorder (
00245 bool value
00246 );
00247
00248 void SetDelegateOnApplyToAll (
00249 DELEGATE_VOID_NOPARMS delegate
00250 ) { m_BtnApplyToAll.SetDelegateOnPressed(delegate); }
00251
00252 void SetExtractMode (
00253 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT ExtractMode
00254 );
00255
00256 void SetGeometricObject (
00257 const RVC::OBJITEM& ObjItem
00258 );
00259
00260 void SetRegion (
00261 const REGION2D& region
00262 ) { m_Region = region; }
00263
00264 private:
00265 #ifndef GENERATING_DOXYGEN_OUTPUT
00266 typedef FORM_REGION THISCLASS;
00267
00268 MGUI::FORM_COMBOBOX m_CbxExtractMode;
00269 MGUI::CTRL_PUSHBUTTON m_BtnSelect;
00270 MGUI::CTRL_PUSHBUTTON m_BtnApplyToAll;
00271 MGUI::CTRL_TOGGLEBUTTON m_TglAddBorder;
00272 RVC::OBJITEM m_ObjItem;
00273 REGION2D m_Region;
00274 RVC::OBJTYPE m_DestObjType;
00275
00276 void OnBtnSelect ();
00277 void OnCbxExtractMode ();
00278 #endif // GENERATING_DOXYGEN_OUTPUT
00279 };
00280
00281 FORM_REGION m_FormRegion;
00282 RVC::GEOMETRIC::ELEMSELECTPARMS m_SelectParms;
00283
00284 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq) = 0;
00285 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms) = 0;
00286 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms) = 0;
00287 virtual void v_SetObject (const RVC::OBJITEM& ObjItem) = 0;
00288
00289 #endif // GENERATING_DOXYGEN_OUTPUT
00290 };
00291
00292 #ifndef GENERATING_DOXYGEN_OUTPUT
00293 DEFINE_ENUM_OP_BITWISE(FORM_SELECT_ELEMENTS_GEOMETRIC::REGIONFLAGS)
00294 #endif
00295
00296
00298 class FORM_SELECT_ELEMENTS_VECTOR : public FORM_SELECT_ELEMENTS_GEOMETRIC {
00299 public:
00300
00302 FORM_SELECT_ELEMENTS_VECTOR ();
00303
00305 virtual ~FORM_SELECT_ELEMENTS_VECTOR ();
00306
00307 private:
00308 #ifndef GENERATING_DOXYGEN_OUTPUT
00309 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Point;
00310 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Line;
00311 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Polygon;
00312 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Label;
00313
00314 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00315 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00316 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00317 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00318 #endif // GENERATING_DOXYGEN_OUTPUT
00319 };
00320
00321
00323 class FORM_SELECT_ELEMENTS_CAD : public FORM_SELECT_ELEMENTS_GEOMETRIC {
00324 public:
00325
00327 FORM_SELECT_ELEMENTS_CAD ();
00328
00330 virtual ~FORM_SELECT_ELEMENTS_CAD ();
00331
00332 private:
00333 #ifndef GENERATING_DOXYGEN_OUTPUT
00334 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Element;
00335
00336 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00337 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00338 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00339 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00340 #endif // GENERATING_DOXYGEN_OUTPUT
00341 };
00342
00343
00345 class FORM_SELECT_ELEMENTS_TIN : public FORM_SELECT_ELEMENTS_GEOMETRIC {
00346 public:
00347
00349 FORM_SELECT_ELEMENTS_TIN ();
00350
00352 virtual ~FORM_SELECT_ELEMENTS_TIN ();
00353
00354 private:
00355 #ifndef GENERATING_DOXYGEN_OUTPUT
00356 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Node;
00357 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Edge;
00358 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Triangle;
00359
00360 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00361 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00362 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00363 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00364 #endif // GENERATING_DOXYGEN_OUTPUT
00365 };
00366
00367
00369 class FORM_SELECT_ELEMENTS_SHAPE : public FORM_SELECT_ELEMENTS_GEOMETRIC {
00370 public:
00371
00373 FORM_SELECT_ELEMENTS_SHAPE ();
00374
00376 virtual ~FORM_SELECT_ELEMENTS_SHAPE ();
00377
00378 private:
00379 #ifndef GENERATING_DOXYGEN_OUTPUT
00380 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Element;
00381
00382 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00383 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00384 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00385 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00386 #endif // GENERATING_DOXYGEN_OUTPUT
00387 };
00388
00389
00391 class FORM_SELECT_ELEMENTS_REGION : public FORM_SELECT_ELEMENTS_GEOMETRIC {
00392 public:
00393
00395 FORM_SELECT_ELEMENTS_REGION ();
00396
00398 virtual ~FORM_SELECT_ELEMENTS_REGION ();
00399
00400 private:
00401 #ifndef GENERATING_DOXYGEN_OUTPUT
00402 FORM_SELECT_ELEMENTS_FIXEDTYPE m_Element;
00403
00404 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00405 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00406 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00407 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00408 #endif // GENERATING_DOXYGEN_OUTPUT
00409 };
00410
00411
00413 class FORM_GEOMETRIC_EXTRACT : public MGUI::FORM_COMPOSITE {
00414 public:
00415
00416 typedef fastdelegate::FastDelegate<void(const OBJITEM&)> DELEGATE_OBJITEM;
00417
00419 FORM_GEOMETRIC_EXTRACT ();
00420
00422 virtual ~FORM_GEOMETRIC_EXTRACT ();
00423
00424 void Clear ();
00425
00426 ERRVALUE Create (
00427 MGUI::LAYOUT_PANE_BASE& ParentPane,
00428 const RVC::OBJTYPESET& GeometricSet,
00429 RVC::OBJTYPE DestObjType,
00430 const MISTRING& prompt,
00431 GETOBJFLAGS GetObjFlags = GETOBJFLAG_None,
00432 RVC::GETOBJFILTER *pGetObjFilter = 0,
00433 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand,
00434 FORM_SELECT_ELEMENTS_GEOMETRIC::REGIONFLAGS RegionFlags = FORM_SELECT_ELEMENTS_GEOMETRIC::REGIONFLAG_None
00435 );
00436
00437 const BITSET_UNOWNED& GetAddBorderSet ();
00438
00439 const MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS>& GetElemSelectParms ();
00440
00441 const RVC::OBJITEMLIST& GetGeometricList () const
00442 { return (m_GeometricList.GetObjectList()); }
00443
00444 void SetDelegateOnObjectAdded (
00445 DELEGATE_OBJITEM delegate
00446 ) { m_DelegateOnObjectAdded = delegate; }
00447
00448 void SetDelegateOnObjectSelected (
00449 DELEGATE_OBJITEM delegate
00450 ) { m_DelegateOnObjectSelected = delegate; }
00451
00452 private:
00453 #ifndef GENERATING_DOXYGEN_OUTPUT
00454 typedef FORM_GEOMETRIC_EXTRACT THISCLASS;
00455
00456 RVC::UI::FORM_OBJECT_LIST m_GeometricList;
00457 FORM_SELECT_ELEMENTS_VECTOR m_VectorSelect;
00458 FORM_SELECT_ELEMENTS_CAD m_CADSelect;
00459 FORM_SELECT_ELEMENTS_TIN m_TINSelect;
00460 FORM_SELECT_ELEMENTS_SHAPE m_ShapeSelect;
00461 FORM_SELECT_ELEMENTS_REGION m_RegionSelect;
00462
00463 MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS> m_SelectParms;
00464 BITSET m_AddBorder;
00465 INT32 m_CurItem;
00466 DELEGATE_OBJITEM m_DelegateOnObjectAdded;
00467 DELEGATE_OBJITEM m_DelegateOnObjectSelected;
00468
00469 bool GetCurAddBorderFlag (RVC::OBJTYPE ObjType);
00470 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetCurElemSelectParms (RVC::OBJTYPE ObjType);
00471 void SetCurAddBorderFlag (RVC::OBJTYPE ObjType, bool value);
00472 void SetCurElemSelectParms (RVC::OBJTYPE ObjType, const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms);
00473 void SetCurElemSelectParmObjItem (const RVC::OBJITEM& ObjItem);
00474 void SetRegionForAllObjects ();
00475
00476 void OnObjectAdded (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00477 void OnObjectRemoved (INT32 ItemNum);
00478 void OnObjectSelected (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00479 void OnObjectsRemoved ();
00480 #endif // GENERATING_DOXYGEN_OUTPUT
00481 };
00482
00483
00484
00485 }
00486 }
00487
00488 #endif // INC_RVC_UIFORMSELECTELEMENTS_H