[gnome-builder/wip/chergert/layout] workbench: add helper to locate addin by module name
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/layout] workbench: add helper to locate addin by module name
- Date: Fri, 14 Jul 2017 22:49:21 +0000 (UTC)
commit dc69d9ad5512b989023b7e250ca129b99daa4cc1
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 14 15:43:29 2017 -0700
workbench: add helper to locate addin by module name
It can be convenient to get at a peer object in your plugin
based on the module name rather than resorting to something
like g_object_set_data().
libide/workbench/ide-workbench-addin.c | 29 +++++++++++++++++++++++++++++
libide/workbench/ide-workbench-addin.h | 3 +++
2 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/libide/workbench/ide-workbench-addin.c b/libide/workbench/ide-workbench-addin.c
index 5704953..246375b 100644
--- a/libide/workbench/ide-workbench-addin.c
+++ b/libide/workbench/ide-workbench-addin.c
@@ -216,3 +216,32 @@ ide_workbench_addin_perspective_set (IdeWorkbenchAddin *self,
IDE_WORKBENCH_ADDIN_GET_IFACE (self)->perspective_set (self, perspective);
}
+
+/**
+ * ide_workbench_addin_find_by_module_name:
+ * @workbench: a #IdeWorkbench
+ * @addin_name: the name of the addin
+ *
+ * This locates a loaded #IdeWorkbenchAddin based on the module name.
+ * If the module is missing or has not been loaded, %NULL is returned.
+ *
+ * Returns: (transfer none) (nullable): An #IdeWorkbenchAddin or %NULL
+ *
+ * Since: 3.26
+ */
+IdeWorkbenchAddin *
+ide_workbench_addin_find_by_module_name (IdeWorkbench *workbench,
+ const gchar *module_name)
+{
+ PeasPluginInfo *plugin_info;
+ PeasExtension *exten = NULL;
+
+ g_return_val_if_fail (IDE_IS_WORKBENCH (workbench), NULL);
+ g_return_val_if_fail (module_name != NULL, NULL);
+
+ plugin_info = peas_engine_get_plugin_info (peas_engine_get_default (), module_name);
+ if (plugin_info != NULL)
+ exten = peas_extension_set_get_extension (workbench->addins, plugin_info);
+
+ return exten ? IDE_WORKBENCH_ADDIN (exten) : NULL;
+}
diff --git a/libide/workbench/ide-workbench-addin.h b/libide/workbench/ide-workbench-addin.h
index 1b01fdc..d71ba9e 100644
--- a/libide/workbench/ide-workbench-addin.h
+++ b/libide/workbench/ide-workbench-addin.h
@@ -56,6 +56,9 @@ struct _IdeWorkbenchAddinInterface
IdePerspective *perspective);
};
+IdeWorkbenchAddin *ide_workbench_addin_find_by_module_name (IdeWorkbench *workbench,
+ const gchar *addin_name);
+
gchar *ide_workbench_addin_get_id (IdeWorkbenchAddin *self);
void ide_workbench_addin_load (IdeWorkbenchAddin *self,
IdeWorkbench *workbench);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]