static gboolean model_has_builtin (TestFixture *fixture) { GtkTreeIter iter; gboolean found = FALSE; if (gtk_tree_model_get_iter_first (fixture->model, &iter)) { do { if (peas_plugin_info_is_builtin (testing_get_plugin_info_for_iter (fixture->view, &iter))) found = TRUE; } while (!found && gtk_tree_model_iter_next (fixture->model, &iter)); } return found; }
static void ide_preferences_builtin_register_plugins (IdePreferences *preferences) { PeasEngine *engine; const GList *list; guint i = 0; g_assert (IDE_IS_PREFERENCES (preferences)); engine = peas_engine_get_default (); list = peas_engine_get_plugin_list (engine); ide_preferences_add_page (preferences, "plugins", _("Extensions"), 700); ide_preferences_add_list_group (preferences, "plugins", "installed", _("Installed Extensions"), 0); ide_preferences_add_list_group (preferences, "plugins", "builtin", _("Bundled Extensions"), 100); for (; list; list = list->next, i++) { g_autofree gchar *path = NULL; PeasPluginInfo *plugin_info = list->data; const gchar *desc; const gchar *name; const gchar *group; if (peas_plugin_info_is_hidden (plugin_info)) continue; name = peas_plugin_info_get_name (plugin_info); desc = peas_plugin_info_get_description (plugin_info); path = g_strdup_printf ("/org/gnome/builder/plugins/%s/", peas_plugin_info_get_module_name (plugin_info)); if (peas_plugin_info_is_builtin (plugin_info)) group = "builtin"; else group = "installed"; ide_preferences_add_switch (preferences, "plugins", group, "org.gnome.builder.plugin", "enabled", path, NULL, name, desc, NULL, i); } }
void gb_plugins_init (void) { PeasEngine *engine; const GList *list; /* * Ensure plugin-extensible types are registered. * This allows libgnome-builder.la to be linked and not drop * important symbols. */ g_type_ensure (GB_TYPE_APPLICATION); g_type_ensure (GB_TYPE_DOCUMENT); g_type_ensure (GB_TYPE_TREE); g_type_ensure (GB_TYPE_TREE_BUILDER); g_type_ensure (GB_TYPE_TREE_NODE); g_type_ensure (GB_TYPE_VIEW); g_type_ensure (GB_TYPE_VIEW_GRID); g_type_ensure (GB_TYPE_WORKBENCH); g_type_ensure (GB_TYPE_WORKSPACE); engine = peas_engine_get_default (); peas_engine_enable_loader (engine, "python3"); if (g_getenv ("GB_IN_TREE_PLUGINS") != NULL) { GDir *dir; g_irepository_require_private (g_irepository_get_default (), BUILDDIR"/libide", "Ide", "1.0", 0, NULL); if ((dir = g_dir_open (BUILDDIR"/plugins", 0, NULL))) { const gchar *name; while ((name = g_dir_read_name (dir))) { gchar *path; path = g_build_filename (BUILDDIR, "plugins", name, NULL); peas_engine_prepend_search_path (engine, path, path); g_free (path); } g_dir_close (dir); } } else { peas_engine_prepend_search_path (engine, PACKAGE_LIBDIR"/gnome-builder/plugins", PACKAGE_DATADIR"/gnome-builder/plugins"); } list = peas_engine_get_plugin_list (engine); for (; list; list = list->next) { if (peas_plugin_info_is_builtin (list->data)) peas_engine_load_plugin (engine, list->data); } }