00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #ifndef INC_MGUI_FORMELEMSELECT_H
00052 #define INC_MGUI_FORMELEMSELECT_H
00053
00054 #ifndef INC_MGUI_CTRL_H
00055 #include <mgui/ctrl.h>
00056 #endif
00057
00058 #ifndef INC_MGUI_GRID_H
00059 #include <mgui/grid.h>
00060 #endif
00061
00062 #ifndef INC_MGUI_DLGSHELL_H
00063 #include <mgui/dlgshell.h>
00064 #endif
00065
00066 #ifndef INC_MGUI_FORMOBJL_H
00067 #include <mgui/formobjl.h>
00068 #endif
00069
00070 #ifndef INC_MGUI_COMBOBOX_H
00071 #include <mgui/combobox.h>
00072 #endif
00073
00074 #ifndef INC_RVC_GEOMETRC_H
00075 #include <rvc/geometrc.h>
00076 #endif
00077
00078 #ifndef INC_RVC_DBASE_H
00079 #include <rvc/dbase.h>
00080 #endif
00081
00082 #ifndef INC_RVC_DBTABLE_H
00083 #include <rvc/dbtable.h>
00084 #endif
00085
00086 #ifndef INC_MI32_REGION2D_H
00087 #include <mi32/region2d.h>
00088 #endif
00089
00090 #ifndef INC_MI32_TEXTID_H
00091 #include <mi32/textid.h>
00092 #endif
00093
00094 #ifndef INC_MI32_BITSET_H
00095 #include <mi32/bitset.h>
00096 #endif
00097
00098 #ifndef INC_MI32_OBSERVER_H
00099 #include <mi32/observer.h>
00100 #endif
00101
00102 #ifndef GENERATING_DOXYGEN_OUTPUT
00103 class ELEMTYPESET;
00104 #endif // GENERATING_DOXYGEN_OUTPUT
00105
00106 namespace MGUI {
00107
00108 class FORM_ELEMENT_SELECT_BASE : public MGUI::FORM_COMPOSITE {
00109 public:
00110
00111
00112 FORM_ELEMENT_SELECT_BASE (
00113 );
00114
00115
00116 virtual ~FORM_ELEMENT_SELECT_BASE (
00117 );
00118
00119 void SetGeometricObject (
00120 const RVC::OBJITEM& ObjItem
00121 );
00122
00123 protected:
00124 ERRVALUE CreateBase (MGUI::LAYOUT_PANE_BASE& ParentPane, bool AllowNone = true);
00125 TEXTID GetTextID (ELEMTYPE ElemType);
00126 void SetElemSelectParmsItemBase (RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& item);
00127
00128 private:
00129 #ifndef GENERATING_DOXYGEN_OUTPUT
00130 MGUI::CTRL_COMBOBOX_T<FORM_ELEMENT_SELECT_BASE> m_ElemSelect;
00131 MGUI::CTRL_PUSHBUTTON_T<FORM_ELEMENT_SELECT_BASE> m_Select;
00132 RVC::OBJITEM m_ObjItem;
00133
00134 virtual ELEMTYPE v_GetCurElemType () const = 0;
00135 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem () = 0;
00136
00137 void OnSelection ();
00138 void OnSelectPressed ();
00139 void UpdateState ();
00140 #endif // GENERATING_DOXYGEN_OUTPUT
00141 };
00142
00143
00144 class FORM_ELEMENT_SELECT : public FORM_ELEMENT_SELECT_BASE {
00145 public:
00146
00147
00148 FORM_ELEMENT_SELECT (
00149 );
00150
00151
00152 virtual ~FORM_ELEMENT_SELECT (
00153 );
00154
00155 ERRVALUE Create (
00156 MGUI::LAYOUT_PANE_BASE& ParentPane,
00157 ELEMTYPE ElemType,
00158 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00159 );
00160
00161 const RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& GetElemSelectParmsItem (
00162 );
00163
00164 CTRL_LABEL& GetLabel (
00165 );
00166
00167 void SetElemSelectParmsItem (
00168 const RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& item
00169 );
00170
00171 private:
00172 #ifndef GENERATING_DOXYGEN_OUTPUT
00173 MGUI::CTRL_LABEL m_Label;
00174 RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM m_SelectItem;
00175 ELEMTYPE m_ElemType;
00176
00177 virtual ELEMTYPE v_GetCurElemType () const;
00178 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem ();
00179 #endif // GENERATING_DOXYGEN_OUTPUT
00180 };
00181
00182
00183 class FORM_ELEMENT_SELECT_OPTION : public FORM_ELEMENT_SELECT_BASE {
00184 public:
00185
00186
00187 FORM_ELEMENT_SELECT_OPTION (
00188 );
00189
00190
00191 virtual ~FORM_ELEMENT_SELECT_OPTION (
00192 );
00193
00194 ERRVALUE Create (
00195 MGUI::LAYOUT_PANE_BASE& ParentPane,
00196 RVC::OBJTYPE ObjType,
00197 const ELEMTYPESET& ValidTypes,
00198 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00199 );
00200
00201 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetElemSelectParms (
00202 );
00203
00204 void SetElemSelectParms (
00205 const RVC::GEOMETRIC::ELEMSELECTPARMS& parms
00206 );
00207
00208 void SetElemTypeSet (
00209 const ELEMTYPESET& ValidTypes
00210 );
00211
00212 private:
00213 #ifndef GENERATING_DOXYGEN_OUTPUT
00214 MGUI::CTRL_COMBOBOX_T<FORM_ELEMENT_SELECT_OPTION> m_ElemTypeSelect;
00215 RVC::GEOMETRIC::ELEMSELECTPARMS m_SelectParms;
00216 ELEMTYPE m_ElemType;
00217 RVC::OBJTYPE m_ObjType;
00218
00219 virtual ELEMTYPE v_GetCurElemType () const;
00220 virtual RVC::GEOMETRIC::ELEMSELECTPARMS::ITEM& v_GetCurSelectParmItem ();
00221
00222 void OnElemTypeSelect ();
00223 #endif // GENERATING_DOXYGEN_OUTPUT
00224 };
00225
00226
00227
00228 class FORM_REGION_SELECT : public MGUI::FORM_COMPOSITE {
00229 public:
00230
00231
00232 FORM_REGION_SELECT (
00233 );
00234
00235
00236 virtual ~FORM_REGION_SELECT (
00237 );
00238
00239 ERRVALUE Create (
00240 MGUI::LAYOUT_PANE_BASE& ParentPane,
00241 RVC::OBJTYPE DestObjType,
00242 bool AddApplyToAllBtn = false,
00243 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00244 );
00245
00246 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT GetExtractMode (
00247 ) const;
00248
00249 CTRL_LABEL& GetLabel (
00250 );
00251
00252 const REGION2D& GetRegion (
00253 ) const;
00254
00255 bool IsAddBorderEnabled (
00256 ) const;
00257
00258 void SetAddBorder (
00259 bool value
00260 );
00261
00262 void SetExtractMode (
00263 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT ExtractMode
00264 );
00265
00266 void SetGeometricObject (
00267 const RVC::OBJITEM& ObjItem
00268 );
00269
00270 void SetRegion (
00271 const REGION2D& region
00272 );
00273
00274 private:
00275 virtual void v_OnApplyToAll ();
00276
00277 #ifndef GENERATING_DOXYGEN_OUTPUT
00278 MGUI::FORM_COMBOBOX_T<FORM_REGION_SELECT> m_ExtractSelect;
00279 MGUI::CTRL_PUSHBUTTON_T<FORM_REGION_SELECT> m_Select;
00280 MGUI::CTRL_PUSHBUTTON_T<FORM_REGION_SELECT> m_ApplyToAll;
00281 MGUI::CTRL_TOGGLEBUTTON m_AddBorder;
00282 RVC::OBJITEM m_ObjItem;
00283 REGION2D m_Region;
00284 RVC::OBJTYPE m_DestObjType;
00285
00286 void OnApplyToAllPressed ();
00287 void OnSelection ();
00288 void OnSelectPressed ();
00289 #endif // GENERATING_DOXYGEN_OUTPUT
00290 };
00291
00292
00293
00294
00295
00296
00297 template <class _CT> class FORM_REGION_SELECT_T : public MGUI::FORM_REGION_SELECT {
00298 public:
00299
00300
00301 FORM_REGION_SELECT_T (
00302 ) : m_pContainer(0), m_pfOnApplyToAll(0) {}
00303
00304
00305 void Create (
00306 MGUI::LAYOUT_PANE_BASE& ParentPane,
00307 _CT *pContainer,
00308 void (_CT::*pfOnApplyToAll)(),
00309 RVC::OBJTYPE DestObjType,
00310 bool AddApplyToAllBtn = false,
00311 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00312 ) {
00313 m_pContainer = pContainer;
00314 m_pfOnApplyToAll = pfOnApplyToAll;
00315 FORM_REGION_SELECT::Create(ParentPane, DestObjType, AddApplyToAllBtn, sizealign);
00316 }
00317
00318 private:
00319 #ifndef GENERATING_DOXYGEN_OUTPUT
00320 _CT *m_pContainer;
00321 void (_CT::*m_pfOnApplyToAll)();
00322
00323 virtual void v_OnApplyToAll () { if (m_pfOnApplyToAll != 0) (m_pContainer->*m_pfOnApplyToAll)(); }
00324 #endif // GENERATING_DOXYGEN_OUTPUT
00325 };
00326
00327
00328 #ifndef GENERATING_DOXYGEN_OUTPUT
00329
00330 class FORM_BASE_ELEMENT_SELECT_OBSERVER;
00331 #endif // GENERATING_DOXYGEN_OUTPUT
00332
00333 class FORM_BASE_ELEMENT_SELECT : public MGUI::FORM_COMPOSITE, public SUBJECT<FORM_BASE_ELEMENT_SELECT_OBSERVER> {
00334 public:
00335
00336 enum REGIONFLAGS {
00337 REGIONFLAG_None = 0,
00338 REGIONFLAG_NoSelection = 1,
00339 REGIONFLAG_AddApplyToAllBtn = 2
00340 };
00341
00342
00343 FORM_BASE_ELEMENT_SELECT (
00344 );
00345
00346
00347 virtual ~FORM_BASE_ELEMENT_SELECT (
00348 );
00349
00350 ERRVALUE Create (
00351 MGUI::LAYOUT_PANE_BASE& ParentPane,
00352 RVC::OBJTYPE DestObjType,
00353 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00354 REGIONFLAGS RegionFlags = REGIONFLAG_None
00355 );
00356
00357 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetElemSelectParms (
00358 );
00359
00360 bool IsAddBorderEnabled (
00361 ) const;
00362
00363 void SetAddBorder (
00364 bool value
00365 );
00366
00367 void SetElemSelectParms (
00368 const RVC::GEOMETRIC::ELEMSELECTPARMS& parms
00369 );
00370
00371 void SetObject (
00372 const RVC::OBJITEM& ObjItem
00373 );
00374
00375 private:
00376 #ifndef GENERATING_DOXYGEN_OUTPUT
00377 FORM_REGION_SELECT_T<FORM_BASE_ELEMENT_SELECT> m_Region;
00378 RVC::GEOMETRIC::ELEMSELECTPARMS m_SelectParms;
00379
00380 void CallOnApplyToAll ();
00381
00382 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq) = 0;
00383 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms) = 0;
00384 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms) = 0;
00385 virtual void v_SetObject (const RVC::OBJITEM& ObjItem) = 0;
00386
00387 #endif
00388 };
00389 DEFINE_ENUM_OP_BITWISE(FORM_BASE_ELEMENT_SELECT::REGIONFLAGS);
00390
00391
00392 class FORM_BASE_ELEMENT_SELECT_OBSERVER : public OBSERVER_BASE {
00393 public:
00394
00395 FORM_BASE_ELEMENT_SELECT_OBSERVER (
00396 FORM_BASE_ELEMENT_SELECT& fbes
00397 ) :
00398 OBSERVER_BASE(fbes)
00399 {}
00400
00401 virtual ~FORM_BASE_ELEMENT_SELECT_OBSERVER (
00402 ) {}
00403
00404 virtual void v_OnApplyToAll (
00405 ) { return; }
00406 };
00407
00408
00409 class FORM_VECTOR_ELEMENT_SELECT : public FORM_BASE_ELEMENT_SELECT {
00410 public:
00411
00412
00413 FORM_VECTOR_ELEMENT_SELECT (
00414 );
00415
00416
00417 virtual ~FORM_VECTOR_ELEMENT_SELECT (
00418 );
00419
00420 private:
00421 #ifndef GENERATING_DOXYGEN_OUTPUT
00422 FORM_ELEMENT_SELECT m_Point;
00423 FORM_ELEMENT_SELECT m_Line;
00424 FORM_ELEMENT_SELECT m_Polygon;
00425 FORM_ELEMENT_SELECT m_Label;
00426
00427 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00428 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00429 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00430 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00431 #endif // GENERATING_DOXYGEN_OUTPUT
00432 };
00433
00434
00435 class FORM_CAD_ELEMENT_SELECT : public FORM_BASE_ELEMENT_SELECT {
00436 public:
00437
00438
00439 FORM_CAD_ELEMENT_SELECT (
00440 );
00441
00442
00443 virtual ~FORM_CAD_ELEMENT_SELECT (
00444 );
00445
00446 private:
00447 #ifndef GENERATING_DOXYGEN_OUTPUT
00448 FORM_ELEMENT_SELECT m_Element;
00449
00450 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00451 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00452 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00453 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00454 #endif // GENERATING_DOXYGEN_OUTPUT
00455 };
00456
00457
00458 class FORM_TIN_ELEMENT_SELECT : public FORM_BASE_ELEMENT_SELECT {
00459 public:
00460
00461
00462 FORM_TIN_ELEMENT_SELECT (
00463 );
00464
00465
00466 virtual ~FORM_TIN_ELEMENT_SELECT (
00467 );
00468
00469 private:
00470 #ifndef GENERATING_DOXYGEN_OUTPUT
00471 FORM_ELEMENT_SELECT m_Node;
00472 FORM_ELEMENT_SELECT m_Edge;
00473 FORM_ELEMENT_SELECT m_Triangle;
00474
00475 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00476 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00477 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00478 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00479 #endif // GENERATING_DOXYGEN_OUTPUT
00480 };
00481
00482
00483 class FORM_SHAPE_ELEMENT_SELECT : public FORM_BASE_ELEMENT_SELECT {
00484 public:
00485
00486
00487 FORM_SHAPE_ELEMENT_SELECT (
00488 );
00489
00490
00491 virtual ~FORM_SHAPE_ELEMENT_SELECT (
00492 );
00493
00494 private:
00495 #ifndef GENERATING_DOXYGEN_OUTPUT
00496 FORM_ELEMENT_SELECT m_Element;
00497
00498 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00499 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00500 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00501 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00502 #endif // GENERATING_DOXYGEN_OUTPUT
00503 };
00504
00505
00506 class FORM_REGION_ELEMENT_SELECT : public FORM_BASE_ELEMENT_SELECT {
00507 public:
00508
00509 FORM_REGION_ELEMENT_SELECT (
00510 );
00511
00512
00513 virtual ~FORM_REGION_ELEMENT_SELECT (
00514 );
00515
00516 private:
00517 #ifndef GENERATING_DOXYGEN_OUTPUT
00518 FORM_ELEMENT_SELECT m_Element;
00519
00520 virtual ERRVALUE v_CreateContent (MGUI::LAYOUT_PANE_BASE& ParentPane, MGUI::LAYOUT_EQUALIZER& eq);
00521 virtual void v_GetElemSelectParms (RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00522 virtual void v_SetElemSelectParms (const RVC::GEOMETRIC::ELEMSELECTPARMS& parms);
00523 virtual void v_SetObject (const RVC::OBJITEM& ObjItem);
00524 #endif // GENERATING_DOXYGEN_OUTPUT
00525 };
00526
00527
00528 class FORM_GEOMETRIC_EXTRACT_SELECT : public MGUI::FORM_COMPOSITE {
00529 public:
00530
00531
00532 FORM_GEOMETRIC_EXTRACT_SELECT (
00533 );
00534
00535
00536 virtual ~FORM_GEOMETRIC_EXTRACT_SELECT (
00537 );
00538
00539 void Clear (
00540 );
00541
00542 ERRVALUE Create (
00543 MGUI::LAYOUT_PANE_BASE& ParentPane,
00544 const RVC::OBJTYPESET& GeometricSet,
00545 RVC::OBJTYPE DestObjType,
00546 TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,
00547 GETOBJFLAGS GetObjFlags = GETOBJFLAG_None,
00548 RVC::GETOBJFILTER* GetObjFilter = 0,
00549 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand,
00550 FORM_BASE_ELEMENT_SELECT::REGIONFLAGS RegionFlags = FORM_BASE_ELEMENT_SELECT::REGIONFLAG_None
00551 );
00552
00553 const BITSET_UNOWNED& GetAddBorderSet (
00554 );
00555
00556 const MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS>& GetElemSelectParms (
00557 );
00558
00559 const RVC::OBJITEMLIST& GetGeometricList (
00560 ) const;
00561
00562 protected:
00563
00564 virtual void v_OnObjectSelected (const RVC::OBJITEM& ObjItem);
00565 virtual void v_OnObjectAdded (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00566
00567 private:
00568 class SELECT_OBSERVER : public FORM_BASE_ELEMENT_SELECT_OBSERVER {
00569 public:
00570 SELECT_OBSERVER (
00571 FORM_GEOMETRIC_EXTRACT_SELECT& fges,
00572 FORM_BASE_ELEMENT_SELECT& fbes
00573 ) :
00574 FORM_BASE_ELEMENT_SELECT_OBSERVER(fbes),
00575 m_fges(fges)
00576 {}
00577
00578 virtual ~SELECT_OBSERVER () {}
00579 private:
00580 FORM_GEOMETRIC_EXTRACT_SELECT& m_fges;
00581 virtual void v_OnApplyToAll ();
00582 };
00583 friend class SELECT_OBSERVER;
00584
00585 #ifndef GENERATING_DOXYGEN_OUTPUT
00586 FORM_OBJECT_LIST_T<FORM_GEOMETRIC_EXTRACT_SELECT> m_GeometricList;
00587 FORM_VECTOR_ELEMENT_SELECT m_VectorSelect;
00588 SELECT_OBSERVER* m_VectorObserver;
00589 FORM_CAD_ELEMENT_SELECT m_CADSelect;
00590 SELECT_OBSERVER* m_CADObserver;
00591 FORM_TIN_ELEMENT_SELECT m_TINSelect;
00592 SELECT_OBSERVER* m_TINObserver;
00593 FORM_SHAPE_ELEMENT_SELECT m_ShapeSelect;
00594 SELECT_OBSERVER* m_ShapeObserver;
00595 FORM_REGION_ELEMENT_SELECT m_RegionSelect;
00596 SELECT_OBSERVER* m_RegionObserver;
00597
00598 MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS> m_SelectParms;
00599 BITSET m_AddBorder;
00600 INT32 m_CurItem;
00601
00602 bool GetCurAddBorderFlag (RVC::OBJTYPE ObjType);
00603 const RVC::GEOMETRIC::ELEMSELECTPARMS& GetCurElemSelectParms (RVC::OBJTYPE ObjType);
00604 void SetCurAddBorderFlag (RVC::OBJTYPE ObjType, bool value);
00605 void SetCurElemSelectParms (RVC::OBJTYPE ObjType, const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms);
00606 void SetCurElemSelectParmObjItem (const RVC::OBJITEM& ObjItem);
00607 void SetRegionForAllObjects ();
00608
00609 void OnObjectAdded (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00610 void OnObjectRemoved (INT32 ItemNum);
00611 void OnObjectSelected (const RVC::OBJITEM& ObjItem);
00612 void OnObjectSelectedNum (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00613 void OnObjectsRemoved ();
00614 #endif // GENERATING_DOXYGEN_OUTPUT
00615 };
00616
00617
00618
00619
00620
00621
00622 template <class _CT> class FORM_GEOMETRIC_EXTRACT_SELECT_T : public MGUI::FORM_GEOMETRIC_EXTRACT_SELECT {
00623 public:
00624
00625
00626 FORM_GEOMETRIC_EXTRACT_SELECT_T (
00627 ) : m_pContainer(0), m_pfOnObjectSelected(0), m_pfOnObjectAdded(0) {}
00628
00629
00630 void Create (
00631 MGUI::LAYOUT_PANE_BASE& ParentPane,
00632 _CT *pContainer,
00633 void (_CT::*pfOnObjectSelected)(const RVC::OBJITEM& ObjItem),
00634 const RVC::OBJTYPESET& GeometricSet,
00635 RVC::OBJTYPE DestObjType,
00636 TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,
00637 GETOBJFLAGS GetObjFlags = GETOBJFLAG_None,
00638 RVC::GETOBJFILTER* GetObjFilter = 0,
00639 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand,
00640 FORM_BASE_ELEMENT_SELECT::REGIONFLAGS RegionFlags = FORM_BASE_ELEMENT_SELECT::REGIONFLAG_None
00641 ) {
00642 m_pContainer = pContainer;
00643 m_pfOnObjectSelected = pfOnObjectSelected;
00644 FORM_GEOMETRIC_EXTRACT_SELECT::Create(ParentPane, GeometricSet, DestObjType, TextID, GetObjFlags, GetObjFilter, sizealign, RegionFlags);
00645 }
00646
00647
00648 void SetObjectAdded (
00649 void (_CT::*ObjectAdded)(const RVC::OBJITEM& ObjItem, INT32 ItemNum)
00650 ) { m_pfOnObjectAdded = ObjectAdded; };
00651
00652 private:
00653 #ifndef GENERATING_DOXYGEN_OUTPUT
00654 _CT *m_pContainer;
00655 void (_CT::*m_pfOnObjectSelected)(const RVC::OBJITEM& ObjItem);
00656 void (_CT::*m_pfOnObjectAdded)(const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00657
00658 virtual void v_OnObjectAdded (const RVC::OBJITEM& ObjItem, INT32 ItemNum) { if (m_pfOnObjectAdded != 0) (m_pContainer->*m_pfOnObjectAdded)(ObjItem, ItemNum); }
00659 virtual void v_OnObjectSelected (const RVC::OBJITEM& ObjItem) { (m_pContainer->*m_pfOnObjectSelected)(ObjItem); }
00660 #endif // GENERATING_DOXYGEN_OUTPUT
00661 };
00662
00663
00664 class DLG_RECORD_SET_SELECT : public MGUI::DLGSHELL {
00665 public:
00666
00667
00668 DLG_RECORD_SET_SELECT (
00669 const RVC::OBJITEM& ParentObjItem,
00670 ELEMTYPE ElemType
00671 );
00672
00673
00674 virtual ~DLG_RECORD_SET_SELECT (
00675 );
00676
00677 const BITSET& GetRecordSet (
00678 ) const { return (m_RecordSet); }
00679
00680 const RVC::OBJECTNAME& GetTableName (
00681 ) const { return (m_TableName); }
00682
00683 void SetRecordSet (
00684 const BITSET& RecordSet
00685 );
00686
00687 void SetTableName (
00688 const RVC::OBJECTNAME& TableName
00689 );
00690
00691 private:
00692 #ifndef GENERATING_DOXYGEN_OUTPUT
00693 MGUI::LAYOUT_PANE m_IconPane;
00694 MGUI::FORM_COMBOBOX_T<DLG_RECORD_SET_SELECT> m_FieldSelect;
00695 MGUI::CTRL_PUSHBUTTON_T<DLG_RECORD_SET_SELECT> m_Select;
00696 MGUI::CTRL_PUSHBUTTON_T<DLG_RECORD_SET_SELECT> m_SelectAll;
00697 MGUI::CTRL_PUSHBUTTON_T<DLG_RECORD_SET_SELECT> m_Unselect;
00698 MGUI::CTRL_PUSHBUTTON_T<DLG_RECORD_SET_SELECT> m_UnselectAll;
00699 MGUI::CTRL_GRID_T<DLG_RECORD_SET_SELECT> m_RecGrid;
00700 RVC::OBJITEM m_ObjItem;
00701 RVC::DBASE m_DBaseObj;
00702 RVC::DBTABLE m_TableObj;
00703 RVC::DBTABLE::RECORD m_Record;
00704 SIMPLE_ARRAY<INT32> m_RecIndex;
00705 BITSET m_DuplicateBits;
00706 RVC::OBJECTNAME m_TableName;
00707 INT32 m_FieldNum;
00708 BITSET m_RecordSet;
00709 ELEMTYPE m_ElemType;
00710
00711 virtual ERRVALUE v_CreateContent ();
00712
00713 void OnClickItem (int itemnum, int column, KEYSTATE state);
00714 void OnFieldSelect ();
00715 bool OnGetDispInfo (int row, int col, CTRL_GRID::DISPINFO& dispinfo);
00716 void OnSelectPressed ();
00717 void OnSelectAllPressed ();
00718 void OnUnselectPressed ();
00719 void OnUnselectAllPressed ();
00720 #endif // GENERATING_DOXYGEN_OUTPUT
00721
00722 };
00723
00724 }
00725
00726 #endif // INC_MGUI_FORMELEMSELECT_H