[virt-tools-list] [libosinfo 6/6] Expose Media properties as gobject properties
Zeeshan Ali (Khattak)
zeeshanak at gnome.org
Thu Nov 24 15:19:03 UTC 2011
From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
---
osinfo/osinfo_media.c | 302 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 302 insertions(+), 0 deletions(-)
diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
index ff5b597..7193af4 100644
--- a/osinfo/osinfo_media.c
+++ b/osinfo/osinfo_media.c
@@ -123,6 +123,161 @@ struct _OsinfoMediaPrivate
gboolean unused;
};
+enum {
+ PROP_0,
+
+ PROP_ARCHITECTURE,
+ PROP_URL,
+ PROP_VOLUME_ID,
+ PROP_PUBLISHER_ID,
+ PROP_SYSTEM_ID,
+ PROP_KERNEL_PATH,
+ PROP_INITRD_PATH,
+ PROP_INSTALLER,
+ PROP_LIVE,
+};
+
+static void
+osinfo_media_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ OsinfoMedia *media = OSINFO_MEDIA (object);
+
+ switch (property_id) {
+ case PROP_ARCHITECTURE:
+ g_value_set_string (value,
+ osinfo_media_get_architecture (media));
+ break;
+
+ case PROP_URL:
+ g_value_set_string (value,
+ osinfo_media_get_url (media));
+ break;
+
+ case PROP_VOLUME_ID:
+ g_value_set_string (value,
+ osinfo_media_get_volume_id (media));
+ break;
+
+ case PROP_PUBLISHER_ID:
+ g_value_set_string (value,
+ osinfo_media_get_publisher_id (media));
+ break;
+
+ case PROP_SYSTEM_ID:
+ g_value_set_string (value,
+ osinfo_media_get_system_id (media));
+ break;
+
+ case PROP_KERNEL_PATH:
+ g_value_set_string (value,
+ osinfo_media_get_kernel_path (media));
+ break;
+
+ case PROP_INITRD_PATH:
+ g_value_set_string (value,
+ osinfo_media_get_initrd_path (media));
+ break;
+
+ case PROP_INSTALLER:
+ g_value_set_boolean (value,
+ osinfo_media_get_installer (media));
+ break;
+
+ case PROP_LIVE:
+ g_value_set_boolean (value,
+ osinfo_media_get_live (media));
+ break;
+
+ default:
+ /* We don't have any other property... */
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void set_param_from_boolean (OsinfoMedia *media,
+ const gchar *key,
+ gboolean value)
+{
+ if (value)
+ osinfo_entity_set_param (OSINFO_ENTITY(media), key, "true");
+ else
+ osinfo_entity_set_param (OSINFO_ENTITY(media), key, "false");
+}
+
+
+static void
+osinfo_media_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ OsinfoMedia *media = OSINFO_MEDIA (object);
+
+ switch (property_id) {
+ case PROP_ARCHITECTURE:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_ARCHITECTURE,
+ g_value_get_string (value));
+ break;
+
+ case PROP_URL:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_URL,
+ g_value_get_string (value));
+ break;
+
+ case PROP_VOLUME_ID:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_VOLUME_ID,
+ g_value_get_string (value));
+ break;
+
+ case PROP_PUBLISHER_ID:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_PUBLISHER_ID,
+ g_value_get_string (value));
+ break;
+
+ case PROP_SYSTEM_ID:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_SYSTEM_ID,
+ g_value_get_string (value));
+ break;
+
+ case PROP_KERNEL_PATH:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_KERNEL,
+ g_value_get_string (value));
+ break;
+
+ case PROP_INITRD_PATH:
+ osinfo_entity_set_param (OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_INITRD,
+ g_value_get_string (value));
+ break;
+
+ case PROP_LIVE:
+ set_param_from_boolean (media,
+ OSINFO_MEDIA_PROP_LIVE,
+ g_value_get_boolean (value));
+ break;
+
+ case PROP_INSTALLER:
+ set_param_from_boolean (media,
+ OSINFO_MEDIA_PROP_INSTALLER,
+ g_value_get_boolean (value));
+ break;
+
+ default:
+ /* We don't have any other property... */
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
static void
osinfo_media_finalize (GObject *object)
@@ -136,9 +291,156 @@ static void
osinfo_media_class_init (OsinfoMediaClass *klass)
{
GObjectClass *g_klass = G_OBJECT_CLASS (klass);
+ GParamSpec *pspec;
g_klass->finalize = osinfo_media_finalize;
+ g_klass->get_property = osinfo_media_get_property;
+ g_klass->set_property = osinfo_media_set_property;
g_type_class_add_private (klass, sizeof (OsinfoMediaPrivate));
+
+ /**
+ * OsinfoMedia::architecture:
+ *
+ * The target hardware architecture of this media.
+ */
+ pspec = g_param_spec_string ("architecture",
+ "ARCHITECTURE",
+ "CPU Architecture",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_ARCHITECTURE, pspec);
+
+ /**
+ * OsinfoMedia::url
+ *
+ * The URL to this media.
+ */
+ pspec = g_param_spec_string ("url",
+ "URL",
+ "The URL to this media",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_URL, pspec);
+
+ /**
+ * OsinfoMedia::volume-id
+ *
+ * Expected volume ID (regular expression) for ISO9660 image/device.
+ */
+ pspec = g_param_spec_string ("volume-id",
+ "VolumeID",
+ "Expected ISO9660 volume ID",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_VOLUME_ID, pspec);
+
+ /**
+ * OsinfoMedia::publisher-id
+ *
+ * Expected publisher ID (regular expression) for ISO9660 image/device.
+ */
+ pspec = g_param_spec_string ("publisher-id",
+ "PublisherID",
+ "Expected ISO9660 publisher ID",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_PUBLISHER_ID, pspec);
+
+ /**
+ * OsinfoMedia::system-id
+ *
+ * Expected system ID (regular expression) for ISO9660 image/device.
+ */
+ pspec = g_param_spec_string ("system-id",
+ "SystemID",
+ "Expected ISO9660 system ID",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_SYSTEM_ID, pspec);
+
+ /**
+ * OsinfoMedia::kernel-path
+ *
+ * The path to the kernel image in the install tree.
+ */
+ pspec = g_param_spec_string ("kernel-path",
+ "KernelPath",
+ "The path to the kernel image",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_KERNEL_PATH, pspec);
+
+ /**
+ * OsinfoMedia::initrd-path
+ *
+ * The path to the initrd image in the install tree.
+ */
+ pspec = g_param_spec_string ("initrd-path",
+ "InitrdPath",
+ "The path to the inirtd image",
+ NULL /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_INITRD_PATH, pspec);
+
+ /**
+ * OsinfoMedia::installer
+ *
+ * Whether media provides a installer for an OS.
+ */
+ pspec = g_param_spec_boolean ("installer",
+ "Installer",
+ "Media provides a installer",
+ TRUE /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_INSTALLER, pspec);
+
+ /**
+ * OsinfoMedia::live
+ *
+ * Whether media can boot directly an OS without any installations.
+ */
+ pspec = g_param_spec_boolean ("live",
+ "Live",
+ "Media can boot directly w/o installation",
+ FALSE /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (g_klass, PROP_LIVE, pspec);
}
static void
--
1.7.7.1
More information about the virt-tools-list
mailing list