[libpanel] widget: add id property to PanelWidget



commit 2291d903d36bab24e2b91fc5c110ab9b2dd4de8f
Author: Christian Hergert <chergert redhat com>
Date:   Fri Sep 16 20:17:36 2022 -0700

    widget: add id property to PanelWidget
    
    So we can use this to track state across application runs.

 src/panel-widget.c | 40 ++++++++++++++++++++++++++++++++++++++++
 src/panel-widget.h |  5 +++++
 2 files changed, 45 insertions(+)
---
diff --git a/src/panel-widget.c b/src/panel-widget.c
index ed78e4f..33232cd 100644
--- a/src/panel-widget.c
+++ b/src/panel-widget.c
@@ -51,6 +51,7 @@
 #include "panel-position.h"
 #include "panel-save-delegate.h"
 #include "panel-widget-private.h"
+#include "panel-macros.h"
 
 typedef struct
 {
@@ -59,6 +60,7 @@ typedef struct
   char              *title;
   char              *icon_name;
   GIcon             *icon;
+  char              *id;
   GMenuModel        *menu_model;
   PanelSaveDelegate *save_delegate;
   PanelActionMuxer  *action_muxer;
@@ -94,6 +96,7 @@ enum {
   PROP_CHILD,
   PROP_ICON,
   PROP_ICON_NAME,
+  PROP_ID,
   PROP_MENU_MODEL,
   PROP_MODIFIED,
   PROP_NEEDS_ATTENTION,
@@ -377,6 +380,10 @@ panel_widget_get_property (GObject    *object,
       g_value_set_string (value, panel_widget_get_icon_name (self));
       break;
 
+    case PROP_ID:
+      g_value_set_string (value, panel_widget_get_id (self));
+      break;
+
     case PROP_MENU_MODEL:
       g_value_set_object (value, panel_widget_get_menu_model (self));
       break;
@@ -436,6 +443,10 @@ panel_widget_set_property (GObject      *object,
       panel_widget_set_icon_name (self, g_value_get_string (value));
       break;
 
+    case PROP_ID:
+      panel_widget_set_id (self, g_value_get_string (value));
+      break;
+
     case PROP_MENU_MODEL:
       panel_widget_set_menu_model (self, g_value_get_object (value));
       break;
@@ -525,6 +536,13 @@ panel_widget_class_init (PanelWidgetClass *klass)
                          NULL,
                          (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
 
+  properties [PROP_ID] =
+    g_param_spec_string ("id",
+                         "Identifier",
+                         "The identifier for the widget which can be used for saving state",
+                         NULL,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
   properties [PROP_KIND] =
     g_param_spec_string ("kind",
                          "Kind",
@@ -765,6 +783,28 @@ panel_widget_set_icon (PanelWidget *self,
     }
 }
 
+const char *
+panel_widget_get_id (PanelWidget *self)
+{
+  PanelWidgetPrivate *priv = panel_widget_get_instance_private (self);
+
+  g_return_val_if_fail (PANEL_IS_WIDGET (self), NULL);
+
+  return priv->id;
+}
+
+void
+panel_widget_set_id (PanelWidget *self,
+                     const char  *id)
+{
+  PanelWidgetPrivate *priv = panel_widget_get_instance_private (self);
+
+  g_return_if_fail (PANEL_IS_WIDGET (self));
+
+  if (panel_set_string (&priv->id, id))
+    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ID]);
+}
+
 gboolean
 panel_widget_get_modified (PanelWidget *self)
 {
diff --git a/src/panel-widget.h b/src/panel-widget.h
index 7f931a4..bd16564 100644
--- a/src/panel-widget.h
+++ b/src/panel-widget.h
@@ -50,6 +50,11 @@ struct _PanelWidgetClass
 PANEL_AVAILABLE_IN_ALL
 GtkWidget         *panel_widget_new                           (void);
 PANEL_AVAILABLE_IN_ALL
+const char        *panel_widget_get_id                        (PanelWidget                 *self);
+PANEL_AVAILABLE_IN_ALL
+void               panel_widget_set_id                        (PanelWidget                 *self,
+                                                               const char                  *id);
+PANEL_AVAILABLE_IN_ALL
 GtkWidget         *panel_widget_get_child                     (PanelWidget                 *self);
 PANEL_AVAILABLE_IN_ALL
 void               panel_widget_set_child                     (PanelWidget                 *self,


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