include/variantutils/variantpropertyobj.h

Go to the documentation of this file.
00001 
00002 // Name:        variantobjectset.h
00003 // Purpose:     A variant type supporting a set of objects each with properties
00004 // Author:      Julian Smart
00005 // Modified by:
00006 // Created:     2006-05-11
00007 // RCS-ID:      $$
00008 // Copyright:   (c) Julian Smart
00009 // Licence:     wxWindows Licence
00011 
00012 #ifndef _WX_VARIANTPROPERTYOBJ_H_
00013 #define _WX_VARIANTPROPERTYOBJ_H_
00014 
00015 #include "wx/defs.h"
00016 #include "wx/variant.h"
00017 
00018 #include "variantref.h"
00019 
00020 class wxImageBlock;
00021 
00022 /*
00023  * A single object
00024  */
00025 
00030 class wxVariantObjectSetData: public wxClonableVariantData
00031 {
00032 DECLARE_DYNAMIC_CLASS(wxVariantObjectSetData)
00033 public:
00034 
00035 // Construction & destruction
00036 
00037     wxVariantObjectSetData();
00038     wxVariantObjectSetData(const wxVariantObjectSetData& data);
00039     ~wxVariantObjectSetData();
00040 
00041 // OVERRIDEABLES
00042 
00044     // virtual void Copy(wxVariantData& data);
00046     virtual wxVariantData* Clone() { return new wxVariantObjectSetData(*this); }
00047     virtual bool Eq(wxVariantData& data) const;
00048     virtual bool Write(wxString& str) const;
00049     virtual bool Read(wxString& str);
00050 
00051     // What type is it? Return a string name.
00052     virtual wxString GetType() const { return wxT("objectset"); }
00053 
00054 // NEW OPERATIONS
00055 
00057     void Clear();
00058 
00060     bool DeleteObject(size_t i);
00061 
00063     wxVariant* GetObject(size_t i) const;
00064 
00066     wxVariant* FindObject(const wxString& field, const wxString& name) const;
00067 
00069     void AddObject(wxVariant* data);
00070 
00072     size_t GetCount() const { return m_objects.GetCount(); }
00073 
00074 private:
00075 
00077     wxList  m_objects;
00078 };
00079 
00080 // Useful functions
00081 
00082 // Is this variant an object set?
00083 bool wxIsVariantObjectSetData(const wxVariant& variant);
00084 
00085 // Get the property object set data
00086 wxVariantObjectSetData* wxGetVariantObjectSetData(const wxVariant& variant);
00087 
00088 // Create property object set
00089 wxVariant wxCreateVariantObjectSetVariant();
00090 
00092 void wxVariantSetProperty(wxVariant& var, const wxString& name, const wxVariant& value);
00093 
00095 void wxVariantSetProperty(wxVariant& var, const wxString& name, const wxString& value);
00096 
00098 void wxVariantSetProperty(wxVariant& var, int i, const wxVariant& value);
00099 
00101 void wxVariantSetProperty(wxVariant& var, int i, const wxString& value);
00102 
00104 wxVariant* wxVariantFindPropertyPtr(const wxVariant& var, const wxString& name);
00105 
00107 wxVariant wxVariantFindProperty(const wxVariant& var, const wxString& name);
00108 
00110 wxString wxVariantFindPropertyString(const wxVariant& var, const wxString& name);
00111 
00113 wxVariant* wxVariantGetPropertyPtr(const wxVariant& var, int i);
00114 
00116 wxVariant wxVariantGetProperty(const wxVariant& var, int i);
00117 
00123 class wxVariantObjectSetAccessor
00124 {
00125 public:
00126 
00127 // Construction
00128 
00129     wxVariantObjectSetAccessor(wxVariant& objectSet) { m_objectSet = & objectSet; }
00130     wxVariantObjectSetAccessor(wxVariant* objectSet) { m_objectSet = objectSet; }
00131     wxVariantObjectSetAccessor(const wxVariant* objectSet) { m_objectSet = (wxVariant*) objectSet; }
00132 
00133 // Operations
00134 
00136     bool IsValid() const;
00137 
00139     bool MakeObjectSet();
00140 
00142     bool Clear();
00143 
00145     wxVariant* GetVariant(int n);
00146     wxVariant GetVariant(int n) const;
00147 
00149     void SetVariant(int n, const wxVariant& variant);
00150 
00152     wxVariant* FindVariant(const wxString& property, const wxVariant& value);
00153     wxVariant* FindVariant(const wxString& property, const wxString& value);
00154 
00156     int FindVariantIndex(wxVariant* var);
00157 
00159     void AddVariant(wxVariant* variant);
00160 
00162     void InsertVariant(wxVariant* variant, int pos);
00163 
00165     bool DeleteVariant(int pos);
00166 
00168 //    bool DeleteVariant(const wxString& property, const wxVariant& value);
00169 //    bool DeleteVariant(const wxString& property, const wxString& value);
00170 
00172     wxVariant* GetProperty(int var, int property);
00173 
00175     wxVariant* FindProperty(int var, const wxString& propertyName);
00176 
00178     int GetPropertyIndex(int var, const wxString& propertyName);
00179 
00181     bool SetProperty(int var, const wxString& propertyName, const wxVariant& value);
00182     bool SetProperty(int var, const wxString& propertyName, const wxString& value);
00183     bool SetProperty(int var, int property, const wxVariant& value);
00184     bool SetProperty(int var, int property, const wxString& value);
00185 
00187     bool SetPropertyImage(int var, int property, const wxImage& image, int type = wxBITMAP_TYPE_JPEG);
00188     bool SetPropertyImage(int var, int property, const wxString& filename, int type = wxBITMAP_TYPE_JPEG);
00189     bool SetPropertyImage(int var, const wxString& propertyName, const wxImage& image, int type = wxBITMAP_TYPE_JPEG);
00190     bool SetPropertyImage(int var, const wxString& propertyName, const wxString& filename, int type = wxBITMAP_TYPE_JPEG);
00191 
00193     wxImage* GetPropertyImage(int var, int property);
00194     wxImage* FindPropertyImage(int var, const wxString& propertyName);
00195 
00197     wxImageBlock* GetPropertyImageBlock(int var, int property);
00198     wxImageBlock* FindPropertyImageBlock(int var, const wxString& propertyName);
00199 
00201     bool MakePropertyImage(int var, int property, bool force = false);
00202     bool MakePropertyImage(int var, const wxString& propertyName, bool force = false);
00203 
00205     wxVariant Copy() const;
00206 
00208     int GetCount() const;
00209 
00211     void AllocExclusive() const;
00212 
00213 // Accessors
00214 
00215     wxVariant* GetObjectSet() { return m_objectSet; }
00216     void SetObjectSet(wxVariant* objectSet) { m_objectSet = objectSet; }
00217 
00219     wxVariantObjectSetData* GetData() const;
00220 
00221 private:
00222     wxVariant*      m_objectSet;
00223 };
00224 
00225 
00226 
00227 
00228 #endif
00229     // _WX_VARIANTPROPERTYOBJ_H_

Generated on Wed May 6 19:20:19 2009 for AxTk by  doxygen 1.5.1