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.14 2005/03/08 14:32:49 mju Exp $
00007  *
00008  * $Log: formelemselect.h_v $
00009  * Revision 1.14  2005/03/08 14:32:49  mju
00010  * Update for form_object_list change for onObjectSelected.
00011  *
00012  * Revision 1.13  2004/10/22 17:41:10  scowan
00013  * Added ability to apply region selection to all selected objects.
00014  *
00015  * Revision 1.12  2004/07/19 19:13:38  scowan
00016  * Added more to option selection.
00017  *
00018  * Revision 1.11  2004/07/08 21:01:50  scowan
00019  * Updated to better reuse code.
00020  *
00021  * Revision 1.10  2004/07/07 17:09:49  scowan
00022  * Set method pointer to null initialy.
00023  *
00024  * Revision 1.9  2004/07/02 19:27:06  scowan
00025  * Added a virtual method.
00026  *
00027  * Revision 1.8  2004/07/02 14:27:34  scowan
00028  * Added current object item number.
00029  *
00030  * Revision 1.7  2004/07/01 19:58:27  scowan
00031  * Now is working mostly.
00032  *
00033  * Revision 1.6  2004/07/01 16:34:57  scowan
00034  * Now compiles.
00035  *
00036  * Revision 1.5  2003/12/16 15:57:43  mju
00037  * Use dlgshell.
00038  *
00039  * Revision 1.4  2003/10/03 19:58:19  linux32build!build
00040  * Doxygen
00041  *
00042  * Revision 1.3  2003/09/15 13:49:32  fileserver!dwilliss
00043  * Doxygen
00044  *
00045  * Revision 1.2  2003/06/19 19:10:35  scowan
00046  * *** empty log message ***
00047  *
00048  * Revision 1.1  2003/04/24 19:08:45  scowan
00049  * Initial revision
00050  *
00051  * \endif
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       //! Constructor.
00115       FORM_ELEMENT_SELECT_BASE (
00116          );
00117 
00118       //! Destructor.
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       //! Constructor.
00151       FORM_ELEMENT_SELECT (
00152          );
00153 
00154       //! Destructor.
00155       virtual ~FORM_ELEMENT_SELECT (
00156          );
00157    
00158       ERRVALUE Create (
00159          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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       //! Constructor.
00190       FORM_ELEMENT_SELECT_OPTION (
00191          );
00192 
00193       //! Destructor.
00194       virtual ~FORM_ELEMENT_SELECT_OPTION (
00195          );
00196    
00197       ERRVALUE Create (
00198          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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       //! Constructor.
00235       FORM_REGION_SELECT (
00236          );
00237 
00238       //! Destructor.
00239       virtual ~FORM_REGION_SELECT (
00240          );
00241    
00242       ERRVALUE Create (
00243          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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 //! Convenience template for FORM_REGION_SELECT form to allow method in container class to be called.
00298 //! This template allows a method in a 'container' class to be called when the button is pressed,
00299 //! rather than requiring that a subclass be defined with the OnPressed() virtual method overridden.
00300 template <class _CT> class FORM_REGION_SELECT_T : public MGUI::FORM_REGION_SELECT {
00301    public:
00302 
00303       //! Constructor.
00304       FORM_REGION_SELECT_T (
00305          ) : m_pContainer(0), m_pfOnApplyToAll(0) {}
00306 
00307       //! Create control with label from resource lookup.
00308       void Create (
00309          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00310          _CT *pContainer,                       //!< Pointer to callback container class
00311          void (_CT::*pfOnApplyToAll)(),         //! Callback function pointer
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 // Forward Declarations
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       //! Constructor.
00346       FORM_BASE_ELEMENT_SELECT (
00347          );
00348 
00349       //! Destructor.
00350       virtual ~FORM_BASE_ELEMENT_SELECT (
00351          );
00352    
00353       ERRVALUE Create (
00354          MGUI::LAYOUT_PANE_BASE& ParentPane,          //!< Parent pane
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 // GENERATING_DOXYGEN_OUTPUT
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       //! Constructor.
00416       FORM_VECTOR_ELEMENT_SELECT (
00417          );
00418 
00419       //! Destructor.
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       //! Constructor.
00442       FORM_CAD_ELEMENT_SELECT (
00443          );
00444 
00445       //! Destructor.
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       //! Constructor.
00465       FORM_TIN_ELEMENT_SELECT (
00466          );
00467 
00468       //! Destructor.
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       //! Constructor.
00490       FORM_SHAPE_ELEMENT_SELECT (
00491          );
00492 
00493       //! Destructor.
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       //! Constructor.
00512       FORM_REGION_ELEMENT_SELECT (
00513          );
00514 
00515       //! Destructor.
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       //! Constructor.
00535       FORM_GEOMETRIC_EXTRACT_SELECT (
00536          );
00537 
00538       //! Destructor.
00539       virtual ~FORM_GEOMETRIC_EXTRACT_SELECT (
00540          );
00541          
00542       void Clear (
00543          );
00544    
00545       ERRVALUE Create (
00546          MGUI::LAYOUT_PANE_BASE& ParentPane,                   //!< Parent pane
00547          const RVC::OBJTYPESET& GeometricSet,                  //!< Set of geometric objects to work on
00548          RVC::OBJTYPE DestObjType,
00549          TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,      //!< Usually in the form of TEXTID_Prompt_XXXs_Input
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 //! Convenience template for OBJECT_LIST form to allow method in container class to be called.
00622 //! This template allows a method in a 'container' class to be called when the button is pressed,
00623 //! rather than requiring that a subclass be defined with the OnPressed() virtual method overridden.
00624 template <class _CT> class FORM_GEOMETRIC_EXTRACT_SELECT_T : public MGUI::FORM_GEOMETRIC_EXTRACT_SELECT {
00625    public:
00626 
00627       //! Constructor.
00628       FORM_GEOMETRIC_EXTRACT_SELECT_T (
00629          ) : m_pContainer(0), m_pfOnObjectSelected(0), m_pfOnObjectAdded(0) {}
00630 
00631       //! Create control with label from resource lookup.
00632       void Create (
00633          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00634          _CT *pContainer,                       //!< Pointer to callback container class
00635          void (_CT::*pfOnObjectSelected)(const RVC::OBJITEM& ObjItem),        //! Callback function pointer
00636          const RVC::OBJTYPESET& GeometricSet,                  //!< Set of geometric objects to work on
00637          RVC::OBJTYPE DestObjType,
00638          TEXTID TextID = TEXTID_Prompt_Objects_ToProcess,      //!< Usually in the form of TEXTID_Prompt_XXXs_Input
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       //! Set method to call when user adds an object to the list
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       //! Constructor.
00670       DLG_RECORD_SET_SELECT (
00671          const RVC::OBJITEM& ParentObjItem,
00672          ELEMTYPE ElemType
00673          );
00674    
00675       //! Destructor.
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 }     // End of MGUI namespace
00727 
00728 #endif   // INC_MGUI_FORMELEMSELECT_H

Generated on Wed May 31 15:26:45 2006 for TNTsdk by  doxygen 1.3.8-20040913