[gnome-builder/wip/chergert/pipeline-merge] configuration: add device and runtime object hooks
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/pipeline-merge] configuration: add device and runtime object hooks
- Date: Fri, 10 Feb 2017 03:50:32 +0000 (UTC)
commit f2d2a6adffc787c1da03d2eb5b887e9e6deb930c
Author: Christian Hergert <chergert redhat com>
Date: Thu Feb 9 18:34:29 2017 -0800
configuration: add device and runtime object hooks
These give us the possibility to extend them from the configuration
standpoint which may be necessary in the future for certain configurations.
libide/buildsystem/ide-configuration.c | 118 +++++++++++++++++++++++---------
libide/buildsystem/ide-configuration.h | 8 ++
2 files changed, 94 insertions(+), 32 deletions(-)
---
diff --git a/libide/buildsystem/ide-configuration.c b/libide/buildsystem/ide-configuration.c
index c17cdbf..2fecd86 100644
--- a/libide/buildsystem/ide-configuration.c
+++ b/libide/buildsystem/ide-configuration.c
@@ -136,6 +136,46 @@ ide_configuration_emit_changed (IdeConfiguration *self)
g_signal_emit (self, signals [CHANGED], 0);
}
+static IdeDevice *
+ide_configuration_real_get_device (IdeConfiguration *self)
+{
+ IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_CONFIGURATION (self), NULL);
+
+ if (priv->device_id != NULL)
+ {
+ IdeContext *context = ide_object_get_context (IDE_OBJECT (self));
+ IdeDeviceManager *device_manager = ide_context_get_device_manager (context);
+ IdeDevice *device = ide_device_manager_get_device (device_manager, priv->device_id);
+
+ if (device != NULL)
+ return g_object_ref (device);
+ }
+
+ return NULL;
+}
+
+static IdeRuntime *
+ide_configuration_real_get_runtime (IdeConfiguration *self)
+{
+ IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_CONFIGURATION (self), NULL);
+
+ if (priv->runtime_id != NULL)
+ {
+ IdeContext *context = ide_object_get_context (IDE_OBJECT (self));
+ IdeRuntimeManager *runtime_manager = ide_context_get_runtime_manager (context);
+ IdeRuntime *runtime = ide_runtime_manager_get_runtime (runtime_manager, priv->runtime_id);
+
+ if (runtime != NULL)
+ return g_object_ref (runtime);
+ }
+
+ return NULL;
+}
+
static void
ide_configuration_set_id (IdeConfiguration *self,
const gchar *id)
@@ -217,11 +257,42 @@ ide_configuration_environment_changed (IdeConfiguration *self,
g_assert (IDE_IS_ENVIRONMENT (environment));
ide_configuration_set_dirty (self, TRUE);
+ ide_configuration_emit_changed (self);
IDE_EXIT;
}
static void
+ide_configuration_real_set_device (IdeConfiguration *self,
+ IdeDevice *device)
+{
+ const gchar *device_id = "local";
+
+ g_assert (IDE_IS_CONFIGURATION (self));
+ g_assert (!device || IDE_IS_DEVICE (device));
+
+ if (device != NULL)
+ device_id = ide_device_get_id (device);
+
+ ide_configuration_set_device_id (self, device_id);
+}
+
+static void
+ide_configuration_real_set_runtime (IdeConfiguration *self,
+ IdeRuntime *runtime)
+{
+ const gchar *runtime_id = "host";
+
+ g_assert (IDE_IS_CONFIGURATION (self));
+ g_assert (!runtime || IDE_IS_RUNTIME (runtime));
+
+ if (runtime != NULL)
+ runtime_id = ide_runtime_get_id (runtime);
+
+ ide_configuration_set_runtime_id (self, runtime_id);
+}
+
+static void
ide_configuration_constructed (GObject *object)
{
IdeConfiguration *self = (IdeConfiguration *)object;
@@ -414,6 +485,11 @@ ide_configuration_class_init (IdeConfigurationClass *klass)
object_class->get_property = ide_configuration_get_property;
object_class->set_property = ide_configuration_set_property;
+ klass->get_device = ide_configuration_real_get_device;
+ klass->set_device = ide_configuration_real_set_device;
+ klass->get_runtime = ide_configuration_real_get_runtime;
+ klass->set_runtime = ide_configuration_real_set_runtime;
+
properties [PROP_CONFIG_OPTS] =
g_param_spec_string ("config-opts",
"Config Options",
@@ -589,14 +665,15 @@ ide_configuration_set_device_id (IdeConfiguration *self,
g_free (priv->device_id);
priv->device_id = g_strdup (device_id);
- ide_configuration_set_dirty (self, TRUE);
-
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_DEVICE_ID]);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_DEVICE]);
context = ide_object_get_context (IDE_OBJECT (self));
device_manager = ide_context_get_device_manager (context);
ide_configuration_device_manager_items_changed (self, 0, 0, 0, device_manager);
+
+ ide_configuration_set_dirty (self, TRUE);
+ ide_configuration_emit_changed (self);
}
}
@@ -611,31 +688,19 @@ ide_configuration_set_device_id (IdeConfiguration *self,
IdeDevice *
ide_configuration_get_device (IdeConfiguration *self)
{
- IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
- IdeDeviceManager *device_manager;
- IdeContext *context;
-
g_return_val_if_fail (IDE_IS_CONFIGURATION (self), NULL);
- context = ide_object_get_context (IDE_OBJECT (self));
- device_manager = ide_context_get_device_manager (context);
-
- return ide_device_manager_get_device (device_manager, priv->device_id);
+ return IDE_CONFIGURATION_GET_CLASS (self)->get_device (self);
}
void
ide_configuration_set_device (IdeConfiguration *self,
IdeDevice *device)
{
- const gchar *device_id = "local";
-
g_return_if_fail (IDE_IS_CONFIGURATION (self));
g_return_if_fail (!device || IDE_IS_DEVICE (device));
- if (device != NULL)
- device_id = ide_device_get_id (device);
-
- ide_configuration_set_device_id (self, device_id);
+ IDE_CONFIGURATION_GET_CLASS (self)->set_device (self, device);
}
/**
@@ -697,14 +762,15 @@ ide_configuration_set_runtime_id (IdeConfiguration *self,
g_free (priv->runtime_id);
priv->runtime_id = g_strdup (runtime_id);
- ide_configuration_set_dirty (self, TRUE);
-
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_RUNTIME_ID]);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_RUNTIME]);
context = ide_object_get_context (IDE_OBJECT (self));
runtime_manager = ide_context_get_runtime_manager (context);
ide_configuration_runtime_manager_items_changed (self, 0, 0, 0, runtime_manager);
+
+ ide_configuration_set_dirty (self, TRUE);
+ ide_configuration_emit_changed (self);
}
}
@@ -719,31 +785,19 @@ ide_configuration_set_runtime_id (IdeConfiguration *self,
IdeRuntime *
ide_configuration_get_runtime (IdeConfiguration *self)
{
- IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
- IdeRuntimeManager *runtime_manager;
- IdeContext *context;
-
g_return_val_if_fail (IDE_IS_CONFIGURATION (self), NULL);
- context = ide_object_get_context (IDE_OBJECT (self));
- runtime_manager = ide_context_get_runtime_manager (context);
-
- return ide_runtime_manager_get_runtime (runtime_manager, priv->runtime_id);
+ return IDE_CONFIGURATION_GET_CLASS (self)->get_runtime (self);
}
void
ide_configuration_set_runtime (IdeConfiguration *self,
IdeRuntime *runtime)
{
- const gchar *runtime_id = "host";
-
g_return_if_fail (IDE_IS_CONFIGURATION (self));
g_return_if_fail (!runtime || IDE_IS_RUNTIME (runtime));
- if (runtime != NULL)
- runtime_id = ide_runtime_get_id (runtime);
-
- ide_configuration_set_runtime_id (self, runtime_id);
+ IDE_CONFIGURATION_GET_CLASS (self)->set_runtime (self, runtime);
}
/**
diff --git a/libide/buildsystem/ide-configuration.h b/libide/buildsystem/ide-configuration.h
index f744684..dda3c4d 100644
--- a/libide/buildsystem/ide-configuration.h
+++ b/libide/buildsystem/ide-configuration.h
@@ -34,6 +34,14 @@ struct _IdeConfigurationClass
{
IdeObjectClass parent;
+ IdeDevice *(*get_device) (IdeConfiguration *self);
+ void (*set_device) (IdeConfiguration *self,
+ IdeDevice *device);
+
+ IdeRuntime *(*get_runtime) (IdeConfiguration *self);
+ void (*set_runtime) (IdeConfiguration *self,
+ IdeRuntime *runtime);
+
gboolean (*supports_device) (IdeConfiguration *self,
IdeDevice *device);
gboolean (*supports_runtime) (IdeConfiguration *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]