[gtk/columnview-menu: 20/20] wip: Add a header menu to settings demo



commit d6eefeb26b7546ac6c8519a76987890865b8062b
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun May 31 14:44:42 2020 -0400

    wip: Add a header menu to settings demo
    
    This doesn't quite work yet.

 demos/gtk-demo/listview_settings.c  | 21 +++++++++++++++++++++
 demos/gtk-demo/listview_settings.ui | 13 +++++++++++++
 2 files changed, 34 insertions(+)
---
diff --git a/demos/gtk-demo/listview_settings.c b/demos/gtk-demo/listview_settings.c
index 944b764dd6..cbc51f2d9b 100644
--- a/demos/gtk-demo/listview_settings.c
+++ b/demos/gtk-demo/listview_settings.c
@@ -267,6 +267,16 @@ stop_search (GtkSearchEntry *entry,
 
 static GtkWidget *window = NULL;
 
+static void
+toggle_ellipsize_name (GSimpleAction *action,
+                       GVariant      *value,
+                       gpointer       user_data)
+{
+  GtkColumnView *cv = user_data;
+
+  g_simple_action_set_state (action, value);
+}
+
 GtkWidget *
 do_listview_settings (GtkWidget *do_widget)
 {
@@ -280,6 +290,10 @@ do_listview_settings (GtkWidget *do_widget)
       GtkBuilder *builder;
       GtkColumnViewColumn *name_column;
       GtkSorter *sorter;
+      GActionGroup *actions;
+      const GActionEntry entries[] = {
+        { "ellipsize-name", NULL, NULL, "false", toggle_ellipsize_name }
+      };
 
       g_type_ensure (SETTINGS_TYPE_KEY);
 
@@ -299,6 +313,13 @@ do_listview_settings (GtkWidget *do_widget)
 
       listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview"));
       columnview = GTK_WIDGET (gtk_builder_get_object (builder, "columnview"));
+
+      actions = G_ACTION_GROUP (g_simple_action_group_new ());
+      g_action_map_add_action_entries (G_ACTION_MAP (actions),
+                                       entries, G_N_ELEMENTS (entries), columnview);
+      gtk_widget_insert_action_group (columnview, "columnview", actions);
+      g_object_unref (actions);
+
       model = create_settings_model (NULL, NULL);
       treemodel = gtk_tree_list_model_new (FALSE,
                                            model,
diff --git a/demos/gtk-demo/listview_settings.ui b/demos/gtk-demo/listview_settings.ui
index 8bf12cf496..1d9c2874f2 100644
--- a/demos/gtk-demo/listview_settings.ui
+++ b/demos/gtk-demo/listview_settings.ui
@@ -77,6 +77,7 @@
                     <child>
                       <object class="GtkColumnViewColumn" id="name_column">
                         <property name="title">Name</property>
+                        <property name="header-menu">name_menu</property>
                         <property name="factory">
                           <object class="GtkBuilderListItemFactory">
                             <property name="bytes"><![CDATA[
@@ -135,4 +136,16 @@
       </object>
     </child>
   </object>
+  <menu id="name_menu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">Ellipsize</attribute>
+        <attribute name="action">columnview.ellipsize-name</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Close</attribute>
+        <attribute name="action">window.close</attribute>
+      </item>
+    </section>
+  </menu>
 </interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]