]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/property.h
Fixed and refactored wxPropertyGridManager decsription text box painting
[wxWidgets.git] / include / wx / propgrid / property.h
index 7c329b7d1c4fca1d7980a27f773f37431cc0d586..15e520ee61f3b8a779ee3703266ae7eb0c42184a 100644 (file)
@@ -737,6 +737,11 @@ private:
     Helper class for managing choices of wxPropertyGrid properties.
     Each entry can have label, value, bitmap, text colour, and background
     colour.
+    wxPGChoices uses reference counting, similar to other wxWidgets classes.
+    This means that assignment operator and copy constructor only copy the
+    reference and not the actual data. Use Copy() member function to create a
+    real copy.
 
     @remarks If you do not specify value for entry, index is used.
 
@@ -754,7 +759,10 @@ public:
         Init();
     }
 
-    /** Copy constructor. */
+    /**
+        Copy constructor, uses reference counting. To create a real copy,
+        use Copy() member function instead.
+    */
     wxPGChoices( const wxPGChoices& a )
     {
         if ( a.m_data != wxPGChoicesEmptyData )
@@ -853,6 +861,10 @@ public:
     wxPGChoiceEntry& AddAsSorted( const wxString& label,
                                   int value = wxPG_INVALID_VALUE );
 
+    /**
+        Assigns choices data, using reference counting. To create a real copy,
+        use Copy() member function instead.
+    */
     void Assign( const wxPGChoices& a )
     {
         AssignData(a.m_data);
@@ -861,10 +873,17 @@ public:
     void AssignData( wxPGChoicesData* data );
 
     /** Delete all choices. */
-    void Clear()
+    void Clear();
+
+    /**
+        Returns a real copy of the choices.
+    */
+    wxPGChoices Copy() const
     {
-        if ( m_data != wxPGChoicesEmptyData )
-            m_data->Clear();
+        wxPGChoices dst;
+        dst.EnsureData();
+        dst.m_data->CopyDataFrom(m_data);
+        return dst;
     }
 
     void EnsureData()
@@ -957,16 +976,7 @@ public:
     }
 
     // Creates exclusive copy of current choices
-    void SetExclusive()
-    {
-        if ( m_data->m_refCount != 1 )
-        {
-            wxPGChoicesData* data = new wxPGChoicesData();
-            data->CopyDataFrom(m_data);
-            Free();
-            m_data = data;
-        }
-    }
+    void AllocExclusive();
 
     // Returns data, increases refcount.
     wxPGChoicesData* GetData()
@@ -1423,6 +1433,15 @@ public:
     */
     virtual wxPGEditorDialogAdapter* GetEditorDialog() const;
 
+    /**
+        Called whenever validation has failed with given pending value.
+
+        @remarks If you implement this in your custom property class, please
+                 remember to call the baser implementation as well, since they
+                 may use it to revert property into pre-change state.
+    */
+    virtual void OnValidationFailure( wxVariant& pendingValue );
+
     /** Append a new choice to property's list of choices.
     */
     int AddChoice( const wxString& label, int value = wxPG_INVALID_VALUE )
@@ -1443,6 +1462,11 @@ public:
         return false;
     }
 
+    /**
+        Deletes children of the property.
+    */
+    void DeleteChildren();
+
     /**
         Removes entry from property's wxPGChoices and editor control (if it is
         active).
@@ -1545,8 +1569,6 @@ public:
     */
     wxDEPRECATED( wxString GetValueString( int argFlags = 0 ) const );
 
-    void UpdateControl( wxWindow* primary );
-
     /**
         Returns wxPGCell of given column.
     */
@@ -1887,14 +1909,6 @@ public:
     */
     void SetValueImage( wxBitmap& bmp );
 
-    /** If property has choices and they are not yet exclusive, new such copy
-        of them will be created.
-    */
-    void SetChoicesExclusive()
-    {
-        m_choices.SetExclusive();
-    }
-
     /** Sets selected choice and changes property value.
 
         Tries to retain value type, although currently if it is not string,
@@ -2073,9 +2087,6 @@ public:
     /** Returns index of given child property. */
     int Index( const wxPGProperty* p ) const;
 
-    /** Deletes all sub-properties. */
-    void Empty();
-
     // Puts correct indexes to children
     void FixIndicesOfChildren( unsigned int starthere = 0 );
 
@@ -2205,6 +2216,9 @@ protected:
 
     void DoSetName(const wxString& str) { m_name = str; }
 
+    /** Deletes all sub-properties. */
+    void Empty();
+
     void InitAfterAdded( wxPropertyGridPageState* pageState,
                          wxPropertyGrid* propgrid );
 
@@ -2323,7 +2337,7 @@ public:
 public:
 
     /** Constructor. */
-    wxPGRootProperty();
+    wxPGRootProperty( const wxString& name = wxS("<Root>") );
     virtual ~wxPGRootProperty();
 
     virtual bool StringToValue( wxVariant&, const wxString&, int ) const