| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/headercol.h
 
- // Purpose:     interface of wxHeaderColumn
 
- // Author:      Vadim Zeitlin
 
- // Created:     2008-12-01
 
- // Copyright:   (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Column width special values.
 
-  */
 
- enum
 
- {
 
-     /// Special value used for column width meaning unspecified or default.
 
-     wxCOL_WIDTH_DEFAULT = -1,
 
-     /**
 
-         Size the column automatically to fit all values.
 
-         @note On OS X, this style is only implemented in the Cocoa build on
 
-               OS X >= 10.5; it behaves identically to wxCOL_WIDTH_DEFAULT otherwise.
 
-      */
 
-     wxCOL_WIDTH_AUTOSIZE = -2
 
- };
 
- /**
 
-     Bit flags used as wxHeaderColumn flags.
 
-  */
 
- enum
 
- {
 
-     /// Column can be resized (included in default flags).
 
-     wxCOL_RESIZABLE   = 1,
 
-     /// Column can be clicked to toggle the sort order by its contents.
 
-     wxCOL_SORTABLE    = 2,
 
-     /// Column can be dragged to change its order (included in default).
 
-     wxCOL_REORDERABLE = 4,
 
-     /// Column is not shown at all.
 
-     wxCOL_HIDDEN      = 8,
 
-     /// Default flags for wxHeaderColumn ctor.
 
-     wxCOL_DEFAULT_FLAGS = wxCOL_RESIZABLE | wxCOL_REORDERABLE
 
- };
 
- /**
 
-     @class wxHeaderColumn
 
-     Represents a column header in controls displaying tabular data such as
 
-     wxDataViewCtrl or wxGrid.
 
-     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. 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}
 
-  */
 
- class wxHeaderColumn
 
- {
 
- public:
 
-     /**
 
-         Get the text shown in the column header.
 
-      */
 
-     virtual wxString GetTitle() const = 0;
 
-     /**
 
-         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 or
 
-             wxCOL_WIDTH_AUTOSIZE.
 
-     */
 
-     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 int GetMinWidth() const = 0;
 
-     /**
 
-         Returns the current column alignment.
 
-         @return
 
-             One of wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT.
 
-      */
 
-     virtual wxAlignment GetAlignment() const = 0;
 
-     /**
 
-         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;
 
-     /**
 
-         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 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.
 
-         @param width
 
-             The column width in pixels or the special wxCOL_WIDTH_DEFAULT
 
-             (meaning to use default width) or wxCOL_WIDTH_AUTOSIZE (size to
 
-             fit the content) value.
 
-      */
 
-     virtual void SetWidth(int width) = 0;
 
-     /**
 
-         Set the minimal column width.
 
-         This method can be used with resizable columns (i.e. those for which
 
-         wxCOL_RESIZABLE flag is set in GetFlags() or, alternatively,
 
-         IsResizeable() returns @true) to prevent the user from making them
 
-         narrower than the given width.
 
-         @param minWidth
 
-             The minimal column width in pixels, may be 0 to remove any
 
-             previously set restrictions.
 
-      */
 
-     virtual void SetMinWidth(int minWidth) = 0;
 
-     /**
 
-         Set the alignment of the column header.
 
-         @param align
 
-             The text alignment in horizontal direction only or wxALIGN_NOT to
 
-             use the default alignment, The possible values here are
 
-             wxALIGN_CENTRE, wxALIGN_LEFT or wxALIGN_RIGHT with
 
-             wxALIGN_CENTRE_HORIZONTAL being also supported as synonym for
 
-             wxALIGN_CENTRE for consistency (but notice that GetAlignment()
 
-             never returns it).
 
-     */
 
-     virtual void SetAlignment(wxAlignment align) = 0;
 
-     /**
 
-         Set the column flags.
 
-         This method allows to set all flags at once, see also generic
 
-         ChangeFlag(), SetFlag(), ClearFlag() and ToggleFlag() methods below as
 
-         well as specific SetResizeable(), SetSortable(), SetReorderable() and
 
-         SetHidden() ones.
 
-         @param flags
 
-             Combination of wxCOL_RESIZABLE, wxCOL_SORTABLE, wxCOL_REORDERABLE
 
-             and wxCOL_HIDDEN bit flags.
 
-      */
 
-     virtual void SetFlags(int flags) = 0;
 
-     /**
 
-         Set or clear the given flag.
 
-         @param flag
 
-             The flag to set or clear.
 
-         @param set
 
-             If @true, set the flag, i.e. equivalent to calling SetFlag(),
 
-             otherwise clear it, as ClearFlag().
 
-         @see SetFlags()
 
-      */
 
-     void ChangeFlag(int flag, bool set);
 
-     /**
 
-         Set the specified flag for the column.
 
-         @see SetFlags()
 
-      */
 
-     void SetFlag(int flag);
 
-     /**
 
-         Clear the specified flag for the column.
 
-         @see SetFlags()
 
-      */
 
-     void ClearFlag(int flag);
 
-     /**
 
-         Toggle the specified flag for the column.
 
-         If the flag is currently set, equivalent to ClearFlag(), otherwise --
 
-         to SetFlag().
 
-         @see SetFlags()
 
-      */
 
-     void ToggleFlag(int flag);
 
-     /**
 
-         Call this to enable or disable interactive resizing of the column by
 
-         the user.
 
-         By default, the columns are resizable.
 
-         Equivalent to ChangeFlag(wxCOL_RESIZABLE, resizable).
 
-      */
 
-     virtual void SetResizeable(bool resizable);
 
-     /**
 
-         Allow clicking the column to sort the control contents by the field in
 
-         this column.
 
-         By default, the columns are not sortable so you need to explicitly call
 
-         this function to allow sorting by the field corresponding to this
 
-         column.
 
-         Equivalent to ChangeFlag(wxCOL_SORTABLE, sortable).
 
-      */
 
-     virtual void SetSortable(bool sortable);
 
-     /**
 
-         Allow changing the column order by dragging it.
 
-         Equivalent to ChangeFlag(wxCOL_REORDERABLE, reorderable).
 
-      */
 
-     virtual void SetReorderable(bool reorderable);
 
-     /**
 
-         Hide or show the column.
 
-         By default all columns are shown but some of them can be completely
 
-         hidden from view by calling this function.
 
-         Equivalent to ChangeFlag(wxCOL_HIDDEN, hidden).
 
-      */
 
-     virtual void SetHidden(bool hidden);
 
-     /**
 
-         Don't use this column for sorting.
 
-         This is the reverse of SetSortOrder() and is called to indicate that
 
-         this column is not used for sorting any longer.
 
-      */
 
-     void UnsetAsSortKey();
 
-     /**
 
-         Sets this column as the sort key for the associated control.
 
-         This function indicates that this column is currently used for sorting
 
-         the control and also sets the sorting direction. Notice that actual
 
-         sorting is only done in the control associated with the header, this
 
-         function doesn't do any sorting on its own.
 
-         Don't confuse this function with SetSortable() which should be used to
 
-         indicate that the column @em may be used for sorting while this one is
 
-         used to indicate that it currently @em is used for sorting. Of course,
 
-         SetSortOrder() can be only called for sortable columns.
 
-         @param ascending
 
-             If @true, sort in ascending order, otherwise in descending order.
 
-      */
 
-     virtual void SetSortOrder(bool ascending) = 0;
 
-     /**
 
-         Inverses the sort order.
 
-         This function is typically called when the user clicks on a column used
 
-         for sorting to change sort order from ascending to descending or vice
 
-         versa.
 
-         @see SetSortOrder(), IsSortOrderAscending()
 
-      */
 
-     void ToggleSortOrder();
 
- };
 
- /**
 
-     @class wxHeaderColumnSimple
 
-     Simple container for the information about the column.
 
-     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");
 
-         col.SetWidth(100);
 
-         col.SetSortable(100);
 
-         header->AppendColumn(col);
 
-     @endcode
 
-     @library{wxcore}
 
-     @category{ctrl}
 
-  */
 
- class wxHeaderColumnSimple : public wxSettableHeaderColumn
 
- {
 
- public:
 
-     //@{
 
-     /**
 
-         Constructor for a column header.
 
-         The first constructor creates a header showing the given text @a title
 
-         while the second one creates one showing the specified @a bitmap image.
 
-      */
 
-     wxHeaderColumnSimple(const wxString& title,
 
-                          int width = wxCOL_WIDTH_DEFAULT,
 
-                          wxAlignment align = wxALIGN_NOT,
 
-                          int flags = wxCOL_DEFAULT_FLAGS);
 
-     wxHeaderColumnSimple(const wxBitmap &bitmap,
 
-                          int width = wxCOL_WIDTH_DEFAULT,
 
-                          wxAlignment align = wxALIGN_CENTER,
 
-                          int flags = wxCOL_DEFAULT_FLAGS);
 
-     //@}
 
-     //@{
 
-     /// Trivial implementations of the base class pure virtual functions.
 
-     virtual void SetTitle(const wxString& title);
 
-     virtual wxString GetTitle() const;
 
-     virtual void SetBitmap(const wxBitmap& bitmap);
 
-     virtual wxBitmap GetBitmap() const;
 
-     virtual void SetWidth(int width);
 
-     virtual int GetWidth() const;
 
-     virtual void SetMinWidth(int minWidth);
 
-     virtual int GetMinWidth() const;
 
-     virtual void SetAlignment(wxAlignment align);
 
-     virtual wxAlignment GetAlignment() const;
 
-     virtual void SetFlags(int flags);
 
-     virtual int GetFlags() const;
 
-     virtual bool IsSortKey() const;
 
-     virtual void SetSortOrder(bool ascending);
 
-     virtual bool IsSortOrderAscending() const;
 
-     //@}
 
- };
 
 
  |