]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/propgrid.h
set svn properties correctly
[wxWidgets.git] / include / wx / propgrid / propgrid.h
index 04cb4d99f2212a579489f33a7f6db5b548a0df1f..8bad63c5d4cb742778d8b951ccaca048d24e3459 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2004-09-25
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -49,7 +49,7 @@ public:
     wxPGHashMapS2P      m_mapEditorClasses;
 
 #if wxUSE_VALIDATORS
-    wxArrayPtrVoid      m_arrValidators; // These wxValidators need to be freed
+    wxVector<wxValidator*>  m_arrValidators; // These wxValidators need to be freed
 #endif
 
     wxPGHashMapS2P      m_dictPropertyClassInfo; // PropertyName -> ClassInfo
@@ -241,12 +241,6 @@ wxPG_EX_AUTO_UNSPECIFIED_VALUES         = 0x00200000,
 */
 wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES    = 0x00400000,
 
-/**
-    With this style Validators on properties will work same as in
-    wxPropertyGrid 1.2.
-*/
-wxPG_EX_LEGACY_VALIDATORS               = 0x00800000,
-
 /** Hides page selection buttons from toolbar.
 */
 wxPG_EX_HIDE_PAGE_BUTTONS               = 0x01000000
@@ -346,34 +340,65 @@ wxPG_VFB_UNDEFINED                  = 0x80
 
 typedef wxByte wxPGVFBFlags;
 
-/** @class wxPGValidationInfo
+/**
+    wxPGValidationInfo
 
     Used to convey validation information to and from functions that
-    actually perform validation.
+    actually perform validation. Mostly used in custom property
+    classes.
 */
-struct wxPGValidationInfo
+class WXDLLIMPEXP_PROPGRID wxPGValidationInfo
 {
-    /** Value to be validated.
+    friend class wxPropertyGrid;
+public:
+    /**
+        @return Returns failure behavior which is a combination of
+               @ref propgrid_vfbflags.
     */
-    wxVariant*      m_pValue;
+    wxPGVFBFlags GetFailureBehavior() const
+        { return m_failureBehavior; }
 
-    /** Message displayed on validation failure.
+    /**
+        Returns current failure message.
     */
-    wxString        m_failureMessage;
+    const wxString& GetFailureMessage() const
+        { return m_failureMessage; }
 
-    /** Validation failure behavior. Use wxPG_VFB_XXX flags.
+    /**
+        Returns reference to pending value.
     */
-    wxPGVFBFlags    m_failureBehavior;
+    const wxVariant& GetValue() const
+    {
+        wxASSERT(m_pValue);
+        return *m_pValue;
+    }
 
-    wxPGVFBFlags GetFailureBehavior() const { return m_failureBehavior; }
+    /** Set validation failure behavior
 
+        @param failureBehavior
+            Mixture of @ref propgrid_vfbflags.
+    */
     void SetFailureBehavior(wxPGVFBFlags failureBehavior)
         { m_failureBehavior = failureBehavior; }
 
-    const wxString& GetFailureMessage() const { return m_failureMessage; }
-
+    /**
+        Set current failure message.
+    */
     void SetFailureMessage(const wxString& message)
         { m_failureMessage = message; }
+
+private:
+    /** Value to be validated.
+    */
+    wxVariant*      m_pValue;
+
+    /** Message displayed on validation failure.
+    */
+    wxString        m_failureMessage;
+
+    /** Validation failure behavior. Use wxPG_VFB_XXX flags.
+    */
+    wxPGVFBFlags    m_failureBehavior;
 };
 
 // -----------------------------------------------------------------------
@@ -396,6 +421,7 @@ enum wxPG_KEYBOARD_ACTIONS
     wxPG_ACTION_CUT,
     wxPG_ACTION_COPY,
     wxPG_ACTION_PASTE,
+    wxPG_ACTION_PRESS_BUTTON,  // Causes editor button (if any) to be pressed 
     wxPG_ACTION_MAX
 };
 
@@ -457,8 +483,6 @@ enum wxPG_KEYBOARD_ACTIONS
 #define wxPG_FL_IN_MANAGER                  0x00020000
 // Set after wxPropertyGrid is shown in its initial good size
 #define wxPG_FL_GOOD_SIZE_SET               0x00040000
-// Next navigation key event will get ignored
-#define wxPG_FL_IGNORE_NEXT_NAVKEY          0x00080000
 // Set when in SelectProperty.
 #define wxPG_FL_IN_SELECT_PROPERTY          0x00100000
 // Set when help string is shown in status bar
@@ -758,7 +782,9 @@ public:
     /** Returns current cell text colour. */
     wxColour GetCellTextColour() const { return m_colPropFore; }
 
-    /** Returns number of columns on current page. */
+    /**
+        Returns number of columns currently on grid.
+    */
     int GetColumnCount() const
     {
         return m_pState->m_colWidths.size();
@@ -821,7 +847,7 @@ public:
     int GetRowHeight() const { return m_lineHeight; }
 
     /** Returns currently selected property. */
-    wxPGProperty* GetSelectedProperty () const { return GetSelection(); }
+    wxPGProperty* GetSelectedProperty() const { return GetSelection(); }
 
     /** Returns currently selected property. */
     wxPGProperty* GetSelection() const
@@ -883,7 +909,6 @@ public:
         Pointer to the editor class instance that should be used.
     */
     static wxPGEditor* RegisterEditorClass( wxPGEditor* editor,
-                                            const wxString& name,
                                             bool noDefCheck = false );
 #endif
 
@@ -908,15 +933,6 @@ public:
         return DoSelectProperty(p,focus?wxPG_SEL_FOCUS:0);
     }
 
-    /** Changes keyboard shortcut to push the editor button.
-        @remarks
-        You can set default with keycode 0. Good value for the platform is
-        guessed, but don't expect it to be very accurate.
-    */
-    void SetButtonShortcut( int keycode,
-                            bool ctrlDown = false,
-                            bool altDown = false );
-
     /** Sets category caption background colour. */
     void SetCaptionBackgroundColour(const wxColour& col);
 
@@ -966,12 +982,6 @@ public:
     /** Sets background colour of margin. */
     void SetMarginColour(const wxColour& col);
 
-    /** Sets property attribute for all applicapple properties.
-        Be sure to use this method only after all properties have been
-        added to the grid.
-    */
-    void SetPropertyAttributeAll( const wxString& attrName, wxVariant value );
-
     /** Sets background colour of property and all its children. Colours of
         captions are not affected. Background brush cache is optimized for often
         set colours to be set last.
@@ -1016,34 +1026,20 @@ public:
         virtual width should be disabled. */
     void SetVirtualWidth( int width );
 
-    /** Sets name of a property.
-        @param id
-        Name or pointer of property which name to change.
-        @param newname
-        New name.
-    */
-    void SetPropertyName( wxPGPropArg id, const wxString& newname )
-    {
-        wxPG_PROP_ARG_CALL_PROLOG()
-        DoSetPropertyName( p, newname );
-    }
-
-    /** Moves splitter as left as possible, while still allowing all
+    /**
+        Moves splitter as left as possible, while still allowing all
         labels to be shown in full.
-        @param subProps
-        If false, will still allow sub-properties (ie. properties which
-        parent is not root or category) to be cropped.
+
+        @param privateChildrenToo
+            If @false, will still allow private children to be cropped.
     */
-    void SetSplitterLeft( bool subProps = false )
+    void SetSplitterLeft( bool privateChildrenToo = false )
     {
-        m_pState->SetSplitterLeft(subProps);
+        m_pState->SetSplitterLeft(privateChildrenToo);
     }
 
     /** Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font
         height. Value of 2 should be default on most platforms.
-        @remarks
-        On wxMSW, wxComboBox, when used as property editor widget, will spill
-        out with anything less than 3.
     */
     void SetVerticalSpacing( int vspacing )
     {
@@ -1180,16 +1176,9 @@ public:
                             const wxPGProperty* p2 ) const;
 
     /** Returns pointer to current active primary editor control (NULL if none).
-
-        If editor uses clipper window, pointer is returned to the actual
-        editor, not the clipper.
     */
     wxWindow* GetEditorControl() const;
 
-    /** Adjusts given position if topCtrlWnd is child of clipper window.
-    */
-    bool AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y );
-
     wxWindow* GetPrimaryEditor() const
     {
         return GetEditorControl();
@@ -1234,9 +1223,6 @@ public:
     void OnComboItemPaint( wxPGCustomComboControl* pCb,int item,wxDC& dc,
                            wxRect& rect,int flags );
 
-    // Used by simple check box for keyboard navigation
-    void SendNavigationKeyEvent( int dir );
-
     /** Standardized double-to-string conversion.
     */
     static void DoubleToString( wxString& target,
@@ -1402,8 +1388,6 @@ protected:
     wxBitmap            *m_doubleBuffer;
 #endif
 
-    wxArrayPtrVoid      *m_windowsToDelete;
-
     /** Local time ms when control was created. */
     wxLongLong          m_timeCreated;
 
@@ -1479,9 +1463,6 @@ protected:
 
     int                 m_fontHeight;  // Height of the font.
 
-    // Base keycode for triggering push button.
-    int                 m_pushButKeyCode;
-
     /** m_splitterx when drag began. */
     int                 m_startingSplitterX;
 
@@ -1539,12 +1520,6 @@ protected:
 
     unsigned char       m_vspacing;
 
-    // Does triggering push button need Alt down?
-    unsigned char       m_pushButKeyCodeNeedsAlt;
-
-    // Does triggering push button need Ctrl down?
-    unsigned char       m_pushButKeyCodeNeedsCtrl;
-
     // Used to track when Alt/Ctrl+Key was consumed.
     unsigned char       m_keyComboConsumed;
 
@@ -1621,11 +1596,13 @@ protected:
 
     // Array of background colour brushes.
     wxArrayPtrVoid      m_arrBgBrushes;
+
     // Array of foreground colours.
     wxArrayPtrVoid      m_arrFgCols;
 
     // labels when properties use common values
-    wxArrayPtrVoid      m_commonValues;
+    wxVector<wxPGCommonValue*>  m_commonValues;
+
     // Which cv selection really sets value to unspecified?
     int                 m_cvUnspecified;
 
@@ -1651,7 +1628,6 @@ protected:
     void OnMouseUp( wxMouseEvent &event );
     void OnKey( wxKeyEvent &event );
     void OnKeyUp( wxKeyEvent &event );
-    void OnNavigationKey( wxNavigationKeyEvent& event );
     void OnResize( wxSizeEvent &event );
 
     // event handlers
@@ -1796,10 +1772,8 @@ protected:
 
     int CacheColour( const wxColour& colour );
 
-    void DoSetPropertyName( wxPGProperty* p, const wxString& newname );
-
-    // Setups event handling for child control
-    void SetupEventHandling( wxWindow* wnd, int id );
+    // Sets up basic event handling for child control
+    void SetupChildEventHandling( wxWindow* wnd );
 
     void CustomSetCursor( int type, bool override = false );
 
@@ -1819,11 +1793,13 @@ protected:
                     wxVariant* pValue = NULL,
                     unsigned int selFlags = 0 );
 
+    void SetFocusOnCanvas();
+
     bool DoHideProperty( wxPGProperty* p, bool hide, int flags );
 
 private:
 
-    bool ButtonTriggerKeyTest( wxKeyEvent &event );
+    bool ButtonTriggerKeyTest( int action, wxKeyEvent& event );
 
 #endif // DOXYGEN_SHOULD_SKIP_THIS
 
@@ -1978,9 +1954,6 @@ public:
         return *m_validationInfo;
     }
 
-    /** Returns true if event has associated property. */
-    bool HasProperty() const { return ( m_property != (wxPGProperty*) NULL ); }
-
     /** Returns true if you can veto the action that the event is signaling.
     */
     bool CanVeto() const { return m_canVeto; }
@@ -2003,7 +1976,7 @@ public:
         wxASSERT_MSG( m_validationInfo,
                       "Only call GetValue from a handler "
                       "of event type that supports it" );
-        return *m_validationInfo->m_pValue;
+        return m_validationInfo->GetValue();
     }
 
     /**
@@ -2012,10 +1985,10 @@ public:
         Only effective if Veto was also called, and only allowed if event type
         is wxEVT_PG_CHANGING.
     */
-    void SetValidationFailureBehavior( int flags )
+    void SetValidationFailureBehavior( wxPGVFBFlags flags )
     {
         wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
-        m_validationInfo->m_failureBehavior = (wxPGVFBFlags) flags;
+        m_validationInfo->SetFailureBehavior( flags );
     }
 
     /** Sets custom failure message for this time only. Only applies if
@@ -2024,14 +1997,14 @@ public:
     void SetValidationFailureMessage( const wxString& message )
     {
         wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
-        m_validationInfo->m_failureMessage = message;
+        m_validationInfo->SetFailureMessage( message );
     }
 
 #ifndef SWIG
     wxPGVFBFlags GetValidationFailureBehavior() const
     {
         wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
-        return m_validationInfo->m_failureBehavior;
+        return m_validationInfo->GetFailureBehavior();
     }
 
     void SetCanVeto( bool canVeto ) { m_canVeto = canVeto; }