The suspend helper is now found directly in the menu when available
This commit is contained in:
parent
42cfe3f9d3
commit
6d4a782191
|
@ -42,6 +42,7 @@ typedef struct _PanelAppletHelper
|
|||
gboolean * push_in, gpointer data);
|
||||
void (*preferences_dialog)(Panel * panel);
|
||||
int (*shutdown_dialog)(Panel * panel);
|
||||
int (*suspend)(Panel * panel);
|
||||
} PanelAppletHelper;
|
||||
|
||||
typedef enum _PanelAppletPosition
|
||||
|
|
46
po/fr.po
46
po/fr.po
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Panel 0.0.5\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-05 12:22+0100\n"
|
||||
"POT-Creation-Date: 2011-02-05 12:58+0100\n"
|
||||
"PO-Revision-Date: 2010-04-22 12:45+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: French\n"
|
||||
|
@ -20,7 +20,7 @@ msgstr ""
|
|||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: ../src/applets/battery.c:186 ../src/panel.c:380 ../src/panel.c:384
|
||||
#: ../src/applets/battery.c:186 ../src/panel.c:385 ../src/panel.c:390
|
||||
#: ../src/run.c:200 ../src/run.c:206
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
@ -75,7 +75,7 @@ msgstr "GPS actif"
|
|||
msgid "GSM is enabled"
|
||||
msgstr "GSM actif"
|
||||
|
||||
#: ../src/applets/lock.c:63 ../src/applets/main.c:315
|
||||
#: ../src/applets/lock.c:63 ../src/applets/main.c:316
|
||||
msgid "Lock screen"
|
||||
msgstr "Verrouiller l'écran"
|
||||
|
||||
|
@ -83,28 +83,32 @@ msgstr "Verrouiller l'écran"
|
|||
msgid "Logging out is disabled"
|
||||
msgstr "Se déconnecter est désactivé"
|
||||
|
||||
#: ../src/applets/logout.c:70 ../src/panel.c:674 ../src/panel.c:681
|
||||
#: ../src/panel.c:689
|
||||
#: ../src/applets/logout.c:70 ../src/panel.c:702 ../src/panel.c:709
|
||||
#: ../src/panel.c:717
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: ../src/applets/main.c:134
|
||||
#: ../src/applets/main.c:135
|
||||
msgid "Main menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
#: ../src/applets/main.c:297
|
||||
#: ../src/applets/main.c:298
|
||||
msgid "Applications"
|
||||
msgstr "Programmes"
|
||||
|
||||
#: ../src/applets/main.c:303
|
||||
#: ../src/applets/main.c:304
|
||||
msgid "Run..."
|
||||
msgstr "Exécuter..."
|
||||
|
||||
#: ../src/applets/main.c:321
|
||||
#: ../src/applets/main.c:322
|
||||
msgid "Logout..."
|
||||
msgstr "Déconnecter..."
|
||||
|
||||
#: ../src/applets/main.c:326
|
||||
#: ../src/applets/main.c:329
|
||||
msgid "Suspend"
|
||||
msgstr "Suspendre"
|
||||
|
||||
#: ../src/applets/main.c:334
|
||||
msgid "Shutdown..."
|
||||
msgstr "Arrêter..."
|
||||
|
||||
|
@ -180,23 +184,23 @@ msgstr "petite"
|
|||
msgid "smaller"
|
||||
msgstr "très petite"
|
||||
|
||||
#: ../src/panel.c:463
|
||||
#: ../src/panel.c:469
|
||||
msgid "Panel preferences"
|
||||
msgstr "Préférences du Panel"
|
||||
|
||||
#: ../src/panel.c:478
|
||||
#: ../src/panel.c:484
|
||||
msgid "Top size:"
|
||||
msgstr "Taille du haut :"
|
||||
|
||||
#: ../src/panel.c:489
|
||||
#: ../src/panel.c:495
|
||||
msgid "Bottom size:"
|
||||
msgstr "Taille du bas :"
|
||||
|
||||
#: ../src/panel.c:500
|
||||
#: ../src/panel.c:506
|
||||
msgid "General"
|
||||
msgstr "Générales"
|
||||
|
||||
#: ../src/panel.c:664
|
||||
#: ../src/panel.c:692
|
||||
msgid ""
|
||||
"This will log you out of the current session, therefore closing any "
|
||||
"application currently opened and losing any unsaved data.\n"
|
||||
|
@ -207,7 +211,7 @@ msgstr ""
|
|||
"sauvegardées.\n"
|
||||
"Voulez-vous continuer?"
|
||||
|
||||
#: ../src/panel.c:760
|
||||
#: ../src/panel.c:786
|
||||
msgid ""
|
||||
"This will shutdown your device, therefore closing any application currently "
|
||||
"opened and losing any unsaved data.\n"
|
||||
|
@ -218,7 +222,7 @@ msgstr ""
|
|||
"sauvegardées.\n"
|
||||
"Voulez-vous continuer?"
|
||||
|
||||
#: ../src/panel.c:765
|
||||
#: ../src/panel.c:791
|
||||
msgid ""
|
||||
"This will shutdown your computer, therefore closing any application "
|
||||
"currently opened and losing any unsaved data.\n"
|
||||
|
@ -229,18 +233,14 @@ msgstr ""
|
|||
"sauvegardées.\n"
|
||||
"Voulez-vous continuer?"
|
||||
|
||||
#: ../src/panel.c:790 ../src/panel.c:805 ../src/panel.c:812
|
||||
#: ../src/panel.c:812 ../src/panel.c:819 ../src/panel.c:826
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêter"
|
||||
|
||||
#: ../src/panel.c:797
|
||||
#: ../src/panel.c:818
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: ../src/panel.c:801
|
||||
msgid "Suspend"
|
||||
msgstr "Suspendre"
|
||||
|
||||
#: ../src/run.c:101 ../src/run.c:113
|
||||
msgid "Run program..."
|
||||
msgstr "Exécuter..."
|
||||
|
|
|
@ -89,6 +89,7 @@ static void _on_lock(gpointer data);
|
|||
static void _on_logout(gpointer data);
|
||||
static void _on_run(void);
|
||||
static void _on_shutdown(gpointer data);
|
||||
static void _on_suspend(gpointer data);
|
||||
static gboolean _on_timeout(gpointer data);
|
||||
|
||||
|
||||
|
@ -323,6 +324,13 @@ static void _on_clicked(gpointer data)
|
|||
G_CALLBACK(_on_logout), data);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
}
|
||||
if(main->helper->suspend != NULL)
|
||||
{
|
||||
menuitem = _main_menuitem(_("Suspend"), "gtk-media-pause");
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate",
|
||||
G_CALLBACK(_on_suspend), data);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
}
|
||||
menuitem = _main_menuitem(_("Shutdown..."), "gnome-shutdown");
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_shutdown), data);
|
||||
|
@ -473,6 +481,15 @@ static void _on_shutdown(gpointer data)
|
|||
}
|
||||
|
||||
|
||||
/* on_suspend */
|
||||
static void _on_suspend(gpointer data)
|
||||
{
|
||||
Main * main = data;
|
||||
|
||||
main->helper->suspend(main->helper->panel);
|
||||
}
|
||||
|
||||
|
||||
/* on_timeout */
|
||||
static gboolean _on_timeout(gpointer data)
|
||||
{
|
||||
|
|
79
src/panel.c
79
src/panel.c
|
@ -97,6 +97,8 @@ static struct
|
|||
|
||||
|
||||
/* prototypes */
|
||||
static gboolean _panel_can_suspend(void);
|
||||
|
||||
/* helpers */
|
||||
static char const * _panel_helper_config_get(Panel * panel,
|
||||
char const * section, char const * variable);
|
||||
|
@ -115,6 +117,7 @@ static void _panel_helper_position_menu_top(GtkMenu * menu, gint * x, gint * y,
|
|||
gboolean * push_in, gpointer data);
|
||||
static void _panel_helper_preferences_dialog(Panel * panel);
|
||||
static int _panel_helper_shutdown_dialog(Panel * panel);
|
||||
static int _panel_helper_suspend(Panel * panel);
|
||||
|
||||
static char * _config_get_filename(void);
|
||||
|
||||
|
@ -155,6 +158,8 @@ Panel * panel_new(PanelPrefs const * prefs)
|
|||
panel->top_helper.position_menu = _panel_helper_position_menu_top;
|
||||
panel->top_helper.preferences_dialog = _panel_helper_preferences_dialog;
|
||||
panel->top_helper.shutdown_dialog = _panel_helper_shutdown_dialog;
|
||||
panel->top_helper.suspend = (_panel_can_suspend())
|
||||
? _panel_helper_suspend : NULL;
|
||||
panel->top = NULL;
|
||||
panel->bottom_helper = panel->top_helper;
|
||||
panel->bottom_helper.position_menu = _panel_helper_position_menu_bottom;
|
||||
|
@ -381,6 +386,7 @@ int panel_error(Panel * panel, char const * message, int ret)
|
|||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
|
||||
#endif
|
||||
"%s: %s", message, strerror(errno));
|
||||
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
|
||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
gtk_widget_destroy(dialog);
|
||||
|
@ -597,6 +603,28 @@ static char * _config_get_filename(void)
|
|||
}
|
||||
|
||||
|
||||
/* panel_can_suspend */
|
||||
static gboolean _panel_can_suspend(void)
|
||||
{
|
||||
#ifdef __NetBSD__
|
||||
int sleep_state = -1;
|
||||
size_t size = sizeof(sleep_state);
|
||||
|
||||
if(sysctlbyname("machdep.sleep_state", &sleep_state, &size, NULL, 0)
|
||||
== 0 && sleep_state == 0
|
||||
&& sysctlbyname("machdep.sleep_state", &sleep_state,
|
||||
&size, &sleep_state, size) == 0)
|
||||
return TRUE;
|
||||
#else
|
||||
struct stat st;
|
||||
|
||||
if(lstat("/proc/apm", &st) == 0)
|
||||
return TRUE;
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* helpers */
|
||||
/* panel_helper_config_get */
|
||||
static char const * _panel_helper_config_get(Panel * panel,
|
||||
|
@ -750,8 +778,6 @@ static void _panel_helper_preferences_dialog(Panel * panel)
|
|||
|
||||
|
||||
/* panel_helper_shutdown_dialog */
|
||||
static int _helper_shutdown_dialog_can_suspend(void);
|
||||
|
||||
static int _panel_helper_shutdown_dialog(Panel * panel)
|
||||
{
|
||||
GtkWidget * dialog;
|
||||
|
@ -767,7 +793,7 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
|||
" and losing any unsaved data.\n"
|
||||
"Do you really want to proceed?");
|
||||
#endif
|
||||
enum { RES_CANCEL, RES_REBOOT, RES_SHUTDOWN, RES_SUSPEND };
|
||||
enum { RES_CANCEL, RES_REBOOT, RES_SHUTDOWN };
|
||||
int res;
|
||||
char * reboot[] = { "/sbin/shutdown", "shutdown", "-r", "now", NULL };
|
||||
char * shutdown[] = { "/sbin/shutdown", "shutdown",
|
||||
|
@ -777,10 +803,6 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
|||
"-h",
|
||||
#endif
|
||||
"now", NULL };
|
||||
char * suspend[] = { "/usr/bin/sudo", "sudo", "/sbin/apm", "-s", NULL };
|
||||
#ifdef __NetBSD__
|
||||
int sleep_state = 3;
|
||||
#endif
|
||||
char ** argv;
|
||||
GError * error = NULL;
|
||||
|
||||
|
@ -792,16 +814,8 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
|||
"%s",
|
||||
#endif
|
||||
message);
|
||||
/* reboot */
|
||||
gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, RES_CANCEL,
|
||||
_("Restart"), RES_REBOOT, NULL);
|
||||
/* suspend */
|
||||
if(_helper_shutdown_dialog_can_suspend())
|
||||
{
|
||||
gtk_dialog_add_buttons(GTK_DIALOG(dialog), _("Suspend"),
|
||||
RES_SUSPEND, NULL);
|
||||
}
|
||||
/* shutdown */
|
||||
widget = gtk_button_new_with_label(_("Shutdown"));
|
||||
gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name(
|
||||
"gnome-shutdown", GTK_ICON_SIZE_BUTTON));
|
||||
|
@ -814,39 +828,36 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
|||
gtk_widget_destroy(dialog);
|
||||
if(res == RES_SHUTDOWN)
|
||||
argv = shutdown;
|
||||
else if(res == RES_SUSPEND)
|
||||
argv = suspend;
|
||||
else if(res == RES_REBOOT)
|
||||
argv = reboot;
|
||||
else
|
||||
return 1;
|
||||
#ifdef __NetBSD__
|
||||
if(res == RES_SUSPEND && sysctlbyname("machdep.sleep_state", NULL, NULL,
|
||||
&sleep_state, sizeof(sleep_state)) != 0)
|
||||
return panel_error(panel, "sysctl", 1);
|
||||
#endif
|
||||
if(g_spawn_async(NULL, argv, NULL, G_SPAWN_FILE_AND_ARGV_ZERO, NULL,
|
||||
NULL, NULL, &error) != TRUE)
|
||||
return panel_error(panel, error->message, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int _helper_shutdown_dialog_can_suspend(void)
|
||||
|
||||
/* panel_helper_suspend */
|
||||
static int _panel_helper_suspend(Panel * panel)
|
||||
{
|
||||
struct stat st;
|
||||
#ifdef __NetBSD__
|
||||
int sleep_state = -1;
|
||||
size_t size = sizeof(sleep_state);
|
||||
int sleep_state = 3;
|
||||
#else
|
||||
char * suspend[] = { "/usr/bin/sudo", "sudo", "/sbin/apm", "-s", NULL };
|
||||
GError * error = NULL;
|
||||
#endif
|
||||
|
||||
if(lstat("/proc/apm", &st) == 0)
|
||||
return 1;
|
||||
#ifdef __NetBSD__
|
||||
if(sysctlbyname("machdep.sleep_state", &sleep_state, &size, NULL, 0)
|
||||
== 0 && sleep_state == 0
|
||||
&& sysctlbyname("machdep.sleep_state", &sleep_state,
|
||||
&size, &sleep_state, size) == 0)
|
||||
return 1;
|
||||
#endif
|
||||
if(sysctlbyname("machdep.sleep_state", NULL, NULL, &sleep_state,
|
||||
sizeof(sleep_state)) != 0)
|
||||
return panel_error(panel, "sysctl", 1);
|
||||
return 0;
|
||||
#else
|
||||
if(g_spawn_async(NULL, suspend, NULL, G_SPAWN_FILE_AND_ARGV_ZERO, NULL,
|
||||
NULL, NULL, &error) != TRUE)
|
||||
return panel_error(panel, error->message, 1);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user