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