]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/manager.h
Added GTKShouldConnectSizeRequest() to prevent size_request handling.
[wxWidgets.git] / include / wx / propgrid / manager.h
index 42c44b81f451ecd40ffdcd0ecf3c6455076c392e..75db8dafdf916b98c6ac8639c2a2323942b13950 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2005-01-14
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2005-01-14
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -12,6 +12,8 @@
 #ifndef _WX_PROPGRID_MANAGER_H_
 #define _WX_PROPGRID_MANAGER_H_
 
 #ifndef _WX_PROPGRID_MANAGER_H_
 #define _WX_PROPGRID_MANAGER_H_
 
+#if wxUSE_PROPGRID
+
 #include "wx/propgrid/propgrid.h"
 
 #include "wx/dcclient.h"
 #include "wx/propgrid/propgrid.h"
 
 #include "wx/dcclient.h"
@@ -25,7 +27,7 @@
 // -----------------------------------------------------------------------
 
 #ifndef SWIG
 // -----------------------------------------------------------------------
 
 #ifndef SWIG
-extern WXDLLIMPEXP_PROPGRID const wxChar *wxPropertyGridManagerNameStr;
+extern WXDLLIMPEXP_DATA_PROPGRID(const char) wxPropertyGridManagerNameStr[];
 #endif
 
 /** @class wxPropertyGridPage
 #endif
 
 /** @class wxPropertyGridPage
@@ -63,9 +65,7 @@ class WXDLLIMPEXP_PROPGRID wxPropertyGridPage : public wxEvtHandler,
                                                 public wxPropertyGridPageState
 {
     friend class wxPropertyGridManager;
                                                 public wxPropertyGridPageState
 {
     friend class wxPropertyGridManager;
-#ifndef SWIG
     DECLARE_CLASS(wxPropertyGridPage)
     DECLARE_CLASS(wxPropertyGridPage)
-#endif
 public:
 
     wxPropertyGridPage();
 public:
 
     wxPropertyGridPage();
@@ -161,14 +161,8 @@ protected:
     */
     virtual void DoSetSplitterPosition( int pos,
                                         int splitterColumn = 0,
     */
     virtual void DoSetSplitterPosition( int pos,
                                         int splitterColumn = 0,
-                                        bool allPages = false );
-
-    /** Propagate to other pages.
-    */
-    void DoSetSplitterPositionThisPage( int pos, int splitterColumn = 0 )
-    {
-        wxPropertyGridPageState::DoSetSplitterPosition( pos, splitterColumn );
-    }
+                                        bool allPages = false,
+                                        bool fromAutoCenter = false );
 
     /** 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
@@ -216,39 +210,18 @@ private:
 class WXDLLIMPEXP_PROPGRID
     wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface
 {
 class WXDLLIMPEXP_PROPGRID
     wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface
 {
-#ifndef SWIG
     DECLARE_CLASS(wxPropertyGridManager)
     DECLARE_CLASS(wxPropertyGridManager)
-#endif
     friend class wxPropertyGridPage;
 public:
 
     friend class wxPropertyGridPage;
 public:
 
-#ifdef SWIG
-    %pythonAppend wxPropertyGridManager {
-        self._setOORInfo(self)
-        self.DoDefaultTypeMappings()
-        self.edited_objects = {}
-        self.DoDefaultValueTypeMappings()
-        if not hasattr(self.__class__,'_vt2setter'):
-            self.__class__._vt2setter = {}
-    }
-    %pythonAppend wxPropertyGridManager() ""
-
-    wxPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY,
-                           const wxPoint& pos = wxDefaultPosition,
-                           const wxSize& size = wxDefaultSize,
-                           long style = wxPGMAN_DEFAULT_STYLE,
-                           const wxChar* name =
-                                wxPyPropertyGridManagerNameStr );
-    %RenameCtor(PrePropertyGridManager,  wxPropertyGridManager());
-
-#else
-
+#ifndef SWIG
     /**
         Two step constructor.
         Call Create when this constructor is called to build up the
         wxPropertyGridManager.
       */
     wxPropertyGridManager();
     /**
         Two step constructor.
         Call Create when this constructor is called to build up the
         wxPropertyGridManager.
       */
     wxPropertyGridManager();
+#endif
 
     /** The default constructor. The styles to be used are styles valid for
         the wxWindow.
 
     /** The default constructor. The styles to be used are styles valid for
         the wxWindow.
@@ -258,13 +231,11 @@ public:
                            const wxPoint& pos = wxDefaultPosition,
                            const wxSize& size = wxDefaultSize,
                            long style = wxPGMAN_DEFAULT_STYLE,
                            const wxPoint& pos = wxDefaultPosition,
                            const wxSize& size = wxDefaultSize,
                            long style = wxPGMAN_DEFAULT_STYLE,
-                           const wxChar* name = wxPropertyGridManagerNameStr );
+                           const wxString& name = wxPropertyGridManagerNameStr );
 
     /** Destructor */
     virtual ~wxPropertyGridManager();
 
 
     /** Destructor */
     virtual ~wxPropertyGridManager();
 
-#endif
-
     /** Creates new property page. Note that the first page is not created
         automatically.
         @param label
     /** Creates new property page. Note that the first page is not created
         automatically.
         @param label
@@ -275,25 +246,20 @@ public:
         @param pageObj
         wxPropertyGridPage instance. Manager will take ownership of this object.
         NULL indicates that a default page instance should be created.
         @param pageObj
         wxPropertyGridPage instance. Manager will take ownership of this object.
         NULL indicates that a default page instance should be created.
+
         @return
         @return
-        Returns index to the page created.
+        Returns pointer to created page.
+
         @remarks
         If toolbar is used, it is highly recommended that the pages are
         added when the toolbar is not turned off using window style flag
         switching.
     */
         @remarks
         If toolbar is used, it is highly recommended that the pages are
         added when the toolbar is not turned off using window style flag
         switching.
     */
-    int AddPage( const wxString& label = wxEmptyString,
-                 const wxBitmap& bmp = wxPG_NULL_BITMAP,
-                 wxPropertyGridPage* pageObj = (wxPropertyGridPage*) NULL )
-    {
-        return InsertPage(-1,label,bmp,pageObj);
-    }
-
-    void ClearModifiedStatus ( wxPGPropArg id );
-
-    void ClearModifiedStatus ()
+    wxPropertyGridPage* AddPage( const wxString& label = wxEmptyString,
+                                 const wxBitmap& bmp = wxPG_NULL_BITMAP,
+                                 wxPropertyGridPage* pageObj = NULL )
     {
     {
-        m_pPropGrid->ClearModifiedStatus();
+        return InsertPage(-1, label, bmp, pageObj);
     }
 
     /** Deletes all all properties and all pages.
     }
 
     /** Deletes all all properties and all pages.
@@ -323,7 +289,7 @@ public:
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = wxPGMAN_DEFAULT_STYLE,
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = wxPGMAN_DEFAULT_STYLE,
-                 const wxChar* name = wxPropertyGridManagerNameStr );
+                 const wxString& name = wxPropertyGridManagerNameStr );
 
     /**
         Enables or disables (shows/hides) categories according to parameter
 
     /**
         Enables or disables (shows/hides) categories according to parameter
@@ -344,25 +310,6 @@ public:
     */
     bool EnsureVisible( wxPGPropArg id );
 
     */
     bool EnsureVisible( wxPGPropArg id );
 
-    /** Returns number of children of the root property of the selected page. */
-    size_t GetChildrenCount()
-    {
-        return GetChildrenCount( m_pPropGrid->m_pState->m_properties );
-    }
-
-    /** Returns number of children of the root property of given page. */
-    size_t GetChildrenCount( int pageIndex );
-
-    /** Returns number of children for the property.
-
-        NB: Cannot be in container methods class due to name hiding.
-    */
-    size_t GetChildrenCount( wxPGPropArg id ) const
-    {
-        wxPG_PROP_ARG_CALL_PROLOG_RETVAL(0)
-        return p->GetChildCount();
-    }
-
     /** Returns number of columns on given page. By the default,
         returns number of columns on current page. */
     int GetColumnCount( int page = -1 ) const;
     /** Returns number of columns on given page. By the default,
         returns number of columns on current page. */
     int GetColumnCount( int page = -1 ) const;
@@ -443,18 +390,11 @@ public:
         return GetPage(m_selPage);
     }
 
         return GetPage(m_selPage);
     }
 
-    /** Returns last page.
-    */
-    wxPropertyGridPage* GetLastPage() const
-    {
-        return GetPage(m_arrPages.size()-1);
-    }
-
     /** Returns page object for given page index.
     */
     wxPropertyGridPage* GetPage( unsigned int ind ) const
     {
     /** Returns page object for given page index.
     */
     wxPropertyGridPage* GetPage( unsigned int ind ) const
     {
-        return (wxPropertyGridPage*)m_arrPages.Item(ind);
+        return m_arrPages[ind];
     }
 
     /** Returns page object for given page name.
     }
 
     /** Returns page object for given page name.
@@ -477,10 +417,12 @@ public:
     */
     int GetPageByState( const wxPropertyGridPageState* pstate ) const;
 
     */
     int GetPageByState( const wxPropertyGridPageState* pstate ) const;
 
+protected:
     /** Returns wxPropertyGridPageState of given page, current page's for -1.
     */
     virtual wxPropertyGridPageState* GetPageState( int page ) const;
 
     /** Returns wxPropertyGridPageState of given page, current page's for -1.
     */
     virtual wxPropertyGridPageState* GetPageState( int page ) const;
 
+public:
     /** Returns number of managed pages. */
     size_t GetPageCount() const;
 
     /** Returns number of managed pages. */
     size_t GetPageCount() const;
 
@@ -495,14 +437,17 @@ public:
     /** Returns index to currently selected page. */
     int GetSelectedPage() const { return m_selPage; }
 
     /** Returns index to currently selected page. */
     int GetSelectedPage() const { return m_selPage; }
 
-    /** Shortcut for GetGrid()->GetSelection(). */
+    /** Alias for GetSelection(). */
     wxPGProperty* GetSelectedProperty() const
     {
     wxPGProperty* GetSelectedProperty() const
     {
-        return m_pPropGrid->GetSelection();
+        return GetSelection();
     }
 
     }
 
-    /** Synonyme for GetSelectedPage. */
-    int GetSelection() const { return m_selPage; }
+    /** Shortcut for GetGrid()->GetSelection(). */
+    wxPGProperty* GetSelection() const
+    {
+        return m_pPropGrid->GetSelection();
+    }
 
     /** Returns a pointer to the toolbar currently associated with the
         wxPropertyGridManager (if any). */
 
     /** Returns a pointer to the toolbar currently associated with the
         wxPropertyGridManager (if any). */
@@ -520,13 +465,14 @@ public:
         @param pageObj
         wxPropertyGridPage instance. Manager will take ownership of this object.
         If NULL, default page object is constructed.
         @param pageObj
         wxPropertyGridPage instance. Manager will take ownership of this object.
         If NULL, default page object is constructed.
+
         @return
         @return
-        Returns index to the page created.
+        Returns pointer to created page.
     */
     */
-    virtual int InsertPage( int index,
-                            const wxString& label,
-                            const wxBitmap& bmp = wxNullBitmap,
-                            wxPropertyGridPage* pageObj = NULL );
+    virtual wxPropertyGridPage* InsertPage( int index,
+                                            const wxString& label,
+                                            const wxBitmap& bmp = wxNullBitmap,
+                                            wxPropertyGridPage* pageObj = NULL );
 
     /**
         Returns true if any property on any page has been modified by the user.
 
     /**
         Returns true if any property on any page has been modified by the user.
@@ -545,6 +491,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 );
 
@@ -554,10 +506,10 @@ public:
     */
     virtual bool RemovePage( int page );
 
     */
     virtual bool RemovePage( int page );
 
-    /** Select and displays a given page. Also makes it target page for
-        insert operations etc.
+    /** Select and displays a given page.
+
         @param index
         @param index
-        Index of page being seleced. Can be -1 to select nothing.
+            Index of page being seleced. Can be -1 to select nothing.
     */
     void SelectPage( int index );
 
     */
     void SelectPage( int index );
 
@@ -593,12 +545,6 @@ public:
     /** Sets y coordinate of the description box splitter. */
     void SetDescBoxHeight( int ht, bool refresh = true );
 
     /** Sets y coordinate of the description box splitter. */
     void SetDescBoxHeight( int ht, bool refresh = true );
 
-    /** Sets property attribute for all applicapple properties.
-        Be sure to use this method after all properties have been
-        added to the grid.
-    */
-    void SetPropertyAttributeAll( const wxString& name, wxVariant value );
-
     /** Moves splitter as left as possible, while still allowing all
         labels to be shown in full.
         @param subProps
     /** Moves splitter as left as possible, while still allowing all
         labels to be shown in full.
         @param subProps
@@ -623,49 +569,28 @@ public:
     */
     void SetSplitterPosition( int pos, int column = 0 );
 
     */
     void SetSplitterPosition( int pos, int column = 0 );
 
-    /** Synonyme for SelectPage(name). */
-    void SetStringSelection( const wxChar* name )
-    {
-        SelectPage( GetPageByName(name) );
-    }
-
-#ifdef SWIG
-    %pythoncode {
-        def GetValuesFromPage(self,
-                              page,
-                              dict_=None,
-                              as_strings=False,
-                              inc_attributes=False):
-            """
-            Same as GetValues, but returns values from specific page only.
-            For argument descriptions, see GetValues.
-            """
-            return page.GetPropertyValues(dict_, as_strings, inc_attributes)
-    }
-#endif
-
 protected:
 
     //
     // Subclassing helpers
     //
 
 protected:
 
     //
     // Subclassing helpers
     //
 
-    /** Creates property grid for the manager. Override to use subclassed
-        wxPropertyGrid.
+    /**
+        Creates property grid for the manager. Reimplement in derived class to
+        use subclassed wxPropertyGrid. However, if you you do this then you
+        must also use the two-step construction (ie. default constructor and
+        Create() instead of constructor with arguments) when creating the
+        manager.
     */
     virtual wxPropertyGrid* CreatePropertyGrid() const;
 
     */
     virtual wxPropertyGrid* CreatePropertyGrid() const;
 
-    virtual void RefreshProperty( wxPGProperty* p );
-
 public:
 public:
-
-#ifndef DOXYGEN
+    virtual void RefreshProperty( wxPGProperty* p );
 
     //
     // Overridden functions - no documentation required.
     //
 
 
     //
     // Overridden functions - no documentation required.
     //
 
-    virtual wxSize DoGetBestSize() const;
     void SetId( wxWindowID winid );
 
     virtual void Freeze();
     void SetId( wxWindowID winid );
 
     virtual void Freeze();
@@ -673,8 +598,10 @@ public:
     virtual void SetExtraStyle ( long exStyle );
     virtual bool SetFont ( const wxFont& font );
     virtual void SetWindowStyleFlag ( long style );
     virtual void SetExtraStyle ( long exStyle );
     virtual bool SetFont ( const wxFont& font );
     virtual void SetWindowStyleFlag ( long style );
+    virtual bool Reparent( wxWindowBase *newParent );
 
 protected:
 
 protected:
+    virtual wxSize DoGetBestSize() const;
 
 public:
 
 
 public:
 
@@ -698,7 +625,7 @@ protected:
 
     wxPropertyGrid* m_pPropGrid;
 
 
     wxPropertyGrid* m_pPropGrid;
 
-    wxArrayPtrVoid  m_arrPages;
+    wxVector<wxPropertyGridPage*>   m_arrPages;
 
 #if wxUSE_TOOLBAR
     wxToolBar*      m_pToolbar;
 
 #if wxUSE_TOOLBAR
     wxToolBar*      m_pToolbar;
@@ -752,6 +679,8 @@ protected:
     virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const;
 #endif*/
 
     virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const;
 #endif*/
 
+    virtual bool ProcessEvent( wxEvent& event );
+
     /** Recalculates new positions for components, according to the
         given size.
     */
     /** Recalculates new positions for components, according to the
         given size.
     */
@@ -760,22 +689,22 @@ protected:
     /** (Re)creates/destroys controls, according to the window style bits. */
     void RecreateControls();
 
     /** (Re)creates/destroys controls, according to the window style bits. */
     void RecreateControls();
 
-    void RefreshHelpBox( int new_splittery, int new_width, int new_height );
+    void UpdateDescriptionBox( int new_splittery, int new_width, int new_height );
 
 
-    void RepaintSplitter( wxDC& dc,
-                          int new_splittery,
-                          int new_width,
-                          int new_height,
-                          bool desc_too );
+    void RepaintDescBoxDecorations( wxDC& dc,
+                                    int newSplitterY,
+                                    int newWidth,
+                                    int newHeight );
 
     void SetDescribedProperty( wxPGProperty* p );
 
 
     void SetDescribedProperty( wxPGProperty* p );
 
-    virtual bool ProcessEvent( wxEvent& event );
+    // Reimplement these to handle "descboxheight" state item
+    virtual bool SetEditableStateItem( const wxString& name, wxVariant value );
+    virtual wxVariant GetEditableStateItem( const wxString& name ) const;
 
 private:
     DECLARE_EVENT_TABLE()
 #endif // #ifndef SWIG
 
 private:
     DECLARE_EVENT_TABLE()
 #endif // #ifndef SWIG
-#endif // #ifndef DOXYGEN
 };
 
 // -----------------------------------------------------------------------
 };
 
 // -----------------------------------------------------------------------
@@ -789,4 +718,6 @@ inline int wxPropertyGridPage::GetIndex() const
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
 
+#endif // wxUSE_PROPGRID
+
 #endif // _WX_PROPGRID_MANAGER_H_
 #endif // _WX_PROPGRID_MANAGER_H_