]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/propgrid.h
use a common m_isInsideYield flag instead of static booleans in all ports; add a...
[wxWidgets.git] / include / wx / propgrid / propgrid.h
index 2c583841e6f3bfa8bbc1baf9cc28b2d02a0bbfa4..4456641a4ad35b0ad7b714825c1b085f13aeed45 100644 (file)
 
 
 #ifndef SWIG
-extern WXDLLIMPEXP_PROPGRID const wxChar *wxPropertyGridNameStr;
+extern WXDLLIMPEXP_DATA_PROPGRID(const char) wxPropertyGridNameStr[];
 #endif
 
+class wxPGComboBox;
 
 // -----------------------------------------------------------------------
 // Global variables
@@ -418,10 +419,10 @@ enum wxPG_KEYBOARD_ACTIONS
     wxPG_ACTION_EXPAND_PROPERTY,
     wxPG_ACTION_COLLAPSE_PROPERTY,
     wxPG_ACTION_CANCEL_EDIT,
-    wxPG_ACTION_PRESS_BUTTON,  // Causes editor button (if any) to be pressed 
+    wxPG_ACTION_PRESS_BUTTON,  // Causes editor button (if any) to be pressed
     wxPG_ACTION_MAX
 };
+
 /** @}
 */
 
@@ -488,14 +489,14 @@ enum wxPG_KEYBOARD_ACTIONS
 #define wxPG_FL_SPLITTER_PRE_SET            0x00400000
 // Validation failed. Clear on modify event.
 #define wxPG_FL_VALIDATION_FAILED           0x00800000
-// Set if selected is fully painted (ie. both image and text)
-//#define wxPG_FL_SELECTED_IS_FULL_PAINT      0x01000000
+// Auto sort is enabled (for categorized mode)
+#define wxPG_FL_CATMODE_AUTO_SORT           0x01000000
 // Set after page has been inserted to manager
 #define wxPG_MAN_FL_PAGE_INSERTED           0x02000000
 // Active editor control is abnormally large
 #define wxPG_FL_ABNORMAL_EDITOR             0x04000000
-// Recursion guard for OnCustomEditorEvent
-#define wxPG_FL_IN_ONCUSTOMEDITOREVENT      0x08000000
+// Recursion guard for HandleCustomEditorEvent
+#define wxPG_FL_IN_HANDLECUSTOMEDITOREVENT  0x08000000
 #define wxPG_FL_VALUE_CHANGE_IN_EVENT       0x10000000
 // Editor control width should not change on resize
 #define wxPG_FL_FIXED_WIDTH_EDITOR          0x20000000
@@ -614,19 +615,21 @@ public:
 
     /** The default constructor. The styles to be used are styles valid for
         the wxWindow and wxScrolledWindow.
-        @see @link wndflags Additional Window Styles@endlink
+
+        @see @link wndflags Additional Window Styles @endlink
     */
     wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY,
                     const wxPoint& pos = wxDefaultPosition,
                     const wxSize& size = wxDefaultSize,
                     long style = wxPG_DEFAULT_STYLE,
-                    const wxChar* name = wxPropertyGridNameStr );
+                    const wxString& name = wxPropertyGridNameStr );
 
     /** Destructor */
     virtual ~wxPropertyGrid();
 #endif
 
     /** Adds given key combination to trigger given action.
+
         @param action
             Which action to trigger. See @link pgactions List of list of
             wxPropertyGrid actions@endlink.
@@ -693,7 +696,7 @@ public:
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = wxPG_DEFAULT_STYLE,
-                 const wxChar* name = wxPropertyGridNameStr );
+                 const wxString& name = wxPropertyGridNameStr );
 
     /**
         Call when editor widget's contents is modified.
@@ -837,12 +840,6 @@ public:
     */
     wxVariant GetUncommittedPropertyValue();
 
-    /** Returns cell background colour of a property. */
-    wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const;
-
-    /** Returns cell background colour of a property. */
-    wxColour GetPropertyTextColour( wxPGPropArg id ) const;
-
     /** Returns "root property". It does not have name, etc. and it is not
         visible. It is only useful for accessing its children.
     */
@@ -987,22 +984,6 @@ public:
     /** Sets background colour of margin. */
     void SetMarginColour(const wxColour& col);
 
-    /** 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.
-    */
-    void SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& col );
-
-    /** Resets text and background colours of given property.
-    */
-    void SetPropertyColoursToDefault( wxPGPropArg id );
-
-    /** Sets text colour of property and all its children.
-    */
-    void SetPropertyTextColour( wxPGPropArg id,
-                                const wxColour& col,
-                                bool recursively = true );
-
     /**
         Sets selection background colour - applies to selected property name
         background.
@@ -1198,6 +1179,14 @@ public:
         return m_wndEditor2;
     }
 
+    /**
+        Refreshes any active editor control.
+    */
+    void RefreshEditor();
+
+    // Events from editor controls are forward to this function
+    void HandleCustomEditorEvent( wxEvent &event );
+
 #ifndef SWIG
 
     /**
@@ -1215,10 +1204,6 @@ public:
     // Mostly useful for page switching.
     void SwitchState( wxPropertyGridPageState* pNewState );
 
-    /** Pass this function to Connect calls in propertyclass::CreateEditor.
-    */
-    void OnCustomEditorEvent( wxCommandEvent &event );
-
     long GetInternalFlags() const { return m_iFlags; }
     bool HasInternalFlag( long flag ) const
         { return (m_iFlags & flag) ? true : false; }
@@ -1227,8 +1212,11 @@ public:
     void IncFrozen() { m_frozen++; }
     void DecFrozen() { m_frozen--; }
 
-    void OnComboItemPaint( wxPGCustomComboControl* pCb,int item,wxDC& dc,
-                           wxRect& rect,int flags );
+    void OnComboItemPaint( const wxPGComboBox* pCb,
+                           int item,
+                           wxDC* pDc,
+                           wxRect& rect,
+                           int flags );
 
     /** Standardized double-to-string conversion.
     */
@@ -1331,6 +1319,8 @@ public:
     */
     bool UnfocusEditor();
 
+    virtual void SetWindowStyleFlag( long style );
+
 protected:
 
     /**
@@ -1361,6 +1351,16 @@ public:
     // Control font changer helper.
     void SetCurControlBoldFont();
 
+    wxPGCell& GetPropertyDefaultCell()
+    {
+        return m_propertyDefaultCell;
+    }
+
+    wxPGCell& GetCategoryDefaultCell()
+    {
+        return m_categoryDefaultCell;
+    }
+
     //
     // Public methods for semi-public use
     // (not protected for optimization)
@@ -1369,7 +1369,6 @@ public:
 
     // Overridden functions.
     virtual bool Destroy();
-    virtual wxSize DoGetBestSize() const;
     // Returns property at given y coordinate (relative to grid's top left).
     wxPGProperty* GetItemAtY( int y ) const { return DoGetItemAtY(y); }
 
@@ -1385,6 +1384,7 @@ public:
 
 
 protected:
+    virtual wxSize DoGetBestSize() const;
 
 #ifndef wxPG_ICON_WIDTH
     wxBitmap            *m_expandbmp, *m_collbmp;
@@ -1607,13 +1607,16 @@ protected:
     // background colour for empty space below the grid
     wxColour            m_colEmptySpace;
 
-    // NB: These *cannot* be moved to globals.
+    // Default property colours
+    wxPGCell            m_propertyDefaultCell;
 
-    // Array of background colour brushes.
-    wxArrayPtrVoid      m_arrBgBrushes;
+    // Default property category
+    wxPGCell            m_categoryDefaultCell;
 
-    // Array of foreground colours.
-    wxArrayPtrVoid      m_arrFgCols;
+    // Backup of selected property's cells
+    wxVector<wxPGCell>  m_propCellsBackup;
+
+    // NB: These *cannot* be moved to globals.
 
     // labels when properties use common values
     wxVector<wxPGCommonValue*>  m_commonValues;
@@ -1778,22 +1781,11 @@ protected:
 
     static void RegisterDefaultEditors();
 
-    // Sets m_bgColIndex to this property and all its children.
-    void SetBackgroundColourIndex( wxPGProperty* p, int index );
-
-    // Sets m_fgColIndex to this property and all its children.
-    void SetTextColourIndex( wxPGProperty* p, int index, int flags );
-
-    int CacheColour( const wxColour& colour );
-
     // Sets up basic event handling for child control
     void SetupChildEventHandling( wxWindow* wnd );
 
     void CustomSetCursor( int type, bool override = false );
 
-    virtual bool ProcessEvent(wxEvent& event);
-    virtual void SetWindowStyleFlag( long style );
-
     /**
         Repositions scrollbar and underlying panel according to changed virtual
         size.
@@ -1869,22 +1861,20 @@ inline bool wxPGProperty::SetMaxLength( int maxLen )
 
 // -----------------------------------------------------------------------
 
+#define wxPG_BASE_EVT_PRE_ID     1775
 
 #ifndef SWIG
 
-#define wxPG_BASE_EVT_PRE_ID     1775
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_SELECTED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_CHANGING;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_CHANGED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_HIGHLIGHTED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_RIGHT_CLICK;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_PAGE_CHANGED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_ITEM_COLLAPSED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_ITEM_EXPANDED;
+extern WXDLLIMPEXP_PROPGRID const wxEventType wxEVT_PG_DOUBLE_CLICK;
 
-BEGIN_DECLARE_EVENT_TYPES()
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_SELECTED,           wxPG_BASE_EVT_PRE_ID)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGING,           wxPG_BASE_EVT_PRE_ID+1)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGED,            wxPG_BASE_EVT_PRE_ID+2)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_HIGHLIGHTED,        wxPG_BASE_EVT_PRE_ID+3)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_RIGHT_CLICK,        wxPG_BASE_EVT_PRE_ID+4)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_PAGE_CHANGED,       wxPG_BASE_EVT_PRE_ID+5)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_COLLAPSED,     wxPG_BASE_EVT_PRE_ID+6)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_EXPANDED,      wxPG_BASE_EVT_PRE_ID+7)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_DOUBLE_CLICK,       wxPG_BASE_EVT_PRE_ID+8)
-END_DECLARE_EVENT_TYPES()
 #else
     enum {
         wxEVT_PG_SELECTED = wxPG_BASE_EVT_PRE_ID,