[gnome-builder] libide: add extension point for device providers



commit 6ebef49f82aa72a022616eab147723b8ab5a8892
Author: Christian Hergert <christian hergert me>
Date:   Thu Apr 23 15:45:04 2015 -0700

    libide: add extension point for device providers

 libide/ide-device-manager.c |   36 ++++++++++++++++++++++++++++++++++++
 libide/ide.c                |    2 ++
 2 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-device-manager.c b/libide/ide-device-manager.c
index 972300c..ec081be 100644
--- a/libide/ide-device-manager.c
+++ b/libide/ide-device-manager.c
@@ -173,6 +173,41 @@ ide_device_manager_add_provider (IdeDeviceManager  *self,
     }
 }
 
+static void
+ide_device_manager_add_providers (IdeDeviceManager *self)
+{
+  GIOExtensionPoint *extension_point;
+  IdeContext *context;
+  GList *extensions;
+  GList *iter;
+
+  g_assert (IDE_IS_DEVICE_MANAGER (self));
+
+  context = ide_object_get_context (IDE_OBJECT (self));
+
+  extension_point = g_io_extension_point_lookup (IDE_DEVICE_PROVIDER_EXTENSION_POINT);
+  extensions = g_io_extension_point_get_extensions (extension_point);
+
+  for (iter = extensions; iter; iter = iter->next)
+    {
+      GIOExtension *extension = iter->data;
+      g_autoptr(IdeDeviceProvider) provider = NULL;
+      GType type;
+
+      type = g_io_extension_get_type (extension);
+
+      if (!g_type_is_a (type, IDE_TYPE_DEVICE_PROVIDER))
+        {
+          g_warning (_("%s is not an IdeDeviceProvider."),
+                     g_type_name (type));
+          continue;
+        }
+
+      provider = g_object_new (type, "context", context, NULL);
+      ide_device_manager_add_provider (self, provider);
+    }
+}
+
 /**
  * ide_device_manager_get_devices:
  *
@@ -234,6 +269,7 @@ ide_device_manager_constructed (GObject *object)
   G_OBJECT_CLASS (ide_device_manager_parent_class)->constructed (object);
 
   ide_device_manager_add_local (self);
+  ide_device_manager_add_providers (self);
 }
 
 static void
diff --git a/libide/ide.c b/libide/ide.c
index ee23227..8885491 100644
--- a/libide/ide.c
+++ b/libide/ide.c
@@ -28,6 +28,7 @@
 #include "ide-c-language.h"
 #include "ide-clang-service.h"
 #include "ide-devhelp-search-provider.h"
+#include "ide-device-provider.h"
 #include "ide-directory-build-system.h"
 #include "ide-directory-vcs.h"
 #include "ide-editorconfig-file-settings.h"
@@ -89,6 +90,7 @@ ide_init_ctor (void)
   g_type_ensure (IDE_TYPE_VCS);
 
   g_io_extension_point_register (IDE_BUILD_SYSTEM_EXTENSION_POINT);
+  g_io_extension_point_register (IDE_DEVICE_PROVIDER_EXTENSION_POINT);
   g_io_extension_point_register (IDE_FILE_SETTINGS_EXTENSION_POINT);
   g_io_extension_point_register (IDE_LANGUAGE_EXTENSION_POINT);
   g_io_extension_point_register (IDE_PROJECT_MINER_EXTENSION_POINT);


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