[gnome-builder] libide: add extension point for device providers
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide: add extension point for device providers
- Date: Thu, 23 Apr 2015 22:45:12 +0000 (UTC)
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]