// Created: 2008-12-01
// RCS-ID: $Id$
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@c wxHD_ALLOW_REORDER.
@endStyleTable
- @beginEventTable{wxHeaderCtrlEvent}
+ @beginEventEmissionTable{wxHeaderCtrlEvent}
@event{EVT_HEADER_CLICK(id, func)}
A column heading was clicked.
@event{EVT_HEADER_RIGHT_CLICK(id, func)}
@see wxGrid, wxListCtrl, wxDataViewCtrl
*/
-class wxHeaderCtrl
+class wxHeaderCtrl : public wxControl
{
public:
/**
@true if a column was shown or hidden or @false if nothing was
done, e.g. because the menu was cancelled.
*/
- int ShowColumnsMenu(const wxPoint& pt, const wxString& title = wxString());
+ bool ShowColumnsMenu(const wxPoint& pt, const wxString& title = wxString());
+
+ /**
+ Helper function appending the checkable items corresponding to all the
+ columns to the given menu.
+
+ This function is used by ShowColumnsMenu() but can also be used if you
+ show your own custom columns menu and still want all the columns shown
+ in it. It appends menu items with column labels as their text and
+ consecutive ids starting from @a idColumnsBase to the menu and checks
+ the items corresponding to the currently visible columns.
+
+ Example of use:
+ @code
+ wxMenu menu;
+ menu.Append(100, "Some custom command");
+ menu.AppendSeparator();
+ AddColumnsItems(menu, 200);
+ const int rc = GetPopupMenuSelectionFromUser(menu, pt);
+ if ( rc >= 200 )
+ ... toggle visibility of the column rc-200 ...
+ @endcode
+
+ @param menu
+ The menu to append the items to. It may be currently empty or not.
+ @param idColumnsBase
+ The id for the menu item corresponding to the first column, the
+ other ones are consecutive starting from it. It should be positive.
+ */
+ void AddColumnsItems(wxMenu& menu, int idColumnsBase = 0);
/**
Show the column customization dialog.
The column index, between 0 and the value last passed to
SetColumnCount().
*/
- virtual const wxHeaderColumnBase& GetColumn(unsigned int idx) const = 0;
+ virtual const wxHeaderColumn& GetColumn(unsigned int idx) const = 0;
/**
Method called when the column visibility is changed by the user.
to fit its width on header double click you need to implement this
method using logic similar to this example:
@code
- class MyHeaderCtrl : public wxHeaderColumnBase
+ class MyHeaderColumn : public wxHeaderColumn
{
public:
...
{
public:
protected:
- virtual wxHeaderColumnBase& GetColumn(unsigned int idx) const
+ virtual wxHeaderColumn& GetColumn(unsigned int idx) const
{
return m_cols[idx];
}
@see AppendColumn()
*/
- void InsertColumn(const wxHeaderColumn& col, unsigned int idx);
+ void InsertColumn(const wxHeaderColumnSimple& col, unsigned int idx);
/**
Append the column to the end of the control.
@see InsertColumn()
*/
- void AppendColumn(const wxHeaderColumn& col);
+ void AppendColumn(const wxHeaderColumnSimple& col);
/**
Delete the column at the given position.
@param idx
The column to set the sort indicator for.
+ If @c -1 is given, then the currently shown sort indicator
+ will be removed.
@param sortOrder
If @true or @false show the sort indicator corresponding to
- ascending or descending sort order respectively, if @c -1 remove
- the currently shown sort indicator.
+ ascending or descending sort order respectively.
*/
- virtual void ShowSortIndicator(unsigned int idx, int sortOrder);
+ void ShowSortIndicator(unsigned int idx, bool sortOrder = true);
/**
- Remove the sort indicator from the given column.
-
- This is the same as calling ShowSortIndicator() with @c -1 argument.
+ Remove the sort indicator from the column being used as sort key.
- @param idx
- The column to remove sort indicator for.
+ @see ShowSortIndicator
*/
- void RemoveSortIndicator(unsigned int idx);
+ void RemoveSortIndicator();
protected:
/**
Event class representing the events generated by wxHeaderCtrl.
@library{wxcore}
- @category{ctrl}
+ @category{events}
@see wxHeaderCtrl
*/