[gtk/columnview-sorter-api: 1/5] columnviewcolumn: Add an ID




commit 3e2b962a365fb35fdfff4651615208ded3e9bf17
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Oct 20 09:50:14 2022 -0400

    columnviewcolumn: Add an ID
    
    This string can be used when storing columnview
    configuration.

 gtk/gtkcolumnviewcolumn.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkcolumnviewcolumn.h |  6 ++++
 2 files changed, 82 insertions(+)
---
diff --git a/gtk/gtkcolumnviewcolumn.c b/gtk/gtkcolumnviewcolumn.c
index 244692fca0..9ff589e5d8 100644
--- a/gtk/gtkcolumnviewcolumn.c
+++ b/gtk/gtkcolumnviewcolumn.c
@@ -56,6 +56,7 @@ struct _GtkColumnViewColumn
 
   GtkListItemFactory *factory;
   char *title;
+  char *id;
   GtkSorter *sorter;
 
   /* data for the view */
@@ -97,6 +98,7 @@ enum
   PROP_RESIZABLE,
   PROP_EXPAND,
   PROP_FIXED_WIDTH,
+  PROP_ID,
 
   N_PROPS
 };
@@ -167,6 +169,10 @@ gtk_column_view_column_get_property (GObject    *object,
       g_value_set_int (value, self->fixed_width);
       break;
 
+    case PROP_ID:
+      g_value_set_string (value, self->id);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -215,6 +221,10 @@ gtk_column_view_column_set_property (GObject      *object,
       gtk_column_view_column_set_fixed_width (self, g_value_get_int (value));
       break;
 
+    case PROP_ID:
+      gtk_column_view_column_set_id (self, g_value_get_string (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -321,6 +331,24 @@ gtk_column_view_column_class_init (GtkColumnViewColumnClass *klass)
                       -1, G_MAXINT, -1,
                       G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
 
+  /**
+   * GtkColumnViewColumn:id: (attributes org.gtk.Property.get=gtk_column_view_column_get_id 
org.gtk.Property.set=gtk_column_view_column_set_id)
+   *
+   * An ID for the column.
+   *
+   * GTK is not currently using the ID for anything, but
+   * it can be used by applications when saving column view
+   * configurations.
+   *
+   * It is up to applications to ensure uniqueness of IDs.
+   *
+   * Since: 4.10
+   */
+  properties[PROP_ID] =
+    g_param_spec_string ("id", NULL, NULL,
+                          NULL,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
   g_object_class_install_properties (gobject_class, N_PROPS, properties);
 }
 
@@ -1004,3 +1032,51 @@ gtk_column_view_column_get_header_allocation (GtkColumnViewColumn *self,
   if (size)
     *size = self->allocation_size;
 }
+
+/**
+ * gtk_column_view_column_set_id: (attributes org.gtk.Method.set_property=id)
+ * @self: a `GtkColumnViewColumn`
+ * @id: (nullable): ID to use for this column
+ *
+ * Sets the id of this column.
+ *
+ * GTK makes no use of this, but applications can use it when
+ * storing column view configuration.
+ *
+ * It is up to callers to ensure uniqueness of IDs.
+ *
+ * Since: 4.10
+ */
+void
+gtk_column_view_column_set_id (GtkColumnViewColumn *self,
+                               const char          *id)
+{
+  g_return_if_fail (GTK_IS_COLUMN_VIEW_COLUMN (self));
+
+  if (g_strcmp0 (self->id, id) == 0)
+    return;
+
+  g_free (self->id);
+  self->id = g_strdup (id);
+
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ID]);
+}
+
+/**
+ * gtk_column_view_column_get_id: (attributes org.gtk.Method.get_property=id)
+ * @self: a `GtkColumnViewColumn`
+ *
+ * Returns the ID set with gtk_column_view_column_set_id().
+ *
+ * Returns: (nullable): The column's ID
+ *
+ * Since: 4.10
+ */
+const char *
+gtk_column_view_column_get_id (GtkColumnViewColumn *self)
+{
+  g_return_val_if_fail (GTK_IS_COLUMN_VIEW_COLUMN (self), NULL);
+
+  return self->id;
+}
+
diff --git a/gtk/gtkcolumnviewcolumn.h b/gtk/gtkcolumnviewcolumn.h
index 1d075c634d..1af7097711 100644
--- a/gtk/gtkcolumnviewcolumn.h
+++ b/gtk/gtkcolumnviewcolumn.h
@@ -97,6 +97,12 @@ void                    gtk_column_view_column_set_expand               (GtkColu
 GDK_AVAILABLE_IN_ALL
 gboolean                gtk_column_view_column_get_expand               (GtkColumnViewColumn    *self);
 
+GDK_AVAILABLE_IN_4_10
+void                    gtk_column_view_column_set_id                   (GtkColumnViewColumn    *self,
+                                                                         const char             *id);
+GDK_AVAILABLE_IN_4_10
+const char *            gtk_column_view_column_get_id                   (GtkColumnViewColumn    *self);
+
 G_END_DECLS
 
 #endif  /* __GTK_COLUMN_VIEW_COLUMN_H__ */


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