formelemselect.h

Go to the documentation of this file.
00001 /**
00002  * \file mgui/formelemselect.h
00003  * \brief MGUI::FORM_ELEMENT_SELECT class definitions
00004  *
00005  * \if NODOC
00006  * $Id: formelemselect.h_v 1.13 2004/10/22 17:41:10 scowan Exp $
00007  *
00008  * $Log: formelemselect.h_v $
00009  * Revision 1.13  2004/10/22 17:41:10  scowan
00010  * Added ability to apply region selection to all selected objects.
00011  *
00012  * Revision 1.12  2004/07/19 19:13:38  scowan
00013  * Added more to option selection.
00014  *
00015  * Revision 1.11  2004/07/08 21:01:50  scowan
00016  * Updated to better reuse code.
00017  *
00018  * Revision 1.10  2004/07/07 17:09:49  scowan
00019  * Set method pointer to null initialy.
00020  *
00021  * Revision 1.9  2004/07/02 19:27:06  scowan
00022  * Added a virtual method.
00023  *
00024  * Revision 1.8  2004/07/02 14:27:34  scowan
00025  * Added current object item number.
00026  *
00027  * Revision 1.7  2004/07/01 19:58:27  scowan
00028  * Now is working mostly.
00029  *
00030  * Revision 1.6  2004/07/01 16:34:57  scowan
00031  * Now compiles.
00032  *
00033  * Revision 1.5  2003/12/16 15:57:43  mju
00034  * Use dlgshell.
00035  *
00036  * Revision 1.4  2003/10/03 19:58:19  linux32build!build
00037  * Doxygen
00038  *
00039  * Revision 1.3  2003/09/15 13:49:32  fileserver!dwilliss
00040  * Doxygen
00041  *
00042  * Revision 1.2  2003/06/19 19:10:35  scowan
00043  * *** empty log message ***
00044  *
00045  * Revision 1.1  2003/04/24 19:08:45  scowan
00046  * Initial revision
00047  *
00048  * \endif
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       //! Constructor.
00112       FORM_ELEMENT_SELECT_BASE (
00113          );
00114 
00115       //! Destructor.
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       //! Constructor.
00148       FORM_ELEMENT_SELECT (
00149          );
00150 
00151       //! Destructor.
00152       virtual ~FORM_ELEMENT_SELECT (
00153          );
00154    
00155       ERRVALUE Create (
00156          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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       //! Constructor.
00187       FORM_ELEMENT_SELECT_OPTION (
00188          );
00189 
00190       //! Destructor.
00191       virtual ~FORM_ELEMENT_SELECT_OPTION (
00192          );
00193    
00194       ERRVALUE Create (
00195          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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       //! Constructor.
00232       FORM_REGION_SELECT (
00233          );
00234 
00235       //! Destructor.
00236       virtual ~FORM_REGION_SELECT (
00237          );
00238    
00239       ERRVALUE Create (
00240          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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 //! Convenience template for FORM_REGION_SELECT form to allow method in container class to be called.
00295 //! This template allows a method in a 'container' class to be called when the button is pressed,
00296 //! rather than requiring that a subclass be defined with the OnPressed() virtual method overridden.
00297 template <class _CT> class FORM_REGION_SELECT_T : public MGUI::FORM_REGION_SELECT {
00298    public:
00299 
00300       //! Constructor.
00301       FORM_REGION_SELECT_T (
00302          ) : m_pContainer(0), m_pfOnApplyToAll(0) {}
00303 
00304       //! Create control with label from resource lookup.
00305       void Create (
00306          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00307          _CT *pContainer,                       //!< Pointer to callback container class
00308          void (_CT::*pfOnApplyToAll)(),         //! Callback function pointer
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 // Forward Declarations
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       //! Constructor.
00343       FORM_BASE_ELEMENT_SELECT (
00344          );
00345 
00346       //! Destructor.
00347       virtual ~FORM_BASE_ELEMENT_SELECT (
00348          );
00349    
00350       ERRVALUE Create (
00351          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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 // GENERATING_DOXYGEN_OUTPUT
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       //! Constructor.
00413       FORM_VECTOR_ELEMENT_SELECT (
00414          );
00415 
00416       //! Destructor.
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       //! Constructor.
00439       FORM_CAD_ELEMENT_SELECT (
00440          );
00441 
00442       //! Destructor.
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       //! Constructor.
00462       FORM_TIN_ELEMENT_SELECT (
00463          );
00464 
00465       //! Destructor.
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       //! Constructor.
00487       FORM_SHAPE_ELEMENT_SELECT (
00488          );
00489 
00490       //! Destructor.
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       //! Constructor.
00509       FORM_REGION_ELEMENT_SELECT (
00510          );
00511 
00512       //! Destructor.
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       //! Constructor.
00532       FORM_GEOMETRIC_EXTRACT_SELECT (
00533          );
00534 
00535       //! Destructor.
00536       virtual ~FORM_GEOMETRIC_EXTRACT_SELECT (
00537          );
00538          
00539       void Clear (
00540          );
00541    
00542       ERRVALUE Create (
00543          MGUI::LAYOUT_PANE_BASE& ParentPane,                   //!< Parent pane
00544          const RVC::OBJTYPESET& GeometricSet,                  //!< Set of geometric objects to work on
00545          RVC::OBJTYPE DestObjType,
00546          TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,      //!< Usually in the form of TEXTID_Prompt_XXXs_Input
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 //! Convenience template for OBJECT_LIST form to allow method in container class to be called.
00620 //! This template allows a method in a 'container' class to be called when the button is pressed,
00621 //! rather than requiring that a subclass be defined with the OnPressed() virtual method overridden.
00622 template <class _CT> class FORM_GEOMETRIC_EXTRACT_SELECT_T : public MGUI::FORM_GEOMETRIC_EXTRACT_SELECT {
00623    public:
00624 
00625       //! Constructor.
00626       FORM_GEOMETRIC_EXTRACT_SELECT_T (
00627          ) : m_pContainer(0), m_pfOnObjectSelected(0), m_pfOnObjectAdded(0) {}
00628 
00629       //! Create control with label from resource lookup.
00630       void Create (
00631          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00632          _CT *pContainer,                       //!< Pointer to callback container class
00633          void (_CT::*pfOnObjectSelected)(const RVC::OBJITEM& ObjItem),        //! Callback function pointer
00634          const RVC::OBJTYPESET& GeometricSet,                  //!< Set of geometric objects to work on
00635          RVC::OBJTYPE DestObjType,
00636          TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,      //!< Usually in the form of TEXTID_Prompt_XXXs_Input
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       //! Set method to call when user adds an object to the list
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       //! Constructor.
00668       DLG_RECORD_SET_SELECT (
00669          const RVC::OBJITEM& ParentObjItem,
00670          ELEMTYPE ElemType
00671          );
00672    
00673       //! Destructor.
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 }     // End of MGUI namespace
00725 
00726 #endif   // INC_MGUI_FORMELEMSELECT_H

Generated on Tue Dec 14 13:18:17 2004 for TNTsdk by  doxygen 1.3.8-20040913