]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/propgrid/manager.h
Fix wrong use of EVT_COMMAND in the example in wxThread documentation.
[wxWidgets.git] / interface / wx / propgrid / manager.h
index 473dd12b54fa9ab9035b6df79c11b0547e01d2f7..0391703b0f3ab7238dbdb4d3cafd394c1b525123 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     interface of wxPropertyGridManager
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
@@ -128,8 +128,8 @@ public:
     @class wxPropertyGridManager
 
     wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid,
-    which can optionally have toolbar for mode and page selection, and a help text
-    box.
+    which can optionally have toolbar for mode and page selection, a help text
+    box, and a header.
 
     wxPropertyGridManager inherits from wxPropertyGridInterface, and as such
     it has most property manipulation functions. However, only some of them affect
@@ -147,7 +147,7 @@ public:
     acquire the internal grid (GetGrid()) or wxPropertyGridPage object (GetPage()).
 
     wxPropertyGridManager constructor has exact same format as wxPropertyGrid
-    constructor, and basicly accepts same extra window style flags (albeit also
+    constructor, and basically accepts same extra window style flags (albeit also
     has some extra ones).
 
     Here's some example code for creating and populating a wxPropertyGridManager:
@@ -170,19 +170,22 @@ public:
 
         wxPropertyGridPage* page;
 
-        page = pgMan->AddPage(wxT("First Page"));
+        page = pgMan->AddPage("First Page");
 
-        page->Append( new wxPropertyCategory(wxT("Category A1")) );
+        page->Append( new wxPropertyCategory("Category A1") );
 
-        page->Append( new wxIntProperty(wxT("Number"),wxPG_LABEL,1) );
+        page->Append( new wxIntProperty("Number",wxPG_LABEL,1) );
 
-        page->Append( new wxColourProperty(wxT("Colour"),wxPG_LABEL,*wxWHITE) );
+        page->Append( new wxColourProperty("Colour",wxPG_LABEL,*wxWHITE) );
 
-        page = pgMan->AddPage(wxT("Second Page"));
+        page = pgMan->AddPage("Second Page");
 
-        page->Append( wxT("Text"),wxPG_LABEL,wxT("(no text)") );
+        page->Append( "Text",wxPG_LABEL,"(no text)" );
 
-        page->Append( new wxFontProperty(wxT("Font"),wxPG_LABEL) );
+        page->Append( new wxFontProperty("Font",wxPG_LABEL) );
+
+        // Display a header above the grid
+        pgMan->ShowHeader();
     @endcode
 
     @section propgridmanager_window_styles_ Window Styles
@@ -253,7 +256,7 @@ public:
                  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 enable.
@@ -337,11 +340,11 @@ public:
     /** Returns index to currently selected page. */
     int GetSelectedPage() const;
 
-    /** Shortcut for GetGrid()->GetSelection(). */
+    /** Alias for GetSelection(). */
     wxPGProperty* GetSelectedProperty() const;
 
-    /** Synonyme for GetSelectedPage. */
-    int GetSelection() const;
+    /** Shortcut for GetGrid()->GetSelection(). */
+    wxPGProperty* GetSelection() const;
 
     /**
         Returns a pointer to the toolbar currently associated with the
@@ -388,6 +391,12 @@ public:
     */
     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;
+
     /**
         Removes a page.
 
@@ -411,14 +420,32 @@ public:
     /** Select and displays a given page. */
     void SelectPage( wxPropertyGridPage* page );
 
-    /** Select a property. */
+    /**
+        Select a property.
+
+        @see wxPropertyGrid::SelectProperty(),
+             wxPropertyGridInterface::ClearSelection()
+    */
     bool SelectProperty( wxPGPropArg id, bool focus = false );
 
     /**
         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 );
 
+    /**
+        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 label and text in description box.
     */
@@ -440,21 +467,42 @@ public:
     */
     void SetSplitterLeft( bool subProps = false, bool allPages = true );
 
-    /** Sets splitter position on individual page. */
+    /** Moves splitter as left as possible on an individual page, while still allowing all
+        labels to be shown in full.
+    */
+    void SetPageSplitterLeft(int page, bool subProps = false);
+
+    /**
+        Sets splitter position on individual page.
+
+        @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.
+        @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 );
 
-    /** Synonyme for SelectPage(name). */
-    void SetStringSelection( const wxChar* name );
+    /**
+        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);
 
 protected:
 
@@ -463,8 +511,11 @@ protected:
     //
 
     /**
-        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 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;
 };