Adding a preferences dialog to the panel
This commit is contained in:
parent
6bc347e88b
commit
288bab41db
|
@ -37,6 +37,7 @@ typedef struct _PanelAppletHelper
|
|||
int (*logout_dialog)(void);
|
||||
void (*position_menu)(GtkMenu * menu, gint * x, gint * y,
|
||||
gboolean * push_in, gpointer data);
|
||||
void (*preferences_dialog)(Panel * panel);
|
||||
int (*shutdown_dialog)(void);
|
||||
} PanelAppletHelper;
|
||||
|
||||
|
|
36
po/fr.po
36
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: 2010-08-10 00:58+0200\n"
|
||||
"POT-Creation-Date: 2010-08-10 01:25+0200\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:182 ../src/panel.c:297 ../src/run.c:196
|
||||
#: ../src/applets/battery.c:182 ../src/panel.c:303 ../src/run.c:196
|
||||
#: ../src/run.c:200
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
@ -54,7 +54,7 @@ msgstr "Fréquence :"
|
|||
msgid "Show desktop"
|
||||
msgstr "Afficher le bureau"
|
||||
|
||||
#: ../src/applets/lock.c:60 ../src/applets/main.c:301
|
||||
#: ../src/applets/lock.c:60 ../src/applets/main.c:304
|
||||
msgid "Lock screen"
|
||||
msgstr "Verrouiller l'écran"
|
||||
|
||||
|
@ -62,28 +62,28 @@ msgstr "Verrouiller l'écran"
|
|||
msgid "Logging out is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/applets/logout.c:67 ../src/panel.c:391 ../src/panel.c:396
|
||||
#: ../src/panel.c:404
|
||||
#: ../src/applets/logout.c:67 ../src/panel.c:448 ../src/panel.c:453
|
||||
#: ../src/panel.c:461
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: ../src/applets/main.c:130
|
||||
#: ../src/applets/main.c:131
|
||||
msgid "Main menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
#: ../src/applets/main.c:284
|
||||
#: ../src/applets/main.c:285
|
||||
msgid "Applications"
|
||||
msgstr "Programmes"
|
||||
|
||||
#: ../src/applets/main.c:290
|
||||
#: ../src/applets/main.c:291
|
||||
msgid "Run..."
|
||||
msgstr "Exécuter..."
|
||||
|
||||
#: ../src/applets/main.c:307
|
||||
#: ../src/applets/main.c:310
|
||||
msgid "Logout..."
|
||||
msgstr "Déconnecter..."
|
||||
|
||||
#: ../src/applets/main.c:312
|
||||
#: ../src/applets/main.c:315
|
||||
msgid "Shutdown..."
|
||||
msgstr "Arrêter..."
|
||||
|
||||
|
@ -135,25 +135,33 @@ msgstr "Déplacer vers le bureau"
|
|||
msgid "Maximize"
|
||||
msgstr "Maximiser"
|
||||
|
||||
#: ../src/panel.c:383
|
||||
#: ../src/panel.c:115
|
||||
msgid "Invalid panel size"
|
||||
msgstr "Taille invalide pour le panel"
|
||||
|
||||
#: ../src/panel.c:378
|
||||
msgid "Panel preferences"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/panel.c:440
|
||||
msgid ""
|
||||
"This will log you out of the current session, therefore closing any "
|
||||
"application currently opened and losing any unsaved data.\n"
|
||||
"Do you really want to proceed?"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/panel.c:444
|
||||
#: ../src/panel.c:508
|
||||
msgid ""
|
||||
"This will shutdown your computer, therefore closing any application "
|
||||
"currently opened and losing any unsaved data.\n"
|
||||
"Do you really want to proceed?"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/panel.c:460 ../src/panel.c:465 ../src/panel.c:472
|
||||
#: ../src/panel.c:524 ../src/panel.c:529 ../src/panel.c:536
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêter"
|
||||
|
||||
#: ../src/panel.c:464
|
||||
#: ../src/panel.c:528
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ static gboolean _on_idle(gpointer data);
|
|||
static void _on_lock(gpointer data);
|
||||
static void _on_logout(gpointer data);
|
||||
static void _on_run(void);
|
||||
static void _on_preferences(gpointer data);
|
||||
static void _on_shutdown(gpointer data);
|
||||
static gboolean _on_timeout(gpointer data);
|
||||
|
||||
|
@ -288,13 +289,15 @@ static void _on_clicked(gpointer data)
|
|||
menuitem = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
menuitem = _main_menuitem(_("Run..."), GTK_STOCK_EXECUTE);
|
||||
g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(_on_run),
|
||||
NULL);
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_run), NULL);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
menuitem = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,
|
||||
NULL);
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_preferences), main);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
menuitem = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
|
@ -438,6 +441,15 @@ static void _on_logout(gpointer data)
|
|||
}
|
||||
|
||||
|
||||
/* on_preferences */
|
||||
static void _on_preferences(gpointer data)
|
||||
{
|
||||
Main * main = data;
|
||||
|
||||
main->helper->preferences_dialog(main->helper->panel);
|
||||
}
|
||||
|
||||
|
||||
/* on_run */
|
||||
static void _on_run(void)
|
||||
{
|
||||
|
|
|
@ -54,4 +54,6 @@ void panel_delete(Panel * panel);
|
|||
int panel_error(Panel * panel, char const * message, int ret);
|
||||
int panel_load(Panel * panel, char const * applet);
|
||||
|
||||
void panel_show_preferences(Panel * panel, gboolean show);
|
||||
|
||||
# endif /* !PANEL_COMMON_H */
|
||||
|
|
66
src/panel.c
66
src/panel.c
|
@ -49,6 +49,9 @@ struct _Panel
|
|||
GdkWindow * root;
|
||||
gint root_width; /* width of the root window */
|
||||
gint root_height; /* height of the root window */
|
||||
|
||||
/* preferences */
|
||||
GtkWidget * pr_window;
|
||||
};
|
||||
|
||||
|
||||
|
@ -72,6 +75,7 @@ static int _panel_helper_logout_dialog(void);
|
|||
#endif
|
||||
static void _panel_helper_position_menu(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(void);
|
||||
|
||||
|
||||
|
@ -108,7 +112,7 @@ Panel * panel_new(PanelPrefs * prefs)
|
|||
prefs->iconsize = PANEL_ICON_SIZE_LARGE;
|
||||
if(gtk_icon_size_lookup(prefs->iconsize, &panel->icon_width,
|
||||
&panel->icon_height) != TRUE)
|
||||
error_set_print(PACKAGE, 0, "Invalid panel size");
|
||||
error_set_print(PACKAGE, 0, _("Invalid panel size"));
|
||||
panel->helper.panel = panel;
|
||||
panel->helper.config_get = _panel_helper_config_get;
|
||||
panel->helper.error = _panel_helper_error;
|
||||
|
@ -119,6 +123,7 @@ Panel * panel_new(PanelPrefs * prefs)
|
|||
panel->helper.logout_dialog = NULL;
|
||||
#endif
|
||||
panel->helper.position_menu = _panel_helper_position_menu;
|
||||
panel->helper.preferences_dialog = _panel_helper_preferences_dialog;
|
||||
panel->helper.shutdown_dialog = _panel_helper_shutdown_dialog;
|
||||
/* root window */
|
||||
screen = gdk_screen_get_default();
|
||||
|
@ -136,6 +141,7 @@ Panel * panel_new(PanelPrefs * prefs)
|
|||
#endif
|
||||
/* panel */
|
||||
g_idle_add(_on_idle, panel);
|
||||
panel->pr_window = NULL;
|
||||
panel->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
panel->height = panel->icon_height + (PANEL_BORDER_WIDTH * 4);
|
||||
#ifdef DEBUG
|
||||
|
@ -346,6 +352,57 @@ int panel_load(Panel * panel, char const * applet)
|
|||
}
|
||||
|
||||
|
||||
/* panel_show_preferences */
|
||||
static gboolean _on_preferences_delete_event(gpointer data);
|
||||
|
||||
void panel_show_preferences(Panel * panel, gboolean show)
|
||||
{
|
||||
GtkWidget * vbox;
|
||||
GtkWidget * bbox;
|
||||
GtkWidget * widget;
|
||||
|
||||
if(show == FALSE)
|
||||
{
|
||||
if(panel->pr_window != NULL)
|
||||
gtk_widget_hide(panel->pr_window);
|
||||
return;
|
||||
}
|
||||
if(panel->pr_window != NULL)
|
||||
{
|
||||
gtk_window_present(GTK_WINDOW(panel->pr_window));
|
||||
return;
|
||||
}
|
||||
panel->pr_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(panel->pr_window), 4);
|
||||
gtk_window_set_title(GTK_WINDOW(panel->pr_window),
|
||||
_("Panel preferences"));
|
||||
g_signal_connect_swapped(G_OBJECT(panel->pr_window), "delete-event",
|
||||
G_CALLBACK(_on_preferences_delete_event), panel);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
/* FIXME implement */
|
||||
bbox = gtk_hbutton_box_new();
|
||||
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
|
||||
gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 4);
|
||||
widget = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
|
||||
/* FIXME connect callback */
|
||||
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
||||
widget = gtk_button_new_from_stock(GTK_STOCK_OK);
|
||||
/* FIXME connect callback */
|
||||
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
||||
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(panel->pr_window), vbox);
|
||||
gtk_widget_show_all(panel->pr_window);
|
||||
}
|
||||
|
||||
static gboolean _on_preferences_delete_event(gpointer data)
|
||||
{
|
||||
Panel * panel = data;
|
||||
|
||||
gtk_widget_hide(panel->pr_window);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* private */
|
||||
/* functions */
|
||||
/* helpers */
|
||||
|
@ -436,6 +493,13 @@ static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y,
|
|||
}
|
||||
|
||||
|
||||
/* panel_helper_preferences_dialog */
|
||||
static void _panel_helper_preferences_dialog(Panel * panel)
|
||||
{
|
||||
panel_show_preferences(panel, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/* panel_helper_shutdown_dialog */
|
||||
static int _panel_helper_shutdown_dialog(void)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user