[Goodies-commits] r7159 - in xfce4-power-manager/trunk: . settings src

Ali Abdallah aliov at xfce.org
Fri Apr 10 23:31:33 CEST 2009


Author: aliov
Date: 2009-04-10 21:31:33 +0000 (Fri, 10 Apr 2009)
New Revision: 7159

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/configure.ac.in
   xfce4-power-manager/trunk/settings/xfce4-power-manager-settings.desktop.in
   xfce4-power-manager/trunk/settings/xfpm-settings-main.c
   xfce4-power-manager/trunk/settings/xfpm-settings.c
   xfce4-power-manager/trunk/settings/xfpm-settings.glade
   xfce4-power-manager/trunk/settings/xfpm-settings.h
   xfce4-power-manager/trunk/src/xfpm-session.c
   xfce4-power-manager/trunk/src/xfpm-session.h
   xfce4-power-manager/trunk/src/xfpm-shutdown.c
Log:
Making the settings dialog pluggable+use the shutdown interface on the xfce4-session to shutdown

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/ChangeLog	2009-04-10 21:31:33 UTC (rev 7159)
@@ -1,4 +1,7 @@
 
+2009-04-10 23:31 Ali aliov at xfce.org 
+	 * : Making the settings dialog pluggable+use the shutdown interface on the xfce4-session to shutdown
+
 2009-04-10 21:29 Ali aliov at xfce.org 
 	 * : Added handler for power button+added option to ask the session manager to its show the exit dialog
 

Modified: xfce4-power-manager/trunk/configure.ac.in
===================================================================
--- xfce4-power-manager/trunk/configure.ac.in	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/configure.ac.in	2009-04-10 21:31:33 UTC (rev 7159)
@@ -2,8 +2,8 @@
 m4_define([xfpm_version_major],  [0])
 m4_define([xfpm_version_minor],  [8])
 m4_define([xfpm_version_micro],  [0])
-m4_define([xfpm_version_build],  [r at REVISION@])
-m4_define([xfpm_version_tag],[svn])
+m4_define([xfpm_version_build],  [])
+m4_define([xfpm_version_tag],[beta1])
 m4_define([xfpm_version], [xfpm_version_major().xfpm_version_minor().xfpm_version_micro()ifelse(xfpm_version_tag(), [svn], [xfpm_version_tag().xfpm_version_build()], [xfpm_version_tag()])])
 
 AC_INIT([xfce4-power-manager], [xfpm_version], [http://bugzilla.xfce.org/])

Modified: xfce4-power-manager/trunk/settings/xfce4-power-manager-settings.desktop.in
===================================================================
--- xfce4-power-manager/trunk/settings/xfce4-power-manager-settings.desktop.in	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/settings/xfce4-power-manager-settings.desktop.in	2009-04-10 21:31:33 UTC (rev 7159)
@@ -3,25 +3,6 @@
 Encoding=UTF-8
 _Name=Xfce 4 Power Manager
 _GenericName=Power Manager
-X-XfceSettingsName=Power
-X-XfceSettingsName[ca]=Energia
-X-XfceSettingsName[cs]=Napájení
-X-XfceSettingsName[da]=Strøm
-X-XfceSettingsName[de]=Energie
-X-XfceSettingsName[el]=Ρεύμα
-X-XfceSettingsName[es]=Energía
-X-XfceSettingsName[et]=Vool
-X-XfceSettingsName[eu]=Energia
-X-XfceSettingsName[fi]=Virranhallinta
-X-XfceSettingsName[id]=Daya
-X-XfceSettingsName[ja]=電源
-X-XfceSettingsName[nb]=Strøm
-X-XfceSettingsName[pt]=Energia
-X-XfceSettingsName[pt_BR]=Energia
-X-XfceSettingsName[sv]=Ström
-X-XfceSettingsName[tr]=Güç
-X-XfceSettingsName[uk]=Живлення
-X-XfceSettingsName[zh_CN]=电源
 _Comment=Settings for the Xfce 4 Power Manager
 Exec=xfce4-power-manager-settings
 Icon=gpm-ac-adapter

Modified: xfce4-power-manager/trunk/settings/xfpm-settings-main.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings-main.c	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/settings/xfpm-settings-main.c	2009-04-10 21:31:33 UTC (rev 7159)
@@ -46,44 +46,47 @@
 #include "xfpm-settings.h"
 #include "xfpm-config.h"
 
-//FIXME: Unref XfconfChannel
-static void dialog_response_cb (GtkDialog *dialog, gint response, gpointer data)
-{
-    DBusGConnection *bus     = (DBusGConnection *) data;    
-    switch(response)
-    {
-	case GTK_RESPONSE_HELP:
-	    xfpm_help();
-	    break;
-	default:
-	    xfpm_dbus_release_name(dbus_g_connection_get_connection(bus), "org.xfce.PowerManager.Config");
-	    dbus_g_connection_unref(bus);
-	    xfconf_shutdown();
-	    gtk_widget_destroy(GTK_WIDGET(dialog));
-	    gtk_main_quit();
-	    break;
-    }
-}
-
 int main(int argc, char **argv)
 {
     xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
 
-    //FIXME: Help argument
-    gtk_init(&argc, &argv);
-    
     GError *error = NULL;
-    DBusGConnection *bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+    DBusGConnection *bus;
     gboolean system_laptop;
     gboolean user_privilege;
     gboolean can_suspend;
     gboolean can_hibernate;
     gboolean has_lcd_brightness;
+    
+    GdkNativeWindow socket_id = 0;
 	
     XfconfChannel *channel;
     DBusGProxy *proxy;
-    GtkWidget *dialog;
     
+    GOptionEntry option_entries[] = 
+    {
+	{ "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &socket_id, N_("Settings manager socket"), N_("SOCKET ID") },
+	{ NULL, },
+    };
+    
+    if( !gtk_init_with_args (&argc, &argv, "", option_entries, PACKAGE, &error)) 
+    {
+        if( error) 
+        {
+            g_printerr("%s: %s.\n", G_LOG_DOMAIN, error->message);
+            g_printerr(_("Type '%s --help' for usage."), G_LOG_DOMAIN);
+            g_printerr("\n");
+            g_error_free(error);
+        }
+        else
+        {
+            g_error("Unable to open display.");
+	}
+        return EXIT_FAILURE;
+    }
+    
+    bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+    
     if ( error )
     {
 	g_error("%s\n",error->message);
@@ -140,16 +143,15 @@
 	    return EXIT_FAILURE;
 	}
 	
-	dialog = xfpm_settings_dialog_new (channel, system_laptop, user_privilege,
-					   can_suspend, can_hibernate, has_lcd_brightness,
-					   system_laptop);
+	xfpm_settings_dialog_new (channel, system_laptop, user_privilege,
+				  can_suspend, can_hibernate, has_lcd_brightness,
+				  system_laptop, socket_id);
 					   
-	g_signal_connect(dialog, "response", G_CALLBACK(dialog_response_cb), bus);
+	gtk_main();
 	
-	gtk_widget_show(dialog);
+	xfpm_dbus_release_name(dbus_g_connection_get_connection(bus), "org.xfce.PowerManager.Config");
+	dbus_g_connection_unref(bus);
 	
-	gtk_main();
-	
 	return EXIT_SUCCESS;
     }
     else

Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c	2009-04-10 21:31:33 UTC (rev 7159)
@@ -804,6 +804,8 @@
     val = xfconf_channel_get_bool (channel, DPMS_ENABLED_CFG, TRUE);
     
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(dpms), val);
+    gtk_widget_set_tooltip_text (dpms, _("Disable Display Power Management Signaling (DPMS), "\
+				         "e.g don't attempt to switch off the display or put it in sleep mode."));
 #endif
     /*
      * Power button
@@ -1195,18 +1197,48 @@
     g_signal_connect(view,"cursor-changed",G_CALLBACK(_cursor_changed_cb),NULL);
 }
 
-GtkWidget *
-xfpm_settings_dialog_new (XfconfChannel *channel, 
-			  gboolean system_laptop, gboolean user_privilege,
-			  gboolean can_suspend, gboolean can_hibernate,
-			  gboolean has_lcd_brightness, gboolean has_lid)
+static void
+settings_quit (GtkWidget *widget, XfconfChannel *channel)
 {
+    g_object_unref (channel);
+    xfconf_shutdown();
+    gtk_widget_destroy (widget);
+    gtk_main_quit();
+}
+
+static void dialog_response_cb (GtkDialog *dialog, gint response, XfconfChannel *channel)
+{
+    switch(response)
+    {
+	case GTK_RESPONSE_HELP:
+	    xfpm_help();
+	    break;
+	default:
+	    settings_quit (GTK_WIDGET (dialog), channel);
+	    break;
+    }
+}
+
+static void
+delete_event_cb (GtkWidget *plug, GdkEvent *ev, XfconfChannel *channel)
+{
+    settings_quit (plug, channel);
+}
+
+void
+xfpm_settings_dialog_new (XfconfChannel *channel, gboolean system_laptop, 
+			  gboolean user_privilege, gboolean can_suspend, 
+			  gboolean can_hibernate, gboolean has_lcd_brightness, 
+			  gboolean has_lid, GdkNativeWindow id)
+{
     TRACE("system_laptop=%s user_privilege=%s can_suspend=%s can_hibernate=%s has_lcd_brightness=%s has_lid=%s",
 	  xfpm_bool_to_string (system_laptop), xfpm_bool_to_string (user_privilege),
 	  xfpm_bool_to_string (can_suspend), xfpm_bool_to_string (can_hibernate),
 	  xfpm_bool_to_string (has_lcd_brightness), xfpm_bool_to_string (has_lid) );
 	  
+    GtkWidget *plug;
     GtkWidget *dialog;
+    GtkWidget *allbox;
     
     xml = glade_xml_new_from_buffer (xfpm_settings_glade,
 				     xfpm_settings_glade_length,
@@ -1224,5 +1256,19 @@
     xfpm_settings_general   (channel, user_privilege, can_suspend, can_hibernate);
     xfpm_settings_advanced  (channel, system_laptop, user_privilege);
     
-    return dialog;
+    if ( id != 0 )
+    {
+	allbox = glade_xml_get_widget (xml, "allbox");
+	plug = gtk_plug_new (id);
+	gtk_widget_show (plug);
+	gtk_widget_reparent (allbox, plug);
+	g_signal_connect (plug, "delete-event", 
+			  G_CALLBACK (delete_event_cb), channel);
+	gdk_notify_startup_complete ();
+    }
+    else
+    {
+	g_signal_connect (dialog, "response", G_CALLBACK (dialog_response_cb), channel);
+	gtk_widget_show (dialog);
+    }
 }

Modified: xfce4-power-manager/trunk/settings/xfpm-settings.glade
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.glade	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.glade	2009-04-10 21:31:33 UTC (rev 7159)
@@ -17,7 +17,7 @@
         <property name="visible">True</property>
         <property name="spacing">2</property>
         <child>
-          <widget class="GtkVBox" id="vbox">
+          <widget class="GtkVBox" id="allbox">
             <property name="visible">True</property>
             <child>
               <widget class="GtkHBox" id="hbox">

Modified: xfce4-power-manager/trunk/settings/xfpm-settings.h
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.h	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.h	2009-04-10 21:31:33 UTC (rev 7159)
@@ -22,13 +22,14 @@
 #define __XFPM_SETTINGS_H
 
 
-GtkWidget *	xfpm_settings_dialog_new 	(XfconfChannel *channel,
+void	       xfpm_settings_dialog_new 	(XfconfChannel *channel,
 						 gboolean system_laptop,
 						 gboolean user_privilege,
 					         gboolean can_suspend,
 					         gboolean can_hibernate,
 					         gboolean has_lcd_brightness,
-					         gboolean has_lid);
+					         gboolean has_lid,
+						 GdkNativeWindow id);
 
 
 

Modified: xfce4-power-manager/trunk/src/xfpm-session.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.c	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/src/xfpm-session.c	2009-04-10 21:31:33 UTC (rev 7159)
@@ -44,6 +44,20 @@
 #define XFPM_SESSION_GET_PRIVATE(o) \
 (G_TYPE_INSTANCE_GET_PRIVATE ((o), XFPM_TYPE_SESSION, XfpmSessionPrivate))
 
+/* copied from xfce4-session/shutdown.h -- ORDER MATTERS.  The numbers
+ * correspond to the 'type' parameter of org.xfce.Session.Manager.Shutdown
+ */
+typedef enum
+{
+    XFSM_SHUTDOWN_ASK = 0,
+    XFSM_SHUTDOWN_LOGOUT,
+    XFSM_SHUTDOWN_HALT,
+    XFSM_SHUTDOWN_REBOOT,
+    XFSM_SHUTDOWN_SUSPEND,
+    XFSM_SHUTDOWN_HIBERNATE,
+  
+} XfsmShutdownType;
+
 struct XfpmSessionPrivate
 {
     SessionClient *client;
@@ -145,6 +159,44 @@
     G_OBJECT_CLASS (xfpm_session_parent_class)->finalize (object);
 }
 
+static gboolean 
+xfpm_session_shutdown_internal (XfpmSession *session, XfsmShutdownType type, gboolean allow_save)
+{
+    DBusGConnection *bus;
+    DBusGProxy *proxy;
+    GError *error = NULL;
+    
+    bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+    
+    proxy = dbus_g_proxy_new_for_name (bus,
+				       "org.xfce.SessionManager",
+                                       "/org/xfce/SessionManager",
+                                       "org.xfce.Session.Manager");
+				       
+    if ( !proxy )
+    {
+	g_critical ("Unable to create proxy for xfce session manager");
+	dbus_g_connection_unref (bus);
+	return FALSE;
+    }
+	
+    dbus_g_proxy_call (proxy, "Shutdown", &error,
+		       G_TYPE_UINT, type,
+		       G_TYPE_BOOLEAN, allow_save,
+		       G_TYPE_INVALID,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    
+    g_object_unref (proxy);
+    dbus_g_connection_unref (bus);
+    return TRUE;
+}
+
 XfpmSession *
 xfpm_session_new (void)
 {
@@ -177,42 +229,22 @@
     client_session_set_restart_style (session->priv->client, SESSION_RESTART_IF_RUNNING);
 }
 
-// Currently we just spawn xfce4-session-logout, FIXME: change this
-void xfpm_session_ask_shutdown (XfpmSession *session)
+gboolean xfpm_session_shutdown (XfpmSession *session)
 {
-    DBusGConnection *bus;
-    DBusGProxy *proxy;
-    GError *error = NULL;
-    gboolean allow_save = TRUE;
-    gint ask = 0;
+    g_return_val_if_fail (XFPM_IS_SESSION (session), FALSE);
     
-    bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+    gboolean allow_save   = TRUE;
+    XfsmShutdownType type = XFSM_SHUTDOWN_HALT;
     
-    proxy = dbus_g_proxy_new_for_name (bus,
-				       "org.xfce.SessionManager",
-                                       "/org/xfce/SessionManager",
-                                       "org.xfce.Session.Manager");
-				       
-    if ( !proxy )
-    {
-	g_critical ("Unable to create proxy for xfce session manager");
-	goto out;
-    }
-	
-    dbus_g_proxy_call (proxy, "Shutdown", &error,
-		       G_TYPE_UINT, ask,
-		       G_TYPE_BOOLEAN, allow_save,
-		       G_TYPE_INVALID,
-		       G_TYPE_INVALID);
-		       
-    if ( error )
-    {
-	g_warning ("%s", error->message);
-	g_error_free (error);
-    }
+    return xfpm_session_shutdown_internal (session, type, allow_save);
+}
+
+gboolean xfpm_session_ask_shutdown (XfpmSession *session)
+{
+    g_return_val_if_fail (XFPM_IS_SESSION (session), FALSE);
     
-    g_object_unref (proxy);
-out:
-    dbus_g_connection_unref (bus);
-
+    gboolean allow_save   = TRUE;
+    XfsmShutdownType type = XFSM_SHUTDOWN_ASK;
+    
+    return xfpm_session_shutdown_internal (session, type, allow_save);
 }

Modified: xfce4-power-manager/trunk/src/xfpm-session.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.h	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/src/xfpm-session.h	2009-04-10 21:31:33 UTC (rev 7159)
@@ -51,12 +51,14 @@
 
 void			         xfpm_session_set_client_id   (XfpmSession *session,
 							       const gchar *client_id);
-							       
+							    
 /* This is used to change the restart Style */
 void				 xfpm_session_quit	      (XfpmSession *session);
 
-void				 xfpm_session_ask_shutdown    (XfpmSession *session);
+gboolean                         xfpm_session_shutdown        (XfpmSession *session);
 
+gboolean			 xfpm_session_ask_shutdown    (XfpmSession *session);
+
 G_END_DECLS
 
 #endif /* __XFPM_SESSION_H */

Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-04-10 19:29:14 UTC (rev 7158)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-04-10 21:31:33 UTC (rev 7159)
@@ -401,7 +401,9 @@
 	return;
     }
     
-    xfpm_shutdown_internal (dbus_g_connection_get_connection(shutdown->priv->bus), "Shutdown", NULL);
+    if ( !xfpm_session_shutdown (shutdown->priv->session) )
+	xfpm_shutdown_internal (dbus_g_connection_get_connection(shutdown->priv->bus), "Shutdown", NULL);
+
     shutdown->priv->block_shutdown = FALSE;
 }
 




More information about the Goodies-commits mailing list