[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