extract AddColumnsItems() from ShowColumnsMenu() to make it possible to reuse it in custom menu
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -130,6 +130,17 @@ public:
|
|||||||
// with wxHD_ALLOW_HIDE style
|
// with wxHD_ALLOW_HIDE style
|
||||||
bool ShowColumnsMenu(const wxPoint& pt, const wxString& title = wxString());
|
bool ShowColumnsMenu(const wxPoint& pt, const wxString& title = wxString());
|
||||||
|
|
||||||
|
// append the entries for all our columns to the given menu, with the
|
||||||
|
// currently visible columns being checked
|
||||||
|
//
|
||||||
|
// this is used by ShowColumnsMenu() but can also be used if you use your
|
||||||
|
// own custom columns menu but nevertheless want to show all the columns in
|
||||||
|
// it
|
||||||
|
//
|
||||||
|
// the ids of the items corresponding to the columns are consecutive and
|
||||||
|
// start from idColumnsBase
|
||||||
|
void AddColumnsItems(wxMenu& menu, int idColumnsBase = 0);
|
||||||
|
|
||||||
// show the columns customization dialog and return true if something was
|
// show the columns customization dialog and return true if something was
|
||||||
// changed using it (in which case UpdateColumnVisibility() and/or
|
// changed using it (in which case UpdateColumnVisibility() and/or
|
||||||
// UpdateColumnsOrder() will have been called)
|
// UpdateColumnsOrder() will have been called)
|
||||||
|
@@ -327,6 +327,35 @@ public:
|
|||||||
*/
|
*/
|
||||||
int ShowColumnsMenu(const wxPoint& pt, const wxString& title = wxString());
|
int 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.
|
Show the column customization dialog.
|
||||||
|
|
||||||
|
@@ -263,6 +263,18 @@ wxHeaderCtrlBase::DoResizeColumnIndices(wxArrayInt& colIndices, unsigned int cou
|
|||||||
// wxHeaderCtrl extra UI
|
// wxHeaderCtrl extra UI
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxHeaderCtrlBase::AddColumnsItems(wxMenu& menu, int idColumnsBase)
|
||||||
|
{
|
||||||
|
const unsigned count = GetColumnCount();
|
||||||
|
for ( unsigned n = 0; n < count; n++ )
|
||||||
|
{
|
||||||
|
const wxHeaderColumn& col = GetColumn(n);
|
||||||
|
menu.AppendCheckItem(idColumnsBase + n, col.GetTitle());
|
||||||
|
if ( col.IsShown() )
|
||||||
|
menu.Check(n, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool wxHeaderCtrlBase::ShowColumnsMenu(const wxPoint& pt, const wxString& title)
|
bool wxHeaderCtrlBase::ShowColumnsMenu(const wxPoint& pt, const wxString& title)
|
||||||
{
|
{
|
||||||
// construct the menu with the entries for all columns
|
// construct the menu with the entries for all columns
|
||||||
@@ -270,17 +282,11 @@ bool wxHeaderCtrlBase::ShowColumnsMenu(const wxPoint& pt, const wxString& title)
|
|||||||
if ( !title.empty() )
|
if ( !title.empty() )
|
||||||
menu.SetTitle(title);
|
menu.SetTitle(title);
|
||||||
|
|
||||||
const unsigned count = GetColumnCount();
|
AddColumnsItems(menu);
|
||||||
for ( unsigned n = 0; n < count; n++ )
|
|
||||||
{
|
|
||||||
const wxHeaderColumn& col = GetColumn(n);
|
|
||||||
menu.AppendCheckItem(n, col.GetTitle());
|
|
||||||
if ( col.IsShown() )
|
|
||||||
menu.Check(n, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ... and an extra one to show the customization dialog if the user is
|
// ... and an extra one to show the customization dialog if the user is
|
||||||
// allowed to reorder the columns too
|
// allowed to reorder the columns too
|
||||||
|
const unsigned count = GetColumnCount();
|
||||||
if ( HasFlag(wxHD_ALLOW_REORDER) )
|
if ( HasFlag(wxHD_ALLOW_REORDER) )
|
||||||
{
|
{
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
|
Reference in New Issue
Block a user