]> git.saurik.com Git - wxWidgets.git/commitdiff
extract AddColumnsItems() from ShowColumnsMenu() to make it possible to reuse it...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 30 Dec 2008 23:19:06 +0000 (23:19 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 30 Dec 2008 23:19:06 +0000 (23:19 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/headerctrl.h
interface/wx/headerctrl.h
src/common/headerctrlcmn.cpp

index a95d094cb3f400fa922f3d462a6614c239a066ae..64ca3c45408c6a5a432d6bfd60715f08221867f3 100644 (file)
@@ -130,6 +130,17 @@ public:
     // with wxHD_ALLOW_HIDE style
     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
     // changed using it (in which case UpdateColumnVisibility() and/or
     // UpdateColumnsOrder() will have been called)
index 02eed62ee4da9ea26fe7718c38bbee3a6ea246da..c718467c170ca5fda1f3f7c773de705809d69a68 100644 (file)
@@ -327,6 +327,35 @@ public:
      */
     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.
 
index bc5fd71f60afc32b1da967243db4d4fd75fce4dc..bf24b0456478bff29ce8e9d159e1e29919c65bfa 100644 (file)
@@ -263,24 +263,30 @@ wxHeaderCtrlBase::DoResizeColumnIndices(wxArrayInt& colIndices, unsigned int cou
 // wxHeaderCtrl extra UI
 // ----------------------------------------------------------------------------
 
-bool wxHeaderCtrlBase::ShowColumnsMenu(const wxPoint& pt, const wxString& title)
+void wxHeaderCtrlBase::AddColumnsItems(wxMenu& menu, int idColumnsBase)
 {
-    // construct the menu with the entries for all columns
-    wxMenu menu;
-    if ( !title.empty() )
-        menu.SetTitle(title);
-
     const unsigned count = GetColumnCount();
     for ( unsigned n = 0; n < count; n++ )
     {
         const wxHeaderColumn& col = GetColumn(n);
-        menu.AppendCheckItem(n, col.GetTitle());
+        menu.AppendCheckItem(idColumnsBase + n, col.GetTitle());
         if ( col.IsShown() )
             menu.Check(n, true);
     }
+}
+
+bool wxHeaderCtrlBase::ShowColumnsMenu(const wxPoint& pt, const wxString& title)
+{
+    // construct the menu with the entries for all columns
+    wxMenu menu;
+    if ( !title.empty() )
+        menu.SetTitle(title);
+
+    AddColumnsItems(menu);
 
     // ... and an extra one to show the customization dialog if the user is
     // allowed to reorder the columns too
+    const unsigned count = GetColumnCount();
     if ( HasFlag(wxHD_ALLOW_REORDER) )
     {
         menu.AppendSeparator();