]> git.saurik.com Git - wxWidgets.git/commitdiff
extract setters from wxHeaderColumnBase into a separate wxSettableHeaderColumn class...
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Dec 2008 13:05:48 +0000 (13:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Dec 2008 13:05:48 +0000 (13:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dataview.h
include/wx/headercol.h
include/wx/headerctrl.h
interface/wx/headercol.h
src/common/headercolcmn.cpp
src/common/headerctrlcmn.cpp
src/generic/datavgen.cpp
src/generic/headerctrlg.cpp
src/gtk/dataview.cpp
src/msw/headerctrl.cpp

index 37b153843f3c36a36920c47cf014db21bf619004..062ad743e211e37f3d307d3ef466566cefbdd95b 100644 (file)
@@ -508,7 +508,7 @@ enum wxDataViewColumnFlags
     wxDATAVIEW_COL_HIDDEN        = wxCOL_HIDDEN
 };
 
     wxDATAVIEW_COL_HIDDEN        = wxCOL_HIDDEN
 };
 
-class WXDLLIMPEXP_ADV wxDataViewColumnBase : public wxHeaderColumnBase
+class WXDLLIMPEXP_ADV wxDataViewColumnBase : public wxSettableHeaderColumn
 {
 public:
     // ctor for the text columns: takes ownership of renderer
 {
 public:
     // ctor for the text columns: takes ownership of renderer
index 548298a831eb4e88cb40c5eb65619c7f679ed390..183e46d097bff611aa5f0dba2fb840ee664bab71 100644 (file)
@@ -43,11 +43,11 @@ enum
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
-// wxHeaderColumnBase: interface for a column in a header of controls such as
-//                     wxListCtrl, wxDataViewCtrl or wxGrid
+// wxHeaderColumn: interface for a column in a header of controls such as
+//                 wxListCtrl, wxDataViewCtrl or wxGrid
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxHeaderColumnBase
+class WXDLLIMPEXP_CORE wxHeaderColumn
 {
 public:
     // ctors and dtor
 {
 public:
     // ctors and dtor
@@ -69,80 +69,65 @@ public:
 
     // virtual dtor for the base class to avoid gcc warnings even though we
     // don't normally delete the objects of this class via a pointer to
 
     // virtual dtor for the base class to avoid gcc warnings even though we
     // don't normally delete the objects of this class via a pointer to
-    // wxHeaderColumnBase so it's not necessary, strictly speaking
-    virtual ~wxHeaderColumnBase() { }
+    // wxHeaderColumn so it's not necessary, strictly speaking
+    virtual ~wxHeaderColumn() { }
 
 
+    // getters for various attributes
+    // ------------------------------
 
 
-    // setters and getters for various attributes
-    // ------------------------------------------
+    // notice that wxHeaderColumn only provides getters as this is all the
+    // wxHeaderCtrl needs, various derived class must also provide some way to
+    // change these attributes but this can be done either at the column level
+    // (in which case they should inherit from wxSettableHeaderColumn) or via
+    // the methods of the main control in which case you don't need setters in
+    // the column class at all
 
     // title is the string shown for this column
 
     // title is the string shown for this column
-    virtual void SetTitle(const wxString& title) = 0;
     virtual wxString GetTitle() const = 0;
 
     // bitmap shown (instead of text) in the column header
     virtual wxString GetTitle() const = 0;
 
     // bitmap shown (instead of text) in the column header
-    virtual void SetBitmap(const wxBitmap& bitmap) = 0;
     virtual wxBitmap GetBitmap() const = 0;                                   \
 
     // width of the column in pixels, can be set to wxCOL_WIDTH_DEFAULT meaning
     // unspecified/default
     virtual wxBitmap GetBitmap() const = 0;                                   \
 
     // width of the column in pixels, can be set to wxCOL_WIDTH_DEFAULT meaning
     // unspecified/default
-    virtual void SetWidth(int width) = 0;
     virtual int GetWidth() const = 0;
 
     // minimal width can be set for resizeable columns to forbid resizing them
     // below the specified size (set to 0 to remove)
     virtual int GetWidth() const = 0;
 
     // minimal width can be set for resizeable columns to forbid resizing them
     // below the specified size (set to 0 to remove)
-    virtual void SetMinWidth(int minWidth) = 0;
     virtual int GetMinWidth() const = 0;
 
     // alignment of the text: wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT
     virtual int GetMinWidth() const = 0;
 
     // alignment of the text: wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT
-    virtual void SetAlignment(wxAlignment align) = 0;
     virtual wxAlignment GetAlignment() const = 0;
 
 
     // flags manipulations:
     // --------------------
 
     virtual wxAlignment GetAlignment() const = 0;
 
 
     // flags manipulations:
     // --------------------
 
-    // notice that while we make Set/GetFlags() pure virtual here and implement
-    // the individual flags access in terms of them, for some derived classes
-    // it is more natural to implement access to each flag individually, in
-    // which case they can use SetIndividualFlags() and GetFromIndividualFlags()
-    // below to implement Set/GetFlags()
+    // notice that while we make GetFlags() pure virtual here and implement the
+    // individual flags access in terms of it, for some derived classes it is
+    // more natural to implement access to each flag individually, in which
+    // case they can use our GetFromIndividualFlags() helper below to implement
+    // GetFlags()
 
 
-    // set or retrieve all column flags at once: combination of wxCOL_XXX
-    // values above
-    virtual void SetFlags(int flags) = 0;
+    // retrieve all column flags at once: combination of wxCOL_XXX values above
     virtual int GetFlags() const = 0;
 
     virtual int GetFlags() const = 0;
 
-    // change, set, clear, toggle or test for any individual flag
-    void ChangeFlag(int flag, bool set);
-    void SetFlag(int flag);
-    void ClearFlag(int flag);
-    void ToggleFlag(int flag);
-
     bool HasFlag(int flag) const { return (GetFlags() & flag) != 0; }
 
 
     // wxCOL_RESIZABLE
     bool HasFlag(int flag) const { return (GetFlags() & flag) != 0; }
 
 
     // wxCOL_RESIZABLE
-    virtual void SetResizeable(bool resizeable)
-        { ChangeFlag(wxCOL_RESIZABLE, resizeable); }
     virtual bool IsResizeable() const
         { return HasFlag(wxCOL_RESIZABLE); }
 
     // wxCOL_SORTABLE
     virtual bool IsResizeable() const
         { return HasFlag(wxCOL_RESIZABLE); }
 
     // wxCOL_SORTABLE
-    virtual void SetSortable(bool sortable)
-        { ChangeFlag(wxCOL_SORTABLE, sortable); }
     virtual bool IsSortable() const
         { return HasFlag(wxCOL_SORTABLE); }
 
     // wxCOL_REORDERABLE
     virtual bool IsSortable() const
         { return HasFlag(wxCOL_SORTABLE); }
 
     // wxCOL_REORDERABLE
-    virtual void SetReorderable(bool reorderable)
-        { ChangeFlag(wxCOL_REORDERABLE, reorderable); }
     virtual bool IsReorderable() const
         { return HasFlag(wxCOL_REORDERABLE); }
 
     // wxCOL_HIDDEN
     virtual bool IsReorderable() const
         { return HasFlag(wxCOL_REORDERABLE); }
 
     // wxCOL_HIDDEN
-    virtual void SetHidden(bool hidden)
-        { ChangeFlag(wxCOL_HIDDEN, hidden); }
     virtual bool IsHidden() const
         { return HasFlag(wxCOL_HIDDEN); }
     bool IsShown() const
     virtual bool IsHidden() const
         { return HasFlag(wxCOL_HIDDEN); }
     bool IsShown() const
@@ -152,30 +137,67 @@ public:
     // sorting
     // -------
 
     // sorting
     // -------
 
-    // set this column as the one used to sort the control
-    virtual void SetAsSortKey(bool sort = true) = 0;
-    void UnsetAsSortKey() { SetAsSortKey(false); }
-
-    // return true if the column is used for sorting
+    // return true if the column is the one currently used for sorting
     virtual bool IsSortKey() const = 0;
 
     // for sortable columns indicate whether we should sort in ascending or
     // descending order (this should only be taken into account if IsSortKey())
     virtual bool IsSortKey() const = 0;
 
     // for sortable columns indicate whether we should sort in ascending or
     // descending order (this should only be taken into account if IsSortKey())
+    virtual bool IsSortOrderAscending() const = 0;
+
+protected:
+    // helper for the class overriding IsXXX()
+    int GetFromIndividualFlags() const;
+};
+
+// ----------------------------------------------------------------------------
+// wxSettableHeaderColumn: column which allows to change its fields too
+// ----------------------------------------------------------------------------
+
+class wxSettableHeaderColumn : public wxHeaderColumn
+{
+public:
+    virtual void SetTitle(const wxString& title) = 0;
+    virtual void SetBitmap(const wxBitmap& bitmap) = 0;
+    virtual void SetWidth(int width) = 0;
+    virtual void SetMinWidth(int minWidth) = 0;
+    virtual void SetAlignment(wxAlignment align) = 0;
+
+    // see comment for wxHeaderColumn::GetFlags() about the relationship
+    // between SetFlags() and Set{Sortable,Reorderable,...}
+
+    // change, set, clear, toggle or test for any individual flag
+    virtual void SetFlags(int flags) = 0;
+    void ChangeFlag(int flag, bool set);
+    void SetFlag(int flag);
+    void ClearFlag(int flag);
+    void ToggleFlag(int flag);
+
+    virtual void SetResizeable(bool resizeable)
+        { ChangeFlag(wxCOL_RESIZABLE, resizeable); }
+    virtual void SetSortable(bool sortable)
+        { ChangeFlag(wxCOL_SORTABLE, sortable); }
+    virtual void SetReorderable(bool reorderable)
+        { ChangeFlag(wxCOL_REORDERABLE, reorderable); }
+    virtual void SetHidden(bool hidden)
+        { ChangeFlag(wxCOL_HIDDEN, hidden); }
+
+    virtual void SetAsSortKey(bool sort = true) = 0;
+    void UnsetAsSortKey() { SetAsSortKey(false); }
+
     virtual void SetSortOrder(bool ascending) = 0;
     void ToggleSortOrder() { SetSortOrder(!IsSortOrderAscending()); }
     virtual void SetSortOrder(bool ascending) = 0;
     void ToggleSortOrder() { SetSortOrder(!IsSortOrderAscending()); }
-    virtual bool IsSortOrderAscending() const = 0;
 
 protected:
 
 protected:
-    // helpers for the class overriding Set/IsXXX()
+    // helper for the class overriding individual SetXXX() methods instead of
+    // overriding SetFlags()
     void SetIndividualFlags(int flags);
     void SetIndividualFlags(int flags);
-    int GetFromIndividualFlags() const;
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
-// wxHeaderColumnSimple: trivial generic implementation of wxHeaderColumnBase
+// wxHeaderColumnSimple: trivial generic implementation of wxHeaderColumn
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
 
-class wxHeaderColumnSimple : public wxHeaderColumnBase
+class wxHeaderColumnSimple : public wxSettableHeaderColumn
 {
 public:
     // ctors and dtor
 {
 public:
     // ctors and dtor
index 82d6507271f66fa80eb6d8296005b156edce1b0a..d3223c713143958502f71d42e4f1b495c7360d14 100644 (file)
@@ -113,7 +113,7 @@ public:
 protected:
     // this method must be implemented by the derived classes to return the
     // information for the given column
 protected:
     // this method must be implemented by the derived classes to return the
     // information for the given column
-    virtual wxHeaderColumnBase& GetColumn(unsigned int idx) = 0;
+    virtual wxHeaderColumn& GetColumn(unsigned int idx) = 0;
 
     // this method is called from the default EVT_HEADER_SEPARATOR_DCLICK
     // handler to update the fitting column width of the given column, it
 
     // this method is called from the default EVT_HEADER_SEPARATOR_DCLICK
     // handler to update the fitting column width of the given column, it
@@ -241,7 +241,7 @@ public:
 
 protected:
     // implement/override base class methods
 
 protected:
     // implement/override base class methods
-    virtual wxHeaderColumnBase& GetColumn(unsigned int idx);
+    virtual wxHeaderColumn& GetColumn(unsigned int idx);
     virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle);
 
     // and define another one to be overridden in the derived classes: it
     virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle);
 
     // and define another one to be overridden in the derived classes: it
index 906f32409d12b96ada3b4050af54f7848b892f81..5c63468e3e737a0167fdc8d68bdfa379d0ef36b1 100644 (file)
@@ -42,9 +42,18 @@ enum
 
     Notice that this is an abstract base class which is implemented (usually
     using the information stored in the associated control) by the different
 
     Notice that this is an abstract base class which is implemented (usually
     using the information stored in the associated control) by the different
-    controls using wxHeaderCtrl. You may use wxHeaderCtrlSimple which uses
-    concrete wxHeaderColumnSimple if you don't already store the column
-    information somewhere.
+    controls using wxHeaderCtrl. As the control only needs to retrieve the
+    information about the column, this class defines only the methods for
+    accessing the various column properties but not for changing them as the
+    setters might not be needed at all, e.g. if the column attributes can only
+    be changed via the methods of the main associated control (this is the case
+    for wxGrid for example). If you do want to allow changing them directly
+    using the column itself, you should inherit from wxSettableHeaderColumn
+    instead of this class.
+
+    Finally, if you don't already store the column information at all anywhere,
+    you should use the concrete wxHeaderColumnSimple class and
+    wxHeaderCtrlSimple.
 
     @library{wxcore}
     @category{ctrl}
 
     @library{wxcore}
     @category{ctrl}
@@ -53,29 +62,138 @@ class wxHeaderColumn
 {
 public:
     /**
 {
 public:
     /**
-        Set the text to display in the column header.
+        Get the text shown in the column header.
      */
      */
-    virtual void SetTitle(const wxString& title) = 0;
+    virtual wxString GetTitle() const = 0;
 
     /**
 
     /**
-        Get the text shown in the column header.
+        Returns the bitmap in the header of the column, if any.
+
+        If the column has no associated bitmap, wxNullBitmap should be returned.
+    */
+    virtual wxBitmap GetBitmap() const = 0;
+
+    /**
+        Returns the current width of the column.
+
+        @return
+            Width of the column in pixels, never wxCOL_WIDTH_DEFAULT.
+    */
+    virtual int GetWidth() const = 0;
+
+    /**
+        Return the minimal column width.
+
+        @return
+            The minimal width such that the user can't resize the column to
+            lesser size (notice that it is still possible to set the column
+            width to smaller value from the program code). Return 0 from here
+            to allow resizing the column to arbitrarily small size.
      */
      */
-    virtual wxString GetTitle() const = 0;
+    virtual int GetMinWidth() const = 0;
 
     /**
 
     /**
-        Set the bitmap to be displayed in the column header.
+        Returns the current column alignment.
 
 
-        Notice that the bitmaps displayed in different columns of the same
-        control must all be of the same size.
+        @return
+            One of wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT.
      */
      */
-    virtual void SetBitmap(const wxBitmap& bitmap) = 0;
+    virtual wxAlignment GetAlignment() const = 0;
+
 
     /**
 
     /**
-        Returns the bitmap in the header of the column, if any.
+        Get the column flags.
+
+        This method retrieves all the flags at once, you can also use HasFlag()
+        to test for any individual flag or IsResizeable(), IsSortable(),
+        IsReorderable() and IsHidden() to test for particular flags.
+     */
+    virtual int GetFlags() const = 0;
+
+    /**
+        Return @true if the specified flag is currently set for this column.
+     */
+    bool HasFlag(int flag) const;
+
+
+    /**
+        Return true if the column can be resized by the user.
+
+        Equivalent to HasFlag(wxCOL_RESIZABLE).
+     */
+    virtual bool IsResizeable() const;
 
 
-        If the column has no associated bitmap, wxNullBitmap is returned.
+    /**
+        Returns @true if the column can be clicked by user to sort the control
+        contents by the field in this column.
+
+        This corresponds to wxCOL_SORTABLE flag which is off by default.
     */
     */
-    virtual wxBitmap GetBitmap() const = 0;
+    virtual bool IsSortable() const;
+
+    /**
+        Returns @true if the column can be dragged by user to change its order.
+
+        This corresponds to wxCOL_REORDERABLE flag which is on by default.
+    */
+    virtual bool IsReorderable() const;
+
+    /**
+        Returns @true if the column is currently hidden.
+
+        This corresponds to wxCOL_HIDDEN flag which is off by default.
+     */
+    virtual bool IsHidden() const;
+
+    /**
+        Returns @true if the column is currently shown.
+
+        This corresponds to the absence of wxCOL_HIDDEN flag.
+     */
+    bool IsShown() const;
+
+
+    /**
+        Returns @true if the column is currently used for sorting.
+     */
+    virtual bool IsSortKey() const = 0;
+
+    /**
+        Returns @true, if the sort order is ascending.
+
+        Notice that it only makes sense to call this function if the column is
+        used for sorting at all, i.e. if IsSortKey() returns @true.
+    */
+    virtual bool IsSortOrderAscending() const = 0;
+};
+
+/**
+    @class wxSettableHeaderColumn
+
+    Adds methods to set the column attributes to wxHeaderColumn.
+
+    This class adds setters for the column attributes defined by
+    wxHeaderColumn. It is still an abstract base class and needs to be
+    implemented before using it with wxHeaderCtrl.
+
+    @library{wxcore}
+    @category{ctrl}
+ */
+class wxSettableHeaderColumn : public wxHeaderColumn
+{
+public:
+    /**
+        Set the text to display in the column header.
+     */
+    virtual void SetTitle(const wxString& title) = 0;
+
+    /**
+        Set the bitmap to be displayed in the column header.
+
+        Notice that the bitmaps displayed in different columns of the same
+        control must all be of the same size.
+     */
+    virtual void SetBitmap(const wxBitmap& bitmap) = 0;
 
     /**
         Set the column width.
 
     /**
         Set the column width.
@@ -86,14 +204,6 @@ public:
      */
     virtual void SetWidth(int width) = 0;
 
      */
     virtual void SetWidth(int width) = 0;
 
-    /**
-        Returns the current width of the column.
-
-        @return
-            Width of the column in pixels, never wxCOL_WIDTH_DEFAULT.
-    */
-    virtual int GetWidth() const = 0;
-
     /**
         Set the minimal column width.
 
     /**
         Set the minimal column width.
 
@@ -108,14 +218,6 @@ public:
      */
     virtual void SetMinWidth(int minWidth) = 0;
 
      */
     virtual void SetMinWidth(int minWidth) = 0;
 
-    /**
-        Return the minimal column width.
-
-        @return
-            The value previously set by SetMinWidth() or 0 by default.
-     */
-    virtual int GetMinWidth() const = 0;
-
     /**
         Set the alignment of the column header.
 
     /**
         Set the alignment of the column header.
 
@@ -129,14 +231,6 @@ public:
     */
     virtual void SetAlignment(wxAlignment align) = 0;
 
     */
     virtual void SetAlignment(wxAlignment align) = 0;
 
-    /**
-        Returns the current column alignment.
-
-        @return
-            One of wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT.
-     */
-    virtual wxAlignment GetAlignment() const = 0;
-
 
     /**
         Set the column flags.
 
     /**
         Set the column flags.
@@ -189,22 +283,6 @@ public:
      */
     void ToggleFlag(int flag);
 
      */
     void ToggleFlag(int flag);
 
-    /**
-        Get the column flags.
-
-        This method retrieves all the flags at once, you can also use HasFlag()
-        to test for any individual flag or IsResizeable(), IsSortable(),
-        IsReorderable() and IsHidden() to test for particular flags.
-
-        @see SetFlags()
-     */
-    virtual int GetFlags() const = 0;
-
-    /**
-        Return @true if the specified flag is currently set for this column.
-     */
-    bool HasFlag(int flag) const;
-
 
     /**
         Call this to enable or disable interactive resizing of the column by
 
     /**
         Call this to enable or disable interactive resizing of the column by
@@ -216,13 +294,6 @@ public:
      */
     virtual void SetResizeable(bool resizeable);
 
      */
     virtual void SetResizeable(bool resizeable);
 
-    /**
-        Return true if the column can be resized by the user.
-
-        Equivalent to HasFlag(wxCOL_RESIZABLE).
-     */
-    virtual bool IsResizeable() const;
-
     /**
         Allow clicking the column to sort the control contents by the field in
         this column.
     /**
         Allow clicking the column to sort the control contents by the field in
         this column.
@@ -235,16 +306,6 @@ public:
      */
     virtual void SetSortable(bool sortable);
 
      */
     virtual void SetSortable(bool sortable);
 
-    /**
-        Returns @true if the column can be clicked by user to sort the control
-        contents by the field in this column.
-
-        This corresponds to wxCOL_SORTABLE flag which is off by default.
-
-        @see SetSortable()
-    */
-    virtual bool IsSortable() const;
-
     /**
         Allow changing the column order by dragging it.
 
     /**
         Allow changing the column order by dragging it.
 
@@ -252,15 +313,6 @@ public:
      */
     virtual void SetReorderable(bool reorderable);
 
      */
     virtual void SetReorderable(bool reorderable);
 
-    /**
-        Returns @true if the column can be dragged by user to change its order.
-
-        This corresponds to wxCOL_REORDERABLE flag which is on by default.
-
-        @see SetReorderable()
-    */
-    virtual bool IsReorderable() const;
-
     /**
         Hide or show the column.
 
     /**
         Hide or show the column.
 
@@ -271,21 +323,6 @@ public:
      */
     virtual void SetHidden(bool hidden);
 
      */
     virtual void SetHidden(bool hidden);
 
-    /**
-        Returns @true if the column is currently hidden.
-
-        This corresponds to wxCOL_HIDDEN flag which is off by default.
-     */
-    virtual bool IsHidden() const;
-
-    /**
-        Returns @true if the column is currently shown.
-
-        This corresponds to the absence of wxCOL_HIDDEN flag.
-     */
-    bool IsShown() const;
-
-
 
     /**
         Sets this column as the sort key for the associated control.
 
     /**
         Sets this column as the sort key for the associated control.
@@ -312,16 +349,6 @@ public:
      */
     void UnsetAsSortKey();
 
      */
     void UnsetAsSortKey();
 
-    /**
-        Returns @true if the column is currently used for sorting.
-
-        Notice that this function simply returns the value last passed to
-        SetAsSortKey() (or @false if SetAsSortKey() had never been called), it
-        is up to the associated control to use this information to actually
-        sort its contents.
-     */
-    virtual bool IsSortKey() const = 0;
-
     /**
         Sets the sort order for this column.
 
     /**
         Sets the sort order for this column.
 
@@ -345,16 +372,6 @@ public:
         @see SetSortOrder(), IsSortOrderAscending()
      */
     void ToggleSortOrder();
         @see SetSortOrder(), IsSortOrderAscending()
      */
     void ToggleSortOrder();
-
-    /**
-        Returns @true, if the sort order is ascending.
-
-        Notice that it only makes sense to call this function if the column is
-        used for sorting at all, i.e. if IsSortKey() returns @true.
-
-        @see SetSortOrder()
-    */
-    virtual bool IsSortOrderAscending() const = 0;
 };
 
 /**
 };
 
 /**
@@ -362,9 +379,9 @@ public:
 
     Simple container for the information about the column.
 
 
     Simple container for the information about the column.
 
-    This is a concrete class implementing all base wxHeaderColumn class methods
-    in a trivial way, i.e. by just storing the information in the object
-    itself. It is used by and with wxHeaderCtrlSimple, e.g.
+    This is a concrete class implementing all wxSettableHeaderColumn class
+    methods in a trivial way, i.e. by just storing the information in the
+    object itself. It is used by and with wxHeaderCtrlSimple, e.g.
     @code
         wxHeaderCtrlSimple * header = new wxHeaderCtrlSimple(...);
         wxHeaderColumnSimple col("Title");
     @code
         wxHeaderCtrlSimple * header = new wxHeaderCtrlSimple(...);
         wxHeaderColumnSimple col("Title");
index 1a6a3cc0baaddf1ff74ccaa217c0f7c1f8c367cb..27e4843300d8c87a32c5f9708cf7c8920aeb2b4c 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        src/common/headercolcmn.cpp
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        src/common/headercolcmn.cpp
-// Purpose:     wxHeaderColumnBase implementation
+// Purpose:     wxHeaderColumn implementation
 // Author:      Vadim Zeitlin
 // Created:     2008-12-02
 // RCS-ID:      $Id$
 // Author:      Vadim Zeitlin
 // Created:     2008-12-02
 // RCS-ID:      $Id$
 #include "wx/headercol.h"
 
 // ============================================================================
 #include "wx/headercol.h"
 
 // ============================================================================
-// wxHeaderColumnBase implementation
+// wxHeaderColumn implementation
 // ============================================================================
 
 // ============================================================================
 
-void wxHeaderColumnBase::SetIndividualFlags(int flags)
-{
-    SetResizeable((flags & wxCOL_RESIZABLE) != 0);
-    SetSortable((flags & wxCOL_SORTABLE) != 0);
-    SetReorderable((flags & wxCOL_REORDERABLE) != 0);
-    SetHidden((flags & wxCOL_HIDDEN) != 0);
-}
-
-int wxHeaderColumnBase::GetFromIndividualFlags() const
+int wxHeaderColumn::GetFromIndividualFlags() const
 {
     int flags = 0;
 
 {
     int flags = 0;
 
@@ -56,27 +48,39 @@ int wxHeaderColumnBase::GetFromIndividualFlags() const
     return flags;
 }
 
     return flags;
 }
 
-void wxHeaderColumnBase::ChangeFlag(int flag, bool set)
+// ============================================================================
+// wxSettableHeaderColumn implementation
+// ============================================================================
+
+void wxSettableHeaderColumn::SetIndividualFlags(int flags)
+{
+    SetResizeable((flags & wxCOL_RESIZABLE) != 0);
+    SetSortable((flags & wxCOL_SORTABLE) != 0);
+    SetReorderable((flags & wxCOL_REORDERABLE) != 0);
+    SetHidden((flags & wxCOL_HIDDEN) != 0);
+}
+
+void wxSettableHeaderColumn::ChangeFlag(int flag, bool set)
 {
     if ( HasFlag(flag) != set )
         ToggleFlag(flag);
 }
 
 {
     if ( HasFlag(flag) != set )
         ToggleFlag(flag);
 }
 
-void wxHeaderColumnBase::SetFlag(int flag)
+void wxSettableHeaderColumn::SetFlag(int flag)
 {
     int flags = GetFlags();
     if ( !(flags & flag) )
         SetFlags(flags | flag);
 }
 
 {
     int flags = GetFlags();
     if ( !(flags & flag) )
         SetFlags(flags | flag);
 }
 
-void wxHeaderColumnBase::ClearFlag(int flag)
+void wxSettableHeaderColumn::ClearFlag(int flag)
 {
     int flags = GetFlags();
     if ( flags & flag )
         SetFlags(flags & ~flag);
 }
 
 {
     int flags = GetFlags();
     if ( flags & flag )
         SetFlags(flags & ~flag);
 }
 
-void wxHeaderColumnBase::ToggleFlag(int flag)
+void wxSettableHeaderColumn::ToggleFlag(int flag)
 {
     int flags = GetFlags();
     if ( flags & flag )
 {
     int flags = GetFlags();
     if ( flags & flag )
index 0199090a84129b786fff73558398ab30672e39a9..2cc69b4566a2ba7f6e1f14a43ab00994d0b990e6 100644 (file)
@@ -149,7 +149,7 @@ void wxHeaderCtrlSimple::Init()
     m_sortKey = wxNO_COLUMN;
 }
 
     m_sortKey = wxNO_COLUMN;
 }
 
-wxHeaderColumnBase& wxHeaderCtrlSimple::GetColumn(unsigned int idx)
+wxHeaderColumn& wxHeaderCtrlSimple::GetColumn(unsigned int idx)
 {
     return m_cols[idx];
 }
 {
     return m_cols[idx];
 }
index b15e2eb4d480d7d38111bbc7a31f9f9699e46523..21483c4910e6df6750e5285703171c154b4da885 100644 (file)
@@ -91,7 +91,7 @@ public:
 protected:
     // implement/override wxHeaderCtrl functions by forwarding them to the main
     // control
 protected:
     // implement/override wxHeaderCtrl functions by forwarding them to the main
     // control
-    virtual wxHeaderColumnBase& GetColumn(unsigned int idx)
+    virtual wxHeaderColumn& GetColumn(unsigned int idx)
     {
         return *(GetOwner()->GetColumn(idx));
     }
     {
         return *(GetOwner()->GetColumn(idx));
     }
@@ -176,8 +176,10 @@ private:
 
     void OnEndResize(wxHeaderCtrlEvent& event)
     {
 
     void OnEndResize(wxHeaderCtrlEvent& event)
     {
+        wxDataViewCtrl * const owner = GetOwner();
+
         const unsigned col = event.GetColumn();
         const unsigned col = event.GetColumn();
-        GetColumn(col).SetWidth(event.GetWidth());
+        owner->GetColumn(col)->SetWidth(event.GetWidth());
         GetOwner()->OnColumnChange(col);
     }
 
         GetOwner()->OnColumnChange(col);
     }
 
index 85548d7b974beaed3404105daeda20bcbdd9b8f3..f1a98083c2a933480181e9075da2a33de59ec30b 100644 (file)
@@ -170,7 +170,7 @@ int wxHeaderCtrl::GetColStart(unsigned int idx) const
         if ( i == idx )
             break;
 
         if ( i == idx )
             break;
 
-        const wxHeaderColumnBase& col = self->GetColumn(i);
+        const wxHeaderColumn& col = self->GetColumn(i);
         if ( col.IsShown() )
             pos += col.GetWidth();
     }
         if ( col.IsShown() )
             pos += col.GetWidth();
     }
@@ -194,7 +194,7 @@ unsigned int wxHeaderCtrl::FindColumnAtPoint(int x, bool *onSeparator) const
     for ( unsigned n = 0; n < count; n++ )
     {
         const unsigned idx = m_colIndices[n];
     for ( unsigned n = 0; n < count; n++ )
     {
         const unsigned idx = m_colIndices[n];
-        const wxHeaderColumnBase& col = self->GetColumn(idx);
+        const wxHeaderColumn& col = self->GetColumn(idx);
         if ( col.IsHidden() )
             continue;
 
         if ( col.IsHidden() )
             continue;
 
@@ -531,7 +531,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
     for ( unsigned int i = 0; i < count; i++ )
     {
         const unsigned idx = m_colIndices[i];
     for ( unsigned int i = 0; i < count; i++ )
     {
         const unsigned idx = m_colIndices[i];
-        const wxHeaderColumnBase& col = GetColumn(idx);
+        const wxHeaderColumn& col = GetColumn(idx);
         if ( col.IsHidden() )
             continue;
 
         if ( col.IsHidden() )
             continue;
 
index ae58e3619993e8c00d58f4ba500bd3a30ec18a4b..eca69982ef27d2470a1826b1074a64e953bec37c 100644 (file)
@@ -2706,7 +2706,7 @@ bool wxDataViewColumn::IsSortable() const
 
 void wxDataViewColumn::SetAsSortKey( bool WXUNUSED(sort) )
 {
 
 void wxDataViewColumn::SetAsSortKey( bool WXUNUSED(sort) )
 {
-    // it might not make sense to have this function in wxHeaderColumnBase at
+    // it might not make sense to have this function in wxHeaderColumn at
     // all in fact, changing of the sort order should only be done using the
     // associated control API
     wxFAIL_MSG( "not implemented" );
     // all in fact, changing of the sort order should only be done using the
     // associated control API
     wxFAIL_MSG( "not implemented" );
index 5388eca4e1e112a015450667f2820698ae7c21e4..7336cba3b82331748234d432ca2ac829009da924 100644 (file)
@@ -172,7 +172,7 @@ void wxHeaderCtrl::DoUpdate(unsigned int idx)
 
 void wxHeaderCtrl::DoInsertItem(unsigned int idx, int order)
 {
 
 void wxHeaderCtrl::DoInsertItem(unsigned int idx, int order)
 {
-    const wxHeaderColumnBase& col = GetColumn(idx);
+    const wxHeaderColumn& col = GetColumn(idx);
 
     wxHDITEM hdi;
 
 
     wxHDITEM hdi;