]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/manager.h
Return old, not new, selection from wxMSW wxNotebook::ChangeSelection().
[wxWidgets.git] / include / wx / propgrid / manager.h
index 3371c5695e2900769754da18beabe4a69dad20aa..bfc3e6cdf8a696a1933be32389e4147263f286d3 100644 (file)
@@ -23,6 +23,7 @@
 #include "wx/button.h"
 #include "wx/textctrl.h"
 #include "wx/dialog.h"
 #include "wx/button.h"
 #include "wx/textctrl.h"
 #include "wx/dialog.h"
+#include "wx/headerctrl.h"
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
 
@@ -161,8 +162,7 @@ protected:
     */
     virtual void DoSetSplitterPosition( int pos,
                                         int splitterColumn = 0,
     */
     virtual void DoSetSplitterPosition( int pos,
                                         int splitterColumn = 0,
-                                        bool allPages = false,
-                                        bool fromAutoCenter = false );
+                                        int flags = wxPG_SPLITTER_REFRESH );
 
     /** Page label (may be referred as name in some parts of documentation).
         Can be set in constructor, or passed in
 
     /** Page label (may be referred as name in some parts of documentation).
         Can be set in constructor, or passed in
@@ -188,6 +188,11 @@ private:
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
 
+#if wxUSE_HEADERCTRL
+class wxPGHeaderCtrl;
+#endif
+
+
 /** @class wxPropertyGridManager
 
     wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid,
 /** @class wxPropertyGridManager
 
     wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid,
@@ -491,6 +496,12 @@ public:
      */
     bool IsPageModified( size_t index ) const;
 
      */
     bool IsPageModified( size_t index ) const;
 
+    /**
+        Returns true if property is selected. Since selection is page
+        based, this function checks every page in the manager.
+    */
+    virtual bool IsPropertySelected( wxPGPropArg id ) const;
+
     virtual void Refresh( bool eraseBackground = true,
                           const wxRect* rect = (const wxRect*) NULL );
 
     virtual void Refresh( bool eraseBackground = true,
                           const wxRect* rect = (const wxRect*) NULL );
 
@@ -528,7 +539,21 @@ public:
         return p->GetParentState()->DoSelectProperty(p, focus);
     }
 
         return p->GetParentState()->DoSelectProperty(p, focus);
     }
 
-    /** Sets number of columns on given page (default is current page).
+    /**
+        Sets a column title. Default title for column 0 is "Property",
+        and "Value" for column 1.
+
+        @remarks If header is not shown yet, then calling this
+                 member function will make it visible.
+    */
+    void SetColumnTitle( int idx, const wxString& title );
+
+    /**
+        Sets number of columns on given page (default is current page).
+
+        @remarks If you use header, then you should always use this
+                 member function to set the column count, instead of
+                 ones present in wxPropertyGrid or wxPropertyGridPage.
     */
     void SetColumnCount( int colCount, int page = -1 );
 
     */
     void SetColumnCount( int colCount, int page = -1 );
 
@@ -549,20 +574,40 @@ public:
     */
     void SetSplitterLeft( bool subProps = false, bool allPages = true );
 
     */
     void SetSplitterLeft( bool subProps = false, bool allPages = true );
 
-    /** Sets splitter position on individual page. */
-    void SetPageSplitterPosition( int page, int pos, int column = 0 )
-    {
-        GetPage(page)->DoSetSplitterPosition( pos, column );
-    }
+    /**
+        Sets splitter position on individual page.
 
 
-    /** Sets splitter position for all pages.
-        @remarks
-        Splitter position cannot exceed grid size, and therefore setting it
-        during form creation may fail as initial grid size is often smaller
-        than desired splitter position, especially when sizers are being used.
+        @remarks If you use header, then you should always use this
+                 member function to set the splitter position, instead of
+                 ones present in wxPropertyGrid or wxPropertyGridPage.
+    */
+    void SetPageSplitterPosition( int page, int pos, int column = 0 );
+
+    /**
+        Sets splitter position for all pages.
+
+        @remarks Splitter position cannot exceed grid size, and therefore
+                 setting it during form creation may fail as initial grid
+                 size is often smaller than desired splitter position,
+                 especially when sizers are being used.
+
+                 If you use header, then you should always use this
+                 member function to set the splitter position, instead of
+                 ones present in wxPropertyGrid or wxPropertyGridPage.
     */
     void SetSplitterPosition( int pos, int column = 0 );
 
     */
     void SetSplitterPosition( int pos, int column = 0 );
 
+#if wxUSE_HEADERCTRL
+    /**
+        Show or hide the property grid header control. It is hidden
+        by the default.
+
+        @remarks Grid may look better if you use wxPG_NO_INTERNAL_BORDER
+                 window style when showing a header.
+    */
+    void ShowHeader(bool show = true);
+#endif
+
 protected:
 
     //
 protected:
 
     //
@@ -594,13 +639,11 @@ public:
     virtual void SetWindowStyleFlag ( long style );
     virtual bool Reparent( wxWindowBase *newParent );
 
     virtual void SetWindowStyleFlag ( long style );
     virtual bool Reparent( wxWindowBase *newParent );
 
+#ifndef SWIG
+
 protected:
     virtual wxSize DoGetBestSize() const;
 
 protected:
     virtual wxSize DoGetBestSize() const;
 
-public:
-
-#ifndef SWIG
-
     //
     // Event handlers
     //
     //
     // Event handlers
     //
@@ -614,8 +657,8 @@ public:
     void OnToolbarClick( wxCommandEvent &event );
     void OnResize( wxSizeEvent& event );
     void OnPropertyGridSelect( wxPropertyGridEvent& event );
     void OnToolbarClick( wxCommandEvent &event );
     void OnResize( wxSizeEvent& event );
     void OnPropertyGridSelect( wxPropertyGridEvent& event );
+    void OnPGColDrag( wxPropertyGridEvent& event );
 
 
-protected:
 
     wxPropertyGrid* m_pPropGrid;
 
 
     wxPropertyGrid* m_pPropGrid;
 
@@ -623,12 +666,17 @@ protected:
 
 #if wxUSE_TOOLBAR
     wxToolBar*      m_pToolbar;
 
 #if wxUSE_TOOLBAR
     wxToolBar*      m_pToolbar;
+#endif
+#if wxUSE_HEADERCTRL
+    wxPGHeaderCtrl* m_pHeaderCtrl;
 #endif
     wxStaticText*   m_pTxtHelpCaption;
     wxStaticText*   m_pTxtHelpContent;
 
     wxPropertyGridPage*     m_emptyPage;
 
 #endif
     wxStaticText*   m_pTxtHelpCaption;
     wxStaticText*   m_pTxtHelpContent;
 
     wxPropertyGridPage*     m_emptyPage;
 
+    wxArrayString   m_columnLabels;
+
     long            m_iFlags;
 
     // Selected page index.
     long            m_iFlags;
 
     // Selected page index.
@@ -658,6 +706,8 @@ protected:
 
     unsigned char   m_onSplitter;
 
 
     unsigned char   m_onSplitter;
 
+    bool            m_showHeader;
+
     virtual wxPGProperty* DoGetPropertyByName( const wxString& name ) const;
 
     /** Select and displays a given page. */
     virtual wxPGProperty* DoGetPropertyByName( const wxString& name ) const;
 
     /** Select and displays a given page. */