Added menu items to show/hide all columns.
authorAndrea Zagli <azagli@libero.it>
Thu, 6 Jun 2019 08:31:09 +0000 (10:31 +0200)
committerAndrea Zagli <azagli@libero.it>
Thu, 6 Jun 2019 08:31:09 +0000 (10:31 +0200)
The GdaExGrdiColumn::set_visible wasn't linked to menu item status.

po/it.po
src/grid.c
src/gridcolumn.c

index c1256251e2c84dbcf70e1d4a74f0a4cdbbcce7ef..2edd6a3d68f134feb25267959c6df3d03a7891c4 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,13 +1,13 @@
 # libgdaexgrid italian translation
-# Copyright (C) 2015-2016 Andrea Zagli
+# Copyright (C) 2015-2019 Andrea Zagli
 # This file is distributed under the same license as the libgdaexgrid package.
-# Andrea Zagli <azagli@libero.it>, 2015-2016.
+# Andrea Zagli <azagli@libero.it>, 2015-2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libgdaexgrid 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-01-02 15:59+0100\n"
+"POT-Creation-Date: 2019-06-06 10:11+0200\n"
 "PO-Revision-Date: 2016-01-02 12:44+0200\n"
 "Last-Translator: Andrea Zagli <azagli@libero.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -17,14 +17,22 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../src/grid.c:712
+#: ../src/grid.c:1098
 msgid "_Columns"
 msgstr "_Colonne"
 
-#: ../src/grid.c:786
+#: ../src/grid.c:1106
+msgid "_Show all"
+msgstr "_Mostra tutte"
+
+#: ../src/grid.c:1114
+msgid "_Hide all"
+msgstr "_Nascondi tutte"
+
+#: ../src/grid.c:1192
 msgid "_Print..."
 msgstr "_Stampa..."
 
-#: ../src/grid.c:795
+#: ../src/grid.c:1201
 msgid "_Export..."
 msgstr "_Esporta..."
index 4be7d1e1f4066a0b2b26b24c153fae1794b86c17..bbb957da1d2449121c4dc70512cac32ad30384a8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  grid.c
  *
- *  Copyright (C) 2010-2017 Andrea Zagli <azagli@libero.it>
+ *  Copyright (C) 2010-2019 Andrea Zagli <azagli@libero.it>
  *
  *  This file is part of libgdaexgrid.
  *
@@ -75,6 +75,10 @@ static gboolean gdaex_grid_on_button_press_event (GtkWidget *widget,
                                                   gpointer user_data);
 static gboolean gdaex_grid_on_popup_menu (GtkWidget *widget,
                                           gpointer user_data);
+static void gdaex_grid_on_menu_item_showall_activate (GtkMenuItem *menuitem,
+                                             gpointer user_data);
+static void gdaex_grid_on_menu_item_hideall_activate (GtkMenuItem *menuitem,
+                                             gpointer user_data);
 static void gdaex_grid_on_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
                                              gpointer user_data);
 
@@ -1065,6 +1069,7 @@ static GtkTreeView
        guint col;
        guint cols_sorted;
 
+       gulong hid;
        GtkWidget *mitem;
        GtkWidget *submitem;
 
@@ -1099,6 +1104,26 @@ static GtkTreeView
        gtk_menu_item_set_submenu (GTK_MENU_ITEM (mitem), submitem);
        gtk_widget_show (submitem);
 
+       mitem = gtk_menu_item_new_with_mnemonic (_("_Show all"));
+
+       g_signal_connect (G_OBJECT (mitem), "activate",
+                         G_CALLBACK (gdaex_grid_on_menu_item_showall_activate), (gpointer)grid);
+
+       gtk_menu_shell_append (GTK_MENU_SHELL (submitem), mitem);
+       gtk_widget_show (mitem);
+
+       mitem = gtk_menu_item_new_with_mnemonic (_("_Hide all"));
+
+       g_signal_connect (G_OBJECT (mitem), "activate",
+                         G_CALLBACK (gdaex_grid_on_menu_item_hideall_activate), (gpointer)grid);
+
+       gtk_menu_shell_append (GTK_MENU_SHELL (submitem), mitem);
+       gtk_widget_show (mitem);
+
+       mitem = gtk_separator_menu_item_new ();
+       gtk_menu_shell_append (GTK_MENU_SHELL (submitem), mitem);
+       gtk_widget_show (mitem);
+
        cols_sorted = 0;
        for (col = 0; col < priv->columns->len; col++)
                {
@@ -1146,11 +1171,14 @@ static GtkTreeView
 
                                        g_object_set_data (G_OBJECT (mitem), "GdaExGridColumn", gcolumn);
 
-                                       g_signal_connect (G_OBJECT (mitem), "toggled",
-                                                         G_CALLBACK (gdaex_grid_on_menu_item_toggled), (gpointer)grid);
+                                       hid = g_signal_connect (G_OBJECT (mitem), "toggled",
+                                                               G_CALLBACK (gdaex_grid_on_menu_item_toggled), (gpointer)grid);
 
                                        gtk_menu_shell_append (GTK_MENU_SHELL (submitem), mitem);
                                        gtk_widget_show (mitem);
+
+                                       g_object_set_data (G_OBJECT (gcolumn), "menuitem", mitem);
+                                       g_object_set_data (G_OBJECT (gcolumn), "menuitem_handler_id", GINT_TO_POINTER (hid));
                                }
                }
 
@@ -1356,6 +1384,42 @@ gdaex_grid_on_popup_menu (GtkWidget *widget,
        return TRUE;
 }
 
+static void
+gdaex_grid_on_menu_item_showall_activate (GtkMenuItem *menuitem,
+                                 gpointer user_data)
+{
+       GdaExGridPrivate *priv;
+
+       guint col;
+       GdaExGridColumn *gcolumn;
+
+       priv = GDAEX_GRID_GET_PRIVATE (user_data);
+
+       for (col = 0; col < priv->columns->len; col++)
+               {
+                       gcolumn = (GdaExGridColumn *)g_ptr_array_index (priv->columns, col);
+                       gdaex_grid_column_set_visible (gcolumn, TRUE);
+               }
+}
+
+static void
+gdaex_grid_on_menu_item_hideall_activate (GtkMenuItem *menuitem,
+                                 gpointer user_data)
+{
+       GdaExGridPrivate *priv;
+
+       guint col;
+       GdaExGridColumn *gcolumn;
+
+       priv = GDAEX_GRID_GET_PRIVATE (user_data);
+
+       for (col = 0; col < priv->columns->len; col++)
+               {
+                       gcolumn = (GdaExGridColumn *)g_ptr_array_index (priv->columns, col);
+                       gdaex_grid_column_set_visible (gcolumn, FALSE);
+               }
+}
+
 static void
 gdaex_grid_on_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
                                  gpointer user_data)
index 3024673621d40447c93a6973cc4423b975334e95..3786d07df16a0b417560e65d0ac151d02338a480 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  gridcolumn.c
  *
- *  Copyright (C) 2010-2017 Andrea Zagli <azagli@libero.it>
+ *  Copyright (C) 2010-2019 Andrea Zagli <azagli@libero.it>
  *
  *  This file is part of libgdaexgrid.
  *
@@ -270,6 +270,14 @@ gdaex_grid_column_set_visible (GdaExGridColumn *column, gboolean visible)
        if (priv->vcolumn != NULL)
                {
                        gtk_tree_view_column_set_visible (priv->vcolumn, priv->visible);
+
+                       /* update the menuitem status */
+                       g_signal_handler_block (g_object_get_data (G_OBJECT (column), "menuitem"),
+                                               GPOINTER_TO_INT (g_object_get_data (G_OBJECT (column), "menuitem_handler_id")));
+                       gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (g_object_get_data (G_OBJECT (column), "menuitem")),
+                                                       priv->visible);
+                       g_signal_handler_unblock (g_object_get_data (G_OBJECT (column), "menuitem"),
+                                                 GPOINTER_TO_INT (g_object_get_data (G_OBJECT (column), "menuitem_handler_id")));
                }
 }