[Xfce4-commits] <xfce4-panel:devel> * Update TODO * Add provider_signal in the iface and use it in panel-plugin-external.c. * Direct call for provider_signal instead of g_signal_emit_by_name().
Nick Schermer
nick at xfce.org
Tue Aug 11 20:24:13 CEST 2009
Updating branch refs/heads/devel
to 399a0c77689034e2675d9db0b4a1f35d2c3e541c (commit)
from 7807ce5155bea16bc353bd6e59ad465a8d6a770e (commit)
commit 399a0c77689034e2675d9db0b4a1f35d2c3e541c
Author: Nick Schermer <nick at xfce.org>
Date: Fri Oct 3 20:28:12 2008 +0200
* Update TODO
* Add provider_signal in the iface and use it in panel-plugin-external.c.
* Direct call for provider_signal instead of g_signal_emit_by_name().
TODO | 5 ++-
libxfce4panel/xfce-panel-plugin-provider.c | 15 ++++++++-
libxfce4panel/xfce-panel-plugin-provider.h | 43 ++++++++++++++----------
libxfce4panel/xfce-panel-plugin.c | 15 ++++----
panel/panel-dbus-service.c | 2 +-
panel/panel-plugin-external.c | 50 ++++++++++++++-------------
wrapper/main.c | 8 ++--
7 files changed, 82 insertions(+), 56 deletions(-)
diff --git a/TODO b/TODO
index 1f685c4..efa0248 100644
--- a/TODO
+++ b/TODO
@@ -27,4 +27,7 @@ Plugins
- Possible support for a 'desktop file only' launcher, on plugin
changes we edit the origional launcher (copy in
~/.local/share/applications/).
- - Transparent tray icons.
+ - Transparent tray icons (Fixed in Gtk+?).
+ - Option to 'disable' tray icons instead of hiding them.
+ - Use libnotify for systray notifications, currently the code is disabled.
+
diff --git a/libxfce4panel/xfce-panel-plugin-provider.c b/libxfce4panel/xfce-panel-plugin-provider.c
index 4ab7744..2f8f4f3 100644
--- a/libxfce4panel/xfce-panel-plugin-provider.c
+++ b/libxfce4panel/xfce-panel-plugin-provider.c
@@ -71,7 +71,8 @@ xfce_panel_plugin_provider_class_init (gpointer klass)
g_signal_new (I_("provider-signal"),
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
+ G_STRUCT_OFFSET (XfcePanelPluginProviderIface, provider_signal),
+ NULL, NULL,
g_cclosure_marshal_VOID__UINT,
G_TYPE_NONE, 1, G_TYPE_UINT);
}
@@ -138,3 +139,15 @@ xfce_panel_plugin_provider_save (XfcePanelPluginProvider *provider)
(*XFCE_PANEL_PLUGIN_PROVIDER_GET_IFACE (provider)->save) (provider);
}
+
+
+
+void
+xfce_panel_plugin_provider_send_signal (XfcePanelPluginProvider *provider,
+ XfcePanelPluginProviderSignal signal)
+{
+ panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
+
+ /* emit the signal */
+ g_signal_emit (G_OBJECT (provider), provider_signals[PROVIDER_SIGNAL], 0, signal);
+}
diff --git a/libxfce4panel/xfce-panel-plugin-provider.h b/libxfce4panel/xfce-panel-plugin-provider.h
index c245e43..1662557 100644
--- a/libxfce4panel/xfce-panel-plugin-provider.h
+++ b/libxfce4panel/xfce-panel-plugin-provider.h
@@ -53,17 +53,21 @@ struct _XfcePanelPluginProviderIface
{
/*< private >*/
GTypeInterface __parent__;
+
+ /*< signals >*/
+ void (*provider_signal) (XfcePanelPluginProvider *provider,
+ XfcePanelPluginProviderSignal signal);
/*< public >*/
- const gchar *(*get_name) (XfcePanelPluginProvider *provider);
- const gchar *(*get_id) (XfcePanelPluginProvider *provider);
- void (*set_size) (XfcePanelPluginProvider *provider,
- gint size);
- void (*set_orientation) (XfcePanelPluginProvider *provider,
- GtkOrientation orientation);
- void (*set_screen_position) (XfcePanelPluginProvider *provider,
- XfceScreenPosition screen_position);
- void (*save) (XfcePanelPluginProvider *provider);
+ const gchar *(*get_name) (XfcePanelPluginProvider *provider);
+ const gchar *(*get_id) (XfcePanelPluginProvider *provider);
+ void (*set_size) (XfcePanelPluginProvider *provider,
+ gint size);
+ void (*set_orientation) (XfcePanelPluginProvider *provider,
+ GtkOrientation orientation);
+ void (*set_screen_position) (XfcePanelPluginProvider *provider,
+ XfceScreenPosition screen_position);
+ void (*save) (XfcePanelPluginProvider *provider);
};
enum _XfcePanelPluginProviderSignal
@@ -82,20 +86,23 @@ enum _XfcePanelPluginProviderSignal
GType xfce_panel_plugin_provider_get_type (void) G_GNUC_CONST;
-const gchar *xfce_panel_plugin_provider_get_name (XfcePanelPluginProvider *provider);
+const gchar *xfce_panel_plugin_provider_get_name (XfcePanelPluginProvider *provider);
-const gchar *xfce_panel_plugin_provider_get_id (XfcePanelPluginProvider *provider);
+const gchar *xfce_panel_plugin_provider_get_id (XfcePanelPluginProvider *provider);
-void xfce_panel_plugin_provider_set_size (XfcePanelPluginProvider *provider,
- gint size);
+void xfce_panel_plugin_provider_set_size (XfcePanelPluginProvider *provider,
+ gint size);
-void xfce_panel_plugin_provider_set_orientation (XfcePanelPluginProvider *provider,
- GtkOrientation orientation);
+void xfce_panel_plugin_provider_set_orientation (XfcePanelPluginProvider *provider,
+ GtkOrientation orientation);
-void xfce_panel_plugin_provider_set_screen_position (XfcePanelPluginProvider *provider,
- XfceScreenPosition screen_position);
+void xfce_panel_plugin_provider_set_screen_position (XfcePanelPluginProvider *provider,
+ XfceScreenPosition screen_position);
-void xfce_panel_plugin_provider_save (XfcePanelPluginProvider *provider);
+void xfce_panel_plugin_provider_save (XfcePanelPluginProvider *provider);
+
+void xfce_panel_plugin_provider_send_signal (XfcePanelPluginProvider *provider,
+ XfcePanelPluginProviderSignal signal);
G_END_DECLS
diff --git a/libxfce4panel/xfce-panel-plugin.c b/libxfce4panel/xfce-panel-plugin.c
index dc3cec7..5decaa5 100644
--- a/libxfce4panel/xfce-panel-plugin.c
+++ b/libxfce4panel/xfce-panel-plugin.c
@@ -555,7 +555,7 @@ xfce_panel_plugin_menu_move (XfcePanelPlugin *plugin)
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (plugin));
/* move the plugin */
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", MOVE_PLUGIN);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), MOVE_PLUGIN);
}
@@ -602,7 +602,7 @@ xfce_panel_plugin_menu_remove (XfcePanelPlugin *plugin)
}
/* ask the panel or wrapper to remove the plugin */
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", REMOVE_PLUGIN);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), REMOVE_PLUGIN);
}
/* destroy */
@@ -618,7 +618,7 @@ xfce_panel_plugin_menu_add_items (XfcePanelPlugin *plugin)
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (plugin));
/* open items dialog */
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", ADD_NEW_ITEMS);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), ADD_NEW_ITEMS);
}
@@ -630,7 +630,7 @@ xfce_panel_plugin_menu_panel_preferences (XfcePanelPlugin *plugin)
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (plugin));
/* open preferences dialog */
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", PANEL_PREFERENCES);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), PANEL_PREFERENCES);
}
@@ -763,7 +763,7 @@ xfce_panel_plugin_unregister_menu (GtkMenu *menu,
/* emit signal to unlock the panel */
if (G_LIKELY (plugin->priv->registered_menus == 0))
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", UNLOCK_PANEL);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), UNLOCK_PANEL);
}
}
@@ -994,7 +994,8 @@ xfce_panel_plugin_set_expand (XfcePanelPlugin *plugin,
plugin->priv->expand = expand;
/* emit signal (in provider) */
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", expand ? EXPAND_PLUGIN : COLLAPSE_PLUGIN);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin),
+ expand ? EXPAND_PLUGIN : COLLAPSE_PLUGIN);
}
}
@@ -1192,7 +1193,7 @@ xfce_panel_plugin_register_menu (XfcePanelPlugin *plugin,
/* tell panel it needs to lock */
if (G_LIKELY (plugin->priv->registered_menus == 1))
- g_signal_emit_by_name (G_OBJECT (plugin), "provider-signal", LOCK_PANEL);
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (plugin), LOCK_PANEL);
}
diff --git a/panel/panel-dbus-service.c b/panel/panel-dbus-service.c
index 1ebf948..098ddf1 100644
--- a/panel/panel-dbus-service.c
+++ b/panel/panel-dbus-service.c
@@ -335,7 +335,7 @@ panel_dbus_service_set_property (PanelDBusService *service,
/* emit the signal for the local plugin provider */
if (G_LIKELY (provider))
- g_signal_emit_by_name (G_OBJECT (provider), "provider-signal", g_value_get_uint (value));
+ xfce_panel_plugin_provider_send_signal (XFCE_PANEL_PLUGIN_PROVIDER (provider), g_value_get_uint (value));
/* release the factory */
g_object_unref (G_OBJECT (factory));
diff --git a/panel/panel-plugin-external.c b/panel/panel-plugin-external.c
index c877ecf..bf4e511 100644
--- a/panel/panel-plugin-external.c
+++ b/panel/panel-plugin-external.c
@@ -55,6 +55,8 @@ static void panel_plugin_external_realize (GtkWidget
static void panel_plugin_external_unrealize (GtkWidget *widget);
static gboolean panel_plugin_external_plug_removed (GtkSocket *socket);
static void panel_plugin_external_plug_added (GtkSocket *socket);
+static void panel_plugin_external_provider_signal (XfcePanelPluginProvider *provider,
+ XfcePanelPluginProviderSignal signal);
static const gchar *panel_plugin_external_get_name (XfcePanelPluginProvider *provider);
static const gchar *panel_plugin_external_get_id (XfcePanelPluginProvider *provider);
static void panel_plugin_external_set_size (XfcePanelPluginProvider *provider,
@@ -65,8 +67,6 @@ static void panel_plugin_external_set_screen_position (XfcePanelPluginPr
XfceScreenPosition screen_position);
static void panel_plugin_external_save (XfcePanelPluginProvider *provider);
static void panel_plugin_external_set_sensitive (PanelPluginExternal *external);
-static void panel_plugin_external_provider_signal (PanelPluginExternal *external,
- XfcePanelPluginProviderSignal signal);
static void panel_plugin_external_set_property (PanelPluginExternal *external,
const gchar *property,
const GValue *value);
@@ -149,9 +149,6 @@ panel_plugin_external_init (PanelPluginExternal *external)
/* signal to pass gtk_widget_set_sensitive() changes to the remote window */
g_signal_connect (G_OBJECT (external), "notify::sensitive", G_CALLBACK (panel_plugin_external_set_sensitive), NULL);
-
- /* connect signal to monitor the remove plugin signal */
- g_signal_connect (G_OBJECT (external), "provider-signal", G_CALLBACK (panel_plugin_external_provider_signal), NULL);
}
@@ -159,6 +156,7 @@ panel_plugin_external_init (PanelPluginExternal *external)
static void
panel_plugin_external_provider_init (XfcePanelPluginProviderIface *iface)
{
+ iface->provider_signal = panel_plugin_external_provider_signal;
iface->get_name = panel_plugin_external_get_name;
iface->get_id = panel_plugin_external_get_id;
iface->set_size = panel_plugin_external_set_size;
@@ -415,6 +413,29 @@ panel_plugin_external_plug_added (GtkSocket *socket)
+static void
+panel_plugin_external_provider_signal (XfcePanelPluginProvider *provider,
+ XfcePanelPluginProviderSignal signal)
+{
+ PanelPluginExternal *external = PANEL_PLUGIN_EXTERNAL (provider);
+
+ panel_return_if_fail (PANEL_IS_PLUGIN_EXTERNAL (provider));
+ panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
+
+ /* only handle the remove signal, everything else is handles in panel-application */
+ if (signal == REMOVE_PLUGIN)
+ {
+ /* we're forced removing the plugin, don't ask for a restart */
+ external->plug_embedded = FALSE;
+
+ /* destroy ourselfs, unrealize will close the plugin */
+ gtk_widget_destroy (GTK_WIDGET (external));
+ }
+}
+
+
+
+
static const gchar *
panel_plugin_external_get_name (XfcePanelPluginProvider *provider)
{
@@ -576,25 +597,6 @@ panel_plugin_external_set_sensitive (PanelPluginExternal *external)
-static void
-panel_plugin_external_provider_signal (PanelPluginExternal *external,
- XfcePanelPluginProviderSignal signal)
-{
- panel_return_if_fail (PANEL_IS_PLUGIN_EXTERNAL (external));
-
- /* only handle the remove signal, everything else is handles in the panel-application */
- if (signal == REMOVE_PLUGIN)
- {
- /* we're forced removing the plugin, don't ask for a restart */
- external->plug_embedded = FALSE;
-
- /* destroy ourselfs, unrealize will close the plugin */
- gtk_widget_destroy (GTK_WIDGET (external));
- }
-}
-
-
-
XfcePanelPluginProvider *
panel_plugin_external_new (PanelModule *module,
const gchar *name,
diff --git a/wrapper/main.c b/wrapper/main.c
index 00334c1..73eb99a 100644
--- a/wrapper/main.c
+++ b/wrapper/main.c
@@ -74,10 +74,10 @@ static GOptionEntry option_entries[] =
static void
dbus_gproxy_provider_property_changed (DBusGProxy *dbus_gproxy,
- const gchar *plugin_id,
- const gchar *property,
- const GValue *value,
- XfcePanelPluginProvider *provider)
+ const gchar *plugin_id,
+ const gchar *property,
+ const GValue *value,
+ XfcePanelPluginProvider *provider)
{
WrapperPlug *plug;
More information about the Xfce4-commits
mailing list