]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/props.h
adding clipboard events, fixes #11906
[wxWidgets.git] / include / wx / propgrid / props.h
index 6609bdbb3aafdad19d2f42926434c2b6baa50e27..eacb908f316422150ee03f4103f938d1165a3b86 100644 (file)
@@ -20,6 +20,12 @@ class wxArrayEditorDialog;
 
 #include "wx/propgrid/editors.h"
 
+#include "wx/filename.h"
+#include "wx/dialog.h"
+#include "wx/textctrl.h"
+#include "wx/button.h"
+#include "wx/listbox.h"
+
 // -----------------------------------------------------------------------
 
 //
@@ -35,7 +41,7 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR)
 //
 // These macros help creating DoGetValidator
 #define WX_PG_DOGETVALIDATOR_ENTRY() \
-    static wxValidator* s_ptr = (wxValidator*) NULL; \
+    static wxValidator* s_ptr = NULL; \
     if ( s_ptr ) return s_ptr;
 
 // Common function exit
@@ -46,10 +52,6 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR)
 
 // -----------------------------------------------------------------------
 
-#ifndef SWIG
-
-#include "wx/textctrl.h"
-
 /** @class wxPGInDialogValidator
     @ingroup classes
     Creates and manages a temporary wxTextCtrl for validation purposes.
@@ -77,8 +79,6 @@ private:
     wxTextCtrl*         m_textCtrl;
 };
 
-#endif  // SWIG
-
 
 // -----------------------------------------------------------------------
 // Property classes
@@ -106,7 +106,7 @@ public:
                       const wxString& value = wxEmptyString );
     virtual ~wxStringProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -122,10 +122,9 @@ protected:
 
 // -----------------------------------------------------------------------
 
-#ifndef SWIG
 /** Constants used with DoValidation() methods.
 */
-enum
+enum wxPGDoValidationConstants
 {
     /** Instead of modifying the value, show an error message.
     */
@@ -139,7 +138,6 @@ enum
     */
     wxPG_PROPERTY_VALIDATION_WRAP               = 2
 };
-#endif
 
 // -----------------------------------------------------------------------
 
@@ -196,7 +194,7 @@ public:
     wxIntProperty( const wxString& label,
                    const wxString& name,
                    const wxLongLong& value );
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -250,7 +248,7 @@ public:
     wxUIntProperty( const wxString& label,
                     const wxString& name,
                     const wxULongLong& value );
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -287,7 +285,7 @@ public:
                      double value = 0.0 );
     virtual ~wxFloatProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -302,17 +300,14 @@ public:
                               wxPGValidationInfo* pValidationInfo,
                               int mode =
                                  wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
+    virtual wxValidator* DoGetValidator () const;
 
 protected:
     int m_precision;
-    virtual wxValidator* DoGetValidator () const;
 };
 
 // -----------------------------------------------------------------------
 
-// Exclude class from wxPython bindings
-#ifndef SWIG
-
 /** @class wxBoolProperty
     @ingroup classes
     Basic property with boolean value.
@@ -330,7 +325,7 @@ public:
                     bool value = false );
     virtual ~wxBoolProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -339,13 +334,16 @@ public:
     virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 };
 
-#endif  // !SWIG
-
 // -----------------------------------------------------------------------
 
-/** @class wxBaseEnumProperty
+// If set, then selection of choices is static and should not be
+// changed (i.e. returns NULL in GetPropertyChoices).
+#define wxPG_PROP_STATIC_CHOICES    wxPG_PROP_CLASS_SPECIFIC_1
+
+/** @class wxEnumProperty
     @ingroup classes
-    Derive dynamic custom properties with choices from this class.
+    You can derive custom properties with choices from this class. See
+    wxBaseEnumProperty for remarks.
 
     @remarks
     - Updating private index is important. You can do this either by calling
@@ -353,14 +351,49 @@ public:
     be called (by not implementing it, or by calling super class function in
     it) -OR- you can just call SetIndex in OnSetValue.
 */
-class WXDLLIMPEXP_PROPGRID wxBaseEnumProperty : public wxPGProperty
+class WXDLLIMPEXP_PROPGRID wxEnumProperty : public wxPGProperty
 {
+    WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty)
 public:
-    wxBaseEnumProperty( const wxString& label = wxPG_LABEL,
-                        const wxString& name = wxPG_LABEL );
+
+#ifndef SWIG
+    wxEnumProperty( const wxString& label = wxPG_LABEL,
+                    const wxString& name = wxPG_LABEL,
+                    const wxChar* const* labels = NULL,
+                    const long* values = NULL,
+                    int value = 0 );
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    wxPGChoices& choices,
+                    int value = 0 );
+
+    // Special constructor for caching choices (used by derived class)
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    const wxChar* const* labels,
+                    const long* values,
+                    wxPGChoices* choicesCache,
+                    int value = 0 );
+
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    const wxArrayString& labels,
+                    const wxArrayInt& values = wxArrayInt(),
+                    int value = 0 );
+#else
+    wxEnumProperty( const wxString& label = wxPG_LABEL,
+                    const wxString& name = wxPG_LABEL,
+                    const wxArrayString& labels = wxArrayString(),
+                    const wxArrayInt& values = wxArrayInt(),
+                    int value = 0 );
+#endif
+
+    virtual ~wxEnumProperty();
+
+    size_t GetItemCount() const { return m_choices.GetCount(); }
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -379,22 +412,12 @@ public:
     // This must be overridden to have non-index based value
     virtual int GetIndexForValue( int value ) const;
 
-    // This returns string and value for index
-    // Returns NULL if beyond last item
-    // pvalue is never NULL - always set it.
-    virtual const wxString* GetEntry( size_t index, int* pvalue ) const = 0;
-
     // GetChoiceSelection needs to overridden since m_index is
     // the true index, and various property classes derived from
     // this take advantage of it.
     virtual int GetChoiceSelection() const { return m_index; }
 
-    int GetValueForIndex( size_t index ) const
-    {
-        int v;
-        GetEntry( index, &v );
-        return v;
-    }
+    virtual void OnValidationFailure( wxVariant& pendingValue );
 
 protected:
 
@@ -419,63 +442,6 @@ private:
 
 // -----------------------------------------------------------------------
 
-// If set, then selection of choices is static and should not be
-// changed (i.e. returns NULL in GetPropertyChoices).
-#define wxPG_PROP_STATIC_CHOICES    wxPG_PROP_CLASS_SPECIFIC_1
-
-/** @class wxEnumProperty
-    @ingroup classes
-    You can derive custom properties with choices from this class. See
-    wxBaseEnumProperty for remarks.
-*/
-class WXDLLIMPEXP_PROPGRID wxEnumProperty : public wxBaseEnumProperty
-{
-    WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty)
-public:
-
-#ifndef SWIG
-    wxEnumProperty( const wxString& label = wxPG_LABEL,
-                    const wxString& name = wxPG_LABEL,
-                    const wxChar** labels = NULL,
-                    const long* values = NULL,
-                    int value = 0 );
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    wxPGChoices& choices,
-                    int value = 0 );
-
-    // Special constructor for caching choices (used by derived class)
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    const wxChar** labels,
-                    const long* values,
-                    wxPGChoices* choicesCache,
-                    int value = 0 );
-
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    const wxArrayString& labels,
-                    const wxArrayInt& values = wxArrayInt(),
-                    int value = 0 );
-#else
-    wxEnumProperty( const wxString& label = wxPG_LABEL,
-                    const wxString& name = wxPG_LABEL,
-                    const wxArrayString& labels = wxArrayString(),
-                    const wxArrayInt& values = wxArrayInt(),
-                    int value = 0 );
-#endif
-
-    virtual ~wxEnumProperty();
-
-    virtual int GetIndexForValue( int value ) const;
-    virtual const wxString* GetEntry( size_t index, int* pvalue ) const;
-
-    size_t GetItemCount() const { return m_choices.GetCount(); }
-    const wxPGChoices& GetChoices() const { return m_choices; }
-};
-
-// -----------------------------------------------------------------------
-
 /** @class wxEditEnumProperty
     @ingroup classes
     wxEnumProperty with wxString value and writable combo box editor.
@@ -491,7 +457,7 @@ public:
 
     wxEditEnumProperty( const wxString& label,
                         const wxString& name,
-                        const wxChar** labels,
+                        const wxChar* const* labels,
                         const long* values,
                         const wxString& value );
     wxEditEnumProperty( const wxString& label = wxPG_LABEL,
@@ -507,7 +473,7 @@ public:
     // Special constructor for caching choices (used by derived class)
     wxEditEnumProperty( const wxString& label,
                         const wxString& name,
-                        const wxChar** labels,
+                        const wxChar* const* labels,
                         const long* values,
                         wxPGChoices* choicesCache,
                         const wxString& value );
@@ -537,7 +503,7 @@ public:
 #ifndef SWIG
     wxFlagsProperty( const wxString& label,
                      const wxString& name,
-                     const wxChar** labels,
+                     const wxChar* const* labels,
                      const long* values = NULL,
                      long value = 0 );
     wxFlagsProperty( const wxString& label,
@@ -553,14 +519,15 @@ public:
     virtual ~wxFlagsProperty ();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int flags ) const;
-    virtual void ChildChanged( wxVariant& thisValue,
-                               int childIndex,
-                               wxVariant& childValue ) const;
+    virtual wxVariant ChildChanged( wxVariant& thisValue,
+                                    int childIndex,
+                                    wxVariant& childValue ) const;
     virtual void RefreshChildren();
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 
     // GetChoiceSelection needs to overridden since m_choices is
     // used and value is integer, but it is not index.
@@ -600,8 +567,6 @@ public:
 
 // -----------------------------------------------------------------------
 
-#include "wx/filename.h"
-
 // Indicates first bit useable by derived properties.
 #define wxPG_PROP_SHOW_FULL_FILENAME  wxPG_PROP_CLASS_SPECIFIC_1
 
@@ -631,7 +596,7 @@ public:
     virtual ~wxFileProperty ();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -641,12 +606,16 @@ public:
     static wxValidator* GetClassValidator();
     virtual wxValidator* DoGetValidator() const;
 
+    /**
+        Returns filename to file represented by current value.
+    */
+    wxFileName GetFileName() const;
+
 protected:
     wxString    m_wildcard;
     wxString    m_basePath; // If set, then show path relative to it
     wxString    m_initialPath; // If set, start the file dialog here
     wxString    m_dlgTitle; // If set, used as title for file dialog
-    wxFileName  m_filename; // used as primary storage
     int         m_indFilter; // index to the selected filter
 };
 
@@ -682,7 +651,7 @@ public:
                           const wxString& value = wxEmptyString );
     virtual ~wxLongStringProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -704,9 +673,6 @@ protected:
 // -----------------------------------------------------------------------
 
 
-// Exclude class from wxPython bindings
-#ifndef SWIG
-
 /** @class wxDirProperty
     @ingroup classes
     Like wxLongStringProperty, but the button triggers dir selector instead.
@@ -716,9 +682,7 @@ protected:
 */
 class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty
 {
-#ifndef SWIG
     DECLARE_DYNAMIC_CLASS(wxDirProperty)
-#endif
 public:
     wxDirProperty( const wxString& name = wxPG_LABEL,
                    const wxString& label = wxPG_LABEL,
@@ -734,8 +698,6 @@ protected:
     wxString    m_dlgMessage;
 };
 
-#endif  // !SWIG
-
 // -----------------------------------------------------------------------
 
 // wxBoolProperty specific flags
@@ -761,7 +723,7 @@ public:
     virtual ~wxArrayStringProperty();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -780,10 +742,8 @@ public:
                                 wxWindow* primary,
                                 const wxChar* cbt );
 
-#ifndef SWIG
     // Creates wxArrayEditorDialog for string editing. Called in OnButtonClick.
     virtual wxArrayEditorDialog* CreateEditorDialog();
-#endif
 
 protected:
     wxString        m_display; // Cache for displayed text.
@@ -870,17 +830,13 @@ WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \
                                                     DELIMCHAR, \
                                                     CUSTBUTTXT) \
 wxValidator* PROPNAME::DoGetValidator () const \
-{ return (wxValidator*) NULL; }
+{ return NULL; }
 
 
 // -----------------------------------------------------------------------
 // wxArrayEditorDialog
 // -----------------------------------------------------------------------
 
-#include "wx/button.h"
-#include "wx/dialog.h"
-#include "wx/listbox.h"
-
 #define wxAEDIALOG_STYLE \
     (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE)
 
@@ -931,7 +887,7 @@ public:
     */
     virtual wxValidator* GetTextCtrlValidator() const
     {
-        return (wxValidator*) NULL;
+        return NULL;
     }
 
     // Returns true if array was actually modified
@@ -978,10 +934,8 @@ protected:
     virtual void ArraySwap( size_t first, size_t second ) = 0;
 
 private:
-#ifndef SWIG
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayEditorDialog)
     DECLARE_EVENT_TABLE()
-#endif
 };
 
 // -----------------------------------------------------------------------
@@ -1028,10 +982,8 @@ protected:
     virtual void ArraySwap( size_t first, size_t second );
 
 private:
-#ifndef SWIG
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog)
     DECLARE_EVENT_TABLE()
-#endif
 };
 
 // -----------------------------------------------------------------------