No longer using gtk_dialog_run() for helper windows
This commit is contained in:
parent
2160c6baf7
commit
4ecb017600
|
@ -37,11 +37,11 @@ typedef struct _PanelAppletHelper
|
||||||
char const * variable, char const * value);
|
char const * variable, char const * value);
|
||||||
int (*error)(Panel * panel, char const * message, int ret);
|
int (*error)(Panel * panel, char const * message, int ret);
|
||||||
void (*about_dialog)(Panel * panel);
|
void (*about_dialog)(Panel * panel);
|
||||||
int (*logout_dialog)(void);
|
void (*logout_dialog)(Panel * panel);
|
||||||
void (*position_menu)(GtkMenu * menu, gint * x, gint * y,
|
void (*position_menu)(GtkMenu * menu, gint * x, gint * y,
|
||||||
gboolean * push_in, gpointer data);
|
gboolean * push_in, gpointer data);
|
||||||
void (*preferences_dialog)(Panel * panel);
|
void (*preferences_dialog)(Panel * panel);
|
||||||
int (*shutdown_dialog)(Panel * panel);
|
void (*shutdown_dialog)(Panel * panel);
|
||||||
int (*suspend)(Panel * panel);
|
int (*suspend)(Panel * panel);
|
||||||
} PanelAppletHelper;
|
} PanelAppletHelper;
|
||||||
|
|
||||||
|
|
32
po/fr.po
32
po/fr.po
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Panel 0.0.5\n"
|
"Project-Id-Version: Panel 0.0.5\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-02-05 12:58+0100\n"
|
"POT-Creation-Date: 2011-02-24 13:01+0100\n"
|
||||||
"PO-Revision-Date: 2010-04-22 12:45+0200\n"
|
"PO-Revision-Date: 2010-04-22 12:45+0200\n"
|
||||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||||
"Language-Team: French\n"
|
"Language-Team: French\n"
|
||||||
|
@ -20,7 +20,7 @@ msgstr ""
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Inconnu"
|
msgstr "Inconnu"
|
||||||
|
|
||||||
#: ../src/applets/battery.c:186 ../src/panel.c:385 ../src/panel.c:390
|
#: ../src/applets/battery.c:186 ../src/panel.c:391 ../src/panel.c:396
|
||||||
#: ../src/run.c:200 ../src/run.c:206
|
#: ../src/run.c:200 ../src/run.c:206
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erreur"
|
msgstr "Erreur"
|
||||||
|
@ -83,8 +83,8 @@ msgstr "Verrouiller l'écran"
|
||||||
msgid "Logging out is disabled"
|
msgid "Logging out is disabled"
|
||||||
msgstr "Se déconnecter est désactivé"
|
msgstr "Se déconnecter est désactivé"
|
||||||
|
|
||||||
#: ../src/applets/logout.c:70 ../src/panel.c:702 ../src/panel.c:709
|
#: ../src/applets/logout.c:70 ../src/panel.c:728 ../src/panel.c:735
|
||||||
#: ../src/panel.c:717
|
#: ../src/panel.c:744
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Déconnexion"
|
msgstr "Déconnexion"
|
||||||
|
|
||||||
|
@ -172,35 +172,35 @@ msgid ""
|
||||||
" -x\tUse icons the size of menus\n"
|
" -x\tUse icons the size of menus\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../src/panel.c:93
|
#: ../src/panel.c:97
|
||||||
msgid "large"
|
msgid "large"
|
||||||
msgstr "grande"
|
msgstr "grande"
|
||||||
|
|
||||||
#: ../src/panel.c:94
|
#: ../src/panel.c:98
|
||||||
msgid "small"
|
msgid "small"
|
||||||
msgstr "petite"
|
msgstr "petite"
|
||||||
|
|
||||||
#: ../src/panel.c:95
|
#: ../src/panel.c:99
|
||||||
msgid "smaller"
|
msgid "smaller"
|
||||||
msgstr "très petite"
|
msgstr "très petite"
|
||||||
|
|
||||||
#: ../src/panel.c:469
|
#: ../src/panel.c:489
|
||||||
msgid "Panel preferences"
|
msgid "Panel preferences"
|
||||||
msgstr "Préférences du Panel"
|
msgstr "Préférences du Panel"
|
||||||
|
|
||||||
#: ../src/panel.c:484
|
#: ../src/panel.c:504
|
||||||
msgid "Top size:"
|
msgid "Top size:"
|
||||||
msgstr "Taille du haut :"
|
msgstr "Taille du haut :"
|
||||||
|
|
||||||
#: ../src/panel.c:495
|
#: ../src/panel.c:515
|
||||||
msgid "Bottom size:"
|
msgid "Bottom size:"
|
||||||
msgstr "Taille du bas :"
|
msgstr "Taille du bas :"
|
||||||
|
|
||||||
#: ../src/panel.c:506
|
#: ../src/panel.c:526
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Générales"
|
msgstr "Générales"
|
||||||
|
|
||||||
#: ../src/panel.c:692
|
#: ../src/panel.c:714
|
||||||
msgid ""
|
msgid ""
|
||||||
"This will log you out of the current session, therefore closing any "
|
"This will log you out of the current session, therefore closing any "
|
||||||
"application currently opened and losing any unsaved data.\n"
|
"application currently opened and losing any unsaved data.\n"
|
||||||
|
@ -211,7 +211,7 @@ msgstr ""
|
||||||
"sauvegardées.\n"
|
"sauvegardées.\n"
|
||||||
"Voulez-vous continuer?"
|
"Voulez-vous continuer?"
|
||||||
|
|
||||||
#: ../src/panel.c:786
|
#: ../src/panel.c:831
|
||||||
msgid ""
|
msgid ""
|
||||||
"This will shutdown your device, therefore closing any application currently "
|
"This will shutdown your device, therefore closing any application currently "
|
||||||
"opened and losing any unsaved data.\n"
|
"opened and losing any unsaved data.\n"
|
||||||
|
@ -222,7 +222,7 @@ msgstr ""
|
||||||
"sauvegardées.\n"
|
"sauvegardées.\n"
|
||||||
"Voulez-vous continuer?"
|
"Voulez-vous continuer?"
|
||||||
|
|
||||||
#: ../src/panel.c:791
|
#: ../src/panel.c:836
|
||||||
msgid ""
|
msgid ""
|
||||||
"This will shutdown your computer, therefore closing any application "
|
"This will shutdown your computer, therefore closing any application "
|
||||||
"currently opened and losing any unsaved data.\n"
|
"currently opened and losing any unsaved data.\n"
|
||||||
|
@ -233,11 +233,11 @@ msgstr ""
|
||||||
"sauvegardées.\n"
|
"sauvegardées.\n"
|
||||||
"Voulez-vous continuer?"
|
"Voulez-vous continuer?"
|
||||||
|
|
||||||
#: ../src/panel.c:812 ../src/panel.c:819 ../src/panel.c:826
|
#: ../src/panel.c:850 ../src/panel.c:857 ../src/panel.c:866
|
||||||
msgid "Shutdown"
|
msgid "Shutdown"
|
||||||
msgstr "Arrêter"
|
msgstr "Arrêter"
|
||||||
|
|
||||||
#: ../src/panel.c:818
|
#: ../src/panel.c:856
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Redémarrer"
|
msgstr "Redémarrer"
|
||||||
|
|
||||||
|
|
|
@ -82,5 +82,5 @@ static void _on_clicked(gpointer data)
|
||||||
{
|
{
|
||||||
PanelApplet * applet = data;
|
PanelApplet * applet = data;
|
||||||
|
|
||||||
applet->helper->logout_dialog();
|
applet->helper->logout_dialog(applet->helper->panel);
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ static void _on_clicked(gpointer data);
|
||||||
static gboolean _on_idle(gpointer data);
|
static gboolean _on_idle(gpointer data);
|
||||||
static void _on_lock(gpointer data);
|
static void _on_lock(gpointer data);
|
||||||
static void _on_logout(gpointer data);
|
static void _on_logout(gpointer data);
|
||||||
static void _on_run(void);
|
static void _on_run(gpointer data);
|
||||||
static void _on_shutdown(gpointer data);
|
static void _on_shutdown(gpointer data);
|
||||||
static void _on_suspend(gpointer data);
|
static void _on_suspend(gpointer data);
|
||||||
static gboolean _on_timeout(gpointer data);
|
static gboolean _on_timeout(gpointer data);
|
||||||
|
@ -303,7 +303,7 @@ static void _on_clicked(gpointer data)
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||||
menuitem = _main_menuitem(_("Run..."), GTK_STOCK_EXECUTE);
|
menuitem = _main_menuitem(_("Run..."), GTK_STOCK_EXECUTE);
|
||||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||||
_on_run), NULL);
|
_on_run), main);
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||||
menuitem = gtk_separator_menu_item_new();
|
menuitem = gtk_separator_menu_item_new();
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||||
|
@ -447,7 +447,7 @@ static void _on_lock(gpointer data)
|
||||||
if((p = helper->config_get(helper->panel, "lock", "command")) != NULL)
|
if((p = helper->config_get(helper->panel, "lock", "command")) != NULL)
|
||||||
command = p;
|
command = p;
|
||||||
if(g_spawn_command_line_async(command, &error) != TRUE)
|
if(g_spawn_command_line_async(command, &error) != TRUE)
|
||||||
helper->error(NULL, error->message, 0);
|
helper->error(helper->panel, error->message, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -456,19 +456,23 @@ static void _on_logout(gpointer data)
|
||||||
{
|
{
|
||||||
Main * main = data;
|
Main * main = data;
|
||||||
|
|
||||||
main->helper->logout_dialog();
|
main->helper->logout_dialog(main->helper->panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on_run */
|
/* on_run */
|
||||||
static void _on_run(void)
|
static void _on_run(gpointer data)
|
||||||
{
|
{
|
||||||
|
Main * main = data;
|
||||||
char * argv[] = { "run", NULL };
|
char * argv[] = { "run", NULL };
|
||||||
GSpawnFlags flags = G_SPAWN_SEARCH_PATH
|
GSpawnFlags flags = G_SPAWN_SEARCH_PATH
|
||||||
| G_SPAWN_STDOUT_TO_DEV_NULL
|
| G_SPAWN_STDOUT_TO_DEV_NULL
|
||||||
| G_SPAWN_STDERR_TO_DEV_NULL;
|
| G_SPAWN_STDERR_TO_DEV_NULL;
|
||||||
|
GError * error = NULL;
|
||||||
|
|
||||||
g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, NULL);
|
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||||
|
!= TRUE)
|
||||||
|
main->helper->error(main->helper->panel, error->message, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
176
src/panel.c
176
src/panel.c
|
@ -70,8 +70,12 @@ struct _Panel
|
||||||
GtkWidget * pr_bottom_size;
|
GtkWidget * pr_bottom_size;
|
||||||
GtkWidget * pr_top_size;
|
GtkWidget * pr_top_size;
|
||||||
|
|
||||||
/* about */
|
/* dialogs */
|
||||||
GtkWidget * ab_window;
|
GtkWidget * ab_window;
|
||||||
|
#ifndef EMBEDDED
|
||||||
|
GtkWidget * lo_window;
|
||||||
|
#endif
|
||||||
|
GtkWidget * sh_window;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -107,7 +111,7 @@ static int _panel_helper_config_set(Panel * panel, char const * section,
|
||||||
static int _panel_helper_error(Panel * panel, char const * message, int ret);
|
static int _panel_helper_error(Panel * panel, char const * message, int ret);
|
||||||
static void _panel_helper_about_dialog(Panel * panel);
|
static void _panel_helper_about_dialog(Panel * panel);
|
||||||
#ifndef EMBEDDED
|
#ifndef EMBEDDED
|
||||||
static int _panel_helper_logout_dialog(void);
|
static void _panel_helper_logout_dialog(Panel * panel);
|
||||||
#endif
|
#endif
|
||||||
static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y,
|
static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y,
|
||||||
gboolean * push_in, PanelPosition position, gpointer data);
|
gboolean * push_in, PanelPosition position, gpointer data);
|
||||||
|
@ -116,7 +120,7 @@ static void _panel_helper_position_menu_bottom(GtkMenu * menu, gint * x,
|
||||||
static void _panel_helper_position_menu_top(GtkMenu * menu, gint * x, gint * y,
|
static void _panel_helper_position_menu_top(GtkMenu * menu, gint * x, gint * y,
|
||||||
gboolean * push_in, gpointer data);
|
gboolean * push_in, gpointer data);
|
||||||
static void _panel_helper_preferences_dialog(Panel * panel);
|
static void _panel_helper_preferences_dialog(Panel * panel);
|
||||||
static int _panel_helper_shutdown_dialog(Panel * panel);
|
static void _panel_helper_shutdown_dialog(Panel * panel);
|
||||||
static int _panel_helper_suspend(Panel * panel);
|
static int _panel_helper_suspend(Panel * panel);
|
||||||
|
|
||||||
static char * _config_get_filename(void);
|
static char * _config_get_filename(void);
|
||||||
|
@ -372,6 +376,8 @@ void panel_delete(Panel * panel)
|
||||||
/* useful */
|
/* useful */
|
||||||
/* panel_error */
|
/* panel_error */
|
||||||
static int _error_text(char const * message, int ret);
|
static int _error_text(char const * message, int ret);
|
||||||
|
static gboolean _error_on_closex(GtkWidget * widget);
|
||||||
|
static void _error_on_response(GtkWidget * widget);
|
||||||
|
|
||||||
int panel_error(Panel * panel, char const * message, int ret)
|
int panel_error(Panel * panel, char const * message, int ret)
|
||||||
{
|
{
|
||||||
|
@ -388,8 +394,11 @@ int panel_error(Panel * panel, char const * message, int ret)
|
||||||
"%s: %s", message, strerror(errno));
|
"%s: %s", message, strerror(errno));
|
||||||
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
|
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
|
||||||
gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
|
gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
|
||||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
g_signal_connect(G_OBJECT(dialog), "delete-event", G_CALLBACK(
|
||||||
gtk_widget_destroy(dialog);
|
_error_on_closex), NULL);
|
||||||
|
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(
|
||||||
|
_error_on_response), NULL);
|
||||||
|
gtk_widget_show_all(dialog);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,6 +409,17 @@ static int _error_text(char const * message, int ret)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean _error_on_closex(GtkWidget * widget)
|
||||||
|
{
|
||||||
|
gtk_widget_hide(widget);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _error_on_response(GtkWidget * widget)
|
||||||
|
{
|
||||||
|
gtk_widget_destroy(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* panel_load */
|
/* panel_load */
|
||||||
int panel_load(Panel * panel, PanelPosition position, char const * applet)
|
int panel_load(Panel * panel, PanelPosition position, char const * applet)
|
||||||
|
@ -686,41 +706,62 @@ static gboolean _about_on_closex(gpointer data)
|
||||||
|
|
||||||
#ifndef EMBEDDED
|
#ifndef EMBEDDED
|
||||||
/* panel_helper_logout_dialog */
|
/* panel_helper_logout_dialog */
|
||||||
static int _panel_helper_logout_dialog(void)
|
static gboolean _logout_dialog_on_closex(gpointer data);
|
||||||
|
static void _logout_dialog_on_response(GtkWidget * widget, gint response);
|
||||||
|
|
||||||
|
static void _panel_helper_logout_dialog(Panel * panel)
|
||||||
{
|
{
|
||||||
GtkWidget * dialog;
|
|
||||||
const char * message = _("This will log you out of the current session,"
|
const char * message = _("This will log you out of the current session,"
|
||||||
" therefore closing any application currently opened"
|
" therefore closing any application currently opened"
|
||||||
" and losing any unsaved data.\n"
|
" and losing any unsaved data.\n"
|
||||||
"Do you really want to proceed?");
|
"Do you really want to proceed?");
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
int res;
|
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_INFO,
|
if(panel->lo_window != NULL)
|
||||||
GTK_BUTTONS_NONE, "%s",
|
{
|
||||||
|
gtk_window_present(GTK_WINDOW(panel->lo_window));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
panel->lo_window = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_INFO,
|
||||||
|
GTK_BUTTONS_NONE,
|
||||||
#if GTK_CHECK_VERSION(2, 6, 0)
|
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||||
_("Logout"));
|
"%s", _("Logout"));
|
||||||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
|
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(
|
||||||
"%s",
|
panel->lo_window),
|
||||||
#endif
|
#endif
|
||||||
message);
|
"%s", message);
|
||||||
gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL,
|
gtk_dialog_add_buttons(GTK_DIALOG(panel->lo_window), GTK_STOCK_CANCEL,
|
||||||
GTK_RESPONSE_CANCEL, NULL);
|
GTK_RESPONSE_CANCEL, NULL);
|
||||||
widget = gtk_button_new_with_label(_("Logout"));
|
widget = gtk_button_new_with_label(_("Logout"));
|
||||||
gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name(
|
gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name(
|
||||||
"gnome-logout", GTK_ICON_SIZE_BUTTON));
|
"gnome-logout", GTK_ICON_SIZE_BUTTON));
|
||||||
gtk_widget_show_all(widget);
|
gtk_widget_show_all(widget);
|
||||||
gtk_dialog_add_action_widget(GTK_DIALOG(dialog), widget,
|
gtk_dialog_add_action_widget(GTK_DIALOG(panel->lo_window), widget,
|
||||||
GTK_RESPONSE_ACCEPT);
|
GTK_RESPONSE_ACCEPT);
|
||||||
gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
|
gtk_window_set_keep_above(GTK_WINDOW(panel->lo_window), TRUE);
|
||||||
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
|
gtk_window_set_position(GTK_WINDOW(panel->lo_window),
|
||||||
gtk_window_set_title(GTK_WINDOW(dialog), _("Logout"));
|
GTK_WIN_POS_CENTER_ALWAYS);
|
||||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
gtk_window_set_title(GTK_WINDOW(panel->lo_window), _("Logout"));
|
||||||
gtk_widget_destroy(dialog);
|
g_signal_connect(G_OBJECT(panel->lo_window), "delete-event", G_CALLBACK(
|
||||||
if(res != GTK_RESPONSE_ACCEPT)
|
_logout_dialog_on_closex), panel);
|
||||||
return 1;
|
g_signal_connect(G_OBJECT(panel->lo_window), "response", G_CALLBACK(
|
||||||
gtk_main_quit();
|
_logout_dialog_on_response), panel);
|
||||||
return 0;
|
gtk_widget_show_all(panel->lo_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean _logout_dialog_on_closex(gpointer data)
|
||||||
|
{
|
||||||
|
Panel * panel = data;
|
||||||
|
|
||||||
|
gtk_widget_hide(panel->lo_window);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _logout_dialog_on_response(GtkWidget * widget, gint response)
|
||||||
|
{
|
||||||
|
gtk_widget_hide(widget);
|
||||||
|
if(response == GTK_RESPONSE_ACCEPT)
|
||||||
|
gtk_main_quit();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -778,9 +819,13 @@ static void _panel_helper_preferences_dialog(Panel * panel)
|
||||||
|
|
||||||
|
|
||||||
/* panel_helper_shutdown_dialog */
|
/* panel_helper_shutdown_dialog */
|
||||||
static int _panel_helper_shutdown_dialog(Panel * panel)
|
static gboolean _shutdown_dialog_on_closex(gpointer data);
|
||||||
|
static void _shutdown_dialog_on_response(GtkWidget * widget, gint response,
|
||||||
|
gpointer data);
|
||||||
|
enum { RES_CANCEL, RES_REBOOT, RES_SHUTDOWN };
|
||||||
|
|
||||||
|
static void _panel_helper_shutdown_dialog(Panel * panel)
|
||||||
{
|
{
|
||||||
GtkWidget * dialog;
|
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
#ifdef EMBEDDED
|
#ifdef EMBEDDED
|
||||||
const char * message = _("This will shutdown your device,"
|
const char * message = _("This will shutdown your device,"
|
||||||
|
@ -793,8 +838,51 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
||||||
" and losing any unsaved data.\n"
|
" and losing any unsaved data.\n"
|
||||||
"Do you really want to proceed?");
|
"Do you really want to proceed?");
|
||||||
#endif
|
#endif
|
||||||
enum { RES_CANCEL, RES_REBOOT, RES_SHUTDOWN };
|
|
||||||
int res;
|
if(panel->sh_window != NULL)
|
||||||
|
{
|
||||||
|
gtk_window_present(GTK_WINDOW(panel->sh_window));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
panel->sh_window = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_INFO,
|
||||||
|
GTK_BUTTONS_NONE, "%s",
|
||||||
|
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||||
|
_("Shutdown"));
|
||||||
|
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(
|
||||||
|
panel->sh_window),
|
||||||
|
#endif
|
||||||
|
"%s", message);
|
||||||
|
gtk_dialog_add_buttons(GTK_DIALOG(panel->sh_window), GTK_STOCK_CANCEL,
|
||||||
|
RES_CANCEL, _("Restart"), RES_REBOOT, NULL);
|
||||||
|
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));
|
||||||
|
gtk_widget_show_all(widget);
|
||||||
|
gtk_dialog_add_action_widget(GTK_DIALOG(panel->sh_window), widget,
|
||||||
|
RES_SHUTDOWN);
|
||||||
|
gtk_window_set_keep_above(GTK_WINDOW(panel->sh_window), TRUE);
|
||||||
|
gtk_window_set_position(GTK_WINDOW(panel->sh_window),
|
||||||
|
GTK_WIN_POS_CENTER_ALWAYS);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(panel->sh_window), _("Shutdown"));
|
||||||
|
g_signal_connect(G_OBJECT(panel->lo_window), "delete-event", G_CALLBACK(
|
||||||
|
_shutdown_dialog_on_closex), panel);
|
||||||
|
g_signal_connect(G_OBJECT(panel->lo_window), "response", G_CALLBACK(
|
||||||
|
_shutdown_dialog_on_response), panel);
|
||||||
|
gtk_widget_show_all(panel->lo_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean _shutdown_dialog_on_closex(gpointer data)
|
||||||
|
{
|
||||||
|
Panel * panel = data;
|
||||||
|
|
||||||
|
gtk_widget_hide(panel->sh_window);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _shutdown_dialog_on_response(GtkWidget * widget, gint response,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
Panel * panel = data;
|
||||||
char * reboot[] = { "/sbin/shutdown", "shutdown", "-r", "now", NULL };
|
char * reboot[] = { "/sbin/shutdown", "shutdown", "-r", "now", NULL };
|
||||||
char * shutdown[] = { "/sbin/shutdown", "shutdown",
|
char * shutdown[] = { "/sbin/shutdown", "shutdown",
|
||||||
#ifdef __NetBSD__
|
#ifdef __NetBSD__
|
||||||
|
@ -806,36 +894,16 @@ static int _panel_helper_shutdown_dialog(Panel * panel)
|
||||||
char ** argv;
|
char ** argv;
|
||||||
GError * error = NULL;
|
GError * error = NULL;
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_INFO,
|
gtk_widget_hide(widget);
|
||||||
GTK_BUTTONS_NONE, "%s",
|
if(response == RES_SHUTDOWN)
|
||||||
#if GTK_CHECK_VERSION(2, 6, 0)
|
|
||||||
_("Shutdown"));
|
|
||||||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
|
|
||||||
"%s",
|
|
||||||
#endif
|
|
||||||
message);
|
|
||||||
gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, RES_CANCEL,
|
|
||||||
_("Restart"), RES_REBOOT, NULL);
|
|
||||||
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));
|
|
||||||
gtk_widget_show_all(widget);
|
|
||||||
gtk_dialog_add_action_widget(GTK_DIALOG(dialog), widget, RES_SHUTDOWN);
|
|
||||||
gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
|
|
||||||
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
|
|
||||||
gtk_window_set_title(GTK_WINDOW(dialog), _("Shutdown"));
|
|
||||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
|
||||||
gtk_widget_destroy(dialog);
|
|
||||||
if(res == RES_SHUTDOWN)
|
|
||||||
argv = shutdown;
|
argv = shutdown;
|
||||||
else if(res == RES_REBOOT)
|
else if(response == RES_REBOOT)
|
||||||
argv = reboot;
|
argv = reboot;
|
||||||
else
|
else
|
||||||
return 1;
|
return;
|
||||||
if(g_spawn_async(NULL, argv, NULL, G_SPAWN_FILE_AND_ARGV_ZERO, NULL,
|
if(g_spawn_async(NULL, argv, NULL, G_SPAWN_FILE_AND_ARGV_ZERO, NULL,
|
||||||
NULL, NULL, &error) != TRUE)
|
NULL, NULL, &error) != TRUE)
|
||||||
return panel_error(panel, error->message, 1);
|
panel_error(panel, error->message, 1);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user