[Xfce4-commits] r27089 - in xfce4-mixer/trunk: . panel-plugin
Jannis Pohlmann
jannis at xfce.org
Thu Jun 19 20:20:27 CEST 2008
Author: jannis
Date: 2008-06-19 18:20:26 +0000 (Thu, 19 Jun 2008)
New Revision: 27089
Modified:
xfce4-mixer/trunk/ChangeLog
xfce4-mixer/trunk/panel-plugin/xfce-mixer-plugin.c
xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
Log:
* panel-plugin/xfce-mixer-plugin.c: Try to start "xfce4-mixer"
when the plugin button is clicked.
Modified: xfce4-mixer/trunk/ChangeLog
===================================================================
--- xfce4-mixer/trunk/ChangeLog 2008-06-19 17:02:38 UTC (rev 27088)
+++ xfce4-mixer/trunk/ChangeLog 2008-06-19 18:20:26 UTC (rev 27089)
@@ -1,5 +1,10 @@
2008-06-19 Jannis Pohlmann <jannis at xfce.org>
+ * panel-plugin/xfce-mixer-plugin.c: Try to start "xfce4-mixer"
+ when the plugin button is clicked.
+
+2008-06-19 Jannis Pohlmann <jannis at xfce.org>
+
* Huge code reorganization: Split the mixer into three parts:
libxfce4mixer, xfce4-mixer and the panel plugin. libxfce4mixer
contains everything that's needed by both, the mixer and the
Modified: xfce4-mixer/trunk/panel-plugin/xfce-mixer-plugin.c
===================================================================
--- xfce4-mixer/trunk/panel-plugin/xfce-mixer-plugin.c 2008-06-19 17:02:38 UTC (rev 27088)
+++ xfce4-mixer/trunk/panel-plugin/xfce-mixer-plugin.c 2008-06-19 18:20:26 UTC (rev 27089)
@@ -53,12 +53,12 @@
static XfceMixerPlugin *xfce_mixer_plugin_new (XfcePanelPlugin *plugin);
static void xfce_mixer_plugin_free (XfcePanelPlugin *plugin,
XfceMixerPlugin *mixer_plugin);
-static gboolean xfce_mixer_plugin_size_changed (XfcePanelPlugin *plugin,
- gint size,
- XfceMixerPlugin *mixer_plugin);
-static void xfce_mixer_plugin_volume_changed (XfceVolumeButton *button,
- gdouble volume,
- XfceMixerPlugin *mixer_plugin);
+static gboolean xfce_mixer_plugin_size_changed (XfceMixerPlugin *mixer_plugin,
+ gint size);
+static void xfce_mixer_plugin_volume_changed (XfceMixerPlugin *mixer_plugin,
+ gdouble volume);
+static void xfce_mixer_plugin_configure (XfceMixerPlugin *mixer_plugin);
+static void xfce_mixer_plugin_clicked (XfceMixerPlugin *mixer_plugin);
@@ -79,19 +79,23 @@
/* Store pointer to the panel plugin */
mixer_plugin->plugin = plugin;
- mixer_plugin->hvbox = xfce_hvbox_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0);
+ mixer_plugin->hvbox = GTK_WIDGET (xfce_hvbox_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0));
+ xfce_panel_plugin_add_action_widget (plugin, mixer_plugin->hvbox);
gtk_container_add (GTK_CONTAINER (plugin), mixer_plugin->hvbox);
gtk_widget_show (mixer_plugin->hvbox);
mixer_plugin->button = xfce_volume_button_new ();
g_signal_connect (G_OBJECT (mixer_plugin->button), "volume-changed", G_CALLBACK (xfce_mixer_plugin_volume_changed), mixer_plugin);
+ g_signal_connect_swapped (G_OBJECT (mixer_plugin->button), "clicked", G_CALLBACK (xfce_mixer_plugin_clicked), mixer_plugin);
gtk_container_add (GTK_CONTAINER (mixer_plugin->hvbox), mixer_plugin->button);
gtk_widget_show (mixer_plugin->button);
+ xfce_panel_plugin_menu_show_configure (plugin);
+
/* Connect to plugin signals */
- g_signal_connect (G_OBJECT (plugin), "free-data", G_CALLBACK (xfce_mixer_plugin_free), mixer_plugin);
- g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (xfce_mixer_plugin_size_changed), mixer_plugin);
-// g_signal_connect (G_OBJECT (plugin), "configure", G_CALLBACK (xfce_mixer_plugin_configure), mixer_plugin);
+ g_signal_connect_swapped (G_OBJECT (plugin), "free-data", G_CALLBACK (xfce_mixer_plugin_free), mixer_plugin);
+ g_signal_connect_swapped (G_OBJECT (plugin), "size-changed", G_CALLBACK (xfce_mixer_plugin_size_changed), mixer_plugin);
+ g_signal_connect_swapped (G_OBJECT (plugin), "configure", G_CALLBACK (xfce_mixer_plugin_configure), mixer_plugin);
return mixer_plugin;
}
@@ -122,13 +126,11 @@
static gboolean
-xfce_mixer_plugin_size_changed (XfcePanelPlugin *plugin,
- gint size,
- XfceMixerPlugin *mixer_plugin)
+xfce_mixer_plugin_size_changed (XfceMixerPlugin *mixer_plugin,
+ gint size)
{
GtkOrientation orientation;
- g_return_val_if_fail (plugin != NULL, FALSE);
g_return_val_if_fail (mixer_plugin != NULL, FALSE);
/* Determine the icon size for the volume button */
@@ -138,7 +140,7 @@
xfce_volume_button_set_icon_size (XFCE_VOLUME_BUTTON (mixer_plugin->button), size);
/* Get the orientation of the panel */
- orientation = xfce_panel_plugin_get_orientation (plugin);
+ orientation = xfce_panel_plugin_get_orientation (mixer_plugin->plugin);
/* TODO: Handle it */
@@ -148,9 +150,29 @@
static void
-xfce_mixer_plugin_volume_changed (XfceVolumeButton *button,
- gdouble volume,
- XfceMixerPlugin *mixer_plugin)
+xfce_mixer_plugin_volume_changed (XfceMixerPlugin *mixer_plugin,
+ gdouble volume)
{
g_message ("volume changed to %f", volume);
}
+
+
+
+static void
+xfce_mixer_plugin_clicked (XfceMixerPlugin *mixer_plugin)
+{
+ g_return_if_fail (mixer_plugin != NULL);
+
+ if (G_UNLIKELY (!g_spawn_command_line_async ("xfce4-mixer", NULL)))
+ xfce_err (_("Could not find xfce4-mixer in PATH."));
+}
+
+
+
+static void
+xfce_mixer_plugin_configure (XfceMixerPlugin *mixer_plugin)
+{
+ g_return_if_fail (mixer_plugin != NULL);
+
+ xfce_panel_plugin_block_menu (mixer_plugin->plugin);
+}
Modified: xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
===================================================================
--- xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-19 17:02:38 UTC (rev 27088)
+++ xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-19 18:20:26 UTC (rev 27089)
@@ -265,6 +265,7 @@
if (GTK_WIDGET_HAS_FOCUS (widget))
{
+ gtk_widget_set_state (widget, GTK_STATE_NORMAL);
gdk_keyboard_ungrab (GDK_CURRENT_TIME);
gdk_pointer_ungrab (GDK_CURRENT_TIME);
gtk_grab_remove (widget);
More information about the Xfce4-commits
mailing list