rpms/gnome-panel/devel gnome-panel-2.14.0-gpm-integration.patch, NONE, 1.1 gnome-panel-2.14.0-remove-duplicate-entry.patch, NONE, 1.1 .cvsignore, 1.39, 1.40 gnome-panel.spec, 1.117, 1.118 sources, 1.39, 1.40 gnome-panel-2.13.91-gpm-integration.patch, 1.5, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Mar 13 20:49:13 UTC 2006


Author: rstrode

Update of /cvs/dist/rpms/gnome-panel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv25704

Modified Files:
	.cvsignore gnome-panel.spec sources 
Added Files:
	gnome-panel-2.14.0-gpm-integration.patch 
	gnome-panel-2.14.0-remove-duplicate-entry.patch 
Removed Files:
	gnome-panel-2.13.91-gpm-integration.patch 
Log Message:
- patch frobbing
- po file fixing


gnome-panel-2.14.0-gpm-integration.patch:
 configure.in                      |    4 
 gnome-panel/Makefile.am           |    2 
 gnome-panel/panel-action-button.c |   57 +++-
 gnome-panel/panel-enums.h         |    1 
 gnome-panel/panel-logout.c        |   31 +-
 gnome-panel/panel-menu-items.c    |   26 +
 gnome-panel/panel-power-manager.c |  533 ++++++++++++++++++++++++++++++++++++++
 gnome-panel/panel-power-manager.h |   83 +++++
 8 files changed, 724 insertions(+), 13 deletions(-)

--- NEW FILE gnome-panel-2.14.0-gpm-integration.patch ---
--- gnome-panel-2.14.0/gnome-panel/Makefile.am.gpm-integration	2006-02-12 14:07:03.000000000 -0500
+++ gnome-panel-2.14.0/gnome-panel/Makefile.am	2006-03-13 15:30:00.000000000 -0500
@@ -116,6 +116,7 @@ panel_sources =			\
 	panel-addto.c		\
 	panel-logout.c		\
 	panel-gdm.c		\
+	panel-power-manager.c   \
 	$(EGG_RECENT_FILES_C)	\
 	$(NULL)
 
@@ -164,6 +165,7 @@ panel_headers =			\
 	panel-addto.h		\
 	panel-logout.h		\
 	panel-gdm.h		\
+	panel-power-manager.h	\
 	$(EGG_RECENT_FILES_H)	\
 	$(NULL)
 
--- gnome-panel-2.14.0/gnome-panel/panel-logout.c.gpm-integration	2006-03-13 15:30:00.000000000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-logout.c	2006-03-13 15:33:06.000000000 -0500
@@ -32,6 +32,7 @@
 
 #include "panel-logout.h"
 #include "panel-gdm.h"
+#include "panel-power-manager.h"
 #include "panel-session.h"
 
 #define PANEL_LOGOUT_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_TYPE_LOGOUT_DIALOG, PanelLogoutDialogPrivate))
@@ -49,6 +50,7 @@ enum {
 
 struct _PanelLogoutDialogPrivate {
 	PanelLogoutDialogType type;
+	PanelPowerManager *power_manager;
 
 	int                   timeout;
 	unsigned int          timeout_id;
@@ -60,7 +62,7 @@ static PanelLogoutDialog *current_dialog
 
 static void panel_logout_destroy (PanelLogoutDialog *logout_dialog,
 				  gpointer           data);
-static void panel_logout_response (GtkWidget *logout_dialog,
+static void panel_logout_response (PanelLogoutDialog *logout_dialog,
 				   guint      response_id,
 				   gpointer   data);
 
@@ -137,6 +139,8 @@ panel_logout_init (PanelLogoutDialog *lo
 	gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE);
 	gtk_window_stick (GTK_WINDOW (logout_dialog));
 
+	logout_dialog->priv->power_manager = panel_get_power_manager ();
+
 	g_signal_connect (logout_dialog, "destroy",
 			  G_CALLBACK (panel_logout_destroy), NULL);
 	g_signal_connect (logout_dialog, "response",
@@ -151,15 +155,21 @@ panel_logout_destroy (PanelLogoutDialog 
 		g_source_remove (logout_dialog->priv->timeout_id);
 	logout_dialog->priv->timeout_id = 0;
 
+	g_object_unref (logout_dialog->priv->power_manager);
+	logout_dialog->priv->power_manager = NULL;
+
 	current_dialog = NULL;
 }
 
 static void
-panel_logout_response (GtkWidget *logout_dialog,
+panel_logout_response (PanelLogoutDialog *logout_dialog,
 		       guint      response_id,
 		       gpointer   data)
 {
-	gtk_widget_destroy (logout_dialog);
+	PanelPowerManager *power_manager;
+
+	power_manager = g_object_ref (logout_dialog->priv->power_manager);
+	gtk_widget_destroy (GTK_WIDGET (logout_dialog));
 
 	switch (response_id) {
 	case GTK_RESPONSE_CANCEL:
@@ -180,11 +190,15 @@ panel_logout_response (GtkWidget *logout
 		panel_session_request_logout ();
 		break;
 	case PANEL_LOGOUT_RESPONSE_STD:
-		gdm_set_logout_action (GDM_LOGOUT_ACTION_SUSPEND);
-		panel_session_request_logout ();
+	        if (gdm_supports_logout_action (GDM_LOGOUT_ACTION_SUSPEND)) 
+	          gdm_set_logout_action (GDM_LOGOUT_ACTION_SUSPEND);
+	        else if (panel_power_manager_can_sleep_and_power_down (power_manager))
+	          panel_power_manager_request_sleep_and_power_down (power_manager);
+
 		break;
 	case PANEL_LOGOUT_RESPONSE_STR:
-		//FIXME
+	        if (panel_power_manager_can_sleep (power_manager))
+	          panel_power_manager_request_sleep (power_manager);
 		break;
 	case GTK_RESPONSE_NONE:
 	case GTK_RESPONSE_DELETE_EVENT:
@@ -192,6 +206,7 @@ panel_logout_response (GtkWidget *logout
 	default:
 		g_assert_not_reached ();
 	}
+	g_object_unref (power_manager);
 }
 
 static gboolean
@@ -323,10 +338,10 @@ panel_logout_new (PanelLogoutDialogType 
 		logout_dialog->priv->default_response = PANEL_LOGOUT_RESPONSE_SHUTDOWN;
 		//FIXME see previous FIXME
 
-#if 0
+#if 1
 		/* TODO: disable this for 2.14 since this is stupid (the user
 		 * don't want to log out of his session when suspending) */
-		if (gdm_supports_logout_action (GDM_LOGOUT_ACTION_SUSPEND))
+		if (panel_power_manager_can_sleep_and_power_down (logout_dialog->priv->power_manager))
 			gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
 					       _("_Suspend"),
 					       PANEL_LOGOUT_RESPONSE_STD);
--- gnome-panel-2.14.0/gnome-panel/panel-action-button.c.gpm-integration	2006-02-12 07:36:56.000000000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-action-button.c	2006-03-13 15:30:00.000000000 -0500
@@ -47,10 +47,16 @@
 #include "panel-lockdown.h"
 #include "panel-logout.h"
 #include "panel-compatibility.h"
+#include "panel-power-manager.h"
 #include "panel-gdm.h"
 
 #define PANEL_ACTION_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_TYPE_ACTION_BUTTON, PanelActionButtonPrivate))
 
+static gboolean panel_action_can_suspend (void);
+static gboolean panel_action_logout_is_disabled (void);
+static gboolean panel_action_suspend_is_disabled (void);
+static void panel_action_suspend (GtkWidget *widget);
+
 enum {
 	PROP_0,
 	PROP_ACTION_TYPE,
@@ -77,6 +83,7 @@ static GConfEnumStringPair panel_action_
 	{ PANEL_ACTION_FORCE_QUIT,     "force-quit"     },
 	{ PANEL_ACTION_CONNECT_SERVER, "connect-server" },
 	{ PANEL_ACTION_SHUTDOWN,       "shutdown"       },
+	{ PANEL_ACTION_SUSPEND,        "suspend"       },
 	/* compatibility with GNOME < 2.13.90 */
 	{ PANEL_ACTION_SCREENSHOT,     "screenshot"     },
 	{ 0,                           NULL             },
@@ -167,12 +174,47 @@ panel_action_shutdown (GtkWidget *widget
 }
 
 static gboolean
+panel_action_can_suspend (void)
+{
+  PanelPowerManager *manager;
+  gboolean can_suspend;
+
+  manager = panel_get_power_manager ();
+
+  can_suspend = panel_power_manager_can_sleep (manager);
+
+  g_object_unref (manager);
+
+  return can_suspend;
+}
+
+static gboolean
 panel_action_shutdown_is_disabled (void)
 {
 	return (panel_lockdown_get_disable_log_out() ||
+		/* panel_action_can_suspend() || */
 		!gdm_supports_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN));
 }
 
+
+static gboolean
+panel_action_suspend_is_disabled (void)
+{
+  return !panel_action_can_suspend ();
+}
+
+static void
+panel_action_suspend (GtkWidget *widget)
+{
+  PanelPowerManager *manager;
+
+  manager = panel_get_power_manager ();
+
+  panel_power_manager_request_sleep (manager);
+
+  g_object_unref (manager);
+}
+
 /* Run Application
  */
 static void
@@ -308,8 +350,8 @@ static PanelAction actions [] = {
 		"gospanel-20",
 		"ACTION:logout:NEW",
 		panel_action_logout, NULL, NULL,
-		panel_lockdown_get_disable_log_out
-	},
+                panel_lockdown_get_disable_log_out
+        },
 	{
 		PANEL_ACTION_RUN,
 		PANEL_RUN_ICON,
@@ -358,6 +400,16 @@ static PanelAction actions [] = {
 		panel_action_shutdown, NULL, NULL,
 		panel_action_shutdown_is_disabled
 	},
+        {
+                PANEL_ACTION_SUSPEND,
+                "screensaver",
+                N_("Suspend"),
+                N_("Suspend the computer"),
+                "gospanel-20",
+                "ACTION:suspend:NEW",
+                panel_action_suspend, NULL, NULL,
+                panel_action_suspend_is_disabled
+	},
 	/* deprecated actions */
 	{
 		PANEL_ACTION_SCREENSHOT,
@@ -861,6 +913,7 @@ panel_action_button_invoke_menu (PanelAc
 		actions [button->priv->type].invoke_menu (button, callback_name);
 }
 
+
 gboolean
 panel_action_button_load_from_drag (PanelToplevel *toplevel,
 				    int            position,
--- /dev/null	2006-03-13 10:25:56.453532000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-power-manager.h	2006-03-13 15:30:00.000000000 -0500
@@ -0,0 +1,83 @@
+/* panel-power-manager.h - functions for powering down, restarting, and
+ *                         suspending the computer
+ *
+ * Copyright (C) 2006 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.  
+ */
+#ifndef PANEL_POWER_MANAGER_H
+#define PANEL_POWER_MANAGER_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+#define PANEL_TYPE_POWER_MANAGER (panel_power_manager_get_type ())
+#define PANEL_POWER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANEL_TYPE_POWER_MANAGER, PanelPowerManager))
+#define PANEL_POWER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANEL_TYPE_POWER_MANAGER, PanelPowerManagerClass))
+#define PANEL_IS_POWER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANEL_TYPE_POWER_MANAGER))
+#define PANEL_IS_POWER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANEL_TYPE_POWER_MANAGER))
+#define PANEL_POWER_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PANEL_TYPE_POWER_MANAGER, PanelPowerManagerClass))
+#define PANEL_POWER_MANAGER_ERROR (panel_power_manager_error_quark ())
+typedef struct _PanelPowerManager PanelPowerManager;
+typedef struct _PanelPowerManagerClass PanelPowerManagerClass;
+typedef struct _PanelPowerManagerPrivate PanelPowerManagerPrivate;
+typedef struct _PanelPowerManagerRequest PanelPowerManagerRequest;
+typedef enum _PanelPowerManagerError PanelPowerManagerError;
+
+struct _PanelPowerManager
+{
+  GObject parent;
+
+  /*< private > */
+  PanelPowerManagerPrivate *priv;
+};
+
+struct _PanelPowerManagerClass
+{
+  GObjectClass parent_class;
+
+  /* signals */
+  void (* request_failed) (PanelPowerManager *manager, 
+	                   GError *error);
+};
+
+enum _PanelPowerManagerError
+{
+  PANEL_POWER_MANAGER_ERROR_SLEEPING = 0,
+  PANEL_POWER_MANAGER_ERROR_SLEEPING_AND_POWERING_DOWN
+};
+
+GType panel_power_manager_get_type (void);
+GQuark panel_power_manager_error_quark (void);
+
+PanelPowerManager *panel_power_manager_new (void) G_GNUC_MALLOC;
+
+gboolean panel_power_manager_can_sleep (PanelPowerManager *manager);
+gboolean panel_power_manager_can_sleep_and_power_down (PanelPowerManager *manager);
+gboolean panel_power_manager_can_power_down (PanelPowerManager *manager);
+gboolean panel_power_manager_can_restart (PanelPowerManager *manager);
+
+PanelPowerManagerRequest *panel_power_manager_request_sleep (PanelPowerManager *manager);
+PanelPowerManagerRequest *panel_power_manager_request_sleep_and_power_down (PanelPowerManager *manager);
+
+void panel_power_manager_cancel_request (PanelPowerManager *manager, 
+	                                 PanelPowerManagerRequest *request);
+
+
+PanelPowerManager *panel_get_power_manager (void);
+G_END_DECLS
+#endif /* PANEL_POWER_MANAGER_H */
--- gnome-panel-2.14.0/gnome-panel/panel-enums.h.gpm-integration	2006-01-22 07:08:24.000000000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-enums.h	2006-03-13 15:30:00.000000000 -0500
@@ -96,6 +96,7 @@ typedef enum {
 	PANEL_ACTION_FORCE_QUIT,
 	PANEL_ACTION_CONNECT_SERVER,
         PANEL_ACTION_SHUTDOWN,
+	PANEL_ACTION_SUSPEND,
 	/* compatibility with GNOME < 2.13.90 */
         PANEL_ACTION_SCREENSHOT,
         PANEL_ACTION_LAST
--- gnome-panel-2.14.0/gnome-panel/panel-menu-items.c.gpm-integration	2006-03-13 15:30:00.000000000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-menu-items.c	2006-03-13 15:30:00.000000000 -0500
@@ -49,6 +49,7 @@
 #include "panel-recent.h"
 #include "panel-stock-icons.h"
 #include "panel-util.h"
+#include "panel-power-manager.h"
 
 #define BOOKMARKS_FILENAME      ".gtk-bookmarks"
 #define DESKTOP_IS_HOME_DIR_DIR "/apps/nautilus/preferences"
@@ -1011,8 +1012,21 @@ panel_desktop_menu_item_new (gboolean us
 
 	menuitem->priv->append_lock_logout = append_lock_logout;
 	if (append_lock_logout)
-		panel_lockdown_notify_add (G_CALLBACK (panel_desktop_menu_item_recreate_menu),
-					   menuitem);
+	  {
+	    PanelPowerManager *manager;
+
+	    panel_lockdown_notify_add (G_CALLBACK (panel_desktop_menu_item_recreate_menu),
+	                               menuitem);
+
+	    manager = panel_get_power_manager ();
+
+	    g_signal_connect_swapped (manager, "notify::is-connected",
+	                              G_CALLBACK
+	                              (panel_desktop_menu_item_recreate_menu), 
+	                              menuitem);
+
+	        g_object_unref (manager);
+	  }
 
 	menuitem->priv->menu = panel_desktop_menu_item_create_menu (menuitem);
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
@@ -1118,6 +1132,14 @@ panel_menu_items_append_lock_logout (Gtk
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	}
 
+	item = panel_menu_items_create_action_item (PANEL_ACTION_SUSPEND);
+	if (item != NULL) {
+		if (!separator_inserted)
+			add_menu_separator (menu);
+
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+	}
+
 	item = panel_menu_items_create_action_item (PANEL_ACTION_SHUTDOWN);
 	if (item != NULL) {
 		if (!separator_inserted)
--- /dev/null	2006-03-13 10:25:56.453532000 -0500
+++ gnome-panel-2.14.0/gnome-panel/panel-power-manager.c	2006-03-13 15:30:00.000000000 -0500
@@ -0,0 +1,533 @@
+/* panel-power-manager.c - functions for powering down, restarting, and
+ *                         suspending the computer
+ *
+ * Copyright (C) 2006 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.  
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif 
+
+#include "panel-power-manager.h"
+
+#include <errno.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <glib/gi18n.h>
+
+#include <dbus/dbus-glib.h>
+
+struct _PanelPowerManagerPrivate
+{
+  DBusGConnection *dbus_connection;
+  DBusGProxy      *bus_proxy;
+  DBusGProxy      *gpm_proxy;
+  guint32          is_connected : 1;
+};
+
+
+static void panel_power_manager_finalize (GObject *object);
+static void panel_power_manager_class_install_signals (PanelPowerManagerClass * manager_class);
+static void
+panel_power_manager_class_install_properties (PanelPowerManagerClass *
+					      manager_class);
+
+static void panel_power_manager_get_property (GObject * object,
+					      guint prop_id,
+					      GValue * value,
+					      GParamSpec * pspec);
+
+static gboolean panel_power_manager_ensure_gpm_connection (PanelPowerManager *manager,
+	                                                   GError      **error);
+enum
+{
+  PROP_0 = 0,
+  PROP_IS_CONNECTED
+};
+
+enum
+{
+  REQUEST_FAILED = 0,
+  NUMBER_OF_SIGNALS
+};
+
+static guint panel_power_manager_signals[NUMBER_OF_SIGNALS];
+
+G_DEFINE_TYPE (PanelPowerManager, panel_power_manager, G_TYPE_OBJECT);
+
+static void
+panel_power_manager_class_init (PanelPowerManagerClass * manager_class)
+{
+  GObjectClass *object_class;
+
+  object_class = G_OBJECT_CLASS (manager_class);
+
+  object_class->finalize = panel_power_manager_finalize;
+
+  panel_power_manager_class_install_properties (manager_class);
+  panel_power_manager_class_install_signals (manager_class);
+
+  g_type_class_add_private (manager_class, sizeof (PanelPowerManagerPrivate));
+}
+
+static void
+panel_power_manager_class_install_signals (PanelPowerManagerClass *
+					   manager_class)
+{
+  GObjectClass *object_class;
+
+  object_class = G_OBJECT_CLASS (manager_class);
+
+  panel_power_manager_signals[REQUEST_FAILED] =
+    g_signal_new ("request-failed", G_OBJECT_CLASS_TYPE (object_class),
+		  G_SIGNAL_RUN_LAST,
+		  G_STRUCT_OFFSET (PanelPowerManagerClass, request_failed),
+		  NULL, NULL, g_cclosure_marshal_VOID__POINTER, 
+	          G_TYPE_NONE, 1, G_TYPE_POINTER);
+  manager_class->request_failed = NULL;
+}
+
+static void
+panel_power_manager_class_install_properties (PanelPowerManagerClass *
+					      manager_class)
+{
+  GObjectClass *object_class;
+  GParamSpec *param_spec;
+
+  object_class = G_OBJECT_CLASS (manager_class);
+  object_class->get_property = panel_power_manager_get_property;
+
+  param_spec = g_param_spec_boolean ("is-connected", _("Is connected"),
+	                             _("whether the the panel is connected "
+	                               "to the power manager"),
+	                             FALSE,
+	                             G_PARAM_READABLE);
+  g_object_class_install_property (object_class, PROP_IS_CONNECTED, param_spec);
+}
+
+static void
+panel_power_manager_on_name_owner_changed (DBusGProxy *bus_proxy,
+	                                   const char *name, 
+	                                   const char *prev_owner,
+	                                   const char *new_owner,
+	                                   PanelPowerManager *manager)
+{
+  gboolean is_online;
+
+  is_online = strcmp (new_owner, "") != 0;
+
+  if (strcmp (name, "org.gnome.PowerManager") != 0)
+    return;
+
+  if (manager->priv->gpm_proxy != NULL)
+    {
+      g_object_unref (manager->priv->gpm_proxy);
+      manager->priv->gpm_proxy = NULL;
+    }
+
+  panel_power_manager_ensure_gpm_connection (manager, NULL);
+}
+
+static gboolean
+panel_power_manager_ensure_gpm_connection (PanelPowerManager  *manager, 
+	                            GError            **error)
+{
+  GError *connection_error;
+  gboolean is_connected;
+
+  connection_error = NULL;
+  if (manager->priv->dbus_connection == NULL)
+    {
+      manager->priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SESSION, 
+	                                               &connection_error);
+
+      if (manager->priv->dbus_connection == NULL)
+	{
+	  g_propagate_error (error, connection_error);
+	  is_connected = FALSE;
+	  goto out;
+	}
+    }
+
+  g_assert (connection_error == NULL);
+
+  if (manager->priv->bus_proxy == NULL)
+    {
+      manager->priv->bus_proxy = 
+	  dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection,
+	                                   DBUS_SERVICE_DBUS,
+	                                   DBUS_PATH_DBUS,
+	                                   DBUS_INTERFACE_DBUS,
+	                                   &connection_error);
+
+      if (manager->priv->bus_proxy == NULL)
+	{
+	  g_propagate_error (error, connection_error);
+	  is_connected = FALSE;
+	  goto out;
+	}
+
+      dbus_g_proxy_add_signal (manager->priv->bus_proxy, 
+	                       "NameOwnerChanged",
+	                       G_TYPE_STRING,
+	                       G_TYPE_STRING,
+	                       G_TYPE_STRING,
+	                       G_TYPE_INVALID);
+      dbus_g_proxy_connect_signal (manager->priv->bus_proxy,
+	                           "NameOwnerChanged",
+	                           G_CALLBACK (panel_power_manager_on_name_owner_changed), 
+	                           manager, NULL);
+    }
+
+  g_assert (connection_error == NULL);
+
+  if (manager->priv->gpm_proxy == NULL)
+    {
+      manager->priv->gpm_proxy = 
+	  dbus_g_proxy_new_for_name_owner (manager->priv->dbus_connection,
+	                                   "org.gnome.PowerManager",
+	                                   "/org/gnome/PowerManager",
+	                                   "org.gnome.PowerManager",
+	                                   &connection_error);
+
+      if (manager->priv->gpm_proxy == NULL)
+	{
+	  g_propagate_error (error, connection_error);
+	  is_connected = FALSE;
+	  goto out;
+	}
+    }
+  is_connected = TRUE;
+
+out:
+  if (manager->priv->is_connected != is_connected)
+    {
+      manager->priv->is_connected = is_connected;
+      g_object_notify (G_OBJECT (manager), "is-connected"); 
+    }
+
+  if (!is_connected)
+    {
+      if (manager->priv->dbus_connection == NULL)
+	{
+	  if (manager->priv->bus_proxy != NULL)
+	    {
+	      g_object_unref (manager->priv->bus_proxy);
+	      manager->priv->bus_proxy = NULL;
+	    }
+
+	  if (manager->priv->gpm_proxy != NULL)
+	    {
+	      g_object_unref (manager->priv->gpm_proxy);
+	      manager->priv->gpm_proxy = NULL;
+	    }
+	}
+      else if (manager->priv->bus_proxy == NULL)
+	{
+	  if (manager->priv->gpm_proxy != NULL)
+	    {
+	      g_object_unref (manager->priv->gpm_proxy);
+	      manager->priv->gpm_proxy = NULL;
+	    }
+	}
+    }
+
+  return is_connected;
+}
+
+static void
+panel_power_manager_init (PanelPowerManager *manager)
+{
+  GError *error;
+
+  manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager,
+					       PANEL_TYPE_POWER_MANAGER,
+					       PanelPowerManagerPrivate);
+
+  manager->priv->dbus_connection = NULL;
+  manager->priv->bus_proxy = NULL;
+  manager->priv->gpm_proxy = NULL;
+  manager->priv->is_connected = FALSE;
+
+  error = NULL;
+  if (!panel_power_manager_ensure_gpm_connection (manager, &error))
+    {
+      g_message ("could not connect to power manager - %s", error->message);
+      g_error_free (error);
+    }
+}
+
+static void
+panel_power_manager_finalize (GObject * object)
+{
+  PanelPowerManager *manager;
+  GObjectClass *parent_class;
+
+  manager = PANEL_POWER_MANAGER (object);
+
+  parent_class = G_OBJECT_CLASS (panel_power_manager_parent_class);
+
+  if (parent_class->finalize != NULL)
+    parent_class->finalize (object);
+}
+
+static void
+panel_power_manager_get_property (GObject * object,
+				  guint prop_id,
+				  GValue * value, GParamSpec * pspec)
+{
+  PanelPowerManager *manager = PANEL_POWER_MANAGER (object);
+
+  switch (prop_id)
+    {
+    case PROP_IS_CONNECTED:
+      g_value_set_boolean (value, manager->priv->is_connected);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+GQuark
+panel_power_manager_error_quark (void)
+{
+  static GQuark error_quark = 0;
+
+  if (error_quark == 0)
+    error_quark = g_quark_from_static_string ("panel-power-manager-error");
+
+  return error_quark;
+}
+
+PanelPowerManager *
+panel_power_manager_new (void)
+{
+  PanelPowerManager *manager;
+
+  manager = g_object_new (PANEL_TYPE_POWER_MANAGER, NULL);
+
+  return manager;
+}
+
+gboolean 
+panel_power_manager_can_sleep (PanelPowerManager *manager)
+{
+  GError *error;
+  gboolean can_sleep;
+
+  error = NULL;
+
+  if (!panel_power_manager_ensure_gpm_connection (manager, &error))
+    {
+      g_message ("could not connect to power manager - %s", error->message);
+      g_error_free (error);
+      return FALSE;
+    }
+
+  can_sleep = FALSE;
+  if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "CanSuspend", &error,
+	                  G_TYPE_INVALID,
+	                  G_TYPE_BOOLEAN, &can_sleep, G_TYPE_INVALID)) 
+    {
+      if (error != NULL)
+	{
+	  g_message ("could not ask power manager if user can suspend - %s",
+	             error->message);
+	  g_error_free (error);
+	}
+      can_sleep = FALSE;
+    }
+
+  return can_sleep;
+}
+
+gboolean 
+panel_power_manager_can_sleep_and_power_down (PanelPowerManager *manager)
+{
+  GError *error;
+  gboolean can_sleep_and_power_down;
+
+  error = NULL;
+
+  if (!panel_power_manager_ensure_gpm_connection (manager, &error))
+    {
+      g_message ("could not connect to power manager - %s", error->message);
+      g_error_free (error);
+      return FALSE;
+    }
+
+  can_sleep_and_power_down = FALSE;
+  if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "CanHibernate", &error,
+	                  G_TYPE_INVALID,
+	                  G_TYPE_BOOLEAN, &can_sleep_and_power_down, 
+	                  G_TYPE_INVALID)) 
+    {
+      if (error != NULL)
+	{
+	  g_message ("could not ask power manager if user can suspend - %s",
+	             error->message);
+	  g_error_free (error);
+	}
+      can_sleep_and_power_down = FALSE;
+    }
+
+  return can_sleep_and_power_down;
+}
+
+PanelPowerManagerRequest *
+panel_power_manager_request_sleep (PanelPowerManager *manager)
+{
+  GError *error;
+
+  error = NULL;
+
+  if (!panel_power_manager_ensure_gpm_connection (manager, &error))
+    {
+      g_warning ("could not connect to power manager - %s", error->message);
+      g_error_free (error);
+      return NULL;
+    }
+
+  if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "Suspend", &error,
+	                  G_TYPE_INVALID, G_TYPE_INVALID) && (error != NULL)) 
+    {
+
+      GError *call_error;
+      g_warning ("could not ask power manager to suspend - %s",
+	         error->message);
+      call_error = g_error_new_literal (PANEL_POWER_MANAGER_ERROR,
+	                                PANEL_POWER_MANAGER_ERROR_SLEEPING,
+	                                error->message);
+      g_error_free (error);
+      g_signal_emit (G_OBJECT (manager),
+	             panel_power_manager_signals[REQUEST_FAILED],
+	             0, call_error);
+      g_error_free (call_error);
+    }
+
+  return (PanelPowerManagerRequest *) !NULL;
+}
+
+PanelPowerManagerRequest *
+panel_power_manager_request_sleep_and_power_down (PanelPowerManager *manager)
+{
+  GError *error;
+
+  error = NULL;
+
+  if (!panel_power_manager_ensure_gpm_connection (manager, &error))
+    {
+      g_warning ("could not connect to power manager - %s", error->message);
+      g_error_free (error);
+      return NULL;
+    }
+
+  if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "Hibernate", &error,
+	                  G_TYPE_INVALID, G_TYPE_INVALID) && (error != NULL)) 
+    {
+      GError *call_error;
+
+      g_warning ("could not ask power manager to hibernate - %s",
+	         error->message);
+      call_error = g_error_new_literal (PANEL_POWER_MANAGER_ERROR,
+	                                PANEL_POWER_MANAGER_ERROR_SLEEPING_AND_POWERING_DOWN,
+	                                error->message);
+      g_error_free (error);
+      g_signal_emit (G_OBJECT (manager),
+	             panel_power_manager_signals[REQUEST_FAILED],
+	             0, call_error);
+      g_error_free (call_error);
+      return NULL;
+    }
+
+  return (PanelPowerManagerRequest *) !NULL;
+}
+
+void
+panel_power_manager_cancel_request (PanelPowerManager *manager,
+	                            PanelPowerManagerRequest *request)
+{
+}
+
+PanelPowerManager *
+panel_get_power_manager (void)
+{
+  static PanelPowerManager *manager = NULL;
+
+  if (manager == NULL)
+    manager = panel_power_manager_new ();
+
+  return g_object_ref (manager);
+}
+
+
+#ifdef PANEL_POWER_MANAGER_ENABLE_TEST
+
+#include <stdio.h>
+#include <glib.h>
+
+int
+main (int argc, char **argv)
+{
+  PanelPowerManager *manager;
+  int exit_code;
+
+  g_log_set_always_fatal (G_LOG_LEVEL_ERROR
+			  | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING);
+
+  g_type_init ();
+
+  g_print ("creating instance of 'power manager' object... ");
+  manager = panel_power_manager_new ();
+  g_print ("done\n");
+
+  g_print ("checking if user can put machine to sleep... ");
+  if (panel_power_manager_can_sleep (manager))
+      g_print ("yes\n");
+  else
+      g_print ("no\n");
+
+  g_print ("checking if user can hibernate machine... ");
+  if (panel_power_manager_can_sleep_and_power_down (manager))
+      g_print ("yes\n");
+  else
+      g_print ("no\n");
+
+  g_print ("attempting to suspend machine... ");
+  if (panel_power_manager_request_sleep (manager) != NULL)
+      g_print ("yes\n");
+  else
+      g_print ("no\n");
+
+  g_print ("attempting to hibernate machine... ");
+  if (panel_power_manager_request_sleep_and_power_down (manager) != NULL)
+      g_print ("yes\n");
+  else
+      g_print ("no\n");
+
+  g_print ("destroying previously created 'power manager' object... ");
+  g_object_unref (manager);
+  g_print ("done\n");
+
+  exit_code = 0;
+
+  return exit_code;
+}
+#endif /* PANEL_POWER_MANAGER_ENABLE_TEST */
--- gnome-panel-2.14.0/configure.in.gpm-integration	2006-03-13 14:47:14.000000000 -0500
+++ gnome-panel-2.14.0/configure.in	2006-03-13 15:30:00.000000000 -0500
@@ -58,10 +58,12 @@ LIBGNOME_MENU_REQUIRED=2.11.1
 LIBECAL_REQUIRED=0.0.97
 LIBEDATASERVERUI_REQUIRED=1.2.0
 CAIRO_REQUIRED=1.0.0
+DBUS_REQUIRED=0.60
+DBUS_GLIB_REQUIRED=0.60
 
 dnl pkg-config dependency checks
 
-PKG_CHECK_MODULES(PANEL, ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED)
+PKG_CHECK_MODULES(PANEL, ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_GLIB_REQUIRED)
 AC_SUBST(PANEL_CFLAGS)
 AC_SUBST(PANEL_LIBS)
 

gnome-panel-2.14.0-remove-duplicate-entry.patch:
 lt.po |    3 ---
 1 files changed, 3 deletions(-)

--- NEW FILE gnome-panel-2.14.0-remove-duplicate-entry.patch ---
--- gnome-panel-2.14.0/po/lt.po.remove-duplicate-entry	2006-03-13 15:43:09.000000000 -0500
+++ gnome-panel-2.14.0/po/lt.po	2006-03-13 15:43:12.000000000 -0500
@@ -2848,6 +2848,3 @@ msgstr "Įt_aisas:"
 #: ../libpanel-applet/panel-test-applets.glade.h:5
 msgid "_Prefs Dir:"
 msgstr "_Nustatymų aplankas:"
-
-msgid "System"
-msgstr "Sistema"


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gnome-panel/devel/.cvsignore,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- .cvsignore	15 Feb 2006 05:26:02 -0000	1.39
+++ .cvsignore	13 Mar 2006 20:49:10 -0000	1.40
@@ -1,11 +1 @@
-gnome-panel-2.10.1.tar.bz2
-gnome-panel-2.11.4.tar.bz2
-gnome-panel-2.11.90.tar.bz2
-gnome-panel-2.12.1.tar.bz2
-gnome-panel-2.12.0.tar.bz2
-gnome-panel-2.13.2.tar.bz2
-gnome-panel-2.13.3.tar.bz2
-gnome-panel-2.13.4.tar.bz2
-gnome-panel-2.13.5.tar.bz2
-gnome-panel-2.13.90.tar.bz2
-gnome-panel-2.13.91.tar.bz2
+gnome-panel-2.14.0.tar.bz2


Index: gnome-panel.spec
===================================================================
RCS file: /cvs/dist/rpms/gnome-panel/devel/gnome-panel.spec,v
retrieving revision 1.117
retrieving revision 1.118
diff -u -r1.117 -r1.118
--- gnome-panel.spec	28 Feb 2006 16:10:17 -0000	1.117
+++ gnome-panel.spec	13 Mar 2006 20:49:10 -0000	1.118
@@ -19,8 +19,8 @@
 
 Summary: GNOME panel
 Name: gnome-panel
-Version: 2.13.91
-Release: 5
+Version: 2.14.0
+Release: 1
 URL: http://www.gnome.org
 Source0: ftp://ftp.gnome.org/pub/GNOME/pre-gnome2/sources/gnome-panel/%{name}-%{version}.tar.bz2
 Source1: redhat-panel-default-setup.entries
@@ -70,9 +70,10 @@
 Patch4: gnome-panel-2.13.2-rename-system-menu.patch
 Patch5: gnome-panel-2.12.1-about-fedora.patch
 Patch6: gnome-panel-2.13.5-switch-user.patch
-Patch7: gnome-panel-2.13.91-gpm-integration.patch
+Patch7: gnome-panel-2.14.0-gpm-integration.patch
 Patch8: gnome-panel-2.13.90-use-beagle.patch
 Patch9: gnome-panel-2.13.91-ignore-unknown-options.patch
+Patch10: gnome-panel-2.14.0-remove-duplicate-entry.patch
 
 Conflicts: gnome-power-manager < 2.13.5.0.20060207-1
 
@@ -103,6 +104,7 @@
 %patch7 -p1 -b .gpm-integration
 %patch8 -p1 -b .use-beagle
 %patch9 -p1 -b .ignore-unknown-options
+%patch10 -p1 -b .remove-duplicate-entry
 
 cp -f %{SOURCE1} gnome-panel/panel-default-setup.entries
 cp -f %{SOURCE2} m4
@@ -219,6 +221,9 @@
 %{_datadir}/gtk-doc
 
 %changelog
+* Mon Mar 13 2006 Ray Strode <rstrode at redhat.com> - 2.14.0-1
+- update to 2.14.0
+
 * Tue Feb 28 2006 Karsten Hopp <karsten at redhat.de> 2.13.91-5
 - Buildrequires: ORBit2-devel, which, libxml2-python, libX11-devel,
   libXt-devel, gnome-doc-utils, dbus-devel


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gnome-panel/devel/sources,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- sources	15 Feb 2006 05:26:02 -0000	1.39
+++ sources	13 Mar 2006 20:49:10 -0000	1.40
@@ -1 +1 @@
-6a23bffd45e29b21c727c01677798675  gnome-panel-2.13.91.tar.bz2
+85a2815aefd7d3c3acf93c588149b75b  gnome-panel-2.14.0.tar.bz2


--- gnome-panel-2.13.91-gpm-integration.patch DELETED ---




More information about the fedora-cvs-commits mailing list