[Goodies-commits] r5897 - xfce4-power-manager/trunk/src
Ali Abdallah
aliov at xfce.org
Sat Nov 1 23:05:20 CET 2008
Author: aliov
Date: 2008-11-01 22:05:20 +0000 (Sat, 01 Nov 2008)
New Revision: 5897
Modified:
xfce4-power-manager/trunk/src/Makefile.am
xfce4-power-manager/trunk/src/xfce4-power-manager.desktop.in
xfce4-power-manager/trunk/src/xfpm-dbus-messages.c
xfce4-power-manager/trunk/src/xfpm-dbus-messages.h
xfce4-power-manager/trunk/src/xfpm-driver.c
xfce4-power-manager/trunk/src/xfpm-main.c
xfce4-power-manager/trunk/src/xfpm-settings.c
xfce4-power-manager/trunk/src/xfpm-settings.h
Log:
Support for pluggable settings dialog
Modified: xfce4-power-manager/trunk/src/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/src/Makefile.am 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/Makefile.am 2008-11-01 22:05:20 UTC (rev 5897)
@@ -10,7 +10,7 @@
xfce4_power_manager_SOURCES = $(generated_files) \
xfpm-main.c \
xfpm-debug.h \
- xfpm-hal.c \
+ xfpm-hal.c \
xfpm-hal.h \
xfpm-driver.c \
xfpm-driver.h \
@@ -46,6 +46,7 @@
xfce4_power_manager_CFLAGS = \
-DLOCALEDIR=\"$(localedir)\" \
+ -DG_LOG_DOMAIN=\"xfce4-power-manager\" \
$(GTK_CFLAGS) \
$(GLIB_CFLAGS) \
$(DBUS_CFLAGS) \
Modified: xfce4-power-manager/trunk/src/xfce4-power-manager.desktop.in
===================================================================
--- xfce4-power-manager/trunk/src/xfce4-power-manager.desktop.in 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfce4-power-manager.desktop.in 2008-11-01 22:05:20 UTC (rev 5897)
@@ -11,4 +11,6 @@
Type=Application
Categories=X-XFCE;Settings;DesktopSettings;X-XfceSettingsDialog;
OnlyShowIn=XFCE;
-StartupNotify=true
\ No newline at end of file
+StartupNotify=true
+X-XfcePluggable=true
+X-XfceHelpFile=xfce4-power-manager.html
Modified: xfce4-power-manager/trunk/src/xfpm-dbus-messages.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-messages.c 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-messages.c 2008-11-01 22:05:20 UTC (rev 5897)
@@ -183,7 +183,6 @@
} else
{
*get_reply = 0;
-
}
dbus_message_unref(message);
@@ -191,8 +190,48 @@
return TRUE;
}
-void xfpm_dbus_send_nm_message (const gchar *signal)
+gboolean
+xfpm_dbus_send_customize_message(guint32 socket_id)
{
+ DBusConnection *connection;
+ DBusMessage *message;
+
+ connection = xfpm_dbus_get_connection(DBUS_BUS_SESSION);
+ if ( !connection )
+ {
+ return FALSE;
+ }
+
+ message = xfpm_dbus_new_signal("Customize");
+
+ if (!message)
+ {
+ return FALSE;
+ }
+
+ dbus_message_append_args(message,DBUS_TYPE_UINT32,&socket_id,DBUS_TYPE_INVALID);
+
+ gboolean ret =
+ dbus_connection_send(connection,
+ message,
+ NULL);
+
+ dbus_message_unref(message);
+ dbus_connection_unref(connection);
+ if ( ret == FALSE )
+ {
+ g_critical(_("Failed to send message\n"));
+ return FALSE;
+ } else
+ {
+ return TRUE;
+ }
+
+}
+
+void
+xfpm_dbus_send_nm_message (const gchar *signal)
+{
DBusConnection *connection;
DBusMessage *message;
Modified: xfce4-power-manager/trunk/src/xfpm-dbus-messages.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-messages.h 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-messages.h 2008-11-01 22:05:20 UTC (rev 5897)
@@ -36,6 +36,7 @@
const gchar *service);
gboolean xfpm_dbus_send_message (const gchar *signal);
gboolean xfpm_dbus_send_message_with_reply (const gchar *signal,gint *get_reply);
+gboolean xfpm_dbus_send_customize_message (guint32 socket_id);
void xfpm_dbus_send_nm_message (const gchar *signal);
#endif /* __XFPM_DBUS_MESSAGES */
Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c 2008-11-01 22:05:20 UTC (rev 5897)
@@ -134,6 +134,8 @@
static DBusHandlerResult xfpm_driver_signal_filter
(DBusConnection *connection,DBusMessage *message,void *user_data);
+static guint32 socket_id = 0;
+
#define XFPM_DRIVER_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o),XFPM_TYPE_DRIVER,XfpmDriverPrivate))
@@ -373,6 +375,17 @@
}
static void
+_close_plug_cb(GtkWidget *plug,GdkEvent *ev,XfpmDriver *drv)
+{
+ XfpmDriverPrivate *priv;
+ priv = XFPM_DRIVER_GET_PRIVATE(drv);
+ priv->dialog_opened = FALSE;
+ _close_dialog_cb(NULL,drv);
+ gtk_widget_destroy(plug);
+
+}
+
+static void
xfpm_driver_property_changed_cb(XfconfChannel *channel,gchar *property,
GValue *value,XfpmDriver *drv)
{
@@ -551,7 +564,7 @@
{
return FALSE;
}
-
+
XfconfChannel *channel;
GtkWidget *dialog;
@@ -588,18 +601,27 @@
governors,
switch_buttons,
priv->lcd_brightness_control,
- ups_found);
+ ups_found,
+ socket_id);
+ if ( socket_id == 0 )
+ {
+ xfce_gtk_window_center_on_monitor_with_pointer(GTK_WINDOW(dialog));
+ gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
- xfce_gtk_window_center_on_monitor_with_pointer(GTK_WINDOW(dialog));
- gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
+ gdk_x11_window_set_user_time(dialog->window,gdk_x11_get_server_time (dialog->window));
- gdk_x11_window_set_user_time(dialog->window,gdk_x11_get_server_time (dialog->window));
+ g_signal_connect(dialog,"response",G_CALLBACK(_dialog_response_cb),drv);
+ g_signal_connect(dialog,"close",G_CALLBACK(_close_dialog_cb),drv);
+ gtk_widget_show(dialog);
+ }
+ else
+ {
+ g_signal_connect(dialog,"delete-event",G_CALLBACK(_close_plug_cb),drv);
+ gdk_notify_startup_complete();
+ }
- g_signal_connect(dialog,"response",G_CALLBACK(_dialog_response_cb),drv);
- g_signal_connect(dialog,"close",G_CALLBACK(_close_dialog_cb),drv);
-
- gtk_widget_show(dialog);
priv->dialog_opened = TRUE;
+ socket_id = 0 ;
return FALSE;
}
@@ -1115,9 +1137,17 @@
if ( dbus_message_is_signal(message,"xfpm.power.manager","Customize" ) )
{
- XFPM_DEBUG("message customize received\n");
/* don't block the signal filter so show the configuration dialog in a
* timeout function otherwise xfce4-power-manager -q will have no effect*/
+ DBusError error;
+ dbus_error_init(&error);
+ dbus_message_get_args(message,&error,DBUS_TYPE_UINT32,&socket_id,DBUS_TYPE_INVALID);
+ if ( dbus_error_is_set(&error) )
+ {
+ XFPM_DEBUG("Failed to get socket id: %s\n",error.message);
+ dbus_error_free(&error);
+ }
+ XFPM_DEBUG("message customize received with socket_id=%d\n",socket_id);
g_timeout_add(100,(GSourceFunc)xfpm_driver_show_options_dialog,drv);
return DBUS_HANDLER_RESULT_HANDLED;
}
Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-main.c 2008-11-01 22:05:20 UTC (rev 5897)
@@ -1,6 +1,6 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
*
- * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
+ * * Copyright (C) 2008 Ali <aliov at xfce.org>
*
* Licensed under the GNU General Public License Version 2
*
@@ -51,16 +51,23 @@
#include "xfpm-popups.h"
#include "xfpm-debug.h"
-enum
-{
- PM_HELP,
- PM_CUSTOMIZE,
- PM_RUN,
- PM_QUIT
-};
+static GdkNativeWindow socket_id = 0;
+static gboolean run = FALSE;
+static gboolean quit = FALSE;
+static gboolean config = FALSE;
+static gboolean version = FALSE;
+static GOptionEntry option_entries[] = {
+ { "run", 'r', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &run, N_("Start xfce power manager"), NULL },
+ { "customize", 'c', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &config, N_("Show the configuration dialog"), NULL },
+ { "quit", 'q', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &quit, N_("Quit any running xfce power manager"), NULL },
+ { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &socket_id, N_("Settings manager socket"), N_("SOCKET ID") },
+ { "version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version, N_("Version information"), NULL },
+ { NULL, },
+};
+
static void
-show_usage()
+show_version()
{
setlocale(LC_ALL,"");
g_print (_("\n"
@@ -68,21 +75,8 @@
"Part of the Xfce Goodies Project\n"
"http://goodies.xfce.org\n\n"
"Licensed under the GNU GPL.\n\n"), VERSION);
+}
- /* Only the description is translatable */
- g_print(_( "\n"
- "Usage: xfce-power-manager [options] \n"
- "\n"
- "Options:\n"
- "-h, --help Print this help message and exit\n"
- "-v, --version Print this help message and exit\n"
- "-r, --run Start xfce power manager\n"
- "-c, --customize Show Configuration dialog\n"
- "-q, --quit Quit any running xfce power manager\n"
- "\n"));
-
-}
-
static void
autostart()
{
@@ -155,71 +149,48 @@
g_key_file_free(key);
}
-static int
-handle_arguments(int argc,char **argv)
+int main(int argc,char **argv)
{
+ xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
- int msg = -1;
-
- if ( argc > 1 && argv[1][0] == '-' )
- {
- if (!strcmp(argv[1], "-v") ||
- !strcmp(argv[1], "-version")||
- !strcmp(argv[1],"-h") ||
- !strcmp(argv[1],"--help"))
+ GError *error = NULL;
+
+ if(!gtk_init_with_args(&argc, &argv, "", option_entries, PACKAGE, &error))
+ {
+ if(G_LIKELY(error))
{
- show_usage();
- msg = PM_HELP;
- }
+ 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
{
- if (!strcmp(argv[1],"-c") ||
- !strcmp(argv[1],"--cutomize"))
- {
- msg = PM_CUSTOMIZE;
- } else if (!strcmp(argv[1],"-r") ||
- !strcmp(argv[1],"--run"))
- {
- msg = PM_RUN;
- }
- else if (!strcmp(argv[1],"-q") ||
- !strcmp(argv[1],"--quit"))
- {
- msg = PM_QUIT;
- }
- else
- {
- show_usage();
- msg = PM_HELP;
- }
- }
- }
- else
- {
- show_usage();
- msg = PM_HELP;
- }
-
- return msg;
-}
+ g_error("Unable to open display.");
+ }
-
-int main(int argc,char **argv)
-{
- xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
+ return EXIT_FAILURE;
+ }
- gtk_init(&argc,&argv);
-
- int msg = handle_arguments(argc,argv);
-
- if ( msg == PM_HELP ) return 0;
-
- if ( msg == PM_CUSTOMIZE )
- {
- int reply;
+ if ( version ) {
+ show_version();
+ return EXIT_SUCCESS;
+ }
+
+ if ( run + quit + config + version > 1 )
+ {
+ g_printerr(_("Too much arguments\n"));
+ g_printerr(_("Type '%s --help' for usage."), G_LOG_DOMAIN);
+ g_printerr("\n");
+ return EXIT_FAILURE;
+ }
+
+ if ( config )
+ {
+ int reply;
if (!xfpm_dbus_send_message_with_reply("Running",&reply))
{
- return 1;
+ return EXIT_FAILURE;
}
if ( reply != 1 )
{
@@ -232,46 +203,29 @@
{
g_spawn_command_line_async("xfce4-power-manager -r",NULL);
}
- return 0;
+ return EXIT_SUCCESS;
}
- xfpm_dbus_send_message("Customize");
- return 0;
- }
-
- if ( msg == PM_QUIT )
- {
- int reply;
- if (!xfpm_dbus_send_message_with_reply("Quit",&reply))
- {
- return 1;
- }
-
- if ( reply == 0 )
- {
- g_print(_("Xfce power manager is not running\n"));
- return 0;
- }
- return 0;
- }
-
- if ( msg == PM_RUN )
- {
- int reply;
+ xfpm_dbus_send_customize_message(socket_id);
+ return EXIT_SUCCESS;
+ }
+
+ if ( run )
+ {
+ int reply;
if (!xfpm_dbus_send_message_with_reply("Running",&reply))
{
- return 1;
+ return EXIT_FAILURE;
}
if ( reply == 1 )
{
g_print(_("Xfce power manager is already running\n"));
- return 0;
+ return EXIT_SUCCESS;
}
XfpmDriver *driver = xfpm_driver_new();
autostart();
if (!xfpm_driver_monitor(driver))
{
- /* g_disaster */
xfpm_popup_message(_("Xfce power manager"),
_("Unable to run Xfce4 power manager, " \
"make sure the hardware abstract layer and the message bus daemon "\
@@ -279,9 +233,25 @@
GTK_MESSAGE_ERROR);
g_error(_("Unable to load xfce4 power manager\n"));
g_object_unref(driver);
- return 1;
+ return EXIT_FAILURE;
}
- }
+ }
+
+ if ( quit )
+ {
+ int reply;
+ if (!xfpm_dbus_send_message_with_reply("Quit",&reply))
+ {
+ return EXIT_FAILURE;
+ }
- return 0;
+ if ( reply == 0 )
+ {
+ g_print(_("Xfce power manager is not running\n"));
+ return EXIT_SUCCESS;
+ }
+ return EXIT_SUCCESS;
+ }
+
+ return EXIT_SUCCESS;
}
Modified: xfce4-power-manager/trunk/src/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.c 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-settings.c 2008-11-01 22:05:20 UTC (rev 5897)
@@ -1228,17 +1228,19 @@
guint8 govs,
guint8 switch_buttons,
gboolean lcd,
- gboolean ups_found)
+ gboolean ups_found,
+ guint32 socket_id)
{
GtkWidget *Dialog; /* Main dialog window */
GtkWidget *mainbox; /* Box to get (Dialog)->vbox */
GtkWidget *box;
GtkWidget *table;
GtkWidget *view;
-
+ GtkWidget *allbox;
+
Dialog = xfce_titled_dialog_new_with_buttons(_("Power Manager Preferences"),
NULL,
- GTK_DIALOG_NO_SEPARATOR,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CLOSE,
GTK_RESPONSE_CANCEL,
GTK_STOCK_HELP,
@@ -1247,15 +1249,18 @@
gtk_window_set_icon_name(GTK_WINDOW(Dialog),"gpm-ac-adapter");
gtk_dialog_set_default_response(GTK_DIALOG(Dialog),GTK_RESPONSE_CLOSE);
-
mainbox = GTK_DIALOG(Dialog)->vbox;
+ allbox = gtk_vbox_new(FALSE,0);
+ gtk_widget_show(allbox);
+ gtk_box_pack_start(GTK_BOX(mainbox),allbox,FALSE,FALSE,0);
+
gboolean ups;
ups = is_laptop ? FALSE : ups_found;
/// General Options Frame
box = xfpm_settings_general(channel,is_laptop,ups);
- gtk_box_pack_start (GTK_BOX (mainbox), box, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (allbox), box, FALSE, FALSE, 0);
/// Notebook container
nt = gtk_notebook_new();
@@ -1263,7 +1268,7 @@
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(nt),FALSE);
table = gtk_table_new(1,2,FALSE);
gtk_widget_show(table);
- gtk_box_pack_start (GTK_BOX (mainbox), table, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (allbox), table, FALSE, FALSE, 0);
view = xfpm_settings_tree_view(is_laptop,ups_found);
gtk_table_attach_defaults(GTK_TABLE(table),view,0,1,0,1);
gtk_widget_show(view);
@@ -1285,6 +1290,13 @@
/// Dpms settings && LCD brightness settings DPMS existence is checked above
box = xfpm_settings_monitor(channel,is_laptop,dpms_capable,lcd,ups);
gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
-
- return Dialog;
+
+ GtkWidget *plug;
+ if ( socket_id != 0 )
+ {
+ plug = gtk_plug_new(socket_id);
+ gtk_widget_show (plug);
+ gtk_widget_reparent(allbox,plug);
+ }
+ return socket_id == 0 ? Dialog : plug ;
}
Modified: xfce4-power-manager/trunk/src/xfpm-settings.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.h 2008-11-01 21:28:58 UTC (rev 5896)
+++ xfce4-power-manager/trunk/src/xfpm-settings.h 2008-11-01 22:05:20 UTC (rev 5897)
@@ -29,7 +29,8 @@
guint8 govs,
guint8 switch_buttons,
gboolean lcd,
- gboolean ups_found);
+ gboolean ups_found,
+ guint32 socket_id);
#endif /* __XFPM_SETTINGS_H */
More information about the Goodies-commits
mailing list