[gnome-builder] device: add IdeDevice:icon-name gproperty
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] device: add IdeDevice:icon-name gproperty
- Date: Fri, 23 Feb 2018 23:40:05 +0000 (UTC)
commit 9ea3ef386ba160367c253e4b7728175498ebd1ba
Author: Christian Hergert <chergert redhat com>
Date: Fri Feb 23 14:09:02 2018 -0800
device: add IdeDevice:icon-name gproperty
src/libide/devices/ide-device.c | 77 +++++++++++++++++++++++++++++++++++++++--
src/libide/devices/ide-device.h | 7 ++++
2 files changed, 81 insertions(+), 3 deletions(-)
---
diff --git a/src/libide/devices/ide-device.c b/src/libide/devices/ide-device.c
index d1ade5bb8..ff4e1b661 100644
--- a/src/libide/devices/ide-device.c
+++ b/src/libide/devices/ide-device.c
@@ -26,6 +26,7 @@
typedef struct
{
gchar *display_name;
+ gchar *icon_name;
gchar *id;
} IdeDevicePrivate;
@@ -34,12 +35,13 @@ G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (IdeDevice, ide_device, IDE_TYPE_OBJECT)
enum {
PROP_0,
PROP_DISPLAY_NAME,
+ PROP_ICON_NAME,
PROP_ID,
PROP_SYSTEM_TYPE,
- LAST_PROP
+ N_PROPS
};
-static GParamSpec *properties [LAST_PROP];
+static GParamSpec *properties [N_PROPS];
/**
* ide_device_get_display_name:
@@ -79,6 +81,52 @@ ide_device_set_display_name (IdeDevice *device,
}
}
+/**
+ * ide_device_get_icon_name:
+ * @self: a #IdeDevice
+ *
+ * Gets the icon to use when displaying the device in UI elements.
+ *
+ * Returns: (nullable): an icon-name or %NULL
+ *
+ * Since: 3.28
+ */
+const gchar *
+ide_device_get_icon_name (IdeDevice *self)
+{
+ IdeDevicePrivate *priv = ide_device_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_DEVICE (self), NULL);
+
+ return priv->icon_name;
+}
+
+/**
+ * ide_device_set_icon_name:
+ * @self: a #IdeDevice
+ *
+ * Sets the icon-name property.
+ *
+ * This is the icon that is displayed with the device name in UI elements.
+ *
+ * Since: 3.28
+ */
+void
+ide_device_set_icon_name (IdeDevice *self,
+ const gchar *icon_name)
+{
+ IdeDevicePrivate *priv = ide_device_get_instance_private (self);
+
+ g_return_if_fail (IDE_IS_DEVICE (self));
+
+ if (g_strcmp0 (icon_name, priv->icon_name) != 0)
+ {
+ g_free (priv->icon_name);
+ priv->icon_name = g_strdup (icon_name);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ICON_NAME]);
+ }
+}
+
/**
* ide_device_get_id:
*
@@ -166,6 +214,10 @@ ide_device_get_property (GObject *object,
g_value_set_string (value, ide_device_get_display_name (self));
break;
+ case PROP_ICON_NAME:
+ g_value_set_string (value, ide_device_get_icon_name (self));
+ break;
+
case PROP_ID:
g_value_set_string (value, ide_device_get_id (self));
break;
@@ -193,6 +245,10 @@ ide_device_set_property (GObject *object,
ide_device_set_display_name (self, g_value_get_string (value));
break;
+ case PROP_ICON_NAME:
+ ide_device_set_icon_name (self, g_value_get_string (value));
+ break;
+
case PROP_ID:
ide_device_set_id (self, g_value_get_string (value));
break;
@@ -218,6 +274,21 @@ ide_device_class_init (IdeDeviceClass *klass)
NULL,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * IdeDevice:icon-name:
+ *
+ * The "icon-name" property is the icon to display with the device in
+ * various UI elements of Builder.
+ *
+ * Since: 3.28
+ */
+ properties [PROP_ICON_NAME] =
+ g_param_spec_string ("icon-name",
+ "Icon Name",
+ "Icon Name",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
properties [PROP_ID] =
g_param_spec_string ("id",
"ID",
@@ -232,7 +303,7 @@ ide_device_class_init (IdeDeviceClass *klass)
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_properties (object_class, LAST_PROP, properties);
+ g_object_class_install_properties (object_class, N_PROPS, properties);
}
static void
diff --git a/src/libide/devices/ide-device.h b/src/libide/devices/ide-device.h
index 85b6b88fa..818e898e9 100644
--- a/src/libide/devices/ide-device.h
+++ b/src/libide/devices/ide-device.h
@@ -42,6 +42,8 @@ struct _IdeDeviceClass
const gchar *(*get_system_type) (IdeDevice *self);
void (*prepare_configuration) (IdeDevice *self,
IdeConfiguration *configuration);
+
+ gpointer _reserved[32];
};
IDE_AVAILABLE_IN_ALL
@@ -52,6 +54,11 @@ IDE_AVAILABLE_IN_ALL
void ide_device_set_display_name (IdeDevice *self,
const gchar *display_name);
IDE_AVAILABLE_IN_ALL
+const gchar *ide_device_get_icon_name (IdeDevice *self);
+IDE_AVAILABLE_IN_ALL
+void ide_device_set_icon_name (IdeDevice *self,
+ const gchar *icon_name);
+IDE_AVAILABLE_IN_ALL
const gchar *ide_device_get_id (IdeDevice *self);
IDE_AVAILABLE_IN_ALL
void ide_device_set_id (IdeDevice *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]