static void peas_extension_set_constructed (GObject *object) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); GList *plugins, *l; if (set->priv->engine == NULL) set->priv->engine = peas_engine_get_default (); g_object_ref (set->priv->engine); plugins = (GList *) peas_engine_get_plugin_list (set->priv->engine); for (l = plugins; l; l = l->next) add_extension (set, (PeasPluginInfo *) l->data); set->priv->load_handler_id = g_signal_connect_data (set->priv->engine, "load-plugin", G_CALLBACK (add_extension), set, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED); set->priv->unload_handler_id = g_signal_connect_data (set->priv->engine, "unload-plugin", G_CALLBACK (remove_extension), set, NULL, G_CONNECT_SWAPPED); G_OBJECT_CLASS (peas_extension_set_parent_class)->constructed (object); }
/** * peas_extension_set_newv: * @engine: (allow-none): A #PeasEngine, or %NULL. * @exten_type: the extension #GType. * @n_parameters: the length of the @parameters array. * @parameters: (array length=n_parameters): an array of #GParameter. * * Create a new #PeasExtensionSet for the @exten_type extension type. * * If @engine is %NULL, then the default engine will be used. * * See peas_extension_set_new() for more information. * * Returns: (transfer full): a new instance of #PeasExtensionSet. * * Rename to: peas_extension_set_new */ PeasExtensionSet * peas_extension_set_newv (PeasEngine *engine, GType exten_type, guint n_parameters, GParameter *parameters) { PeasParameterArray construct_properties = { n_parameters, parameters }; g_return_val_if_fail (engine == NULL || PEAS_IS_ENGINE (engine), NULL); g_return_val_if_fail (G_TYPE_IS_INTERFACE (exten_type), NULL); return PEAS_EXTENSION_SET (g_object_new (PEAS_TYPE_EXTENSION_SET, "engine", engine, "extension-type", exten_type, "construct-properties", &construct_properties, NULL)); }
static void peas_extension_set_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); switch (prop_id) { case PROP_ENGINE: g_value_set_object (value, set->priv->engine); break; case PROP_EXTENSION_TYPE: g_value_set_gtype (value, set->priv->exten_type); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } }
static void peas_extension_set_dispose (GObject *object) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); GList *l; if (set->priv->load_handler_id != 0) { g_signal_handler_disconnect (set->priv->engine, set->priv->load_handler_id); set->priv->load_handler_id = 0; } if (set->priv->unload_handler_id != 0) { g_signal_handler_disconnect (set->priv->engine, set->priv->unload_handler_id); set->priv->unload_handler_id = 0; } for (l = set->priv->extensions; l;) { remove_extension_item (set, (ExtensionItem *) l->data); l = g_list_delete_link (l, l); } if (set->priv->parameters != NULL) { while (set->priv->n_parameters-- > 0) g_value_unset (&set->priv->parameters[set->priv->n_parameters].value); g_free (set->priv->parameters); set->priv->parameters = NULL; } if (set->priv->engine != NULL) { g_object_unref (set->priv->engine); set->priv->engine = NULL; } }
static void peas_extension_set_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); switch (prop_id) { case PROP_ENGINE: set->priv->engine = g_value_get_object (value); break; case PROP_EXTENSION_TYPE: set->priv->exten_type = g_value_get_gtype (value); break; case PROP_CONSTRUCT_PROPERTIES: set_construct_properties (set, g_value_get_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } }