Exemplo n.º 1
0
static void
plugin_action_cb (GtkAction    *action,
		  GigglePlugin *plugin)
{
	char                        *callback_name;
	GigglePluginCallback         callback;
	const GSignalInvocationHint *hint;

	hint = g_signal_get_invocation_hint (action);
	g_signal_handlers_disconnect_by_func (action, plugin_action_cb, plugin);

	callback_name = plugin_get_callback_name (gtk_action_get_name (action),
						  g_signal_name (hint->signal_id));

	callback = plugin_lookup_symbol (plugin, callback_name);

	if (callback) {
		g_signal_connect (action, g_signal_name (hint->signal_id),
				  G_CALLBACK (callback), plugin);

		callback (action, plugin);
	}

	g_free (callback_name);
}
Exemplo n.º 2
0
static void
plugin_action_cb (GtkAction    *action,
		  GigglePlugin *plugin)
{
	char                        *callback_name;
	GigglePluginCallback         callback;
	const GSignalInvocationHint *hint;

	g_signal_handlers_disconnect_by_func (action, plugin_action_cb, plugin);
	hint = g_signal_get_invocation_hint (action);

	callback_name = plugin_get_callback_name (gtk_action_get_name (action),
						  g_signal_name (hint->signal_id));

	callback = plugin_lookup_symbol (plugin, callback_name);

	if (callback) {
		g_signal_connect (action, g_signal_name (hint->signal_id),
				  G_CALLBACK (callback), plugin);

		callback (action, plugin);
	} else if (!strcmp (g_signal_name (hint->signal_id), "activate")) {
		g_warning ("%s: Cannot find %s()", G_STRFUNC, callback_name);
	}

	g_free (callback_name);
}