Sophie

Sophie

distrib > Mandriva > mes5 > x86_64 > by-pkgid > d13d10446c9a0ab23779903364281523 > files > 3

gnome-panel-2.24.0-1mdv2009.0.src.rpm

diff -p -up gnome-panel-2.23.6/gnome-panel/main.c.suspend gnome-panel-2.23.6/gnome-panel/main.c
--- gnome-panel-2.23.6/gnome-panel/main.c.suspend	2008-08-04 22:43:10.000000000 +0200
+++ gnome-panel-2.23.6/gnome-panel/main.c	2008-08-05 10:24:12.000000000 +0200
@@ -53,6 +53,7 @@ main (int argc, char **argv)
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	textdomain (GETTEXT_PACKAGE);
+	bind_textdomain_codeset ("gtk+mdk", "UTF-8");
 
 	context = g_option_context_new ("");
 
diff -p -up gnome-panel-2.23.6/gnome-panel/panel-action-button.c.suspend gnome-panel-2.23.6/gnome-panel/panel-action-button.c
--- gnome-panel-2.23.6/gnome-panel/panel-action-button.c.suspend	2008-08-05 10:24:12.000000000 +0200
+++ gnome-panel-2.23.6/gnome-panel/panel-action-button.c	2008-08-05 10:24:12.000000000 +0200
@@ -84,6 +84,7 @@ static GConfEnumStringPair panel_action_
 	{ PANEL_ACTION_SHUTDOWN,       "shutdown"       },
 	/* compatibility with GNOME < 2.13.90 */
 	{ PANEL_ACTION_SCREENSHOT,     "screenshot"     },
+	{ PANEL_ACTION_SUSPEND,        "suspend"        },
 	{ 0,                           NULL             },
 };
 
@@ -272,6 +273,32 @@ panel_action_connect_server (GtkWidget *
 	}
 }
 
+/* Suspend to disk
+ */
+static void
+panel_action_suspend (GtkWidget *widget)
+{
+	GtkWidget *dialog;
+	gint result;
+
+	dialog = gtk_message_dialog_new (NULL,
+                                  0,
+                                  GTK_MESSAGE_WARNING,
+                                  GTK_BUTTONS_OK_CANCEL,
+                                  dgettext("gtk+mdk","Do you really want to suspend to disk?"));
+	result = gtk_dialog_run (GTK_DIALOG (dialog));
+        gtk_widget_destroy (dialog);
+
+  	switch (result) {
+	      	case GTK_RESPONSE_OK:
+			gdk_spawn_command_line_on_screen (gtk_widget_get_screen (widget), 
+					"pmsuspend", NULL);
+	        	break;
+	      	default:
+        	 	break;
+    	}
+}
+
 typedef struct {
 	PanelActionButtonType   type;
 	char                   *icon_name;
@@ -372,6 +399,15 @@ static PanelAction actions [] = {
 		PANEL_ACTION_SCREENSHOT,
 		NULL, NULL, NULL, NULL, NULL,
 		NULL, NULL, NULL, NULL
+	},
+	{
+		PANEL_ACTION_SUSPEND,
+		"gnome-shutdown", 
+		N_("Suspend To Disk"),
+		N_("Suspend To Disk"), 
+		"gospanel-563", 
+		"ACTION:suspend:NEW",
+		panel_action_suspend, NULL, NULL, NULL
 	}
 };
 
@@ -420,6 +456,9 @@ panel_action_get_text (PanelActionButton
 {
 	g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL);
 
+	if (type == PANEL_ACTION_SUSPEND)
+		return dgettext("gtk+mdk",actions[type].text);
+
 	return _(actions[type].text);
 }
 
@@ -428,6 +467,9 @@ panel_action_get_tooltip (PanelActionBut
 {
 	g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL);
 
+	if (type == PANEL_ACTION_SUSPEND)
+		return dgettext("gtk+mdk",actions[type].tooltip);
+
 	return _(actions[type].tooltip);
 }
 
diff -p -up gnome-panel-2.23.6/gnome-panel/panel-enums.h.suspend gnome-panel-2.23.6/gnome-panel/panel-enums.h
--- gnome-panel-2.23.6/gnome-panel/panel-enums.h.suspend	2008-08-04 22:43:10.000000000 +0200
+++ gnome-panel-2.23.6/gnome-panel/panel-enums.h	2008-08-05 10:24:12.000000000 +0200
@@ -98,6 +98,7 @@ typedef enum {
 	PANEL_ACTION_SHUTDOWN,
 	/* compatibility with GNOME < 2.13.90 */
         PANEL_ACTION_SCREENSHOT,
+        PANEL_ACTION_SUSPEND,
         PANEL_ACTION_LAST
 } PanelActionButtonType;
 
diff -p -up gnome-panel-2.23.6/gnome-panel/panel-menu-items.c.suspend gnome-panel-2.23.6/gnome-panel/panel-menu-items.c
--- gnome-panel-2.23.6/gnome-panel/panel-menu-items.c.suspend	2008-08-04 22:43:10.000000000 +0200
+++ gnome-panel-2.23.6/gnome-panel/panel-menu-items.c	2008-08-05 10:27:46.000000000 +0200
@@ -936,6 +936,7 @@ panel_place_menu_item_create_menu (Panel
 	char      *name;
 	char      *uri;
 	GFile     *file;
+	gboolean    separator_inserted = FALSE;
 
 	places_menu = panel_create_menu ();
 
@@ -1005,6 +1006,24 @@ panel_place_menu_item_create_menu (Panel
 			gtk_menu_shell_append (GTK_MENU_SHELL (places_menu),
 					       item);
 	}
+ 
+	if (panel_is_program_in_path ("pmsuspend") && 
+			(g_file_test("/proc/acpi", G_FILE_TEST_EXISTS) || g_file_test("/proc/apm",G_FILE_TEST_EXISTS))) {
+		char *console = g_strconcat ("/var/run/console/", g_get_user_name (), NULL);
+		if ((getuid () == 0) || g_file_test (console, G_FILE_TEST_EXISTS)) {
+			item = panel_menu_items_create_action_item (PANEL_ACTION_SUSPEND);
+			if (item != NULL) {
+				if (!separator_inserted) {
+					add_menu_separator (places_menu);
+					separator_inserted = TRUE;
+				}
+
+				gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item);
+			}
+		}
+		g_free (console);
+	}
+
 
 	add_menu_separator (places_menu);
 
diff -p -up gnome-panel-2.23.6/gnome-panel/panel-stock-icons.h.suspend gnome-panel-2.23.6/gnome-panel/panel-stock-icons.h
--- gnome-panel-2.23.6/gnome-panel/panel-stock-icons.h.suspend	2008-08-04 22:43:10.000000000 +0200
+++ gnome-panel-2.23.6/gnome-panel/panel-stock-icons.h	2008-08-05 10:24:12.000000000 +0200
@@ -43,6 +43,7 @@ G_BEGIN_DECLS
 #define PANEL_STOCK_EXECUTE             "panel-execute"
 #define PANEL_STOCK_CLEAR               "panel-clear"
 #define PANEL_STOCK_DONT_DELETE         "panel-dont-delete"
+#define PANEL_STOCK_SUSPEND		"panel-suspend"
 
 void        panel_init_stock_icons_and_items (void);
 GtkIconSize panel_menu_icon_get_size         (void);