[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