diff options
author | Dennis Cranston <dennis_cranston@yahoo.com> | 2005-10-28 22:21:50 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2005-10-28 22:21:50 +0000 |
commit | 4d3aad4fbe58777b5c446d1932582358194f80d7 (patch) | |
tree | 5e81c63c55bf866e22fc2ee9461a1fa42296f697 | |
parent | 3b26f65507e4c44efd1b1408f5c652c9b625e397 (diff) | |
download | gdm-4d3aad4fbe58777b5c446d1932582358194f80d7.tar.gz |
Fix bug #314685, "Gdmsetup UI fixes". Based on redesign mockups by Calum
2005-10-27 Dennis Cranston <dennis_cranston@yahoo.com>
Fix bug #314685, "Gdmsetup UI fixes". Based on redesign mockups
by Calum Benson from http://www.gnome.org/~calum/usability/specs/gdm/.
* gui/gdmsetup.c: (logo_toggle_timeout), (logo_toggle_toggled),
(xserver_update_delete_sensitivity), (init_servers_combobox),
(update_remote_sensitivity), (refresh_remote_tab),
(combobox_timeout), (list_selection_toggled), (combobox_changed),
(toggle_toggled_sensitivity_positive),
(timedlogin_allow_remote_toggled), (setup_notify_toggle),
(setup_xdmcp_notify_toggle), (users_string_compare_func),
(setup_user_combobox_list), (setup_xdmcp_intspin), (face_add),
(face_del), (browser_move), (browser_apply),
(users_add_button_clicked), (setup_face), (greeter_toggle_timeout),
(sensitive_entry_toggled), (local_background_type_toggle_timeout),
(local_background_type_toggled), (setup_greeter_toggle),
(greeter_color_timeout), (setup_greeter_color),
(xdmcp_button_clicked), (vt_spinbutton_activate),
(setup_greeter_combobox), (setup_xdmcp_support),
(acc_modules_toggled), (test_sound), (sound_response),
(setup_users_tab), (setup_accessibility_tab),
(gg_selection_changed), (read_themes), (selected_toggled),
(theme_install_response), (install_new_theme), (delete_theme),
(xserver_entry_timeout), (xserver_toggle_timeout),
(xserver_init_server_list), (xserver_init_servers),
(xserver_row_selected), (xserver_remove), (xserver_add),
(xserver_add_button_clicked), (xserver_init_definitions),
(xserver_delete), (setup_xserver_support),
(xserver_button_clicked), (setup_security_tab),
(setup_local_themed_settings), (image_filechooser_response),
(logo_filechooser_response), (create_preview_pixbuf),
(update_image_preview), (hookup_plain_background),
(hookup_plain_logo), (setup_plain_menubar),
(setup_local_welcome_message), (setup_remote_welcome_message),
(setup_local_plain_settings), (setup_local_tab),
(hookup_remote_plain_background), (hookup_remote_plain_logo),
(setup_remote_plain_settings), (setup_remote_themed_settings),
(setup_remote_tab), (setup_gui), (apply_user_changes), (main):
Implement the new UI. Fix various compiler warnings.
* gui/gdmsetup.glade: Implement the new UI.
* gui/greeter/greeter.c: (main): Get the background color from
GDM_KEY_GRAPHICAL_THEME_COLOR, but fallback to GDM_KEY_BACKGROUNDCOLOR
if its does not exist.
* gui/gdmlogin.c: (gdm_login_parse_config), (setup_background),
(gdm_reread_config): Fix bugs found in the parsing of the welcome
messages. Add support for a GDM_BACKGROUND_IMAGE background type.
Fix the setup of the welcome message string in the greeter. Fix
various compiler warnings.
* vicious-extensions/glade-helper.c: (glade_helper_tagify_label):
Add support for more than one markup tag.
* daemon/gdm.h: Define GDM_KEY_GRAPHICAL_THEME_COLOR and
GDM_KEY_CHOOSER_BUTTON_LOGO keys.
* daemon/gdm.c: (gdm_handle_user_message): Add newly defined keys.
* daemon/slave.c: (session_child_run): Pass a GDM_GREETER_TYPE
environmental variable to presession script.
* config/PreSession.in: Add support for plain and background color.
-rw-r--r-- | ChangeLog | 58 | ||||
-rwxr-xr-x | config/PreSession.in | 20 | ||||
-rw-r--r-- | daemon/gdm.c | 2 | ||||
-rw-r--r-- | daemon/gdm.h | 2 | ||||
-rw-r--r-- | daemon/slave.c | 18 | ||||
-rw-r--r-- | gui/gdmlogin.c | 119 | ||||
-rw-r--r-- | gui/gdmsetup.c | 4326 | ||||
-rw-r--r-- | gui/gdmsetup.glade | 8815 | ||||
-rw-r--r-- | gui/greeter/greeter.c | 6 |
9 files changed, 8384 insertions, 4982 deletions
@@ -1,3 +1,61 @@ +2005-10-27 Dennis Cranston <dennis_cranston@yahoo.com> + + Fix bug #314685, "Gdmsetup UI fixes". Based on redesign mockups + by Calum Benson from http://www.gnome.org/~calum/usability/specs/gdm/. + + * gui/gdmsetup.c: (logo_toggle_timeout), (logo_toggle_toggled), + (xserver_update_delete_sensitivity), (init_servers_combobox), + (update_remote_sensitivity), (refresh_remote_tab), + (combobox_timeout), (list_selection_toggled), (combobox_changed), + (toggle_toggled_sensitivity_positive), + (timedlogin_allow_remote_toggled), (setup_notify_toggle), + (setup_xdmcp_notify_toggle), (users_string_compare_func), + (setup_user_combobox_list), (setup_xdmcp_intspin), (face_add), + (face_del), (browser_move), (browser_apply), + (users_add_button_clicked), (setup_face), (greeter_toggle_timeout), + (sensitive_entry_toggled), (local_background_type_toggle_timeout), + (local_background_type_toggled), (setup_greeter_toggle), + (greeter_color_timeout), (setup_greeter_color), + (xdmcp_button_clicked), (vt_spinbutton_activate), + (setup_greeter_combobox), (setup_xdmcp_support), + (acc_modules_toggled), (test_sound), (sound_response), + (setup_users_tab), (setup_accessibility_tab), + (gg_selection_changed), (read_themes), (selected_toggled), + (theme_install_response), (install_new_theme), (delete_theme), + (xserver_entry_timeout), (xserver_toggle_timeout), + (xserver_init_server_list), (xserver_init_servers), + (xserver_row_selected), (xserver_remove), (xserver_add), + (xserver_add_button_clicked), (xserver_init_definitions), + (xserver_delete), (setup_xserver_support), + (xserver_button_clicked), (setup_security_tab), + (setup_local_themed_settings), (image_filechooser_response), + (logo_filechooser_response), (create_preview_pixbuf), + (update_image_preview), (hookup_plain_background), + (hookup_plain_logo), (setup_plain_menubar), + (setup_local_welcome_message), (setup_remote_welcome_message), + (setup_local_plain_settings), (setup_local_tab), + (hookup_remote_plain_background), (hookup_remote_plain_logo), + (setup_remote_plain_settings), (setup_remote_themed_settings), + (setup_remote_tab), (setup_gui), (apply_user_changes), (main): + Implement the new UI. Fix various compiler warnings. + * gui/gdmsetup.glade: Implement the new UI. + * gui/greeter/greeter.c: (main): Get the background color from + GDM_KEY_GRAPHICAL_THEME_COLOR, but fallback to GDM_KEY_BACKGROUNDCOLOR + if its does not exist. + * gui/gdmlogin.c: (gdm_login_parse_config), (setup_background), + (gdm_reread_config): Fix bugs found in the parsing of the welcome + messages. Add support for a GDM_BACKGROUND_IMAGE background type. + Fix the setup of the welcome message string in the greeter. Fix + various compiler warnings. + * vicious-extensions/glade-helper.c: (glade_helper_tagify_label): + Add support for more than one markup tag. + * daemon/gdm.h: Define GDM_KEY_GRAPHICAL_THEME_COLOR and + GDM_KEY_CHOOSER_BUTTON_LOGO keys. + * daemon/gdm.c: (gdm_handle_user_message): Add newly defined keys. + * daemon/slave.c: (session_child_run): Pass a GDM_GREETER_TYPE + environmental variable to presession script. + * config/PreSession.in: Add support for plain and background color. + 2005-10-28 Brian Cameron <brian.cameron@sun.com> * daemon/display.c: If the slave doesn't diff --git a/config/PreSession.in b/config/PreSession.in index a324c814..44ee9607 100755 --- a/config/PreSession.in +++ b/config/PreSession.in @@ -27,11 +27,23 @@ gdmwhich () { XSETROOT=`gdmwhich xsetroot` if [ "x$XSETROOT" != "x" ] ; then - # Try to snarf the BackgroundColor from the config file - BACKCOLOR=`grep '^BackgroundColor' @EXPANDED_SYSCONFDIR@/gdm/gdm.conf | sed 's/^.*=\(.*\)$/\1/'` - if [ "x$BACKCOLOR" = "x" ]; then - BACKCOLOR="#76848F" + # Try to snarf either the plain or themed background color from the config file + if [ "x$GDM_GREETER_TYPE" = "xPLAIN" ]; then + # Background type can be 0=None, 1=Image & Color, 2=Color, or 3=Image + BACKTYPE=`grep '^BackgroundType' @EXPANDED_SYSCONFDIR@/gdm/gdm.conf | sed 's/^.*=\(.*\)$/\1/'` + + # Skip if background type does not include a color + if [ "x$BACKTYPE" != "x0" ] && [ "x$BACKTYPE" != "x3" ]; then + BACKCOLOR=`grep '^BackgroundColor' @EXPANDED_SYSCONFDIR@/gdm/gdm.conf | sed 's/^.*=\(.*\)$/\1/'` + fi + elif [ "x$GDM_GREETER_TYPE" = "xTHEMED" ]; then + BACKCOLOR=`grep '^GraphicalThemedColor' @EXPANDED_SYSCONFDIR@/gdm/gdm.conf | sed 's/^.*=\(.*\)$/\1/'` fi + + if [ "x$BACKCOLOR" = "x" ]; then + BACKCOLOR="#76848F" + fi + "$XSETROOT" -cursor_name left_ptr -solid "$BACKCOLOR" fi diff --git a/daemon/gdm.c b/daemon/gdm.c index e15d5a50..66223056 100644 --- a/daemon/gdm.c +++ b/daemon/gdm.c @@ -4371,6 +4371,7 @@ gdm_handle_user_message (GdmConnection *conn, const char *msg, gpointer data) !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_FACE, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_LOCFILE, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_LOGO, NULL)) && + !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_CHOOSER_BUTTON_LOGO, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_WELCOME, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_REMOTEWELCOME, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_BACKGROUNDPROG, NULL)) && @@ -4379,6 +4380,7 @@ gdm_handle_user_message (GdmConnection *conn, const char *msg, gpointer data) !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_GRAPHICAL_THEME, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_GRAPHICAL_THEME_DIR, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_GRAPHICAL_THEMES, NULL)) && + !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_GRAPHICAL_THEME_COLOR, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_INFO_MSG_FILE, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_INFO_MSG_FONT, NULL)) && !(print_defaultstring_if_key (cfg, conn, key, GDM_KEY_INFO_MSG_FONT, NULL)) && diff --git a/daemon/gdm.h b/daemon/gdm.h index d63dca3d..93b07882 100644 --- a/daemon/gdm.h +++ b/daemon/gdm.h @@ -287,6 +287,7 @@ enum { #define GDM_KEY_FACEDIR "greeter/GlobalFaceDir=" EXPANDED_DATADIR "/pixmaps/faces/" #define GDM_KEY_LOCFILE "greeter/LocaleFile=" EXPANDED_LOCALEDIR "/locale.alias" #define GDM_KEY_LOGO "greeter/Logo=" EXPANDED_PIXMAPDIR "/gdm-foot-logo.png" +#define GDM_KEY_CHOOSER_BUTTON_LOGO "greeter/ChooserButtonLogo=" EXPANDED_PIXMAPDIR "/gdm-foot-logo.png" #define GDM_KEY_QUIVER "greeter/Quiver=true" #define GDM_KEY_SYSMENU "greeter/SystemMenu=true" #define GDM_KEY_CONFIGURATOR "daemon/Configurator=" EXPANDED_SBINDIR "/gdmsetup --disable-sound --disable-crash-dialog" @@ -321,6 +322,7 @@ enum { #define GDM_KEY_GRAPHICAL_THEMES "greeter/GraphicalThemes=circles" #define GDM_KEY_GRAPHICAL_THEME_RAND "greeter/GraphicalThemeRand=false" #define GDM_KEY_GRAPHICAL_THEME_DIR "greeter/GraphicalThemeDir=" EXPANDED_DATADIR "/gdm/themes/" +#define GDM_KEY_GRAPHICAL_THEME_COLOR "greeter/GraphicalThemedColor=#76848F" #define GDM_KEY_INFO_MSG_FILE "greeter/InfoMsgFile=" #define GDM_KEY_INFO_MSG_FONT "greeter/InfoMsgFont=" diff --git a/daemon/slave.c b/daemon/slave.c index f0d02b62..22ac6993 100644 --- a/daemon/slave.c +++ b/daemon/slave.c @@ -3643,6 +3643,7 @@ session_child_run (struct passwd *pwent, const char *shell = NULL; VeConfig *dmrc = NULL; char *argv[4]; + char *greeter; #ifdef CAN_USE_SETPENV extern char **newenv; @@ -3680,6 +3681,23 @@ session_child_run (struct passwd *pwent, ve_setenv ("DESKTOP_SESSION", session, TRUE); + /* Determine default greeter type so the PreSession */ + /* script can set the appropriate background color. */ + if (d->attached) { + greeter = GdmGreeter; + } else { + greeter = GdmRemoteGreeter; + } + + if (strstr (greeter, "gdmlogin") != NULL) { + ve_setenv ("GDM_GREETER_TYPE", "PLAIN", TRUE); + } else if (strstr (greeter, "gdmgreeter") != NULL) { + ve_setenv ("GDM_GREETER_TYPE", "THEMED", TRUE); + } else { + /* huh? */ + ve_setenv ("GDM_GREETER_TYPE", "unknown", TRUE); + } + /* Run the PreSession script */ if G_UNLIKELY (gdm_slave_exec_script (d, GdmPreSession, pwent->pw_name, pwent, diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c index a154d4f5..37fb4ec3 100644 --- a/gui/gdmlogin.c +++ b/gui/gdmlogin.c @@ -111,8 +111,9 @@ static gboolean GdmBackgroundRemoteOnlyColor; static int GdmBackgroundType; enum { GDM_BACKGROUND_NONE = 0, - GDM_BACKGROUND_IMAGE = 1, - GDM_BACKGROUND_COLOR = 2 + GDM_BACKGROUND_IMAGE_AND_COLOR = 1, + GDM_BACKGROUND_COLOR = 2, + GDM_BACKGROUND_IMAGE = 3, }; static gchar *GdmGtkRC; static gchar *GdmLocaleFile; @@ -220,7 +221,7 @@ static guint timed_handler_id = 0; #if FIXME static char *selected_browser_user = NULL; -#endif FIXME +#endif static gboolean selecting_user = TRUE; extern GList *sessions; @@ -874,7 +875,6 @@ gdm_theme_handler (GtkWidget *widget, gpointer data) static void gdm_login_parse_config (void) { - GList *list, *li; struct stat unused; VeConfig *config; @@ -923,12 +923,19 @@ gdm_login_parse_config (void) */ GdmDefaultWelcomeBacktest = ve_config_get_bool (config, greeter_DefaultWelcomeBacktest_key); if (GdmDefaultWelcomeBacktest == FALSE) { - if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_WELCOME_MSG) == 0) - GdmDefaultWelcome == TRUE; - else if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_REMOTEWELCOME_MSG) == 0) - GdmDefaultWelcome == TRUE; - else - GdmDefaultWelcome = FALSE; + if (strcmp (greeter_Welcome_key, GDM_KEY_WELCOME) == 0) { + if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_WELCOME_MSG) == 0) { + GdmDefaultWelcome = TRUE; + } else { + GdmDefaultWelcome = FALSE; + } + } else if (strcmp (greeter_Welcome_key, GDM_KEY_REMOTEWELCOME) == 0) { + if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_REMOTEWELCOME_MSG) == 0) { + GdmDefaultWelcome = TRUE; + } else { + GdmDefaultWelcome = FALSE; + } + } } /* Replace default welcome message with one specified in the config file, if @@ -1021,9 +1028,12 @@ gdm_login_parse_config (void) GdmSystemMenuReal = FALSE; GdmConfigAvailableReal = FALSE; GdmChooserButtonReal = FALSE; - if (GdmBackgroundRemoteOnlyColor && - GdmBackgroundType == GDM_BACKGROUND_IMAGE) - GdmBackgroundType = GDM_BACKGROUND_COLOR; + if (GdmBackgroundRemoteOnlyColor) { + if (GdmBackgroundType == GDM_BACKGROUND_IMAGE_AND_COLOR) + GdmBackgroundType = GDM_BACKGROUND_COLOR; + if (GdmBackgroundType == GDM_BACKGROUND_IMAGE) + GdmBackgroundType = GDM_BACKGROUND_NONE; + } if (GdmBackgroundRemoteOnlyColor && ! ve_string_empty (GdmBackgroundProg)) { g_free (GdmBackgroundProg); @@ -2411,33 +2421,6 @@ gdm_login_browser_populate (void) } } -static gboolean -resize_in_time (gpointer data) -{ - login_window_resize (FALSE /* force */); - return FALSE; -} - -static int -get_double_click_time (void) -{ - /* FIXME: what about multihead? */ - GtkSettings *settings = gtk_settings_get_default (); - int t; - - g_object_get (G_OBJECT (settings), - "gtk-double-click-time", - &t, - NULL); - - /* sanity */ - if (t < 100) - t = 100; - if (t > 1500) - t = 1500; - - return t; -} static void user_selected (GtkTreeSelection *selection, gpointer data) @@ -3357,20 +3340,23 @@ setup_background (void) GdkColor color; GdkPixbuf *pb = NULL; - if (GdmBackgroundType == GDM_BACKGROUND_IMAGE && + if ((GdmBackgroundType == GDM_BACKGROUND_IMAGE || + GdmBackgroundType == GDM_BACKGROUND_IMAGE_AND_COLOR) && ! ve_string_empty (GdmBackgroundImage)) pb = gdk_pixbuf_new_from_file (GdmBackgroundImage, NULL); /* Load background image */ if (pb != NULL) { if (gdk_pixbuf_get_has_alpha (pb)) { - if (GdmBackgroundColor == NULL || - GdmBackgroundColor[0] == '\0' || - ! gdk_color_parse (GdmBackgroundColor, + if (GdmBackgroundType == GDM_BACKGROUND_IMAGE_AND_COLOR) { + if (GdmBackgroundColor == NULL || + GdmBackgroundColor[0] == '\0' || + ! gdk_color_parse (GdmBackgroundColor, &color)) { - gdk_color_parse ("#007777", &color); + gdk_color_parse ("#000000", &color); + } + add_color_to_pb (pb, &color); } - add_color_to_pb (pb, &color); } if (GdmBackgroundScaleToFit) { GdkPixbuf *spb = render_scaled_back (pb); @@ -3384,8 +3370,13 @@ setup_background (void) g_object_unref (G_OBJECT (pb)); } /* Load background color */ - } else if (GdmBackgroundType != GDM_BACKGROUND_NONE) { + } else if (GdmBackgroundType != GDM_BACKGROUND_NONE && + GdmBackgroundType != GDM_BACKGROUND_IMAGE) { setup_background_color (GdmBackgroundColor); + /* Load default background */ + } else { + gchar *blank_color = g_strdup ("#000000"); + setup_background_color (blank_color); } } @@ -3421,7 +3412,7 @@ gdm_reread_config (int sig, gpointer data) ! gdm_common_string_same (config, GdmExclude, GDM_KEY_EXCLUDE) || ! gdm_common_bool_same (config, GdmConfigAvailable, GDM_KEY_CONFIG_AVAILABLE) || ! gdm_common_bool_same (config, GdmChooserButton, GDM_KEY_CHOOSER_BUTTON) || - ! gdm_common_bool_same (config, GdmChooserButton, GDM_KEY_ALLOW_GTK_THEME_CHANGE) || + ! gdm_common_bool_same (config, GdmAllowGtkThemeChange, GDM_KEY_ALLOW_GTK_THEME_CHANGE) || ! gdm_common_bool_same (config, GdmTimedLoginEnable, GDM_KEY_TIMED_LOGIN_ENABLE)) { /* Set busy cursor */ gdm_common_setup_cursor (GDK_WATCH); @@ -3515,6 +3506,7 @@ gdm_reread_config (int sig, gpointer data) (!GdmDefaultWelcome && ! gdm_common_string_same (config, GdmWelcome, greeter_Welcome_key))) { + char *greeting; GdmWelcome = ve_config_get_string (config, greeter_Welcome_key); GdmDefaultWelcome = ve_config_get_bool (config, greeter_DefaultWelcome_key); GdmDefaultWelcomeBacktest = ve_config_get_bool (config, greeter_DefaultWelcomeBacktest_key); @@ -3524,12 +3516,19 @@ gdm_reread_config (int sig, gpointer data) * assume GdmDefaultWelcome is FALSE unless the string matches the default */ if (GdmDefaultWelcomeBacktest == FALSE) { - if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_WELCOME_MSG) == 0) - GdmDefaultWelcome == TRUE; - else if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_REMOTEWELCOME_MSG) == 0) - GdmDefaultWelcome == TRUE; - else - GdmDefaultWelcome = FALSE; + if (strcmp (greeter_Welcome_key, GDM_KEY_WELCOME) == 0) { + if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_WELCOME_MSG) == 0) { + GdmDefaultWelcome = TRUE; + } else { + GdmDefaultWelcome = FALSE; + } + } else if (strcmp (greeter_Welcome_key, GDM_KEY_REMOTEWELCOME) == 0) { + if (strcmp (ve_sure_string (GdmWelcome), GDM_DEFAULT_REMOTEWELCOME_MSG) == 0) { + GdmDefaultWelcome = TRUE; + } else { + GdmDefaultWelcome = FALSE; + } + } } if (GdmDefaultWelcome) { @@ -3545,20 +3544,18 @@ gdm_reread_config (int sig, gpointer data) str = ve_config_get_translated_string (config, greeter_Welcome_key); if (strcmp (ve_sure_string (str), ve_sure_string (GdmWelcome)) != 0) { - char *greeting; g_free (GdmWelcome); GdmWelcome = str; - - greeting = gdm_parse_enriched_string ("<big><big><big>", - GdmWelcome, "</big></big></big>"); - gtk_label_set_markup (GTK_LABEL (welcome), greeting); - g_free (greeting); - resize = TRUE; } else { g_free (str); } } + + greeting = gdm_parse_enriched_string ("<big><big><big>", + GdmWelcome, "</big></big></big>"); + gtk_label_set_markup (GTK_LABEL (welcome), greeting); + g_free (greeting); } if (resize) { diff --git a/gui/gdmsetup.c b/gui/gdmsetup.c index f0c22a56..aad29744 100644 --- a/gui/gdmsetup.c +++ b/gui/gdmsetup.c @@ -19,6 +19,7 @@ #include <config.h> #include <libgnome/libgnome.h> #include <libgnomeui/libgnomeui.h> +#include <libgnomevfs/gnome-vfs-mime-utils.h> #include <gdk/gdkx.h> #include <glade/glade.h> #include <stdio.h> @@ -59,16 +60,18 @@ gchar *GdmInclude = NULL; gboolean GdmIncludeAll; gboolean GdmAllowRoot; gboolean GdmAllowRemoteRoot; +gboolean GdmUserChangesUnsaved; static char *GdmSoundProgram = NULL; static gboolean gdm_running = FALSE; static GladeXML *xml; +static GladeXML *xml_add_users; +static GladeXML *xml_add_xservers; +static GladeXML *xml_xdmcp; +static GladeXML *xml_xservers; +static GtkWidget *setup_notebook; static GList *timeout_widgets = NULL; static gchar *last_theme_installed = NULL; -static int last_remote_login_setting = -1; -static gboolean have_sound_ready_file = FALSE; -static gboolean have_sound_success_file = FALSE; -static gboolean have_sound_failure_file = FALSE; static char *selected_themes = NULL; static char *selected_theme = NULL; static gchar *config_file; @@ -85,11 +88,12 @@ enum { THEME_COLUMN_SELECTED_LIST, THEME_COLUMN_DIR, THEME_COLUMN_FILE, + THEME_COLUMN_SCREENSHOT, + THEME_COLUMN_MARKUP, THEME_COLUMN_NAME, THEME_COLUMN_DESCRIPTION, THEME_COLUMN_AUTHOR, THEME_COLUMN_COPYRIGHT, - THEME_COLUMN_SCREENSHOT, THEME_NUM_COLUMNS }; @@ -103,6 +107,40 @@ enum { RANDOM_THEME }; +enum { + LOCAL_TAB, + REMOTE_TAB, + ACCESSIBILITY_TAB, + SECURITY_TAB, + USERS_TAB +}; + +enum { + LOCAL_PLAIN, + LOCAL_PLAIN_WITH_FACE, + LOCAL_THEMED +}; + +enum { + REMOTE_DISABLED, + REMOTE_SAME_AS_LOCAL, + REMOTE_PLAIN = 2, + REMOTE_THEMED = 2, + REMOTE_PLAIN_WITH_FACE = 3 +}; + +enum { + XSERVER_LAUNCH_GREETER, + XSERVER_LAUNCH_CHOOSER +}; + +enum { + BACKGROUND_NONE, + BACKGROUND_IMAGE_AND_COLOR, + BACKGROUND_COLOR, + BACKGROUND_IMAGE +}; + static void simple_spawn_sync (char **argv) { @@ -297,6 +335,78 @@ toggle_timeout (GtkWidget *toggle) } static gboolean +logo_toggle_timeout (GtkWidget *toggle) +{ + const char *key = g_object_get_data (G_OBJECT (toggle), "key"); + VeConfig *config; + GtkWidget *chooserbutton; + gchar *filename; + + config = ve_config_get (config_file); + + chooserbutton = glade_helper_get (xml, "local_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooserbutton)); + + if ((GTK_TOGGLE_BUTTON (toggle)->active) == FALSE) { + ve_config_set_string (config, GDM_KEY_CHOOSER_BUTTON_LOGO, filename); + ve_config_set_string (config, key, ""); + ve_config_save (config, FALSE); + + update_greeters (); + } + else if (filename != NULL) { + ve_config_set_string (config, GDM_KEY_CHOOSER_BUTTON_LOGO, filename); + ve_config_set_string (config, key, filename); + ve_config_save (config, FALSE); + + update_greeters (); + } + g_free (filename); + return FALSE; +} + +static void +logo_toggle_toggled (GtkWidget *toggle, gpointer data) +{ + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + + GtkWidget *checkbutton; + + checkbutton = glade_helper_get (xml, "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + g_signal_handlers_disconnect_by_func (checkbutton, + (gpointer) logo_toggle_toggled, + NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), + GTK_TOGGLE_BUTTON (toggle)->active); + + g_signal_connect (G_OBJECT (checkbutton), "toggled", + G_CALLBACK (logo_toggle_toggled), NULL); + } + else { + GtkWidget *checkbutton; + + checkbutton = glade_helper_get (xml, "local_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + g_signal_handlers_disconnect_by_func (checkbutton, + (gpointer) logo_toggle_toggled, + NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), + GTK_TOGGLE_BUTTON (toggle)->active); + + g_signal_connect (G_OBJECT (checkbutton), "toggled", + G_CALLBACK (logo_toggle_toggled), NULL); + } + run_timeout (toggle, 200, logo_toggle_timeout); +} + +static gboolean intspin_timeout (GtkWidget *spin) { const char *key = g_object_get_data (G_OBJECT (spin), "key"); @@ -409,9 +519,9 @@ xserver_update_delete_sensitivity() gboolean valid; gint i; - modify_combobox = glade_helper_get (xml, "xserver_mod_combobox", + modify_combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", GTK_TYPE_COMBO_BOX); - delete_button = glade_helper_get (xml, "xserver_delete_button", + delete_button = glade_helper_get (xml_xservers, "xserver_deletebutton", GTK_TYPE_BUTTON); /* Get list of servers that are set to start */ @@ -456,6 +566,218 @@ xserver_update_delete_sensitivity() } } +static +void init_servers_combobox (int index) +{ + GtkWidget *mod_combobox; + GtkWidget *name_entry; + GtkWidget *command_entry; + GtkWidget *style_combobox; + GtkWidget *handled_checkbutton; + GtkWidget *flexible_checkbutton; + GtkListStore *store; + GSList *xservers; + GdmXServer *xserver; + + mod_combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", + GTK_TYPE_COMBO_BOX); + name_entry = glade_helper_get (xml_xservers, "xserver_name_entry", + GTK_TYPE_ENTRY); + command_entry = glade_helper_get (xml_xservers, "xserver_command_entry", + GTK_TYPE_ENTRY); + style_combobox = glade_helper_get (xml_xservers, "xserver_style_combobox", + GTK_TYPE_COMBO_BOX); + handled_checkbutton = glade_helper_get (xml_xservers, "xserver_handled_checkbutton", + GTK_TYPE_CHECK_BUTTON); + flexible_checkbutton = glade_helper_get (xml_xservers, "xserver_flexible_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + /* Get list of servers that are set to start */ + store = gtk_list_store_new (XSERVER_NUM_COLUMNS, + G_TYPE_INT /* virtual terminal */, + G_TYPE_STRING /* server type */, + G_TYPE_STRING /* options */); + xservers_get_servers (store); + + /* Get list of servers and determine which is selected */ + xservers = xservers_get_server_definitions (); + xserver = g_slist_nth_data (xservers, index); + + gtk_combo_box_set_active (GTK_COMBO_BOX (mod_combobox), index); + gtk_entry_set_text (GTK_ENTRY (name_entry), xserver->name); + gtk_entry_set_text (GTK_ENTRY (command_entry), xserver->command); + + if (!xserver->chooser) { + gtk_combo_box_set_active (GTK_COMBO_BOX (style_combobox), XSERVER_LAUNCH_GREETER); + } + else { + gtk_combo_box_set_active (GTK_COMBO_BOX (style_combobox), XSERVER_LAUNCH_CHOOSER); + } + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (handled_checkbutton), + xserver->handled); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (flexible_checkbutton), + xserver->flexible); + + xserver_update_delete_sensitivity (); +} + +void +update_remote_sensitivity (gboolean value) +{ + GtkWidget *remote_background_color_hbox; + GtkWidget *remote_background_image_hhox; + GtkWidget *remote_background_image_checkbutton; + GtkWidget *remote_background_image_chooserbutton; + GtkWidget *remote_logo_image_checkbutton; + GtkWidget *remote_plain_logo_hbox; + GtkWidget *remote_theme_background_hbox; + GtkWidget *remote_theme_mode_hbox; + GtkWidget *remote_theme_select_hbox; + GtkWidget *sg_scale_background_remote_hbox; + + remote_background_color_hbox = glade_helper_get (xml, "remote_background_color_hbox", + GTK_TYPE_HBOX); + remote_background_image_hhox = glade_helper_get (xml, "remote_background_image_hhox", + GTK_TYPE_HBOX); + remote_background_image_checkbutton = glade_helper_get (xml, "remote_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + remote_background_image_chooserbutton = glade_helper_get (xml, "remote_background_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + remote_logo_image_checkbutton = glade_helper_get (xml, "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + remote_plain_logo_hbox = glade_helper_get (xml, "remote_plain_logo_hbox", + GTK_TYPE_HBOX); + remote_theme_background_hbox = glade_helper_get (xml, "remote_theme_background_hbox", + GTK_TYPE_TABLE); + remote_theme_mode_hbox = glade_helper_get (xml, "remote_theme_mode_hbox", + GTK_TYPE_HBOX); + remote_theme_select_hbox = glade_helper_get (xml, "remote_theme_select_hbox", + GTK_TYPE_HBOX); + sg_scale_background_remote_hbox = glade_helper_get (xml, "sg_scale_background_remote_hbox", + GTK_TYPE_HBOX); + + gtk_widget_set_sensitive (remote_background_color_hbox, value); + gtk_widget_set_sensitive (remote_background_image_hhox, value); + gtk_widget_set_sensitive (remote_background_image_checkbutton, value); + gtk_widget_set_sensitive (remote_background_image_chooserbutton, value); + gtk_widget_set_sensitive (remote_logo_image_checkbutton, value); + gtk_widget_set_sensitive (remote_plain_logo_hbox, value); + gtk_widget_set_sensitive (remote_theme_background_hbox, value); + gtk_widget_set_sensitive (remote_theme_mode_hbox, value); + gtk_widget_set_sensitive (remote_theme_select_hbox, value); + gtk_widget_set_sensitive (sg_scale_background_remote_hbox, value); +} + +void +refresh_remote_tab (void) +{ + GtkWidget *local_greeter; + GtkWidget *remote_greeter; + GtkWidget *remote_plain_vbox; + GtkWidget *remote_themed_vbox; + GtkWidget *configure_xdmcp_vbox; + GtkWidget *welcome_message_vbox; + GtkWidget *allowremoteroot; + GtkWidget *allowremoteauto; + gchar *remote_style; + gint local_style; + + local_greeter = glade_helper_get (xml, "local_greeter", + GTK_TYPE_COMBO_BOX); + remote_greeter = glade_helper_get (xml, "remote_greeter", + GTK_TYPE_COMBO_BOX); + remote_plain_vbox = glade_helper_get (xml, "remote_plain_properties_vbox", + GTK_TYPE_VBOX); + remote_themed_vbox = glade_helper_get (xml, "remote_themed_properties_vbox", + GTK_TYPE_VBOX); + configure_xdmcp_vbox = glade_helper_get (xml, "remote_configure_xdmcp_vbox", + GTK_TYPE_VBOX); + welcome_message_vbox = glade_helper_get (xml, "remote_welcome_message_vbox", + GTK_TYPE_VBOX); + allowremoteroot = glade_helper_get (xml, "allowremoteroot", + GTK_TYPE_BUTTON); + allowremoteauto = glade_helper_get (xml, "allowremoteauto", + GTK_TYPE_CHECK_BUTTON); + + /* Remove previously added items from the combobox */ + gtk_combo_box_remove_text (GTK_COMBO_BOX (remote_greeter), REMOTE_PLAIN_WITH_FACE); + gtk_combo_box_remove_text (GTK_COMBO_BOX (remote_greeter), REMOTE_PLAIN); + + local_style = gtk_combo_box_get_active (GTK_COMBO_BOX (local_greeter)); + remote_style = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_REMOTEGREETER); + + if (ve_config_get_bool (ve_config_get (config_file), GDM_KEY_XDMCP) == FALSE) { + + if (local_style == LOCAL_PLAIN || local_style == LOCAL_PLAIN_WITH_FACE) { + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Themed")); + } + else { + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Plain")); + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Plain with face browser")); + } + + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_DISABLED); + gtk_widget_set_sensitive (allowremoteroot, FALSE); + gtk_widget_set_sensitive (allowremoteauto, FALSE); + gtk_widget_hide (remote_plain_vbox); + gtk_widget_hide (remote_themed_vbox); + gtk_widget_hide (welcome_message_vbox); + gtk_widget_hide (configure_xdmcp_vbox); + } + else { + if (local_style == LOCAL_PLAIN || local_style == LOCAL_PLAIN_WITH_FACE) { + + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Themed")); + + if (strstr (remote_style, "/gdmlogin") != NULL) { + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_SAME_AS_LOCAL); + update_remote_sensitivity (FALSE); + gtk_widget_show (remote_plain_vbox); + gtk_widget_hide (remote_themed_vbox); + } + else if (strstr (remote_style, "/gdmgreeter") != NULL) { + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_THEMED); + update_remote_sensitivity (TRUE); + gtk_widget_hide (remote_plain_vbox); + gtk_widget_show (remote_themed_vbox); + } + } + else { + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Plain")); + gtk_combo_box_append_text (GTK_COMBO_BOX (remote_greeter), _("Plain with face browser")); + + if (strstr (remote_style, "/gdmlogin") != NULL) { + gboolean use_browser; + + use_browser = ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_BROWSER); + if (use_browser == FALSE) { + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_PLAIN); + } + else { + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_PLAIN_WITH_FACE); + } + update_remote_sensitivity (TRUE); + gtk_widget_hide (remote_themed_vbox); + gtk_widget_show (remote_plain_vbox); + } + else if (strstr (remote_style, "/gdmgreeter") != NULL) { + gtk_combo_box_set_active (GTK_COMBO_BOX (remote_greeter), REMOTE_SAME_AS_LOCAL); + update_remote_sensitivity (FALSE); + gtk_widget_hide (remote_plain_vbox); + gtk_widget_show (remote_themed_vbox); + } + } + gtk_widget_set_sensitive (allowremoteauto, ve_config_get_bool (ve_config_get (config_file), GDM_KEY_XDMCP)); + gtk_widget_set_sensitive (allowremoteroot, TRUE); + gtk_widget_show (welcome_message_vbox); + gtk_widget_show (configure_xdmcp_vbox); + } + g_free (remote_style); +} + static gboolean combobox_timeout (GtkWidget *combo_box) { @@ -463,43 +785,90 @@ combobox_timeout (GtkWidget *combo_box) int selected = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)); VeConfig *config = ve_config_get (config_file); - /* Local Greeter and Remote Greeter Comboboxes */ - if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0 || - strcmp (key, GDM_KEY_GREETER) == 0) { + /* Local Greeter Comboboxes */ + if (strcmp (key, GDM_KEY_GREETER) == 0) { - char *new_val = NULL; - gchar *val; + gchar *old_key_val; + gchar *new_key_val; + gboolean browser_val; - if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0 && - selected == 2) { + old_key_val = ve_config_get_string (config, key); + new_key_val = NULL; - /* Disable remote login if selected */ - GtkWidget *toggle = glade_helper_get (xml, "enable_xdmcp", - GTK_TYPE_TOGGLE_BUTTON); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), FALSE); - return FALSE; + if (selected == LOCAL_PLAIN_WITH_FACE) { + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); + browser_val = TRUE; + } + else if (selected == LOCAL_THEMED) { + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmgreeter"); + browser_val = ve_config_get_bool (config, GDM_KEY_BROWSER); } - - else if (selected == 0) { - /* GTK+ Greeter */ - new_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); - last_remote_login_setting = 0; - } else if (selected == 1) { - /* Themed Greeter */ - new_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmgreeter"); - last_remote_login_setting = 1; + else { /* Plain style */ + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); + browser_val = FALSE; + } + + if (new_key_val && + strcmp (ve_sure_string (old_key_val), ve_sure_string (new_key_val)) != 0) { + + ve_config_set_string (config, key, new_key_val); + ve_config_set_bool (config, GDM_KEY_BROWSER, browser_val); + ve_config_save (config, FALSE); + update_key (key); } - - val = ve_config_get_string (config, key); - if (new_val && - strcmp (ve_sure_string (val), ve_sure_string (new_val)) != 0) { - - ve_config_set_string (config, key, new_val); - ve_config_save (config, FALSE /* force */); + else { + ve_config_set_bool (config, GDM_KEY_BROWSER, browser_val); + ve_config_save (config, FALSE); + update_greeters (); + } + + refresh_remote_tab (); + g_free (old_key_val); + g_free (new_key_val); + } + /* Remote Greeter Comboboxes */ + else if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0) { + + if (selected == REMOTE_DISABLED) { + ve_config_set_bool (config, GDM_KEY_XDMCP, FALSE); + ve_config_save (config, FALSE); + update_greeters (); + + return FALSE; + } + else { + gchar *new_key_val = NULL; + + if (selected == REMOTE_SAME_AS_LOCAL) { + new_key_val = ve_config_get_string (ve_config_get (config_file), GDM_KEY_GREETER); + } + else if (selected == REMOTE_PLAIN_WITH_FACE) { + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); + ve_config_set_bool (config, GDM_KEY_BROWSER, TRUE); + } + else { + gchar *selected_text; + + selected_text = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combo_box)); + + if (strcmp (selected_text, _("Themed")) == 0) { + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmgreeter"); + } + else { + new_key_val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); + ve_config_set_bool (config, GDM_KEY_BROWSER, FALSE); + } + g_free (selected_text); + } + + ve_config_set_string (config, key, new_key_val); + ve_config_set_bool (config, GDM_KEY_XDMCP, TRUE); + ve_config_save (config, FALSE); update_key (key); + + g_free( new_key_val); + return FALSE; } - g_free (new_val); - /* Automatic Login Combobox */ } else if (strcmp (key, GDM_KEY_AUTOMATICLOGIN) == 0 || strcmp (key, GDM_KEY_TIMED_LOGIN) == 0) { @@ -524,155 +893,58 @@ combobox_timeout (GtkWidget *combo_box) update_key (key); } g_free (new_val); - - /* Theme Combobox */ - } else if (strcmp (key, GDM_KEY_GRAPHICAL_THEME_RAND) == 0 ) { - gboolean GdmGraphicalThemeRand; + } + else if (strcmp (key, GDM_KEY_GRAPHICAL_THEME_RAND) == 0 ) { + + /* Theme Combobox */ gboolean new_val; - GtkTreeViewColumn *radioColumn = NULL; - GtkTreeViewColumn *checkboxColumn = NULL; - GtkTreeSelection *selection; - GtkTreeIter iter; - GValue value = {0, }; - gboolean val = ve_config_get_bool (config, key); - GtkWidget *theme_list = glade_helper_get (xml, "gg_theme_list", - GTK_TYPE_TREE_VIEW); - GtkWidget *del_button = glade_helper_get (xml, "gg_delete_theme", - GTK_TYPE_BUTTON); + gboolean old_val ; + + old_val = ve_config_get_bool (config, key); /* Choose to display radio or checkbox toggle column */ if (selected == RANDOM_THEME) { new_val = TRUE; - radioColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), - THEME_COLUMN_SELECTED); - checkboxColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), - THEME_COLUMN_SELECTED_LIST); - gtk_tree_view_column_set_visible (radioColumn, FALSE); - gtk_tree_view_column_set_visible (checkboxColumn, TRUE); } else { /* Default to one theme */ new_val = FALSE; - radioColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), - THEME_COLUMN_SELECTED); - checkboxColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), - THEME_COLUMN_SELECTED_LIST); - gtk_tree_view_column_set_visible (radioColumn, TRUE); - gtk_tree_view_column_set_visible (checkboxColumn, FALSE); } /* Update config */ - if (new_val != val) { + if (new_val != old_val) { ve_config_set_bool (config, key, new_val); ve_config_save (config, FALSE /* force */); update_key (key); - } - - /* Update Delete Button's sensitivity */ - GdmGraphicalThemeRand = ve_config_get_bool ( - ve_config_get (config_file), - GDM_KEY_GRAPHICAL_THEME_RAND); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); - gtk_widget_set_sensitive (del_button, FALSE); - if ( ! gtk_tree_selection_get_selected (selection, NULL, &iter)) - { - gtk_widget_set_sensitive (del_button, FALSE); - } else { - GtkTreeModel *model; - - /* Default to allow deleting of themes */ - gtk_widget_set_sensitive (del_button, TRUE); - - /* Determine if the theme selected is currently active */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (theme_list)); - if (GdmGraphicalThemeRand) { - gtk_tree_model_get_value (model, &iter, - THEME_COLUMN_SELECTED_LIST, &value); - } else { - gtk_tree_model_get_value (model, &iter, - THEME_COLUMN_SELECTED, &value); - } - - /* Do not allow deleting of active themes */ - if (g_value_get_boolean (&value)) { - gtk_widget_set_sensitive (del_button, FALSE); - } - } - - - /* Add/Modify Server to Start combobox */ - } else if (strcmp (key, GDM_KEY_SECTION_SERVERS) == 0 ) { - GtkWidget *add_button = glade_helper_get (xml, "xserver_add_button", - GTK_TYPE_BUTTON); - gtk_widget_set_sensitive(add_button, TRUE); - - /* Modify Server Definition combobox */ - } else if (strcmp (key, GDM_KEY_SERVER_PREFIX) == 0 ) { - /* Init Widgets */ - GtkWidget *frame, *modify_combobox; - GtkWidget *name_entry, *command_entry; - GtkWidget *handled_check, *flexible_check; - GtkWidget *greeter_radio, *chooser_radio; - GtkWidget *create_button, *delete_button; - GtkListStore *store; - GSList *xservers; - GdmXServer *xserver; - gint i; - - /* Get Widgets from glade */ - frame = glade_helper_get (xml, "xserver_modify_frame", - GTK_TYPE_FRAME); - name_entry = glade_helper_get (xml, "xserver_name_entry", - GTK_TYPE_ENTRY); - command_entry = glade_helper_get (xml, "xserver_command_entry", - GTK_TYPE_ENTRY); - handled_check = glade_helper_get (xml, "xserver_handled_checkbutton", - GTK_TYPE_CHECK_BUTTON); - flexible_check = glade_helper_get (xml, "xserver_flexible_checkbutton", - GTK_TYPE_CHECK_BUTTON); - greeter_radio = glade_helper_get (xml, "xserver_greeter_radiobutton", - GTK_TYPE_RADIO_BUTTON); - chooser_radio = glade_helper_get (xml, "xserver_chooser_radiobutton", - GTK_TYPE_RADIO_BUTTON); - modify_combobox = glade_helper_get (xml, "xserver_mod_combobox", + } + } + /* Style combobox */ + else if (strcmp (key, GDM_KEY_SERVER_CHOOSER) == 0) { + + GtkWidget *mod_combobox; + GtkWidget *style_combobox; + gboolean val_new; + gboolean val_old; + gchar *section; + + mod_combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", + GTK_TYPE_COMBO_BOX); + style_combobox = glade_helper_get (xml_xservers, "xserver_style_combobox", GTK_TYPE_COMBO_BOX); - create_button = glade_helper_get (xml, "xserver_create_button", - GTK_TYPE_BUTTON); - delete_button = glade_helper_get (xml, "xserver_delete_button", - GTK_TYPE_BUTTON); - - /* Get list of servers that are set to start */ - store = gtk_list_store_new (XSERVER_NUM_COLUMNS, - G_TYPE_INT /* virtual terminal */, - G_TYPE_STRING /* server type */, - G_TYPE_STRING /* options */); - xservers_get_servers(store); - - /* Get list of servers and determine which one was selected */ - xservers = xservers_get_server_definitions(); - i = gtk_combo_box_get_active (GTK_COMBO_BOX (modify_combobox)); - xserver = g_slist_nth_data(xservers, i); - - /* Set all the corresponding values in the frame */ - gtk_entry_set_text (GTK_ENTRY (name_entry), xserver->name); - gtk_entry_set_text (GTK_ENTRY (command_entry), xserver->command); - /* Update sensitivity of delete button */ - xserver_update_delete_sensitivity(); + /* Get xserver section to update */ + section = gtk_combo_box_get_active_text (GTK_COMBO_BOX (mod_combobox)); + section = g_strconcat(GDM_KEY_SERVER_PREFIX, section, "/", NULL); + section = g_strconcat(section, GDM_KEY_SERVER_CHOOSER, NULL); - if (xserver->chooser) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser_radio), - TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (greeter_radio), - TRUE); + val_old = ve_config_get_bool (config, section); + val_new = (gtk_combo_box_get_active (GTK_COMBO_BOX (style_combobox)) != 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (handled_check), - xserver->handled); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (flexible_check), - xserver->flexible); - gtk_widget_set_sensitive(frame, TRUE); + /* Update this servers configuration */ + if (! ve_bool_equal (val_old, val_new)) { + ve_config_set_bool (config, section, val_new); + ve_config_save (config, FALSE /* force */); + } + g_free(section); } - return FALSE; } @@ -683,37 +955,25 @@ toggle_toggled (GtkWidget *toggle) } static void -remote_toggled (GtkWidget *toggle, gpointer data) +list_selection_toggled (GtkWidget *toggle, gpointer data) { GtkWidget *widget = data; + GtkWidget *include_treeview; + GtkTreeSelection *selection; + GtkTreeModel *include_model; + GtkTreeIter iter; gboolean val; val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)); - if (val == TRUE) { - if (last_remote_login_setting != -1) - gtk_combo_box_set_active (GTK_COMBO_BOX (widget), - last_remote_login_setting); - gtk_widget_set_sensitive (widget, TRUE); - - } else { - gtk_widget_set_sensitive (widget, FALSE); - gtk_combo_box_set_active (GTK_COMBO_BOX (widget), - 2); - } - - run_timeout (toggle, 200, toggle_timeout); -} - -static void -sensitive_entry_toggled (GtkWidget *toggle, gpointer data) -{ - GtkWidget *widget = data; - gboolean val; - - val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)); + include_treeview = glade_helper_get (xml, "fb_include_treeview", + GTK_TYPE_TREE_VIEW); + include_model = gtk_tree_view_get_model (GTK_TREE_VIEW (include_treeview)); + + selection = gtk_tree_view_get_selection ( + GTK_TREE_VIEW (include_treeview)); - if (val == FALSE) { + if ((val == FALSE) && (gtk_tree_selection_get_selected (selection, &(include_model), &iter))) { gtk_widget_set_sensitive (widget, TRUE); } else { gtk_widget_set_sensitive (widget, FALSE); @@ -731,6 +991,238 @@ intspin_changed (GtkWidget *spin) static void combobox_changed (GtkWidget *combobox) { + const char *key = g_object_get_data (G_OBJECT (combobox), "key"); + + if (strcmp (key, GDM_KEY_GREETER) == 0) { + + GtkWidget *local_plain_vbox; + GtkWidget *local_themed_vbox; + gint selected; + + local_plain_vbox = glade_helper_get (xml, "local_plain_properties_vbox", + GTK_TYPE_VBOX); + local_themed_vbox = glade_helper_get (xml, "local_themed_properties_vbox", + GTK_TYPE_VBOX); + + selected = gtk_combo_box_get_active (GTK_COMBO_BOX (combobox)); + + if (selected == LOCAL_PLAIN_WITH_FACE) { + gtk_widget_show (local_plain_vbox); + gtk_widget_hide (local_themed_vbox); + } + else if (selected == LOCAL_THEMED) { + gtk_widget_hide (local_plain_vbox); + gtk_widget_show (local_themed_vbox); + } + else { /* Plain style */ + gtk_widget_show (local_plain_vbox); + gtk_widget_hide (local_themed_vbox); + } + } + else if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0) { + + GtkWidget *remote_plain_vbox; + GtkWidget *remote_themed_vbox; + GtkWidget *configure_xdmcp_vbox; + GtkWidget *welcome_message_vbox; + gint selected; + + remote_plain_vbox = glade_helper_get (xml, "remote_plain_properties_vbox", + GTK_TYPE_VBOX); + remote_themed_vbox = glade_helper_get (xml, "remote_themed_properties_vbox", + GTK_TYPE_VBOX); + configure_xdmcp_vbox = glade_helper_get (xml, "remote_configure_xdmcp_vbox", + GTK_TYPE_VBOX); + welcome_message_vbox = glade_helper_get (xml, "remote_welcome_message_vbox", + GTK_TYPE_VBOX); + + selected = gtk_combo_box_get_active (GTK_COMBO_BOX (combobox)); + + if (selected == REMOTE_DISABLED) { + GtkWidget *allowremoteauto; + GtkWidget *allowremoteroot; + + allowremoteauto = glade_helper_get (xml, "allowremoteauto", + GTK_TYPE_CHECK_BUTTON); + allowremoteroot = glade_helper_get (xml, "allowremoteroot", + GTK_TYPE_CHECK_BUTTON); + + gtk_widget_set_sensitive (allowremoteauto, FALSE); + gtk_widget_set_sensitive (allowremoteroot, FALSE); + + gtk_widget_hide (remote_plain_vbox); + gtk_widget_hide (remote_themed_vbox); + gtk_widget_hide (welcome_message_vbox); + gtk_widget_hide (configure_xdmcp_vbox); + } + else { + GtkWidget *timedlogin; + GtkWidget *allowremoteauto; + GtkWidget *allowremoteroot; + + timedlogin = glade_helper_get (xml, "timedlogin", + GTK_TYPE_CHECK_BUTTON); + allowremoteauto = glade_helper_get (xml, "allowremoteauto", + GTK_TYPE_CHECK_BUTTON); + allowremoteroot = glade_helper_get (xml, "allowremoteroot", + GTK_TYPE_CHECK_BUTTON); + + gtk_widget_set_sensitive (allowremoteauto, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (timedlogin))); + gtk_widget_set_sensitive (allowremoteroot, TRUE); + + gtk_widget_show (welcome_message_vbox); + gtk_widget_show (configure_xdmcp_vbox); + + if (selected == REMOTE_SAME_AS_LOCAL) { + gchar *greeter_style; + + greeter_style = ve_config_get_string (ve_config_get (config_file), GDM_KEY_GREETER); + update_remote_sensitivity (FALSE); + + if (strstr (greeter_style, "/gdmgreeter") != NULL) { + gtk_widget_hide (remote_plain_vbox); + gtk_widget_show (remote_themed_vbox); + } + else { + gtk_widget_hide (remote_themed_vbox); + gtk_widget_show (remote_plain_vbox); + } + g_free (greeter_style); + } + else if (selected == REMOTE_PLAIN_WITH_FACE) { + update_remote_sensitivity (TRUE); + gtk_widget_hide (remote_themed_vbox); + gtk_widget_show (remote_plain_vbox); + } + else { + gchar *selected_text; + + selected_text = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combobox)); + update_remote_sensitivity (TRUE); + + if (strcmp (selected_text, _("Themed")) == 0) { + gtk_widget_hide (remote_plain_vbox); + gtk_widget_show (remote_themed_vbox); + } + else { + gtk_widget_hide (remote_themed_vbox); + gtk_widget_show (remote_plain_vbox); + } + g_free (selected_text); + } + } + + } + else if (strcmp (key, GDM_KEY_GRAPHICAL_THEME_RAND) == 0) { + + GtkWidget *theme_list; + GtkWidget *theme_list_remote; + GtkWidget *delete_button; + GtkWidget *delete_button_remote; + GtkTreeViewColumn *radioColumn = NULL; + GtkTreeViewColumn *radioColumnRemote = NULL; + GtkTreeViewColumn *checkboxColumn = NULL; + GtkTreeViewColumn *checkboxColumnRemote = NULL; + GtkTreeSelection *selection; + GtkTreeIter iter; + gint selected; + + theme_list = glade_helper_get (xml, "gg_theme_list", + GTK_TYPE_TREE_VIEW); + theme_list_remote = glade_helper_get (xml, "gg_theme_list_remote", + GTK_TYPE_TREE_VIEW); + delete_button = glade_helper_get (xml, "gg_delete_theme", + GTK_TYPE_BUTTON); + delete_button_remote = glade_helper_get (xml, "gg_delete_theme_remote", + GTK_TYPE_BUTTON); + + selected = gtk_combo_box_get_active (GTK_COMBO_BOX (combobox)); + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + GtkWidget *mode_combobox; + + mode_combobox = glade_helper_get (xml, "gg_mode_combobox_remote", + GTK_TYPE_COMBO_BOX); + gtk_combo_box_set_active (GTK_COMBO_BOX (mode_combobox), selected); + } + else { + GtkWidget *mode_combobox; + + mode_combobox = glade_helper_get (xml, "gg_mode_combobox", + GTK_TYPE_COMBO_BOX); + gtk_combo_box_set_active (GTK_COMBO_BOX (mode_combobox), selected); + } + + radioColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), + THEME_COLUMN_SELECTED); + radioColumnRemote = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list_remote), + THEME_COLUMN_SELECTED); + checkboxColumn = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list), + THEME_COLUMN_SELECTED_LIST); + checkboxColumnRemote = gtk_tree_view_get_column (GTK_TREE_VIEW (theme_list_remote), + THEME_COLUMN_SELECTED_LIST); + + /* Choose to display radio or checkbox toggle column */ + if (selected == RANDOM_THEME) { + if (GTK_IS_TREE_VIEW_COLUMN (radioColumn)) + gtk_tree_view_column_set_visible (radioColumn, FALSE); + if (GTK_IS_TREE_VIEW_COLUMN (radioColumnRemote)) + gtk_tree_view_column_set_visible (radioColumnRemote, FALSE); + if (GTK_IS_TREE_VIEW_COLUMN (checkboxColumn)) + gtk_tree_view_column_set_visible (checkboxColumn, TRUE); + if (GTK_IS_TREE_VIEW_COLUMN (checkboxColumnRemote)) + gtk_tree_view_column_set_visible (checkboxColumnRemote, TRUE); + } else { /* Default to one theme */ + if (GTK_IS_TREE_VIEW_COLUMN (radioColumn)) + gtk_tree_view_column_set_visible (radioColumn, TRUE); + if (GTK_IS_TREE_VIEW_COLUMN (radioColumnRemote)) + gtk_tree_view_column_set_visible (radioColumnRemote, TRUE); + if (GTK_IS_TREE_VIEW_COLUMN (checkboxColumn)) + gtk_tree_view_column_set_visible (checkboxColumn, FALSE); + if (GTK_IS_TREE_VIEW_COLUMN (checkboxColumnRemote)) + gtk_tree_view_column_set_visible (checkboxColumnRemote, FALSE); + } + + /* Update delete button's sensitivity */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + + if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) { + gtk_widget_set_sensitive (delete_button, FALSE); + gtk_widget_set_sensitive (delete_button_remote, FALSE); + } + else { + GValue value = {0, }; + GtkTreeModel *model; + gboolean GdmGraphicalThemeRand; + + /* Determine if the theme selected is currently active */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (theme_list)); + + GdmGraphicalThemeRand = ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_GRAPHICAL_THEME_RAND); + if (GdmGraphicalThemeRand) { + gtk_tree_model_get_value (model, &iter, + THEME_COLUMN_SELECTED_LIST, &value); + } else { + gtk_tree_model_get_value (model, &iter, + THEME_COLUMN_SELECTED, &value); + } + + if (g_value_get_boolean (&value)) { + /* Do not allow deleting of active themes */ + gtk_widget_set_sensitive (delete_button, FALSE); + gtk_widget_set_sensitive (delete_button_remote, FALSE); + } + else { + gtk_widget_set_sensitive (delete_button, TRUE); + gtk_widget_set_sensitive (delete_button_remote, TRUE); + } + } + } + else if (strcmp (key, GDM_KEY_SERVER_PREFIX) == 0 ) { + init_servers_combobox (gtk_combo_box_get_active (GTK_COMBO_BOX (combobox))); + } run_timeout (combobox, 500, combobox_timeout); } @@ -768,61 +1260,164 @@ timeout_remove_all (void) } static void +toggle_toggled_sensitivity_positive (GtkWidget *toggle, GtkWidget *depend) +{ + gtk_widget_set_sensitive (depend, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle))); +} + +static void +timedlogin_allow_remote_toggled (GtkWidget *toggle, GtkWidget *depend) +{ + if (ve_config_get_bool (ve_config_get (config_file), GDM_KEY_XDMCP) == TRUE) { + gtk_widget_set_sensitive (depend, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle))); + } + else { + gtk_widget_set_sensitive (depend, FALSE); + } +} + +static void setup_notify_toggle (const char *name, const char *key, const char *notify_key) { - GtkWidget *toggle = glade_helper_get (xml, name, - GTK_TYPE_TOGGLE_BUTTON); + GtkWidget *toggle; gboolean val; + toggle = glade_helper_get (xml, name, GTK_TYPE_TOGGLE_BUTTON); + val = ve_config_get_bool (ve_config_get (config_file), key); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), val); + g_object_set_data_full (G_OBJECT (toggle), - "key", g_strdup (key), - (GDestroyNotify) g_free); + "key", g_strdup (key), + (GDestroyNotify) g_free); g_object_set_data_full (G_OBJECT (toggle), - "notify_key", g_strdup (notify_key), - (GDestroyNotify) g_free); + "notify_key", g_strdup (notify_key), + (GDestroyNotify) g_free); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), val); + if (strcmp (name, "sysmenu") == 0) { + + GtkWidget *config_available; + GtkWidget *chooser_button; + + config_available = glade_helper_get (xml, "config_available", + GTK_TYPE_CHECK_BUTTON); + chooser_button = glade_helper_get (xml, "chooser_button", + GTK_TYPE_CHECK_BUTTON); + + gtk_widget_set_sensitive (config_available, val); + gtk_widget_set_sensitive (chooser_button, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled), toggle); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), config_available); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), chooser_button); + } + else if (strcmp ("autologin", name) == 0) { - if (strcmp ("enable_xdmcp", name) == 0) { - GtkWidget *remote_greeter = glade_helper_get (xml, - "remote_greeter", GTK_TYPE_COMBO_BOX); + GtkWidget *autologin_label; + GtkWidget *autologin_combo; - if (val == FALSE) { - gtk_widget_set_sensitive (remote_greeter, FALSE); - } + autologin_label = glade_helper_get (xml, "autologin_label", + GTK_TYPE_LABEL); + autologin_combo = glade_helper_get (xml, "autologin_combo", + GTK_TYPE_COMBO_BOX); + + gtk_widget_set_sensitive (autologin_label, val); + gtk_widget_set_sensitive (autologin_combo, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), + autologin_label); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), + autologin_combo); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled), toggle); + } + else if (strcmp ("timedlogin", name) == 0) { + + GtkWidget *timedlogin_label; + GtkWidget *timedlogin_combo; + GtkWidget *timedlogin_seconds_label; + GtkWidget *timedlogin_seconds_spin_button; + GtkWidget *timedlogin_seconds_units; + GtkWidget *timedlogin_allow_remote; + timedlogin_label = glade_helper_get (xml, "timed_login_label", + GTK_TYPE_LABEL); + timedlogin_combo = glade_helper_get (xml, "timedlogin_combo", + GTK_TYPE_COMBO_BOX); + timedlogin_seconds_label = glade_helper_get (xml, "timedlogin_seconds_label", + GTK_TYPE_LABEL); + timedlogin_seconds_spin_button = glade_helper_get (xml,"timedlogin_seconds", + GTK_TYPE_SPIN_BUTTON); + timedlogin_seconds_units = glade_helper_get (xml,"timedlogin_seconds_units", + GTK_TYPE_LABEL); + timedlogin_allow_remote = glade_helper_get (xml, "allowremoteauto", + GTK_TYPE_CHECK_BUTTON); + + gtk_widget_set_sensitive (timedlogin_label, val); + gtk_widget_set_sensitive (timedlogin_combo, val); + gtk_widget_set_sensitive (timedlogin_seconds_label, val); + gtk_widget_set_sensitive (timedlogin_seconds_spin_button, val); + gtk_widget_set_sensitive (timedlogin_seconds_units, val); + + if (ve_config_get_bool (ve_config_get (config_file), GDM_KEY_XDMCP) == FALSE) { + gtk_widget_set_sensitive (timedlogin_allow_remote, FALSE); + } + else { + gtk_widget_set_sensitive (timedlogin_allow_remote, val); + } + g_signal_connect (G_OBJECT (toggle), "toggled", - G_CALLBACK (remote_toggled), remote_greeter); - } else { + G_CALLBACK (toggle_toggled), toggle); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), timedlogin_label); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), timedlogin_combo); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), timedlogin_seconds_label); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), timedlogin_seconds_spin_button); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), timedlogin_seconds_units); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (timedlogin_allow_remote_toggled), timedlogin_allow_remote); + } + else { g_signal_connect (G_OBJECT (toggle), "toggled", - G_CALLBACK (toggle_toggled), NULL); + G_CALLBACK (toggle_toggled), NULL); } } static void -toggle_toggled_sensitivity_positive (GtkWidget *toggle, GtkWidget *depend) +setup_xdmcp_notify_toggle (const char *name, + const char *key, + const char *notify_key) { - gtk_widget_set_sensitive (depend, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle))); -} + GtkWidget *toggle; + gboolean val; -static void -setup_sensitivity_positive_toggle (const char *name, - const char *depend_name) -{ - GtkWidget *toggle = glade_helper_get (xml, name, - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *depend = glade_helper_get (xml, depend_name, - GTK_TYPE_WIDGET); + toggle = glade_helper_get (xml_xdmcp, name, GTK_TYPE_TOGGLE_BUTTON); + + val = ve_config_get_bool (ve_config_get (config_file), key); - toggle_toggled_sensitivity_positive (toggle, depend); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), val); + + g_object_set_data_full (G_OBJECT (toggle), + "key", g_strdup (key), + (GDestroyNotify) g_free); + g_object_set_data_full (G_OBJECT (toggle), + "notify_key", g_strdup (notify_key), + (GDestroyNotify) g_free); g_signal_connect (G_OBJECT (toggle), "toggled", - G_CALLBACK (toggle_toggled_sensitivity_positive), - depend); + G_CALLBACK (toggle_toggled), NULL); } static const char * @@ -876,6 +1471,12 @@ root_not_allowed (GtkWidget *combo_box) } } +gint +users_string_compare_func (gconstpointer a, gconstpointer b) +{ + return strcmp(a, b); +} + /* Sets up Automatic Login Username and Timed Login User entry comboboxes * from the general configuration tab. */ static void @@ -911,13 +1512,13 @@ setup_user_combobox_list (const char *name, const char *key) gdm_users_init (&users, &users_string, selected_user, NULL, &size_of_users, GDM_IS_LOCAL, FALSE); - users_string = g_list_reverse (users_string); + users_string = g_list_sort (users_string, users_string_compare_func); cnt=0; for (li = users_string; li != NULL; li = li->next) { - gtk_list_store_append (combobox_store, &iter); if (strcmp (li->data, selected_user) == 0) selected=cnt; + gtk_list_store_append (combobox_store, &iter); gtk_list_store_set(combobox_store, &iter, USERLIST_NAME, li->data, -1); cnt++; } @@ -972,6 +1573,33 @@ setup_intspin (const char *name, G_CALLBACK (intspin_changed), NULL); } +static void +setup_xdmcp_intspin (const const char *name, + const char *key, + const char *notify_key) +{ + GtkWidget *spin; + int val; + + spin = glade_helper_get (xml_xdmcp, + name, + GTK_TYPE_SPIN_BUTTON); + + val = ve_config_get_int (ve_config_get (config_file), key); + + g_object_set_data_full (G_OBJECT (spin), + "key", g_strdup (key), + (GDestroyNotify) g_free); + g_object_set_data_full (G_OBJECT (spin), + "notify_key", g_strdup (notify_key), + (GDestroyNotify) g_free); + + gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), val); + + g_signal_connect (G_OBJECT (spin), "value_changed", + G_CALLBACK (intspin_changed), NULL); +} + static GtkListStore * setup_include_exclude (GtkWidget *treeview, const char *key) { @@ -1017,7 +1645,6 @@ typedef enum { } FaceType; typedef struct _FaceCommon { - GtkWidget *label; GtkWidget *apply; GtkWidget *include_treeview; GtkWidget *exclude_treeview; @@ -1031,8 +1658,6 @@ typedef struct _FaceCommon { GtkWidget *exclude_del; GtkWidget *to_include_button; GtkWidget *to_exclude_button; - GtkWidget *include_entry; - GtkWidget *exclude_entry; GtkWidget *allusers; } FaceCommon; @@ -1047,18 +1672,17 @@ typedef struct _FaceApply { } FaceApply; static void -face_add (GtkWidget *button, gpointer data) +face_add (FaceData *fd) { - FaceData *fd = data; + GtkWidget *user_entry; const char *text = NULL; const char *model_text; GtkTreeIter iter; gboolean valid; - if (fd->type == INCLUDE) - text = gtk_entry_get_text (GTK_ENTRY (fd->fc->include_entry)); - else if (fd->type == EXCLUDE) - text = gtk_entry_get_text (GTK_ENTRY (fd->fc->exclude_entry)); + user_entry = glade_helper_get (xml_add_users, "fb_addentry", + GTK_TYPE_ENTRY); + text = gtk_entry_get_text (GTK_ENTRY (user_entry)); if (gdm_is_user_valid (text)) { valid = gtk_tree_model_get_iter_first (fd->fc->include_model, &iter); @@ -1066,8 +1690,25 @@ face_add (GtkWidget *button, gpointer data) gtk_tree_model_get (fd->fc->include_model, &iter, USERLIST_NAME, &model_text, -1); if (strcmp (text, model_text) == 0) { - gtk_label_set_text (GTK_LABEL (fd->fc->label), - "User already in Include list"); + GtkWidget *setup_dialog; + GtkWidget *dialog; + gchar *str; + + str = g_strdup_printf (_("The \"%s\" user already exists in the include list."), text); + + setup_dialog = glade_helper_get (xml_add_users, "add_user_dialog", + GTK_TYPE_WINDOW); + + dialog = ve_hig_dialog_new (GTK_WINDOW (setup_dialog), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Cannot add user"), + str); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_free (str); return; } @@ -1079,8 +1720,25 @@ face_add (GtkWidget *button, gpointer data) gtk_tree_model_get (fd->fc->exclude_model, &iter, USERLIST_NAME, &model_text, -1); if (strcmp (text, model_text) == 0) { - gtk_label_set_text (GTK_LABEL (fd->fc->label), - "User already in Exclude list"); + GtkWidget *setup_dialog; + GtkWidget *dialog; + gchar *str; + + str = g_strdup_printf (_("The \"%s\" user already exists in the exclude list."), text); + + setup_dialog = glade_helper_get (xml_add_users, "add_user_dialog", + GTK_TYPE_WINDOW); + + dialog = ve_hig_dialog_new (GTK_WINDOW (setup_dialog), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Cannot add user"), + str); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_free (str); return; } @@ -1091,20 +1749,33 @@ face_add (GtkWidget *button, gpointer data) gtk_list_store_append (fd->fc->include_store, &iter); gtk_list_store_set (fd->fc->include_store, &iter, USERLIST_NAME, text, -1); - gtk_entry_set_text (GTK_ENTRY (fd->fc->include_entry), - ""); } else if (fd->type == EXCLUDE) { gtk_list_store_append (fd->fc->exclude_store, &iter); gtk_list_store_set (fd->fc->exclude_store, &iter, USERLIST_NAME, text, -1); - gtk_entry_set_text (GTK_ENTRY (fd->fc->exclude_entry), - ""); } gtk_widget_set_sensitive (fd->fc->apply, TRUE); - gtk_label_set_text (GTK_LABEL (fd->fc->label), ""); + GdmUserChangesUnsaved = TRUE; } else { - gtk_label_set_text (GTK_LABEL (fd->fc->label), - "Not a valid user"); + GtkWidget *setup_dialog; + GtkWidget *dialog; + gchar *str; + + str = g_strdup_printf (_("The \"%s\" user does not exist."), text); + + setup_dialog = glade_helper_get (xml_add_users, "add_user_dialog", + GTK_TYPE_WINDOW); + + dialog = ve_hig_dialog_new (GTK_WINDOW (setup_dialog), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Cannot add user"), + str); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_free (str); } } @@ -1122,6 +1793,7 @@ face_del (GtkWidget *button, gpointer data) if (gtk_tree_selection_get_selected (selection, &(fd->fc->include_model), &iter)) { gtk_list_store_remove (fd->fc->include_store, &iter); gtk_widget_set_sensitive (fd->fc->apply, TRUE); + GdmUserChangesUnsaved = TRUE; } } else if (fd->type == EXCLUDE) { selection = gtk_tree_view_get_selection ( @@ -1130,6 +1802,7 @@ face_del (GtkWidget *button, gpointer data) if (gtk_tree_selection_get_selected (selection, &(fd->fc->exclude_model), &iter)) { gtk_list_store_remove (fd->fc->exclude_store, &iter); gtk_widget_set_sensitive (fd->fc->apply, TRUE); + GdmUserChangesUnsaved = TRUE; } } } @@ -1168,6 +1841,7 @@ browser_move (GtkWidget *button, gpointer data) USERLIST_NAME, text, -1); } gtk_widget_set_sensitive (fd->fc->apply, TRUE); + GdmUserChangesUnsaved = TRUE; } } @@ -1245,7 +1919,9 @@ browser_apply (GtkWidget *button, gpointer data) GDM_KEY_AUTOMATICLOGIN); setup_user_combobox_list ("timedlogin_combo", GDM_KEY_TIMED_LOGIN); + gtk_widget_set_sensitive (button, FALSE); + GdmUserChangesUnsaved = FALSE; g_string_free (userlist, TRUE); g_free (val); } @@ -1279,28 +1955,6 @@ face_rowdel (GtkTreeModel *treemodel, GtkTreePath *arg1, gpointer data) } } -static void -face_entry_changed (GtkEditable *editable, gpointer data) -{ - FaceData *fd = data; - const char *text; - - if (fd->type == INCLUDE) { - text = gtk_entry_get_text (GTK_ENTRY (fd->fc->include_entry)); - if (strlen (text) < 1) - gtk_widget_set_sensitive (fd->fc->include_add, FALSE); - else - gtk_widget_set_sensitive (fd->fc->include_add, TRUE); - } - else if (fd->type == EXCLUDE) { - text = gtk_entry_get_text (GTK_ENTRY (fd->fc->exclude_entry)); - if (strlen (text) < 1) - gtk_widget_set_sensitive (fd->fc->exclude_add, FALSE); - else - gtk_widget_set_sensitive (fd->fc->exclude_add, TRUE); - } -} - static void face_selection_changed (GtkTreeSelection *selection, gpointer data) { @@ -1327,19 +1981,35 @@ face_selection_changed (GtkTreeSelection *selection, gpointer data) } static void -sensitivity_toggled (GtkWidget *toggle, gpointer data) +users_add_button_clicked (GtkWidget *button, gpointer data) { - GtkWidget *widget = data; + static GtkWidget *dialog = NULL; + FaceData *fd = data; + GtkWidget *user_entry; + GtkWidget *parent; + + if (dialog == NULL) { + parent = glade_helper_get (xml, "setup_dialog", GTK_TYPE_WINDOW); + dialog = glade_helper_get (xml_add_users, "add_user_dialog", GTK_TYPE_DIALOG); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); + gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + } - gtk_widget_set_sensitive (widget, - GTK_TOGGLE_BUTTON (toggle)->active); + user_entry = glade_helper_get (xml_add_users, "fb_addentry", + GTK_TYPE_ENTRY); + + gtk_widget_grab_focus (user_entry); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + face_add (fd); + } + gtk_widget_hide (dialog); } static void setup_face (void) { - GtkWidget *fb_browser = glade_helper_get (xml, "fb_browser", GTK_TYPE_WIDGET); - GtkWidget *face_frame = glade_helper_get (xml, "face_frame", GTK_TYPE_WIDGET); static FaceCommon fc; static FaceData fd_include; static FaceData fd_exclude; @@ -1361,12 +2031,6 @@ setup_face (void) GTK_TYPE_WIDGET); fc.apply = glade_helper_get (xml, "fb_faceapply", GTK_TYPE_WIDGET); - fc.label = glade_helper_get (xml, "fb_message", - GTK_TYPE_WIDGET); - fc.include_entry = glade_helper_get (xml, "fb_includeentry", - GTK_TYPE_WIDGET); - fc.exclude_entry = glade_helper_get (xml, "fb_excludeentry", - GTK_TYPE_WIDGET); fc.include_treeview = glade_helper_get (xml, "fb_include_treeview", GTK_TYPE_TREE_VIEW); fc.exclude_treeview = glade_helper_get (xml, "fb_exclude_treeview", @@ -1390,8 +2054,6 @@ setup_face (void) fd_exclude.fc = &fc; fd_exclude.type = EXCLUDE; - gtk_widget_set_sensitive (fc.include_add, FALSE); - gtk_widget_set_sensitive (fc.exclude_add, FALSE); gtk_widget_set_sensitive (fc.include_del, FALSE); gtk_widget_set_sensitive (fc.exclude_del, FALSE); gtk_widget_set_sensitive (fc.to_include_button, FALSE); @@ -1401,20 +2063,20 @@ setup_face (void) face_apply.include = &fd_include; face_apply.exclude = &fd_exclude; - g_signal_connect (fc.include_add, "clicked", - G_CALLBACK (face_add), &fd_include); + xml_add_users = glade_helper_load ("gdmsetup.glade", + "add_user_dialog", + GTK_TYPE_DIALOG, + TRUE); + + g_signal_connect (G_OBJECT (fc.include_add), "clicked", + G_CALLBACK (users_add_button_clicked), &fd_include); g_signal_connect (fc.exclude_add, "clicked", - G_CALLBACK (face_add), &fd_exclude); + G_CALLBACK (users_add_button_clicked), &fd_exclude); g_signal_connect (fc.include_del, "clicked", G_CALLBACK (face_del), &fd_include); g_signal_connect (fc.exclude_del, "clicked", G_CALLBACK (face_del), &fd_exclude); - g_signal_connect (fc.include_entry, "changed", - G_CALLBACK (face_entry_changed), &fd_include); - g_signal_connect (fc.exclude_entry, "changed", - G_CALLBACK (face_entry_changed), &fd_exclude); - g_signal_connect (fc.include_model, "row-deleted", G_CALLBACK (face_rowdel), &fc); g_signal_connect (fc.exclude_model, "row-deleted", @@ -1448,6 +2110,29 @@ greeter_toggle_timeout (GtkWidget *toggle) gboolean val = ve_config_get_bool (config, key); if ( ! ve_bool_equal (val, GTK_TOGGLE_BUTTON (toggle)->active)) { + + if (strcmp (key, GDM_KEY_BACKGROUNDSCALETOFIT) == 0) { + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + + GtkWidget *checkbutton; + + checkbutton = glade_helper_get (xml, "sg_scale_background_remote", + GTK_TYPE_CHECK_BUTTON); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), + GTK_TOGGLE_BUTTON (toggle)->active); + } + else { + GtkWidget *checkbutton; + + checkbutton = glade_helper_get (xml, "sg_scale_background", + GTK_TYPE_CHECK_BUTTON); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), + GTK_TOGGLE_BUTTON (toggle)->active); + } + } ve_config_set_bool (config, key, GTK_TOGGLE_BUTTON (toggle)->active); @@ -1465,6 +2150,92 @@ greeter_toggle_toggled (GtkWidget *toggle) run_timeout (toggle, 500, greeter_toggle_timeout); } +static void +sensitive_entry_toggled (GtkWidget *toggle, gpointer data) +{ + GtkWidget *widget = data; + gboolean val; + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)); + + if (val == FALSE) { + gtk_widget_set_sensitive (widget, TRUE); + } else { + gtk_widget_set_sensitive (widget, FALSE); + } + + run_timeout (toggle, 500, greeter_toggle_timeout); +} + +static gboolean +local_background_type_toggle_timeout (GtkWidget *toggle) +{ + VeConfig *config; + GtkWidget *color_radiobutton; + GtkWidget *image_radiobutton; + GtkWidget *color_remote_radiobutton; + GtkWidget *image_remote_radiobutton; + gboolean image_value; + gboolean color_value; + + config = ve_config_get (config_file); + + image_radiobutton = glade_helper_get (xml, + "local_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + color_radiobutton = glade_helper_get (xml, + "local_background_color_checkbutton", + GTK_TYPE_CHECK_BUTTON); + image_remote_radiobutton = glade_helper_get (xml, + "remote_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + color_remote_radiobutton = glade_helper_get (xml, + "remote_background_color_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + image_value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (image_radiobutton)); + color_value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (color_radiobutton)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_remote_radiobutton), image_value); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_remote_radiobutton), color_value); + } + else { + image_value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (image_remote_radiobutton)); + color_value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (color_remote_radiobutton)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), image_value); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), color_value); + } + + if (image_value == TRUE && color_value == TRUE) { + /* Image & color */ + ve_config_set_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE, 1); + } + else if (image_value == FALSE && color_value == TRUE) { + /* Color only */ + ve_config_set_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE, 2); + } + else if (image_value == TRUE && color_value == FALSE) { + /* Image only*/ + ve_config_set_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE, 3); + } + else { + /* No Background */ + ve_config_set_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE, 0); + } + + ve_config_save (config, FALSE); + update_greeters (); + + return FALSE; +} + +static void +local_background_type_toggled (GtkWidget *toggle) +{ + run_timeout (toggle, 200, local_background_type_toggle_timeout); +} + +static void include_all_toggle (GtkWidget *toggle) { if (GTK_TOGGLE_BUTTON (toggle)->active) @@ -1494,41 +2265,129 @@ setup_greeter_toggle (const char *name, if (strcmp ("sg_defaultwelcome", name) == 0) { GtkWidget *welcome = glade_helper_get (xml, "welcome", GTK_TYPE_ENTRY); + GtkWidget *custom = glade_helper_get (xml, "sg_customwelcome", + GTK_TYPE_RADIO_BUTTON); - if (val == TRUE) - gtk_widget_set_sensitive (welcome, FALSE); + gtk_widget_set_sensitive (welcome, !val); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (custom), !val); g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (sensitive_entry_toggled), welcome); - } else if (strcmp ("sg_defaultremotewelcome", name) == 0) { - GtkWidget *remotewelcome = glade_helper_get (xml, - "remote_welcome", GTK_TYPE_ENTRY); + } else if (strcmp ("sg_defaultwelcomeremote", name) == 0) { + GtkWidget *welcomeremote = glade_helper_get (xml, + "welcomeremote", GTK_TYPE_ENTRY); + GtkWidget *customremote = glade_helper_get (xml, "sg_customwelcomeremote", + GTK_TYPE_RADIO_BUTTON); - if (val == TRUE) - gtk_widget_set_sensitive (remotewelcome, FALSE); + gtk_widget_set_sensitive (welcomeremote, !val); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (customremote), !val); g_signal_connect (G_OBJECT (toggle), "toggled", - G_CALLBACK (sensitive_entry_toggled), remotewelcome); + G_CALLBACK (sensitive_entry_toggled), welcomeremote); + } else if (strcmp ("fb_allusers", name) == 0) { - GtkWidget *fb_includebox = glade_helper_get (xml, - "fb_includebox", GTK_TYPE_VBOX); - GtkWidget *fb_buttonbox = glade_helper_get (xml, - "fb_buttonbox", GTK_TYPE_VBOX); - - if (val == TRUE) { - gtk_widget_set_sensitive (fb_includebox, FALSE); - gtk_widget_set_sensitive (fb_buttonbox, FALSE); - } - g_signal_connect (G_OBJECT (toggle), "toggled", - G_CALLBACK (sensitive_entry_toggled), fb_includebox); + GtkWidget *fb_includetree = glade_helper_get (xml, "fb_include_treeview", + GTK_TYPE_TREE_VIEW); + GtkWidget *fb_buttonbox = glade_helper_get (xml, "UsersButtonBox", + GTK_TYPE_VBOX); + GtkWidget *fb_includeadd = glade_helper_get (xml, "fb_includeadd", + GTK_TYPE_BUTTON); + GtkWidget *fb_includeremove = glade_helper_get (xml, "fb_includedelete", + GTK_TYPE_BUTTON); + GtkWidget *fb_includelabel = glade_helper_get (xml, "fb_includelabel", + GTK_TYPE_LABEL); + + gtk_widget_set_sensitive (fb_buttonbox, !val); + gtk_widget_set_sensitive (fb_includetree, !val); + gtk_widget_set_sensitive (fb_includelabel, !val); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (sensitive_entry_toggled), fb_buttonbox); g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (sensitive_entry_toggled), fb_includetree); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (sensitive_entry_toggled), fb_includeadd); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (list_selection_toggled), fb_includeremove); + g_signal_connect (G_OBJECT (toggle), "toggled", + G_CALLBACK (sensitive_entry_toggled), fb_includelabel); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (include_all_toggle), NULL); } - + else if (strcmp ("acc_sound_ready", name) == 0) { + + GtkWidget *file_chooser; + GtkWidget *play_button; + + file_chooser = glade_helper_get (xml, + "acc_sound_ready_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + play_button = glade_helper_get (xml, + "acc_soundtest_ready_button", + GTK_TYPE_BUTTON); + + gtk_widget_set_sensitive (file_chooser, val); + gtk_widget_set_sensitive (play_button, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), file_chooser); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), play_button); + } + else if (strcmp ("acc_sound_success", name) == 0) { + + GtkWidget *file_chooser; + GtkWidget *play_button; + + file_chooser = glade_helper_get (xml, "acc_sound_success_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + play_button = glade_helper_get (xml, "acc_soundtest_success_button", + GTK_TYPE_BUTTON); + + gtk_widget_set_sensitive (file_chooser, val); + gtk_widget_set_sensitive (play_button, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), file_chooser); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), play_button); + } + else if (strcmp ("acc_sound_failure", name) == 0) { + + GtkWidget *file_chooser; + GtkWidget *play_button; + + file_chooser = glade_helper_get (xml, "acc_sound_failure_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + play_button = glade_helper_get (xml, "acc_soundtest_failure_button", + GTK_TYPE_BUTTON); + + gtk_widget_set_sensitive (file_chooser, val); + gtk_widget_set_sensitive (play_button, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), file_chooser); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), play_button); + } + else if (strcmp ("local_logo_image_checkbutton", name) == 0) { + + GtkWidget *file_chooser; + GtkWidget *file_chooser_remote; + GtkWidget *checkbutton; + + checkbutton = glade_helper_get (xml, "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + file_chooser = glade_helper_get (xml, "local_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + file_chooser_remote = glade_helper_get (xml, "remote_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), val); + gtk_widget_set_sensitive (file_chooser, val); + + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), file_chooser); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_toggled_sensitivity_positive), file_chooser_remote); + g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (logo_toggle_toggled), NULL); + } g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (greeter_toggle_toggled), NULL); } @@ -1537,13 +2396,44 @@ static gboolean greeter_color_timeout (GtkWidget *picker) { const char *key = g_object_get_data (G_OBJECT (picker), "key"); + GdkColor color_val; char *val, *color; - guint8 r, g, b; VeConfig *config = ve_config_get (config_file); - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (picker), - &r, &g, &b, NULL); - color = g_strdup_printf ("#%02x%02x%02x", (int)r, (int)g, (int)b); + gtk_color_button_get_color (GTK_COLOR_BUTTON (picker), &color_val); + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + + GtkWidget *colorbutton; + + if (strcmp (GDM_KEY_GRAPHICAL_THEME_COLOR, key) == 0) { + colorbutton = glade_helper_get (xml, "remote_background_theme_colorbutton", + GTK_TYPE_COLOR_BUTTON); + } + else { + colorbutton = glade_helper_get (xml, "remote_background_colorbutton", + GTK_TYPE_COLOR_BUTTON); + } + gtk_color_button_set_color (GTK_COLOR_BUTTON (colorbutton), &color_val); + } + else { + GtkWidget *colorbutton; + + if (strcmp (GDM_KEY_GRAPHICAL_THEME_COLOR, key) == 0) { + colorbutton = glade_helper_get (xml, "local_background_theme_colorbutton", + GTK_TYPE_COLOR_BUTTON); + } + else { + colorbutton = glade_helper_get (xml, "local_background_colorbutton", + GTK_TYPE_COLOR_BUTTON); + } + gtk_color_button_set_color (GTK_COLOR_BUTTON (colorbutton), &color_val); + } + + color = g_strdup_printf ("#%02x%02x%02x", + (guint16)color_val.red / 256, + (guint16)color_val.green / 256, + (guint16)color_val.blue / 256); val = ve_config_get_string (config, key); @@ -1573,7 +2463,7 @@ setup_greeter_color (const char *name, const char *key) { GtkWidget *picker = glade_helper_get (xml, name, - GNOME_TYPE_COLOR_PICKER); + GTK_TYPE_COLOR_BUTTON); char *val; val = ve_config_get_string (ve_config_get (config_file), key); @@ -1584,10 +2474,10 @@ setup_greeter_color (const char *name, if (val != NULL) { GdkColor color; - if (gdk_color_parse (val, &color)) - gnome_color_picker_set_i16 - (GNOME_COLOR_PICKER (picker), - color.red, color.green, color.blue, 0); + + if (gdk_color_parse (val, &color)) { + gtk_color_button_set_color (GTK_COLOR_BUTTON (picker), &color); + } } g_signal_connect (G_OBJECT (picker), "color_set", @@ -1607,164 +2497,6 @@ typedef struct _ImageData { gchar *key; } ImageData; -static void -update_preview_cb (GtkFileChooser *file_chooser, gpointer data) -{ - ImageData *image_data = data; - - char *filename = gtk_file_chooser_get_preview_filename (file_chooser); - GdkPixbuf *pixbuf = NULL; - - if (filename != NULL) - pixbuf = gdk_pixbuf_new_from_file (filename, NULL); - - if (pixbuf) - gtk_image_set_from_file (GTK_IMAGE (image_data->image), filename); -} - -static void -image_install_response (GtkWidget *file_dialog, gint response, gpointer data) -{ - ImageData *image_data = data; - - if (response == GTK_RESPONSE_ACCEPT) { - char *val; - VeConfig *config = ve_config_get (config_file); - - image_data->filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_dialog)); - - val = ve_config_get_string (config, image_data->key); - - if (strcmp (ve_sure_string (val), ve_sure_string (image_data->filename)) != 0) { - ve_config_set_string (config, image_data->key, - ve_sure_string (image_data->filename)); - - ve_config_save (config, FALSE /* force */); - - update_greeters (); - } - - g_free (val); - } else { - gtk_image_set_from_file (GTK_IMAGE (image_data->image), image_data->filename); - } - - gtk_widget_destroy (file_dialog); -} - -static void -browse_button_cb (GtkWidget *widget, gpointer data) -{ - ImageData *image_data = data; - GtkFileFilter *filter; - GtkWidget *setup_dialog = glade_helper_get (xml, "setup_dialog", - GTK_TYPE_WINDOW); - - GtkWidget *file_dialog = gtk_file_chooser_dialog_new (_("Open File"), - GTK_WINDOW (setup_dialog), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - - if (image_data->filename != NULL && *(image_data->filename) != '\0') - gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_dialog), - image_data->filename); - else - gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_dialog), - EXPANDED_DATADIR "/pixmaps"); - - gtk_file_chooser_set_show_hidden (file_dialog, TRUE); - filter = gtk_file_filter_new (); - gtk_file_filter_set_name (filter, _("PNG and JPEG")); - gtk_file_filter_add_mime_type (filter, "image/jpeg"); - gtk_file_filter_add_mime_type (filter, "image/png"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_dialog), filter); - - g_signal_connect (file_dialog, "update-preview", - G_CALLBACK (update_preview_cb), image_data); - g_signal_connect (G_OBJECT (file_dialog), "destroy", - G_CALLBACK (gtk_widget_destroyed), &file_dialog); - g_signal_connect (G_OBJECT (file_dialog), "response", - G_CALLBACK (image_install_response), image_data); - - gtk_widget_show (file_dialog); -} - -static void -noimage_button_cb (GtkWidget *widget, gpointer data) -{ - ImageData *image_data = data; - char *val; - VeConfig *config = ve_config_get (config_file); - - gtk_image_set_from_file (GTK_IMAGE (image_data->image), NULL); - image_data->filename = NULL; - val = ve_config_get_string (config, image_data->key); - - if (strcmp (ve_sure_string (val), ve_sure_string (image_data->filename)) != 0) { - ve_config_set_string (config, image_data->key, - ve_sure_string (image_data->filename)); - - ve_config_save (config, FALSE /* force */); - - update_greeters (); - } - - g_free (val); -} - -static void -setup_greeter_image (GtkWidget *dialog) -{ - static ImageData logo_data; - static ImageData backimage_data; - GdkPixbuf *pixbuf; - GtkWidget *logo_button = glade_helper_get (xml, "sg_browselogo", - GTK_TYPE_WIDGET); - GtkWidget *backimage_button = glade_helper_get (xml, "sg_browsebackimage", - GTK_TYPE_WIDGET); - GtkWidget *nologo_button = glade_helper_get (xml, "sg_nologo", - GTK_TYPE_WIDGET); - - logo_data.image = glade_helper_get (xml, "sg_logo", GTK_TYPE_WIDGET); - logo_data.key = GDM_KEY_LOGO; - logo_data.filename = ve_config_get_string (ve_config_get (config_file), - GDM_KEY_LOGO); - - backimage_data.image = glade_helper_get (xml, "sg_backimage", - GTK_TYPE_WIDGET); - backimage_data.filename = ve_config_get_string ( - ve_config_get (config_file), GDM_KEY_BACKGROUNDIMAGE); - backimage_data.key = GDM_KEY_BACKGROUNDIMAGE; - - - if (logo_data.filename != NULL) { - pixbuf = gdk_pixbuf_new_from_file (logo_data.filename, NULL); - if (pixbuf != NULL) - gtk_image_set_from_file (GTK_IMAGE(logo_data.image), - logo_data.filename); - else - logo_data.filename = NULL; - } - if (backimage_data.filename != NULL) { - pixbuf = gdk_pixbuf_new_from_file (backimage_data.filename, NULL); - if (pixbuf != NULL) - gtk_image_set_from_file (GTK_IMAGE(backimage_data.image), - backimage_data.filename); - else - backimage_data.filename = NULL; - } - - g_signal_connect (G_OBJECT (logo_button), "clicked", - G_CALLBACK (browse_button_cb), &logo_data); - g_signal_connect (G_OBJECT (nologo_button), "clicked", - G_CALLBACK (noimage_button_cb), &logo_data); - - g_signal_connect (G_OBJECT (backimage_button), "clicked", - G_CALLBACK (browse_button_cb), &backimage_data); -} - static gboolean greeter_entry_untranslate_timeout (GtkWidget *entry) { @@ -1814,83 +2546,79 @@ setup_greeter_untranslate_entry (const char *name, g_free (val); } - -static gboolean -greeter_backselect_timeout (GtkWidget *toggle) +static void +xdmcp_button_clicked (void) { - int val, new_val; - GtkWidget *no_bg = glade_helper_get (xml, "sg_no_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *image_bg = glade_helper_get (xml, "sg_image_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - VeConfig *config = ve_config_get (config_file); + static GtkWidget *dialog = NULL; - val = ve_config_get_int (config, GDM_KEY_BACKGROUNDTYPE); + if (dialog == NULL) { - if (GTK_TOGGLE_BUTTON (no_bg)->active) - new_val = 0 /* No background */; - else if (GTK_TOGGLE_BUTTON (image_bg)->active) - new_val = 1 /* Image */; - else - new_val = 2 /* Color */; + GtkWidget *parent; - if (val != new_val) { - ve_config_set_int (config, GDM_KEY_BACKGROUNDTYPE, new_val); - ve_config_save (config, FALSE /* force */); + xml_xdmcp = glade_helper_load ("gdmsetup.glade", + "xdmcp_dialog", + GTK_TYPE_DIALOG, + TRUE); + + parent = glade_helper_get (xml, "setup_dialog", GTK_TYPE_WINDOW); + dialog = glade_helper_get (xml_xdmcp, "xdmcp_dialog", GTK_TYPE_DIALOG); - update_greeters (); - } + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); + gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); - return FALSE; -} + setup_xdmcp_notify_toggle ("honour_indirect", + GDM_KEY_INDIRECT, + "xdmcp/PARAMETERS"); -static void -greeter_backselect_toggled (GtkWidget *toggle) -{ - /* We set the timeout on the no_bg radiobutton */ - GtkWidget *no_bg = glade_helper_get (xml, "sg_no_bg_rb", - GTK_TYPE_WIDGET); - run_timeout (no_bg, 500, greeter_backselect_timeout); -} + setup_xdmcp_intspin ("udpport", + GDM_KEY_UDPPORT, + GDM_KEY_UDPPORT); -static void -setup_greeter_backselect (void) -{ - int val; - GtkWidget *no_bg = glade_helper_get (xml, "sg_no_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *image_bg = glade_helper_get (xml, "sg_image_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *color_bg = glade_helper_get (xml, "sg_color_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - - val = ve_config_get_int (ve_config_get (config_file), - GDM_KEY_BACKGROUNDTYPE); - - if (val == 0) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (no_bg), TRUE); - else if (val == 1) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_bg), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_bg), TRUE); + setup_xdmcp_intspin ("maxpending", + GDM_KEY_MAXPEND, + "xdmcp/PARAMETERS"); + + setup_xdmcp_intspin ("maxpendingindirect", + GDM_KEY_MAXINDIR, + "xdmcp/PARAMETERS"); + + setup_xdmcp_intspin ("maxremotesessions", + GDM_KEY_MAXSESS, + "xdmcp/PARAMETERS"); + + setup_xdmcp_intspin ("maxwait", + GDM_KEY_MAXWAIT, + "xdmcp/PARAMETERS"); - g_signal_connect (G_OBJECT (no_bg), "toggled", - G_CALLBACK (greeter_backselect_toggled), NULL); - g_signal_connect (G_OBJECT (image_bg), "toggled", - G_CALLBACK (greeter_backselect_toggled), NULL); - g_signal_connect (G_OBJECT (color_bg), "toggled", - G_CALLBACK (greeter_backselect_toggled), NULL); + setup_xdmcp_intspin ("maxwaitindirect", + GDM_KEY_MAXINDWAIT, + "xdmcp/PARAMETERS"); + + setup_xdmcp_intspin ("displaysperhost", + GDM_KEY_DISPERHOST, + "xdmcp/PARAMETERS"); + + setup_xdmcp_intspin ("pinginterval", + GDM_KEY_PINGINTERVAL, + "xdmcp/PARAMETERS"); + } + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_hide (dialog); } +void +vt_spinbutton_activate (GtkWidget * widget, + gpointer data) +{ + GtkDialog * dialog = data; + gtk_dialog_response (dialog, GTK_RESPONSE_OK); +} -/* Local and Remote greeter comboboxes from General configuration tab */ static void setup_greeter_combobox (const char *name, - const char *key) + const char *key) { GtkWidget *combobox = glade_helper_get (xml, name, GTK_TYPE_COMBO_BOX); - GtkWidget *toggle = glade_helper_get (xml, "enable_xdmcp", - GTK_TYPE_TOGGLE_BUTTON); char *val; val = ve_config_get_string (ve_config_get (config_file), key); @@ -1901,21 +2629,50 @@ setup_greeter_combobox (const char *name, g_free (val); val = g_strdup (EXPANDED_LIBEXECDIR "/gdmlogin"); } + /* Set initial state of local style combo box. */ + if (strcmp (key, GDM_KEY_GREETER) == 0) { + + if (strstr (val, "/gdmlogin") != NULL) { + + GtkWidget *local_plain_vbox; + GtkWidget *local_themed_vbox; + gboolean val; + + val = ve_config_get_bool (ve_config_get (config_file), GDM_KEY_BROWSER); + + local_plain_vbox = glade_helper_get (xml, "local_plain_properties_vbox", + GTK_TYPE_VBOX); + local_themed_vbox = glade_helper_get (xml, "local_themed_properties_vbox", + GTK_TYPE_VBOX); + if (val == FALSE) { + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), LOCAL_PLAIN); + } + else { + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), LOCAL_PLAIN_WITH_FACE); + } - if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0 && - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)) == FALSE) - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 2); + gtk_widget_show (local_plain_vbox); + gtk_widget_hide (local_themed_vbox); + } + else if (strstr (val, "/gdmgreeter") != NULL) { - else if (strcmp (val, EXPANDED_LIBEXECDIR "/gdmlogin") == 0) { - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); - last_remote_login_setting = 0; + GtkWidget *local_plain_vbox; + GtkWidget *local_themed_vbox; + + local_plain_vbox = glade_helper_get (xml, "local_plain_properties_vbox", + GTK_TYPE_VBOX); + local_themed_vbox = glade_helper_get (xml, "local_themed_properties_vbox", + GTK_TYPE_VBOX); + + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), LOCAL_THEMED); + gtk_widget_hide (local_plain_vbox); + gtk_widget_show (local_themed_vbox); + } } - - else if (strcmp (val, EXPANDED_LIBEXECDIR "/gdmgreeter") == 0) { - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 1); - last_remote_login_setting = 1; + /* Set initial state of remote style combo box. */ + else if (strcmp (key, GDM_KEY_REMOTEGREETER) == 0) { + refresh_remote_tab (); } - g_free (val); g_object_set_data_full (G_OBJECT (combobox), "key", @@ -1927,31 +2684,18 @@ setup_greeter_combobox (const char *name, static void setup_xdmcp_support (void) { - GtkWidget *xdmcp_toggle = glade_helper_get (xml, "enable_xdmcp", GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *xdmcp_label = glade_helper_get (xml, "XDMCP_label", GTK_TYPE_WIDGET); - GtkWidget *xdmcp_frame = glade_helper_get (xml, "xdmcp_frame", GTK_TYPE_WIDGET); - GtkWidget *xdmcp_vbox = glade_helper_get (xml, "xdmcp_vbox", GTK_TYPE_WIDGET); - GtkWidget *no_xdmcp_label = glade_helper_get (xml, "no_xdmcp_label", GTK_TYPE_WIDGET); + GtkWidget *xdmcp_button; + xdmcp_button = glade_helper_get (xml, "xdmcp_configbutton", + GTK_TYPE_BUTTON); #ifndef HAVE_LIBXDMCP - gtk_widget_show (no_xdmcp_label); - gtk_widget_hide (xdmcp_vbox); -#else /* HAVE_LIBXDMCP */ - gtk_widget_hide (no_xdmcp_label); - gtk_widget_show (xdmcp_vbox); -#endif /* HAVE_LIBXDMCP */ - - gtk_widget_set_sensitive (xdmcp_label, - GTK_TOGGLE_BUTTON (xdmcp_toggle)->active); - gtk_widget_set_sensitive (xdmcp_frame, - GTK_TOGGLE_BUTTON (xdmcp_toggle)->active); - - g_signal_connect (G_OBJECT (xdmcp_toggle), "toggled", - G_CALLBACK (sensitivity_toggled), - xdmcp_frame); - g_signal_connect (G_OBJECT (xdmcp_toggle), "toggled", - G_CALLBACK (sensitivity_toggled), - xdmcp_label); + /* HAVE_LIBXDMCP */ + gtk_widget_set_sensitive (xdmcp_button, FALSE); +#else + /* HAVE_LIBXDMCP */ + gtk_widget_set_sensitive (xdmcp_button, TRUE); +#endif + } static gboolean @@ -2113,9 +2857,9 @@ acc_modules_toggled (GtkWidget *toggle, gpointer data) if (ve_string_empty (modules_list)) add_gtk_modules = FALSE; - ve_config_set_string (cfg, GDM_KEY_GTK_MODULES_LIST, ve_sure_string (modules_list)); + ve_config_set_bool (cfg, GDM_KEY_ADD_GTK_MODULES, add_gtk_modules); ve_config_save (cfg, FALSE /* force */); @@ -2129,11 +2873,11 @@ acc_modules_toggled (GtkWidget *toggle, gpointer data) static void test_sound (GtkWidget *button, gpointer data) { - GtkWidget *acc_sound_file_label = data; - const char *file = gtk_label_get_text (GTK_LABEL (acc_sound_file_label)); + GtkWidget *acc_sound_file_chooser = data; + const char *file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (acc_sound_file_chooser)); const char *argv[3]; - if (strcmp (_("None"), file) == 0 || + if ((file == NULL) || access (file, R_OK) != 0 || ve_string_empty (GdmSoundProgram)) return; @@ -2153,367 +2897,206 @@ test_sound (GtkWidget *button, gpointer data) } static void -no_sound_cb (GtkWidget *widget, gpointer data) +sound_response (GtkWidget *file_chooser, gpointer data) { VeConfig *config; - GtkWidget *acc_no_sound_file, *acc_sound_test; - GtkWidget *acc_sound_file_label = data; - const char *key = g_object_get_data (G_OBJECT (acc_sound_file_label), - "key"); - const char *nosound_button; - const char *soundtest_button; - char *sound_key, *val, *config_val; + const char *file_name; + char *sound_key; + char *value; + + file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); - nosound_button = g_strconcat ("acc_nosound_", key, "_button", NULL); - soundtest_button = g_strconcat ("acc_soundtest_", key, "_button", NULL); - - acc_no_sound_file = glade_helper_get (xml, nosound_button, - GTK_TYPE_BUTTON); - acc_sound_test = glade_helper_get (xml, soundtest_button, - GTK_TYPE_BUTTON); - - config = ve_config_get (config_file); - gtk_label_set_text (GTK_LABEL (acc_sound_file_label), _("None")); - gtk_widget_set_sensitive (acc_no_sound_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test, FALSE); - - if (strcmp (key, "ready") == 0) { - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_READY_FILE); - } else if (strcmp (key, "success") == 0) { - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_SUCCESS_FILE); - } else if (strcmp (key, "failure") == 0) { - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); - } else { - sound_key = NULL; - } - - val = ve_config_get_string (config, sound_key); - config_val = ve_sure_string (val); - - if (config_val != NULL && *config_val != '\0') { - ve_config_set_string (config, sound_key, "\0"); - ve_config_save (config, FALSE /* force */); + config = ve_config_get (config_file); + sound_key = g_object_get_data (G_OBJECT (file_chooser), "key"); + value = ve_config_get_string (config, sound_key); + + if (strcmp (ve_sure_string (value), ve_sure_string (file_name)) != 0) { + ve_config_set_string (config, sound_key, + ve_sure_string (file_name)); + ve_config_save (config, FALSE); update_greeters (); } - - g_free (sound_key); - g_free (val); + g_free (value); } static void -sound_response (GtkWidget *file_dialog, gint response, gpointer data) -{ - GtkWidget *acc_no_sound_file, *acc_sound_test; - GtkWidget *acc_sound_file_label = data; - const char *key = g_object_get_data (G_OBJECT (acc_sound_file_label), "key"); - - const char *nosound_button; - const char *soundtest_button; - nosound_button = g_strconcat("acc_nosound_",key,"_button",NULL); - soundtest_button = g_strconcat("acc_soundtest_",key,"_button",NULL); - - acc_no_sound_file = glade_helper_get (xml, nosound_button, - GTK_TYPE_BUTTON); - acc_sound_test = glade_helper_get (xml, soundtest_button, - GTK_TYPE_BUTTON); - if (response == GTK_RESPONSE_ACCEPT) { - VeConfig *config = ve_config_get (config_file); - char *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_dialog)); - char *val, *sound_key; - - gtk_label_set_text (GTK_LABEL (acc_sound_file_label), filename); - - gtk_widget_set_sensitive (acc_no_sound_file, TRUE); - gtk_widget_set_sensitive (acc_sound_test, TRUE); - - - if (strcmp (key, "ready") == 0 ) { - have_sound_ready_file = TRUE; - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_READY_FILE); - } else if (strcmp (key, "success") == 0 ) { - have_sound_success_file = TRUE; - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_SUCCESS_FILE); - } else if (strcmp (key, "failure") == 0 ) { - have_sound_failure_file = TRUE; - sound_key = g_strdup(GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); - } else { - sound_key = NULL; - } - - val = ve_config_get_string (config, sound_key); - - if (strcmp (ve_sure_string (val), ve_sure_string (filename)) != 0) { - ve_config_set_string (config, sound_key, - ve_sure_string (filename)); - ve_config_save (config, FALSE /* force */); - update_greeters (); - } - g_free (val); - - } else { - - if (strcmp (key,"ready") == 0) { - if (have_sound_ready_file) { - gtk_widget_set_sensitive (acc_no_sound_file, TRUE); - gtk_widget_set_sensitive (acc_sound_test, TRUE); - } else { - gtk_widget_set_sensitive (acc_no_sound_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test, FALSE); - } - } else if (strcmp (key,"success") == 0) { - if (have_sound_success_file) { - gtk_widget_set_sensitive (acc_no_sound_file, TRUE); - gtk_widget_set_sensitive (acc_sound_test, TRUE); - } else { - gtk_widget_set_sensitive (acc_no_sound_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test, FALSE); - } - } else if (strcmp (key,"failure") == 0) { - if (have_sound_failure_file) { - gtk_widget_set_sensitive (acc_no_sound_file, TRUE); - gtk_widget_set_sensitive (acc_sound_test, TRUE); - } else { - gtk_widget_set_sensitive (acc_no_sound_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test, FALSE); - } - } - - } - gtk_widget_destroy (file_dialog); +setup_users_tab (void) +{ + setup_greeter_toggle ("fb_allusers", + GDM_KEY_INCLUDEALL); + setup_face (); } static void -browse_sound_cb (GtkWidget *widget, gpointer data) +setup_accessibility_tab (void) { - GtkWidget *setup_dialog = glade_helper_get (xml, "setup_dialog", - GTK_TYPE_WINDOW); - GtkWidget *label = data; - GtkFileFilter *filter; - GtkWidget *file_dialog = gtk_file_chooser_dialog_new (_("Open File"), - GTK_WINDOW (setup_dialog), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - - gtk_file_chooser_set_show_hidden (file_dialog, TRUE); - filter = gtk_file_filter_new (); - gtk_file_filter_set_name (filter, _("All files")); - gtk_file_filter_add_pattern(filter, "*"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_dialog), filter); - - gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_dialog), - EXPANDED_DATADIR "/sounds"); - - g_signal_connect (G_OBJECT (file_dialog), "destroy", - G_CALLBACK (gtk_widget_destroyed), &file_dialog); - g_signal_connect (G_OBJECT (file_dialog), "response", - G_CALLBACK (sound_response), label); - - gtk_widget_show (file_dialog); -} + GtkWidget *enable_accessible_login; + GtkWidget *access_sound_ready_file_chooser; + GtkWidget *access_sound_ready_play_button; + GtkWidget *access_sound_success_file_chooser; + GtkWidget *access_sound_success_play_button; + GtkWidget *access_sound_failure_file_chooser; + GtkWidget *access_sound_failure_play_button; + GtkFileFilter *all_sounds_filter; + GtkFileFilter *all_files_filter; + VeConfig *config; + gboolean add_gtk_modules; + gchar *gdm_key_sound_ready; + gchar *gdm_key_sound_success; + gchar *gdm_key_sound_failure; + gchar *modules_list; + gchar *value; + + enable_accessible_login = + glade_helper_get (xml, + "acc_modules", + GTK_TYPE_CHECK_BUTTON); + + access_sound_ready_file_chooser = + glade_helper_get (xml, + "acc_sound_ready_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + access_sound_ready_play_button = + glade_helper_get (xml, + "acc_soundtest_ready_button", + GTK_TYPE_BUTTON); + + access_sound_success_file_chooser = + glade_helper_get (xml, + "acc_sound_success_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + access_sound_success_play_button = + glade_helper_get (xml, + "acc_soundtest_success_button", + GTK_TYPE_BUTTON); + + access_sound_failure_file_chooser = + glade_helper_get (xml, + "acc_sound_failure_button", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + access_sound_failure_play_button = + glade_helper_get (xml, + "acc_soundtest_failure_button", + GTK_TYPE_BUTTON); -static void -setup_accessibility_support (void) -{ - GtkWidget *acc_modules = glade_helper_get (xml, "acc_modules", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *acc_sound_ready_file_label = glade_helper_get (xml, - "acc_sound_ready_file", - GTK_TYPE_LABEL); - GtkWidget *acc_sound_ready_file = glade_helper_get (xml, - "acc_sound_ready_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_no_sound_ready_file = glade_helper_get (xml, - "acc_nosound_ready_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_sound_test_ready = glade_helper_get (xml, - "acc_soundtest_ready_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_sound_success_file_label = glade_helper_get (xml, - "acc_sound_success_file", - GTK_TYPE_LABEL); - GtkWidget *acc_sound_success_file = glade_helper_get (xml, - "acc_sound_success_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_no_sound_success_file = glade_helper_get (xml, - "acc_nosound_success_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_sound_test_success = glade_helper_get (xml, - "acc_soundtest_success_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_sound_failure_file_label = glade_helper_get (xml, - "acc_sound_failure_file", - GTK_TYPE_LABEL); - GtkWidget *acc_sound_failure_file = glade_helper_get (xml, - "acc_sound_failure_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_no_sound_failure_file = glade_helper_get (xml, - "acc_nosound_failure_button", - GTK_TYPE_BUTTON); - GtkWidget *acc_sound_test_failure = glade_helper_get (xml, - "acc_soundtest_failure_button", - GTK_TYPE_BUTTON); - - gchar *ready_key = g_strdup("ready"); - gchar *success_key = g_strdup("success"); - gchar *failure_key = g_strdup("failure"); - VeConfig *config = ve_config_get (config_file); - gboolean add_gtk_modules = ve_config_get_bool (config, - GDM_KEY_ADD_GTK_MODULES); - char *modules_list = ve_config_get_string (config, - GDM_KEY_GTK_MODULES_LIST); - char *val; + setup_greeter_toggle ("acc_theme", + GDM_KEY_ALLOW_GTK_THEME_CHANGE); + setup_greeter_toggle ("acc_sound_ready", + GDM_KEY_SOUND_ON_LOGIN_READY); + setup_greeter_toggle ("acc_sound_success", + GDM_KEY_SOUND_ON_LOGIN_SUCCESS); + setup_greeter_toggle ("acc_sound_failure", + GDM_KEY_SOUND_ON_LOGIN_FAILURE); - g_object_set_data (G_OBJECT (acc_sound_ready_file_label), "key", - ready_key); - g_object_set_data (G_OBJECT (acc_sound_success_file_label), "key", - success_key); - g_object_set_data (G_OBJECT (acc_sound_failure_file_label), "key", - failure_key); + config = ve_config_get (config_file); + add_gtk_modules = ve_config_get_bool (config, GDM_KEY_ADD_GTK_MODULES); + modules_list = ve_config_get_string (config, GDM_KEY_GTK_MODULES_LIST); - if (add_gtk_modules && + if (!(add_gtk_modules && modules_list_contains (modules_list, "gail") && - modules_list_contains (modules_list, "atk-bridge") && - modules_list_contains (modules_list, "dwellmouselistener") && - modules_list_contains (modules_list, "keymouselistener")) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (acc_modules), - TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (acc_modules), + modules_list_contains (modules_list, "atk-bridge") && + modules_list_contains (modules_list, "dwellmouselistener") && + modules_list_contains (modules_list, "keymouselistener"))) { + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_accessible_login), FALSE); } - - val = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_READY_FILE); - - if (val != NULL && *val != '\0') { - gtk_label_set_text (GTK_LABEL (acc_sound_ready_file_label), val); - } else { - gtk_label_set_text (GTK_LABEL (acc_sound_ready_file_label), _("None")); - gtk_widget_set_sensitive (acc_no_sound_ready_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test_ready, FALSE); + else { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_accessible_login), + TRUE); } + + g_free (modules_list); - val = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_SUCCESS_FILE); + all_sounds_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (all_sounds_filter, _("Sounds")); + gtk_file_filter_add_mime_type (all_sounds_filter, "audio/x-wav"); + gtk_file_filter_add_mime_type (all_sounds_filter, "application/ogg"); - if (val != NULL && *val != '\0') { - gtk_label_set_text (GTK_LABEL (acc_sound_success_file_label), val); - } else { - gtk_label_set_text (GTK_LABEL (acc_sound_success_file_label), _("None")); - gtk_widget_set_sensitive (acc_no_sound_success_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test_success, FALSE); - } + all_files_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (all_files_filter, _("All Files")); + gtk_file_filter_add_pattern(all_files_filter, "*"); - val = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_ready_file_chooser), all_sounds_filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_ready_file_chooser), all_files_filter); - if (val != NULL && *val != '\0') { - gtk_label_set_text (GTK_LABEL (acc_sound_failure_file_label), val); - } else { - gtk_label_set_text (GTK_LABEL (acc_sound_failure_file_label), _("None")); - gtk_widget_set_sensitive (acc_no_sound_failure_file, FALSE); - gtk_widget_set_sensitive (acc_sound_test_failure, FALSE); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_success_file_chooser), all_sounds_filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_success_file_chooser), all_files_filter); + + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_failure_file_chooser), all_sounds_filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (access_sound_failure_file_chooser), all_files_filter); + + value = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_READY_FILE); + + if (value != NULL && *value != '\0') { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (access_sound_ready_file_chooser), + value); + } + else { + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (access_sound_ready_file_chooser), + DATADIR"/sounds"); } - g_signal_connect (G_OBJECT (acc_modules), "toggled", - G_CALLBACK (acc_modules_toggled), - NULL); - g_signal_connect (G_OBJECT (acc_sound_ready_file), "clicked", - G_CALLBACK (browse_sound_cb), - acc_sound_ready_file_label); - g_signal_connect (G_OBJECT (acc_no_sound_ready_file), "clicked", - G_CALLBACK (no_sound_cb), - acc_sound_ready_file_label); - g_signal_connect (G_OBJECT (acc_sound_test_ready), "clicked", - G_CALLBACK (test_sound), - acc_sound_ready_file_label); - g_signal_connect (G_OBJECT (acc_sound_success_file), "clicked", - G_CALLBACK (browse_sound_cb), - acc_sound_success_file_label); - g_signal_connect (G_OBJECT (acc_no_sound_success_file), "clicked", - G_CALLBACK (no_sound_cb), - acc_sound_success_file_label); - g_signal_connect (G_OBJECT (acc_sound_test_success), "clicked", - G_CALLBACK (test_sound), - acc_sound_success_file_label); - g_signal_connect (G_OBJECT (acc_sound_failure_file), "clicked", - G_CALLBACK (browse_sound_cb), - acc_sound_failure_file_label); - g_signal_connect (G_OBJECT (acc_no_sound_failure_file), "clicked", - G_CALLBACK (no_sound_cb), - acc_sound_failure_file_label); - g_signal_connect (G_OBJECT (acc_sound_test_failure), "clicked", - G_CALLBACK (test_sound), - acc_sound_failure_file_label); -} + g_free (value); -static void -background_toggled (void) -{ - GtkWidget *no_bg = glade_helper_get (xml, "sg_no_bg_rb", GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *image_bg = glade_helper_get (xml, "sg_image_bg_rb", GTK_TYPE_TOGGLE_BUTTON); - /*GtkWidget *color_bg = glade_helper_get (xml, "sg_color_bg_rb", GTK_TYPE_TOGGLE_BUTTON);*/ - GtkWidget *scale = glade_helper_get (xml, "sg_scale_background", GTK_TYPE_WIDGET); - GtkWidget *image = glade_helper_get (xml, "sg_backimage", GTK_TYPE_WIDGET); - GtkWidget *onlycolor = glade_helper_get (xml, "sg_remote_color_only", GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *color_label = glade_helper_get (xml, "sg_backcolor_label", GTK_TYPE_WIDGET); - GtkWidget *color = glade_helper_get (xml, "sg_backcolor", GTK_TYPE_WIDGET); - GtkWidget *browse_button = glade_helper_get (xml, "sg_browsebackimage", GTK_TYPE_WIDGET); - - if (GTK_TOGGLE_BUTTON (no_bg)->active) { - gtk_widget_set_sensitive (scale, FALSE); - gtk_widget_set_sensitive (image, FALSE); - gtk_widget_set_sensitive (onlycolor, FALSE); - gtk_widget_set_sensitive (color_label, FALSE); - gtk_widget_set_sensitive (color, FALSE); - gtk_widget_set_sensitive (browse_button, FALSE); - } else if (GTK_TOGGLE_BUTTON (image_bg)->active) { - gtk_widget_set_sensitive (scale, TRUE); - gtk_widget_set_sensitive (image, TRUE); - gtk_widget_set_sensitive (onlycolor, TRUE); - gtk_widget_set_sensitive (browse_button, TRUE); - if (GTK_TOGGLE_BUTTON (onlycolor)->active) { - gtk_widget_set_sensitive (color_label, TRUE); - gtk_widget_set_sensitive (color, TRUE); - } else { - gtk_widget_set_sensitive (color_label, FALSE); - gtk_widget_set_sensitive (color, FALSE); - } - } else /* if (GTK_TOGGLE_BUTTON (color_bg)->active) */ { - gtk_widget_set_sensitive (scale, FALSE); - gtk_widget_set_sensitive (image, FALSE); - gtk_widget_set_sensitive (onlycolor, FALSE); - gtk_widget_set_sensitive (color_label, TRUE); - gtk_widget_set_sensitive (color, TRUE); - gtk_widget_set_sensitive (browse_button, FALSE); - } -} + value = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_SUCCESS_FILE); -static void -setup_background_support (void) -{ - GtkWidget *no_bg = glade_helper_get (xml, "sg_no_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *image_bg = glade_helper_get (xml, "sg_image_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *color_bg = glade_helper_get (xml, "sg_color_bg_rb", - GTK_TYPE_TOGGLE_BUTTON); - GtkWidget *onlycolor = glade_helper_get (xml, "sg_remote_color_only", - GTK_TYPE_TOGGLE_BUTTON); + if (value != NULL && *value != '\0') { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (access_sound_success_file_chooser), + value); + } + else { + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (access_sound_success_file_chooser), + DATADIR"/sounds"); + } + + g_free (value); + + value = ve_config_get_string (config, GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); + + if (value != NULL && *value != '\0') { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (access_sound_failure_file_chooser), + value); + } + else { + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (access_sound_failure_file_chooser), + DATADIR"/sounds"); + } + + g_free (value); - g_signal_connect (G_OBJECT (no_bg), "toggled", - G_CALLBACK (background_toggled), - NULL); - g_signal_connect (G_OBJECT (image_bg), "toggled", - G_CALLBACK (background_toggled), - NULL); - g_signal_connect (G_OBJECT (color_bg), "toggled", - G_CALLBACK (background_toggled), - NULL); - g_signal_connect (G_OBJECT (onlycolor), "toggled", - G_CALLBACK (background_toggled), - NULL); + gdm_key_sound_ready = g_strdup (GDM_KEY_SOUND_ON_LOGIN_READY_FILE); + + g_object_set_data (G_OBJECT (access_sound_ready_file_chooser), "key", + gdm_key_sound_ready); + + gdm_key_sound_success = g_strdup (GDM_KEY_SOUND_ON_LOGIN_SUCCESS_FILE); - background_toggled (); + g_object_set_data (G_OBJECT (access_sound_success_file_chooser), "key", + gdm_key_sound_success); + + gdm_key_sound_failure = g_strdup (GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); + + g_object_set_data (G_OBJECT (access_sound_failure_file_chooser), "key", + gdm_key_sound_failure); + + g_signal_connect (G_OBJECT (enable_accessible_login), "toggled", + G_CALLBACK (acc_modules_toggled), NULL); + g_signal_connect (G_OBJECT (access_sound_ready_play_button), "clicked", + G_CALLBACK (test_sound), access_sound_ready_file_chooser); + g_signal_connect (G_OBJECT (access_sound_success_play_button), "clicked", + G_CALLBACK (test_sound), access_sound_success_file_chooser); + g_signal_connect (G_OBJECT (access_sound_failure_play_button), "clicked", + G_CALLBACK (test_sound), access_sound_failure_file_chooser); + g_signal_connect (G_OBJECT (access_sound_ready_file_chooser), "selection-changed", + G_CALLBACK (sound_response), access_sound_ready_file_chooser); + g_signal_connect (G_OBJECT (access_sound_success_file_chooser), "selection-changed", + G_CALLBACK (sound_response), access_sound_success_file_chooser); + g_signal_connect (G_OBJECT (access_sound_failure_file_chooser), "selection-changed", + G_CALLBACK (sound_response), access_sound_failure_file_chooser); } static char * @@ -2546,31 +3129,83 @@ textview_set_buffer (GtkTextView *view, const char *text) static void gg_selection_changed (GtkTreeSelection *selection, gpointer data) { + static gboolean FirstPass = TRUE; GtkWidget *label; - GtkWidget *preview = glade_helper_get (xml, "gg_theme_preview", - GTK_TYPE_IMAGE); - GtkWidget *no_preview = glade_helper_get (xml, "gg_theme_no_preview", - GTK_TYPE_WIDGET); - GtkWidget *del_button = glade_helper_get (xml, "gg_delete_theme", - GTK_TYPE_BUTTON); - char *screenshot; + GtkWidget *label_remote; + GtkWidget *delete_button; + GtkWidget *delete_button_remote; GtkTreeModel *model; GtkTreeIter iter; + GtkTextBuffer *buffer_local, *buffer_remote; + GtkTextIter iter_local, iter_remote; GValue value = {0, }; + gboolean GdmGraphicalThemeRand; + gchar *str; + + delete_button = glade_helper_get (xml, "gg_delete_theme", + GTK_TYPE_BUTTON); + delete_button_remote = glade_helper_get (xml, "gg_delete_theme_remote", + GTK_TYPE_BUTTON); - gboolean GdmGraphicalThemeRand = ve_config_get_bool ( - ve_config_get (config_file), - GDM_KEY_GRAPHICAL_THEME_RAND); - - if ( ! gtk_tree_selection_get_selected (selection, &model, &iter)) { - gtk_widget_set_sensitive (del_button, FALSE); + if ( !gtk_tree_selection_get_selected (selection, &model, &iter)) { + gtk_widget_set_sensitive (delete_button, FALSE); + gtk_widget_set_sensitive (delete_button_remote, FALSE); return; } /* Default to allow deleting of themes */ - gtk_widget_set_sensitive (del_button, TRUE); - + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + + GtkWidget *theme_list; + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreePath *path; + + theme_list = glade_helper_get (xml, "gg_theme_list_remote", + GTK_TYPE_TREE_VIEW); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (theme_list)); + + if (model != NULL) { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + if (path != NULL) { + gtk_tree_selection_select_path (selection, path); + if (GTK_WIDGET_REALIZED(theme_list)) { + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (theme_list), + path, NULL, FALSE, 0.0, 0.0); + } + } + } + gtk_widget_set_sensitive (delete_button, TRUE); + gtk_widget_set_sensitive (delete_button_remote, TRUE); + } + else { + GtkWidget *theme_list; + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreePath *path; + + theme_list = glade_helper_get (xml, "gg_theme_list", + GTK_TYPE_TREE_VIEW); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (theme_list)); + + if (model != NULL) { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + if (path != NULL) { + gtk_tree_selection_select_path (selection, path); + if (GTK_WIDGET_REALIZED(theme_list)) { + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (theme_list), + path, NULL, FALSE, 0.0, 0.0); + } + } + } + gtk_widget_set_sensitive (delete_button, TRUE); + gtk_widget_set_sensitive (delete_button_remote, TRUE); + } /* Determine if the theme selected is currently active */ + GdmGraphicalThemeRand = ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_GRAPHICAL_THEME_RAND); if (GdmGraphicalThemeRand) { gtk_tree_model_get_value (model, &iter, THEME_COLUMN_SELECTED_LIST, &value); } else { @@ -2579,70 +3214,87 @@ gg_selection_changed (GtkTreeSelection *selection, gpointer data) /* Do not allow deleting of active themes */ if (g_value_get_boolean (&value)) { - gtk_widget_set_sensitive (del_button, FALSE); + gtk_widget_set_sensitive (delete_button, FALSE); + gtk_widget_set_sensitive (delete_button_remote, FALSE); } g_value_unset (&value); gtk_tree_model_get_value (model, &iter, THEME_COLUMN_AUTHOR, &value); + + if (!ve_string_empty (ve_sure_string (g_value_get_string (&value)))) { + str = g_strconcat (ve_sure_string (g_value_get_string (&value)), NULL); + } + else { + str = g_strconcat (_("None"), NULL); + } + label = glade_helper_get (xml, "gg_author_text_view", - GTK_TYPE_TEXT_VIEW); - textview_set_buffer (GTK_TEXT_VIEW (label), - ve_sure_string (g_value_get_string (&value))); + GTK_TYPE_TEXT_VIEW); + label_remote = glade_helper_get (xml, "gg_author_text_view_remote", + GTK_TYPE_TEXT_VIEW); + + textview_set_buffer (GTK_TEXT_VIEW (label), ""); + textview_set_buffer (GTK_TEXT_VIEW (label_remote), ""); + + buffer_local = gtk_text_view_get_buffer (GTK_TEXT_VIEW (label)); + buffer_remote = gtk_text_view_get_buffer (GTK_TEXT_VIEW (label_remote)); + gtk_text_buffer_get_iter_at_offset (buffer_local, &iter_local, 0); + gtk_text_buffer_get_iter_at_offset (buffer_remote, &iter_remote, 0); + + if (FirstPass == TRUE) { + gtk_text_buffer_create_tag (buffer_local, "small", + "scale", PANGO_SCALE_SMALL, NULL); + gtk_text_buffer_create_tag (buffer_remote, "small", + "scale", PANGO_SCALE_SMALL, NULL); + } + + gtk_text_buffer_insert_with_tags_by_name (buffer_local, &iter_local, + str, -1, "small", NULL); + gtk_text_buffer_insert_with_tags_by_name (buffer_remote, &iter_remote, + str, -1, "small", NULL); g_value_unset (&value); + g_free (str); gtk_tree_model_get_value (model, &iter, THEME_COLUMN_COPYRIGHT, &value); + label = glade_helper_get (xml, "gg_copyright_text_view", - GTK_TYPE_TEXT_VIEW); - textview_set_buffer (GTK_TEXT_VIEW (label), - ve_sure_string (g_value_get_string (&value))); - g_value_unset (&value); + GTK_TYPE_TEXT_VIEW); + label_remote = glade_helper_get (xml, "gg_copyright_text_view_remote", + GTK_TYPE_TEXT_VIEW); - gtk_tree_model_get_value (model, &iter, - THEME_COLUMN_DESCRIPTION, - &value); - label = glade_helper_get (xml, "gg_desc_text_view", - GTK_TYPE_TEXT_VIEW); - textview_set_buffer (GTK_TEXT_VIEW (label), - ve_sure_string (g_value_get_string (&value))); - g_value_unset (&value); - - gtk_tree_model_get_value (model, &iter, - THEME_COLUMN_SCREENSHOT, - &value); - screenshot = g_strdup (g_value_get_string (&value)); - g_value_unset (&value); - - gtk_widget_hide (preview); - gtk_widget_show (no_preview); - - if ( ! ve_string_empty (screenshot) && - access (screenshot, R_OK) == 0) { - GdkPixbuf *pb; - pb = gdk_pixbuf_new_from_file (screenshot, NULL); - if (pb != NULL) { - if (gdk_pixbuf_get_width (pb) > 200 || - gdk_pixbuf_get_height (pb) > 150) { - GdkPixbuf *pb2; - pb2 = gdk_pixbuf_scale_simple - (pb, 200, 150, - GDK_INTERP_BILINEAR); - g_object_unref (G_OBJECT (pb)); - pb = pb2; - } - - gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pb); - g_object_unref (G_OBJECT (pb)); - - gtk_widget_show (preview); - gtk_widget_hide (no_preview); - } + textview_set_buffer (GTK_TEXT_VIEW (label), ""); + textview_set_buffer (GTK_TEXT_VIEW (label_remote), ""); + + buffer_local = gtk_text_view_get_buffer (GTK_TEXT_VIEW (label)); + buffer_remote = gtk_text_view_get_buffer (GTK_TEXT_VIEW (label_remote)); + + gtk_text_buffer_get_iter_at_offset (buffer_local, &iter_local, 0); + gtk_text_buffer_get_iter_at_offset (buffer_remote, &iter_remote, 0); + if (FirstPass == TRUE) { + gtk_text_buffer_create_tag (buffer_local, "small", + "scale", PANGO_SCALE_SMALL, NULL); + gtk_text_buffer_create_tag (buffer_remote, "small", + "scale", PANGO_SCALE_SMALL, NULL); + } + + if (!ve_string_empty (ve_sure_string (g_value_get_string (&value)))) { + str = g_strconcat (ve_sure_string (g_value_get_string (&value)), NULL); + } + else { + str = g_strconcat (_("None"), NULL); } - g_free (screenshot); + gtk_text_buffer_insert_with_tags_by_name (buffer_local, &iter_local, + str, -1, "small", NULL); + gtk_text_buffer_insert_with_tags_by_name (buffer_remote, &iter_remote, + str, -1, "small", NULL); + + FirstPass = FALSE; + g_value_unset (&value); } static GtkTreeIter * @@ -2651,6 +3303,8 @@ read_themes (GtkListStore *store, const char *theme_dir, DIR *dir, { struct dirent *dent; GtkTreeIter *select_iter = NULL; + GdkPixbuf *pb = NULL; + gchar *markup; while ((dent = readdir (dir)) != NULL) { char *n, *file, *name, *desc, *author, *copyright, *ss; @@ -2727,17 +3381,36 @@ read_themes (GtkListStore *store, const char *theme_dir, DIR *dir, else full = NULL; + if ( ! ve_string_empty (full) && + access (full, R_OK) == 0) { + + pb = gdk_pixbuf_new_from_file (full, NULL); + if (pb != NULL) { + if (gdk_pixbuf_get_width (pb) > 64 || + gdk_pixbuf_get_height (pb) > 50) { + GdkPixbuf *pb2; + pb2 = gdk_pixbuf_scale_simple + (pb, 64, 50, + GDK_INTERP_BILINEAR); + g_object_unref (G_OBJECT (pb)); + pb = pb2; + } + } + } + + markup = g_strdup_printf ("<b>%s</b>\n%s", name, desc); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, THEME_COLUMN_SELECTED, sel_theme, THEME_COLUMN_SELECTED_LIST, sel_themes, THEME_COLUMN_DIR, dent->d_name, THEME_COLUMN_FILE, file, + THEME_COLUMN_SCREENSHOT, pb, + THEME_COLUMN_MARKUP, markup, THEME_COLUMN_NAME, name, THEME_COLUMN_DESCRIPTION, desc, THEME_COLUMN_AUTHOR, author, THEME_COLUMN_COPYRIGHT, copyright, - THEME_COLUMN_SCREENSHOT, full, -1); if (select_item != NULL && @@ -2810,6 +3483,8 @@ selected_toggled (GtkCellRendererToggle *cell, GTK_TYPE_TREE_VIEW); GtkWidget *del_button = glade_helper_get (xml, "gg_delete_theme", GTK_TYPE_BUTTON); + GtkWidget *del_button_remote = glade_helper_get (xml, "gg_delete_theme_remote", + GTK_TYPE_BUTTON); gboolean is_radio; gtk_tree_model_get_iter (model, &selected_iter, sel_path); @@ -2832,6 +3507,7 @@ selected_toggled (GtkCellRendererToggle *cell, THEME_COLUMN_SELECTED, TRUE, -1); /* Toggle ON */ gtk_widget_set_sensitive (del_button, FALSE); + gtk_widget_set_sensitive (del_button_remote, FALSE); } else { gtk_list_store_set (GTK_LIST_STORE (model), &iter, THEME_COLUMN_SELECTED, FALSE, @@ -2860,11 +3536,13 @@ selected_toggled (GtkCellRendererToggle *cell, THEME_COLUMN_SELECTED_LIST, FALSE, -1); /* Toggle OFF */ gtk_widget_set_sensitive (del_button, TRUE); + gtk_widget_set_sensitive (del_button_remote, TRUE); } else { gtk_list_store_set (GTK_LIST_STORE (model), &iter, THEME_COLUMN_SELECTED_LIST, TRUE, -1); /* Toggle ON */ gtk_widget_set_sensitive (del_button, FALSE); + gtk_widget_set_sensitive (del_button_remote, FALSE); } } @@ -3241,7 +3919,7 @@ theme_install_response (GtkWidget *chooser, gint response, gpointer data) GtkWidget *dlg; gchar *msg; - msg = g_strdup_printf (_("Details: %s"), error); + msg = g_strdup_printf (_("%s"), error); dlg = ve_hig_dialog_new (GTK_WINDOW (chooser), GTK_DIALOG_MODAL | @@ -3391,14 +4069,14 @@ install_new_theme (GtkWidget *button, gpointer data) GtkWidget *setup_dialog = glade_helper_get (xml, "setup_dialog", GTK_TYPE_WINDOW); - chooser = gtk_file_chooser_dialog_new (_("Select new theme archive to install"), + chooser = gtk_file_chooser_dialog_new (_("Select Theme Archive"), GTK_WINDOW (setup_dialog), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, _("_Install"), GTK_RESPONSE_OK, NULL); - gtk_file_chooser_set_show_hidden (chooser, TRUE); + gtk_file_chooser_set_show_hidden (GTK_FILE_CHOOSER (chooser), TRUE); g_signal_connect (G_OBJECT (chooser), "destroy", G_CALLBACK (gtk_widget_destroyed), &chooser); g_signal_connect (G_OBJECT (chooser), "response", @@ -3416,8 +4094,10 @@ delete_theme (GtkWidget *button, gpointer data) { GtkListStore *store = data; GtkWidget *theme_list; + GtkWidget *theme_list_remote; GtkWidget *setup_dialog; GtkWidget *del_button; + GtkWidget *del_button_remote; GtkTreeSelection *selection; char *dir, *name; GtkTreeModel *model; @@ -3425,14 +4105,24 @@ delete_theme (GtkWidget *button, gpointer data) GValue value = {0, }; GtkWidget *dlg; char *s; + gboolean GdmGraphicalThemeRand; setup_dialog = glade_helper_get (xml, "setup_dialog", GTK_TYPE_WINDOW); theme_list = glade_helper_get (xml, "gg_theme_list", GTK_TYPE_TREE_VIEW); + theme_list_remote = glade_helper_get (xml, "gg_theme_list_remote", + GTK_TYPE_TREE_VIEW); del_button = glade_helper_get (xml, "gg_delete_theme", GTK_TYPE_BUTTON); + del_button_remote = glade_helper_get (xml, "gg_delete_theme_remote", + GTK_TYPE_BUTTON); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + } + else { + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list_remote)); + } if ( ! gtk_tree_selection_get_selected (selection, &model, &iter)) { /* should never get here since the button shuld not be @@ -3440,9 +4130,19 @@ delete_theme (GtkWidget *button, gpointer data) return; } - gtk_tree_model_get_value (model, &iter, - THEME_COLUMN_SELECTED, - &value); + GdmGraphicalThemeRand = ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_GRAPHICAL_THEME_RAND); + + if (GdmGraphicalThemeRand) { + gtk_tree_model_get_value (model, &iter, + THEME_COLUMN_SELECTED_LIST, &value); + } + else { + gtk_tree_model_get_value (model, &iter, + THEME_COLUMN_SELECTED, + &value); + } + /* Do not allow deleting of selected theme */ if (g_value_get_boolean (&value)) { /* should never get here since the button shuld not be @@ -3464,16 +4164,16 @@ delete_theme (GtkWidget *button, gpointer data) dir = g_strdup (g_value_get_string (&value)); g_value_unset (&value); - s = g_strdup_printf (_("Do you really wish to remove theme '%s' from the system?"), + s = g_strdup_printf (_("Remove the \"%s\" theme?"), name); dlg = ve_hig_dialog_new (GTK_WINDOW (setup_dialog), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, + GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE, s, - ""); + _("If you choose to remove the theme, it will be permanently lost.")); g_free (s); button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); @@ -3541,7 +4241,7 @@ xserver_entry_timeout (GtkWidget *entry) const char *text = gtk_entry_get_text (GTK_ENTRY (entry)); /* Get xserver section to update */ - GtkWidget *combobox = glade_helper_get (xml, "xserver_mod_combobox", + GtkWidget *combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", GTK_TYPE_COMBO_BOX); gchar *section = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combobox)); section = g_strconcat(GDM_KEY_SERVER_PREFIX, section, "/", NULL); @@ -3570,7 +4270,7 @@ xserver_toggle_timeout (GtkWidget *toggle) gboolean val; /* Get xserver section to update */ - GtkWidget *combobox = glade_helper_get (xml, "xserver_mod_combobox", + GtkWidget *combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", GTK_TYPE_COMBO_BOX); gchar *section = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combobox)); section = g_strconcat(GDM_KEY_SERVER_PREFIX, section, "/", NULL); @@ -3639,9 +4339,9 @@ static void xserver_init_server_list() { /* Get Widgets from glade */ - GtkWidget *treeview = glade_helper_get (xml, "xserver_tree_view", + GtkWidget *treeview = glade_helper_get (xml_xservers, "xserver_tree_view", GTK_TYPE_TREE_VIEW); - GtkWidget *remove_button = glade_helper_get (xml, "xserver_remove_button", + GtkWidget *remove_button = glade_helper_get (xml_xservers, "xserver_remove_button", GTK_TYPE_BUTTON); /* create list store */ @@ -3661,35 +4361,23 @@ xserver_init_server_list() static void xserver_init_servers() { - GtkWidget *spinner, *combo, *entry, *add_button, *remove_button; - - /* Get Widgets from glade */ - spinner = glade_helper_get (xml, "xserver_spin_button", - GTK_TYPE_SPIN_BUTTON); - combo = glade_helper_get (xml, "xserver_server_combobox", - GTK_TYPE_COMBO_BOX); - entry = glade_helper_get (xml, "xserver_options_entry", - GTK_TYPE_ENTRY); - add_button = glade_helper_get (xml, "xserver_add_button", - GTK_TYPE_BUTTON); - remove_button = glade_helper_get (xml, "xserver_remove_button", - GTK_TYPE_BUTTON); - + GtkWidget *remove_button; /* Init widget states */ - xserver_init_server_list(); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), 1); - xserver_populate_combobox (GTK_COMBO_BOX (combo)); - gtk_entry_set_text (GTK_ENTRY (entry), ""); - gtk_widget_set_sensitive (add_button, FALSE); + xserver_init_server_list(); + + remove_button = glade_helper_get (xml_xservers, "xserver_remove_button", + GTK_TYPE_BUTTON); gtk_widget_set_sensitive (remove_button, FALSE); } static void xserver_row_selected(GtkTreeSelection *selection, gpointer data) { - GtkWidget *remove_button = glade_helper_get (xml, "xserver_remove_button", - GTK_TYPE_BUTTON); + GtkWidget *remove_button; + + remove_button = glade_helper_get (xml_xservers, "xserver_remove_button", + GTK_TYPE_BUTTON); gtk_widget_set_sensitive (remove_button, TRUE); } @@ -3706,10 +4394,8 @@ xserver_remove(gpointer data) gint vt; char vt_value[3]; - treeview = glade_helper_get (xml, "xserver_tree_view", + treeview = glade_helper_get (xml_xservers, "xserver_tree_view", GTK_TYPE_TREE_VIEW); - combo = glade_helper_get (xml, "xserver_server_combobox", - GTK_TYPE_COMBO_BOX); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); @@ -3717,14 +4403,16 @@ xserver_remove(gpointer data) { char *key; + combo = glade_helper_get (xml_add_xservers, "xserver_server_combobox", + GTK_TYPE_COMBO_BOX); + /* Update config */ cfg = ve_config_get (config_file); gtk_tree_model_get (model, &iter, XSERVER_COLUMN_VT, &vt, -1); g_snprintf (vt_value, sizeof (vt_value), "%d", vt); - key = g_object_get_data (G_OBJECT (combo), "key"); - key = g_strconcat (key, "/", vt_value, "=", NULL); + key = g_strconcat (GDM_KEY_SECTION_SERVERS, "/", vt_value, "=", NULL); ve_config_delete_key (cfg, key); ve_config_save (cfg, FALSE /* force */); @@ -3745,23 +4433,20 @@ xserver_add(gpointer data) char spinner_value[3], *key; /* Get Widgets from glade */ - spinner = glade_helper_get (xml, "xserver_spin_button", - GTK_TYPE_SPIN_BUTTON); - entry = glade_helper_get (xml, "xserver_options_entry", - GTK_TYPE_ENTRY); - combo = glade_helper_get (xml, "xserver_server_combobox", - GTK_TYPE_COMBO_BOX); - button = glade_helper_get (xml, "xserver_add_button", - GTK_TYPE_BUTTON); - - /* Section in config to modify */ - key = g_object_get_data (G_OBJECT (combo), "key"); + spinner = glade_helper_get (xml_add_xservers, "xserver_spin_button", + GTK_TYPE_SPIN_BUTTON); + entry = glade_helper_get (xml_add_xservers, "xserver_options_entry", + GTK_TYPE_ENTRY); + combo = glade_helper_get (xml_add_xservers, "xserver_server_combobox", + GTK_TYPE_COMBO_BOX); + button = glade_helper_get (xml_xservers, "xserver_add_button", + GTK_TYPE_BUTTON); /* String to add to config */ g_snprintf (spinner_value, sizeof (spinner_value), "%d", gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinner))); - key = g_strconcat (key, "/", spinner_value, "=", NULL); + key = g_strconcat (GDM_KEY_SECTION_SERVERS, "/", spinner_value, "=", NULL); string = g_strconcat (gtk_combo_box_get_active_text (GTK_COMBO_BOX (combo)), " ", gtk_entry_get_text (GTK_ENTRY (entry)), NULL); @@ -3769,7 +4454,7 @@ xserver_add(gpointer data) /* Add to config */ cfg = ve_config_get (config_file); ve_config_set_string (cfg, key, ve_sure_string(string)); - ve_config_save (cfg, FALSE /* force */); + ve_config_save (cfg, FALSE /* force */); /* Reinitialize gdmsetup */ xserver_init_servers(); @@ -3780,10 +4465,104 @@ xserver_add(gpointer data) g_free(key); } +static void +xserver_add_button_clicked (void) +{ + static GtkWidget *dialog = NULL; + GtkWidget *options_entry; + GtkWidget *server_combobox; + GtkWidget *vt_spinbutton; + GtkWidget *parent; + GtkWidget *treeview; + GtkTreeSelection *selection; + GtkTreeModel *treeview_model; + GtkTreeIter treeview_iter; + guint activate_signal_id; + gboolean res; + + if (dialog == NULL) { + parent = glade_helper_get (xml_xservers, "xserver_dialog", GTK_TYPE_WINDOW); + dialog = glade_helper_get (xml_add_xservers, "add_xserver_dialog", GTK_TYPE_DIALOG); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); + gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + } + + vt_spinbutton = glade_helper_get (xml_add_xservers, "xserver_spin_button", + GTK_TYPE_SPIN_BUTTON); + server_combobox = glade_helper_get (xml_add_xservers, "xserver_server_combobox", + GTK_TYPE_COMBO_BOX); + options_entry = glade_helper_get (xml_add_xservers, "xserver_options_entry", + GTK_TYPE_ENTRY); + + activate_signal_id = g_signal_connect (G_OBJECT (vt_spinbutton), "activate", + G_CALLBACK (vt_spinbutton_activate), + (gpointer) dialog); + + xserver_populate_combobox (GTK_COMBO_BOX (server_combobox)); + + gtk_widget_grab_focus (vt_spinbutton); + + treeview = glade_helper_get (xml_xservers, "xserver_tree_view", + GTK_TYPE_TREE_VIEW); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); + + /* set default values */ + if (gtk_tree_selection_get_selected (selection, &treeview_model, &treeview_iter)) { + + GtkTreeModel *combobox_model; + GtkTreeIter combobox_iter; + gchar *label; + gchar *server; + gint vt; + + gtk_tree_model_get (treeview_model, &treeview_iter, XSERVER_COLUMN_VT, &vt, -1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (vt_spinbutton), vt); + + gtk_tree_model_get (GTK_TREE_MODEL (treeview_model), &treeview_iter, + XSERVER_COLUMN_SERVER, &server, -1); + combobox_model = gtk_combo_box_get_model (GTK_COMBO_BOX (server_combobox)); + + for (res = gtk_tree_model_get_iter_first (combobox_model, &combobox_iter); res; res = gtk_tree_model_iter_next (combobox_model, &combobox_iter)) { + gtk_tree_model_get (combobox_model, &combobox_iter, 0, &label, -1); + if (strcmp (label, server) == 0) { + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (server_combobox), &combobox_iter); + } + g_free (label); + } + + gtk_tree_model_get (GTK_TREE_MODEL (treeview_model), &treeview_iter, + XSERVER_COLUMN_OPTIONS, &server, -1); + gtk_entry_set_text (GTK_ENTRY (options_entry), server); + } + else { + gint high_value = 0; + gint vt; + + for (res = gtk_tree_model_get_iter_first (treeview_model, &treeview_iter); res; res = gtk_tree_model_iter_next (treeview_model, &treeview_iter)) { + gtk_tree_model_get (treeview_model, &treeview_iter, XSERVER_COLUMN_VT, &vt, -1); + if (high_value < vt) { + high_value = vt; + } + } + + gtk_spin_button_set_value (GTK_SPIN_BUTTON (vt_spinbutton), ++high_value); + gtk_combo_box_set_active (GTK_COMBO_BOX (server_combobox), 0); + gtk_entry_set_text (GTK_ENTRY (options_entry), ""); + } + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + xserver_add (NULL); + } + g_signal_handler_disconnect (vt_spinbutton, activate_signal_id); + gtk_widget_hide (dialog); +} + /* TODO: This section needs a little work until it is ready (mainly config section modifications) */ /* Create a server definition (not the same as removing a server * from the list of servers to start) */ +#ifdef GDM_TODO_CODE static void xserver_create(gpointer data) { @@ -3854,66 +4633,33 @@ xserver_create(gpointer data) gtk_combo_box_set_active (GTK_COMBO_BOX (modify_combobox), i); } } +#endif static void xserver_init_definitions() { - /* Init Widgets */ - GtkWidget *frame, *modify_combobox, *server_combobox; - GtkWidget *name_entry, *command_entry; - GtkWidget *handled_check, *flexible_check; - GtkWidget *greeter_radio, *chooser_radio; - GtkWidget *create_button, *delete_button; - - /* Get Widgets from glade */ - frame = glade_helper_get (xml, "xserver_modify_frame", - GTK_TYPE_FRAME); - name_entry = glade_helper_get (xml, "xserver_name_entry", - GTK_TYPE_ENTRY); - command_entry = glade_helper_get (xml, "xserver_command_entry", - GTK_TYPE_ENTRY); - handled_check = glade_helper_get (xml, "xserver_handled_checkbutton", - GTK_TYPE_CHECK_BUTTON); - flexible_check = glade_helper_get (xml, "xserver_flexible_checkbutton", - GTK_TYPE_CHECK_BUTTON); - greeter_radio = glade_helper_get (xml, "xserver_greeter_radiobutton", - GTK_TYPE_RADIO_BUTTON); - chooser_radio = glade_helper_get (xml, "xserver_chooser_radiobutton", - GTK_TYPE_RADIO_BUTTON); - modify_combobox = glade_helper_get (xml, "xserver_mod_combobox", - GTK_TYPE_COMBO_BOX); - server_combobox = glade_helper_get (xml, "xserver_server_combobox", - GTK_TYPE_COMBO_BOX); - create_button = glade_helper_get (xml, "xserver_create_button", - GTK_TYPE_BUTTON); - delete_button = glade_helper_get (xml, "xserver_delete_button", - GTK_TYPE_BUTTON); - - /* Populate comboboxes with servers*/ - xserver_populate_combobox (GTK_COMBO_BOX (server_combobox)); - xserver_populate_combobox (GTK_COMBO_BOX (modify_combobox)); - - /* Default sensitivity and settings */ - gtk_widget_set_sensitive (frame, FALSE); - gtk_widget_set_sensitive (delete_button, FALSE); - gtk_widget_set_sensitive (create_button, FALSE); - gtk_widget_grab_focus (modify_combobox); - gtk_entry_set_text (GTK_ENTRY (name_entry), ""); - gtk_entry_set_text (GTK_ENTRY (command_entry), ""); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (greeter_radio),TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser_radio),FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (handled_check),TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (flexible_check),FALSE); + GtkWidget *style_combobox; + GtkWidget *modify_combobox; + style_combobox = glade_helper_get (xml_xservers, "xserver_style_combobox", + GTK_TYPE_COMBO_BOX); + modify_combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", + GTK_TYPE_COMBO_BOX); + + xserver_populate_combobox (GTK_COMBO_BOX (modify_combobox)); + + gtk_combo_box_set_active (GTK_COMBO_BOX (style_combobox), 0); + init_servers_combobox (gtk_combo_box_get_active (GTK_COMBO_BOX (style_combobox))); } /* Deletes a server definition (not the same as removing a server * from the list of servers to start) */ +#ifdef GDM_UNUSED_CODE static void xserver_delete(gpointer data) { /* Get xserver section to delete */ - GtkWidget *combobox = glade_helper_get (xml, "xserver_mod_combobox", + GtkWidget *combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", GTK_TYPE_COMBO_BOX); gchar *section = gtk_combo_box_get_active_text ( GTK_COMBO_BOX (combobox)); @@ -3925,19 +4671,24 @@ xserver_delete(gpointer data) /* Reinitialize definitions */ xserver_init_definitions(); } +#endif static void -setup_xserver_support (void) +setup_xserver_support (GladeXML *xml_xservers) { - GtkWidget *frame, *treeview; - GtkWidget *modify_combobox, *server_combobox; - GtkWidget *name_entry, *command_entry; - GtkWidget *handled_check, *flexible_check; - GtkWidget *greeter_radio, *chooser_radio; - GtkWidget *create_button, *delete_button, *add_button, *remove_button; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; + GtkWidget *command_entry; + GtkWidget *name_entry; + GtkWidget *handled_check; + GtkWidget *flexible_check; + GtkWidget *create_button; + GtkWidget *delete_button; + GtkWidget *remove_button; + GtkWidget *servers_combobox; + GtkWidget *style_combobox; + GtkWidget *treeview; + GtkCellRenderer *renderer; GtkTreeSelection *selection; + GtkTreeViewColumn *column; /* Initialize the xserver settings */ xserver_init_definitions(); @@ -3947,78 +4698,70 @@ setup_xserver_support (void) /* setup_xrandr_support (); */ /* Get Widgets from glade */ - frame = glade_helper_get (xml, "xserver_modify_frame", - GTK_TYPE_FRAME); - treeview = glade_helper_get (xml, "xserver_tree_view", + treeview = glade_helper_get (xml_xservers, "xserver_tree_view", GTK_TYPE_TREE_VIEW); - name_entry = glade_helper_get (xml, "xserver_name_entry", - GTK_TYPE_ENTRY); - command_entry = glade_helper_get (xml, "xserver_command_entry", + name_entry = glade_helper_get (xml_xservers, "xserver_name_entry", + GTK_TYPE_ENTRY); + command_entry = glade_helper_get (xml_xservers, "xserver_command_entry", GTK_TYPE_ENTRY); - handled_check = glade_helper_get (xml, "xserver_handled_checkbutton", + handled_check = glade_helper_get (xml_xservers, "xserver_handled_checkbutton", GTK_TYPE_CHECK_BUTTON); - flexible_check = glade_helper_get (xml, "xserver_flexible_checkbutton", + flexible_check = glade_helper_get (xml_xservers, "xserver_flexible_checkbutton", GTK_TYPE_CHECK_BUTTON); - greeter_radio = glade_helper_get (xml, "xserver_greeter_radiobutton", - GTK_TYPE_RADIO_BUTTON); - chooser_radio = glade_helper_get (xml, "xserver_chooser_radiobutton", - GTK_TYPE_RADIO_BUTTON); - modify_combobox = glade_helper_get (xml, "xserver_mod_combobox", + style_combobox = glade_helper_get (xml_xservers, "xserver_style_combobox", GTK_TYPE_COMBO_BOX); - server_combobox = glade_helper_get (xml, "xserver_server_combobox", + servers_combobox = glade_helper_get (xml_xservers, "xserver_mod_combobox", GTK_TYPE_COMBO_BOX); - create_button = glade_helper_get (xml, "xserver_create_button", - GTK_TYPE_BUTTON); - delete_button = glade_helper_get (xml, "xserver_delete_button", + create_button = glade_helper_get (xml_xservers, "xserver_createbutton", GTK_TYPE_BUTTON); - remove_button = glade_helper_get (xml, "xserver_remove_button", + delete_button = glade_helper_get (xml_xservers, "xserver_deletebutton", GTK_TYPE_BUTTON); - add_button = glade_helper_get (xml, "xserver_add_button", + remove_button = glade_helper_get (xml_xservers, "xserver_remove_button", GTK_TYPE_BUTTON); - /* Setup Virtual terminal column in servers to start frame */ - column = gtk_tree_view_column_new (); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); - gtk_tree_view_column_set_title (column, "VT"); - gtk_tree_view_column_set_attributes (column, renderer, - "text", XSERVER_COLUMN_VT, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - - /* Setup Server column in servers to start frame */ - column = gtk_tree_view_column_new (); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); - gtk_tree_view_column_set_title (column, "Server"); - gtk_tree_view_column_set_attributes (column, renderer, - "text", XSERVER_COLUMN_SERVER, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - /* Setup Options column in servers to start frame*/ - column = gtk_tree_view_column_new (); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); - gtk_tree_view_column_set_title (column, "Options"); - gtk_tree_view_column_set_attributes (column, renderer, - "text",XSERVER_COLUMN_OPTIONS, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); + glade_helper_tagify_label (xml_xservers, "xserver_informationlabel", "i"); + glade_helper_tagify_label (xml_xservers, "xserver_informationlabel", "small"); + glade_helper_tagify_label (xml_xservers, "server_to_start_label", "b"); + glade_helper_tagify_label (xml_xservers, "server_settings_label", "b"); + + /* Setup Virtual terminal column in servers to start frame */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_title (column, "VT"); + gtk_tree_view_column_set_attributes (column, renderer, + "text", XSERVER_COLUMN_VT, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); + + /* Setup Server column in servers to start frame */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_title (column, "Server"); + gtk_tree_view_column_set_attributes (column, renderer, + "text", XSERVER_COLUMN_SERVER, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); + + /* Setup Options column in servers to start frame*/ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_title (column, "Options"); + gtk_tree_view_column_set_attributes (column, renderer, + "text",XSERVER_COLUMN_OPTIONS, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); /* Setup tree selections */ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); - /* Register these items with keys */ - g_object_set_data_full (G_OBJECT (modify_combobox), "key", + g_object_set_data_full (G_OBJECT (servers_combobox), "key", g_strdup (GDM_KEY_SERVER_PREFIX), (GDestroyNotify) g_free); - g_object_set_data_full (G_OBJECT (server_combobox), "key", - g_strdup (GDM_KEY_SECTION_SERVERS), - (GDestroyNotify) g_free); g_object_set_data_full (G_OBJECT (name_entry), "key", g_strdup (GDM_KEY_SERVER_NAME), (GDestroyNotify) g_free); @@ -4031,42 +4774,148 @@ setup_xserver_support (void) g_object_set_data_full (G_OBJECT (flexible_check), "key", g_strdup (GDM_KEY_SERVER_FLEXIBLE), (GDestroyNotify) g_free); - g_object_set_data_full (G_OBJECT (chooser_radio), "key", + g_object_set_data_full (G_OBJECT (style_combobox), "key", g_strdup (GDM_KEY_SERVER_CHOOSER), (GDestroyNotify) g_free); - /* Signals Handlers */ - g_signal_connect (G_OBJECT (name_entry), "changed", + g_signal_connect (G_OBJECT (name_entry), "changed", G_CALLBACK (xserver_entry_changed),NULL); - g_signal_connect (G_OBJECT (command_entry), "changed", + g_signal_connect (G_OBJECT (command_entry), "changed", G_CALLBACK (xserver_entry_changed), NULL); - g_signal_connect (modify_combobox, "changed", - G_CALLBACK (combobox_changed), NULL); - g_signal_connect (server_combobox, "changed", - G_CALLBACK (combobox_changed), NULL); g_signal_connect (G_OBJECT (handled_check), "toggled", G_CALLBACK (xserver_toggle_toggled), NULL); g_signal_connect (G_OBJECT (flexible_check), "toggled", G_CALLBACK (xserver_toggle_toggled), NULL); - g_signal_connect (G_OBJECT (chooser_radio), "toggled", - G_CALLBACK (xserver_toggle_toggled), NULL); - /* TODO: In the future, allow creation of servers - g_signal_connect (create_button, "clicked", - G_CALLBACK (xserver_create), NULL); - */ - g_signal_connect (delete_button, "clicked", - G_CALLBACK (xserver_delete), NULL); - g_signal_connect (add_button, "clicked", - G_CALLBACK (xserver_add), NULL); - g_signal_connect (remove_button, "clicked", + g_signal_connect (G_OBJECT (servers_combobox), "changed", + G_CALLBACK (combobox_changed), NULL); + g_signal_connect (G_OBJECT (style_combobox), "changed", + G_CALLBACK (combobox_changed), NULL); + g_signal_connect (G_OBJECT (remove_button), "clicked", G_CALLBACK (xserver_remove), NULL); g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (xserver_row_selected), NULL); + + /* TODO: In the future, allow creation & delection of servers + g_signal_connect (create_button, "clicked", + G_CALLBACK (xserver_create), NULL); + g_signal_connect (delete_button, "clicked", + G_CALLBACK (xserver_delete), NULL); + */ +} + +static void +xserver_button_clicked (void) +{ + static GtkWidget *dialog = NULL; + + if (dialog == NULL) { + GtkWidget *parent; + GtkWidget *button; + + xml_xservers = glade_helper_load ("gdmsetup.glade", + "xserver_dialog", + GTK_TYPE_DIALOG, + TRUE); + + xml_add_xservers = glade_helper_load ("gdmsetup.glade", + "add_xserver_dialog", + GTK_TYPE_DIALOG, + TRUE); + + parent = glade_helper_get (xml, "setup_dialog", GTK_TYPE_WINDOW); + dialog = glade_helper_get (xml_xservers, "xserver_dialog", GTK_TYPE_DIALOG); + button = glade_helper_get (xml_xservers, "xserver_add_button", GTK_TYPE_BUTTON); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); + gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (xserver_add_button_clicked), NULL); + + setup_xserver_support (xml_xservers); + } + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_hide (dialog); } + static void -setup_graphical_themes (void) +setup_security_tab (void) +{ + GtkWidget *checkbox; + GtkWidget *label; + GtkWidget *XDMCPbutton; + + /* Setup Local administrator login setttings */ + setup_notify_toggle ("allowroot", + GDM_KEY_ALLOWROOT, + GDM_KEY_ALLOWROOT); + + /* Setup Remote administrator login setttings */ + setup_notify_toggle ("allowremoteroot", + GDM_KEY_ALLOWREMOTEROOT, + GDM_KEY_ALLOWREMOTEROOT); + + /* Setup Enable debug message to system log */ + setup_notify_toggle ("enable_debug", + GDM_KEY_DEBUG, + GDM_KEY_DEBUG); + + /* Setup Deny TCP connections to Xserver */ + setup_notify_toggle ("disallow_tcp", + GDM_KEY_DISALLOWTCP, + GDM_KEY_DISALLOWTCP); + + /* Setup Retry delay */ + setup_intspin ("retry_delay", + GDM_KEY_RETRYDELAY, + GDM_KEY_RETRYDELAY); + + /* Bold the Enable automatic login label */ + checkbox = glade_helper_get (xml, "autologin", + GTK_TYPE_CHECK_BUTTON); + label = gtk_bin_get_child (GTK_BIN (checkbox)); + g_object_set (G_OBJECT (label), "use_markup", TRUE, NULL); + + /* Bold the Enable timed login label */ + checkbox = glade_helper_get (xml, "timedlogin", + GTK_TYPE_CHECK_BUTTON); + label = gtk_bin_get_child (GTK_BIN (checkbox)); + g_object_set (G_OBJECT (label), "use_markup", TRUE, NULL); + + /* Setup Enable automatic login */ + setup_user_combobox ("autologin_combo", + GDM_KEY_AUTOMATICLOGIN); + setup_notify_toggle ("autologin", + GDM_KEY_AUTOMATICLOGIN_ENABLE, + NULL); + + /* Setup Enable timed login */ + setup_user_combobox ("timedlogin_combo", + GDM_KEY_TIMED_LOGIN); + setup_intspin ("timedlogin_seconds", + GDM_KEY_TIMED_LOGIN_DELAY, + GDM_KEY_TIMED_LOGIN_DELAY); + setup_notify_toggle ("timedlogin", + GDM_KEY_TIMED_LOGIN_ENABLE, + GDM_KEY_TIMED_LOGIN_ENABLE); + + /* Setup Allow remote timed logins */ + setup_notify_toggle ("allowremoteauto", + GDM_KEY_ALLOWREMOTEAUTOLOGIN, + GDM_KEY_ALLOWREMOTEAUTOLOGIN); + + /* Setup Configure XDMCP button */ + XDMCPbutton = glade_helper_get (xml, "config_xserverbutton", + GTK_TYPE_BUTTON); + setup_xdmcp_support (); + g_signal_connect (G_OBJECT (XDMCPbutton), "clicked", + G_CALLBACK (xserver_button_clicked), NULL); +} + +static void +setup_local_themed_settings (void) { gboolean GdmGraphicalThemeRand; DIR *dir; @@ -4075,6 +4924,8 @@ setup_graphical_themes (void) GtkTreeViewColumn *column; GtkTreeSelection *selection; GtkTreeIter *select_iter = NULL; + GtkWidget *color_colorbutton; + GtkWidget *theme_list = glade_helper_get (xml, "gg_theme_list", GTK_TYPE_TREE_VIEW); GtkWidget *button = glade_helper_get (xml, "gg_install_new_theme", @@ -4084,6 +4935,16 @@ setup_graphical_themes (void) GtkWidget *mode_combobox = glade_helper_get (xml, "gg_mode_combobox", GTK_TYPE_COMBO_BOX); + color_colorbutton = glade_helper_get (xml, + "local_background_theme_colorbutton", + GTK_TYPE_COLOR_BUTTON); + + g_object_set_data (G_OBJECT (color_colorbutton), "key", + GDM_KEY_GRAPHICAL_THEME_COLOR); + + setup_greeter_color ("local_background_theme_colorbutton", + GDM_KEY_GRAPHICAL_THEME_COLOR); + char *theme_dir = get_theme_dir (); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (theme_list), TRUE); @@ -4111,11 +4972,12 @@ setup_graphical_themes (void) G_TYPE_BOOLEAN /* selected themes */, G_TYPE_STRING /* dir */, G_TYPE_STRING /* file */, + GDK_TYPE_PIXBUF /* preview */, + G_TYPE_STRING /* markup */, G_TYPE_STRING /* name */, G_TYPE_STRING /* desc */, G_TYPE_STRING /* author */, - G_TYPE_STRING /* copyright */, - G_TYPE_STRING /* screenshot */); + G_TYPE_STRING /* copyright */); /* Register theme mode combobox */ g_object_set_data_full (G_OBJECT (mode_combobox), "key", @@ -4173,12 +5035,21 @@ setup_graphical_themes (void) gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); gtk_tree_view_column_set_visible(column, GdmGraphicalThemeRand); - /* The text column */ + /* The preview column */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (column, renderer, FALSE); + gtk_tree_view_column_set_attributes (column, renderer, + "pixbuf", THEME_COLUMN_SCREENSHOT, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); + + /* The markup column */ column = gtk_tree_view_column_new (); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_attributes (column, renderer, - "text", THEME_COLUMN_NAME, NULL); + "markup", THEME_COLUMN_MARKUP, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); /* Selection setup */ @@ -4257,119 +5128,429 @@ dialog_response (GtkWidget *dlg, int response, gpointer data) } static void -add_to_size_group (GtkSizeGroup *sg, const char *wid) +image_filechooser_response (GtkWidget *file_chooser, gpointer data) { - GtkWidget *w = glade_helper_get (xml, wid, GTK_TYPE_WIDGET); - gtk_size_group_add_widget (sg, w); + VeConfig *config; + const char *file_name; + char *key; + char *value; + + file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); + + config = ve_config_get (config_file); + key = g_object_get_data (G_OBJECT (file_chooser), "key"); + value = ve_config_get_string (config, key); + + if (strcmp (ve_sure_string (value), ve_sure_string (file_name)) != 0) { + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + /* Local tab */ + GtkWidget *image_filechooser; + + image_filechooser = glade_helper_get (xml, + "remote_background_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + g_signal_handlers_disconnect_by_func (image_filechooser, + (gpointer) image_filechooser_response, + image_filechooser); + + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + file_name); + + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (image_filechooser_response), image_filechooser); + } + else { + /* Remote tab */ + GtkWidget *image_filechooser; + + image_filechooser = glade_helper_get (xml, + "local_background_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + g_signal_handlers_disconnect_by_func (image_filechooser, + (gpointer) image_filechooser_response, + image_filechooser); + + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + file_name); + + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (image_filechooser_response), image_filechooser); + } + + ve_config_set_string (config, key, + ve_sure_string (file_name)); + ve_config_save (config, FALSE); + update_greeters (); + } + g_free (value); } static void -setup_gui (void) +logo_filechooser_response (GtkWidget *file_chooser, gpointer data) { - GtkWidget *dialog; - GtkSizeGroup *sg; - GtkWidget *label_welcome; - GtkWidget *label_remote_welcome; - gchar *GdmDefaultWelcome; - gchar *GdmDefaultRemoteWelcome; + VeConfig *config; + const char *file_name; + char *key; + char *value; + + file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); + + config = ve_config_get (config_file); + key = g_object_get_data (G_OBJECT (file_chooser), "key"); + value = ve_config_get_string (config, key); + + if (strcmp (ve_sure_string (value), ve_sure_string (file_name)) != 0) { + + if (gtk_notebook_get_current_page (GTK_NOTEBOOK (setup_notebook)) == LOCAL_TAB) { + + GtkWidget *image_filechooser; + GtkWidget *image_toggle; + + image_filechooser = glade_helper_get (xml, + "remote_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + image_toggle = glade_helper_get (xml, + "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + g_signal_handlers_disconnect_by_func (image_filechooser, + (gpointer) logo_filechooser_response, + image_filechooser); + + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + file_name); + + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (logo_filechooser_response), image_filechooser); + + if (GTK_TOGGLE_BUTTON (image_toggle)->active == TRUE) { + ve_config_set_string (config, key, + ve_sure_string (file_name)); + ve_config_save (config, FALSE); + update_greeters (); + } + } + else { + GtkWidget *image_filechooser; + GtkWidget *image_toggle; + + image_filechooser = glade_helper_get (xml, + "local_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + image_toggle = glade_helper_get (xml, + "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + g_signal_handlers_disconnect_by_func (image_filechooser, + (gpointer) logo_filechooser_response, + image_filechooser); + + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + file_name); + + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (logo_filechooser_response), image_filechooser);; + + if (GTK_TOGGLE_BUTTON (image_toggle)->active == TRUE) { + ve_config_set_string (config, key, + ve_sure_string (file_name)); + ve_config_save (config, FALSE); + update_greeters (); + } + } + } + g_free (value); +} - xml = glade_helper_load ("gdmsetup.glade", - "setup_dialog", - GTK_TYPE_DIALOG, - TRUE /* dump_on_destroy */); +static GdkPixbuf * +create_preview_pixbuf (gchar *uri) +{ + GdkPixbuf *pixbuf = NULL; + + if ((uri != NULL) && (uri[0] != '\0')) { + + GnomeThumbnailFactory *thumbs; + gchar *mime_type; + + thumbs = gnome_thumbnail_factory_new (GNOME_THUMBNAIL_SIZE_NORMAL); + mime_type = (gchar *)gnome_vfs_get_mime_type (uri); + + if (mime_type != NULL) { + pixbuf = gnome_thumbnail_factory_generate_thumbnail (thumbs, + uri, + mime_type); + g_free (mime_type); + } + } + return pixbuf; +} - dialog = glade_helper_get (xml, "setup_dialog", GTK_TYPE_DIALOG); - label_welcome = glade_helper_get (xml, - "sg_defaultwelcomelabel", GTK_TYPE_WIDGET); - label_remote_welcome = glade_helper_get (xml, - "sg_defaultremotewelcomelabel", GTK_TYPE_WIDGET); +static void +update_image_preview (GtkFileChooser *chooser) +{ + GtkWidget *image; + gchar *uri; + + image = gtk_file_chooser_get_preview_widget (GTK_FILE_CHOOSER (chooser)); + uri = gtk_file_chooser_get_preview_uri (chooser); + + if (uri != NULL) { + + GdkPixbuf *pixbuf = NULL; + + pixbuf = create_preview_pixbuf (uri); + + if (pixbuf != NULL) { + gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); + g_object_unref (pixbuf); + } + else { + gtk_image_set_from_stock (GTK_IMAGE (image), + "gtk-dialog-question", + GTK_ICON_SIZE_DIALOG); + } + } + gtk_file_chooser_set_preview_widget_active (chooser, TRUE); +} - g_signal_connect (G_OBJECT (dialog), "delete_event", - G_CALLBACK (delete_event), NULL); - g_signal_connect (G_OBJECT (dialog), "response", - G_CALLBACK (dialog_response), NULL); +static void +hookup_plain_background (void) +{ + /* Initialize and hookup callbacks for plain background settings */ + GtkFileFilter *filter; + GtkWidget *color_radiobutton; + GtkWidget *color_colorbutton; + GtkWidget *image_radiobutton; + GtkWidget *image_filechooser; + GtkWidget *image_scale_to_fit; + GtkWidget *image_preview; + gchar *background_filename; + + color_radiobutton = glade_helper_get (xml, + "local_background_color_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + color_colorbutton = glade_helper_get (xml, + "local_background_colorbutton", + GTK_TYPE_COLOR_BUTTON); + + image_radiobutton = glade_helper_get (xml, + "local_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + image_filechooser = glade_helper_get (xml, + "local_background_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + image_scale_to_fit = glade_helper_get (xml, + "sg_scale_background", + GTK_TYPE_CHECK_BUTTON); + + setup_greeter_color ("local_background_colorbutton", + GDM_KEY_BACKGROUNDCOLOR); - /* setup bold thingies */ - glade_helper_tagify_label (xml, "greeter_cat_label", "b"); - glade_helper_tagify_label (xml, "autologin_cat_label", "b"); - glade_helper_tagify_label (xml, "timedlogin_cat_label", "b"); - glade_helper_tagify_label (xml, "sg_logo_cat_label", "b"); - glade_helper_tagify_label (xml, "sg_background_cat_label", "b"); - glade_helper_tagify_label (xml, "options_cat_label", "b"); - glade_helper_tagify_label (xml, "gg_preview_cat_label", "b"); - glade_helper_tagify_label (xml, "gg_author_label", "b"); - glade_helper_tagify_label (xml, "gg_desc_label", "b"); - glade_helper_tagify_label (xml, "gg_copyright_label", "b"); - glade_helper_tagify_label (xml, "acc_options_cat_label", "b"); - glade_helper_tagify_label (xml, "xserver_cat_label", "b"); + setup_greeter_toggle ("sg_scale_background", + GDM_KEY_BACKGROUNDSCALETOFIT); - setup_accessibility_support (); - setup_xdmcp_support (); - setup_background_support (); - setup_greeter_backselect (); - setup_graphical_themes (); - setup_xserver_support (); - - sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - add_to_size_group (sg, "local_greeter"); - add_to_size_group (sg, "remote_greeter"); - add_to_size_group (sg, "welcome"); - add_to_size_group (sg, "remote_welcome"); - add_to_size_group (sg, "autologin_combo"); - add_to_size_group (sg, "timedlogin_combo"); - add_to_size_group (sg, "timedlogin_seconds"); - g_object_unref (G_OBJECT (sg)); - - sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - add_to_size_group (sg, "local_greeter_label"); - add_to_size_group (sg, "remote_greeter_label"); - add_to_size_group (sg, "welcome_label"); - add_to_size_group (sg, "remote_welcome_label"); - add_to_size_group (sg, "autologin_label"); - add_to_size_group (sg, "timed_login_label"); - add_to_size_group (sg, "timedlogin_seconds_label"); - g_object_unref (G_OBJECT (sg)); - - sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - add_to_size_group (sg, "greeter_table"); - add_to_size_group (sg, "autologin_table"); - add_to_size_group (sg, "timed_login_table"); - g_object_unref (G_OBJECT (sg)); - - sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - add_to_size_group (sg, "autologin"); - add_to_size_group (sg, "timedlogin"); - g_object_unref (G_OBJECT (sg)); - - /* Note: Just setting up a notify here doesn't mean - things will get updated. You must also wire in - the logic for update in the daemon and/or greeters - (or chooser) or whereever this is actually being - updated. */ - - /* General */ - setup_user_combobox ("autologin_combo", - GDM_KEY_AUTOMATICLOGIN); - setup_user_combobox ("timedlogin_combo", - GDM_KEY_TIMED_LOGIN); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_scale_to_fit), + ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_BACKGROUNDSCALETOFIT)); + + background_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_BACKGROUNDIMAGE); + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + background_filename); - setup_notify_toggle ("autologin", - GDM_KEY_AUTOMATICLOGIN_ENABLE, - NULL /* notify_key */); - setup_notify_toggle ("timedlogin", - GDM_KEY_TIMED_LOGIN_ENABLE, - GDM_KEY_TIMED_LOGIN_ENABLE /* notify_key */); + switch (ve_config_get_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE)) { + + case BACKGROUND_IMAGE_AND_COLOR: { + /* Image & Color background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), TRUE); + gtk_widget_set_sensitive (image_scale_to_fit, TRUE); + gtk_widget_set_sensitive (image_filechooser, TRUE); + gtk_widget_set_sensitive (color_colorbutton, TRUE); + + break; + } + case BACKGROUND_COLOR: { + /* Color background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), TRUE); + gtk_widget_set_sensitive (image_scale_to_fit, FALSE); + gtk_widget_set_sensitive (image_filechooser, FALSE); + gtk_widget_set_sensitive (color_colorbutton, TRUE); + + break; + } + case BACKGROUND_IMAGE: { + /* Image background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), FALSE); + gtk_widget_set_sensitive (image_scale_to_fit, TRUE); + gtk_widget_set_sensitive (image_filechooser, TRUE); + gtk_widget_set_sensitive (color_colorbutton, FALSE); + + break; + } + default: { + /* No background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), FALSE); + gtk_widget_set_sensitive (color_colorbutton, FALSE); + gtk_widget_set_sensitive (image_scale_to_fit, FALSE); + gtk_widget_set_sensitive (image_filechooser, FALSE); + } + } - /* Security */ - setup_notify_toggle ("allowroot", - GDM_KEY_ALLOWROOT, - GDM_KEY_ALLOWROOT /* notify_key */); - setup_notify_toggle ("allowremoteroot", - GDM_KEY_ALLOWREMOTEROOT, - GDM_KEY_ALLOWREMOTEROOT /* notify_key */); - setup_notify_toggle ("allowremoteauto", - GDM_KEY_ALLOWREMOTEAUTOLOGIN, - GDM_KEY_ALLOWREMOTEAUTOLOGIN /* notify_key */); + gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (image_filechooser), + FALSE); + image_preview = gtk_image_new (); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (background_filename)); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (image_filechooser), + image_preview); + gtk_widget_set_size_request (image_preview, 128, -1); + gtk_widget_show (image_preview); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Images")); + gtk_file_filter_add_pixbuf_formats (filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (image_filechooser), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (image_filechooser), filter); + + g_object_set_data (G_OBJECT (color_radiobutton), "key", + GDM_KEY_BACKGROUNDTYPE); + + g_object_set_data (G_OBJECT (color_colorbutton), "key", + GDM_KEY_BACKGROUNDCOLOR); + + g_object_set_data (G_OBJECT (image_radiobutton), "key", + GDM_KEY_BACKGROUNDTYPE); + + g_object_set_data (G_OBJECT (image_filechooser), "key", + GDM_KEY_BACKGROUNDIMAGE); + + g_object_set_data (G_OBJECT (image_scale_to_fit), "key", + GDM_KEY_BACKGROUNDSCALETOFIT); + + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (local_background_type_toggled), NULL); + g_signal_connect (G_OBJECT (color_radiobutton), "toggled", + G_CALLBACK (local_background_type_toggled), NULL); + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), image_filechooser); + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), image_scale_to_fit); + g_signal_connect (G_OBJECT (color_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), color_colorbutton); + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (image_filechooser_response), image_filechooser); + g_signal_connect (image_filechooser, "update-preview", + G_CALLBACK (update_image_preview), NULL); + +} + +static void +hookup_plain_logo (void) +{ + /* Initialize and hookup callbacks for plain logo settings */ + GtkFileFilter *filter; + GtkWidget *logo_checkbutton; + GtkWidget *logo_button; + GtkWidget *image_preview; + gchar *logo_filename; + + logo_checkbutton = glade_helper_get (xml, + "local_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + logo_button = glade_helper_get (xml, + "local_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + + gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (logo_button), + FALSE); + + image_preview = gtk_image_new (); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (logo_button), + image_preview); + gtk_widget_set_size_request (image_preview, 128, -1); + gtk_widget_show (image_preview); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Images")); + gtk_file_filter_add_pixbuf_formats (filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (logo_button), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (logo_button), filter); + + logo_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_LOGO); + + if (ve_string_empty (logo_filename)) { + gchar *previous_logo_filename; + + previous_logo_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_CHOOSER_BUTTON_LOGO); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (logo_checkbutton), + FALSE); + gtk_widget_set_sensitive (logo_button, FALSE); + + if (ve_string_empty (previous_logo_filename)) { + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (logo_button), + EXPANDED_PIXMAPDIR); + } + else { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (logo_button), + previous_logo_filename); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (previous_logo_filename)); + } + g_free (previous_logo_filename); + } + else { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (logo_button), + logo_filename); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (logo_filename)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (logo_checkbutton), + TRUE); + gtk_widget_set_sensitive (logo_button, TRUE); + } + + g_object_set_data (G_OBJECT (logo_button), "key", + GDM_KEY_LOGO); + + g_object_set_data (G_OBJECT (logo_checkbutton), "key", + GDM_KEY_LOGO); + + g_signal_connect (G_OBJECT (logo_button), "selection-changed", + G_CALLBACK (logo_filechooser_response), logo_button); + g_signal_connect (G_OBJECT (logo_checkbutton), "toggled", + G_CALLBACK (logo_toggle_toggled), NULL); + g_signal_connect (G_OBJECT (logo_checkbutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), logo_button); + g_signal_connect (logo_button, "update-preview", + G_CALLBACK (update_image_preview), NULL); +} + +static void +setup_plain_menubar (void) +{ + /* Initialize and hookup callbacks for plain menu bar settings */ setup_notify_toggle ("sysmenu", GDM_KEY_SYSMENU, GDM_KEY_SYSMENU /* notify_key */); @@ -4379,102 +5560,513 @@ setup_gui (void) setup_notify_toggle ("chooser_button", GDM_KEY_CHOOSER_BUTTON, GDM_KEY_CHOOSER_BUTTON /* notify_key */); - setup_notify_toggle ("disallow_tcp", - GDM_KEY_DISALLOWTCP, - GDM_KEY_DISALLOWTCP /* notify_key */); +} - /* General */ - GdmDefaultWelcome = g_strdup (_(GDM_DEFAULT_WELCOME_MSG)); - GdmDefaultRemoteWelcome = g_strdup (_(GDM_DEFAULT_REMOTEWELCOME_MSG)); - gtk_label_set_text (GTK_LABEL (label_welcome), GdmDefaultWelcome); - gtk_label_set_text (GTK_LABEL (label_remote_welcome), GdmDefaultRemoteWelcome); +static void +setup_local_welcome_message (void) +{ + /* Initialize and hookup callbacks for local welcome message settings */ + setup_greeter_toggle ("sg_defaultwelcome", + GDM_KEY_DEFAULT_WELCOME); - /* Security */ - setup_sensitivity_positive_toggle ("sysmenu", "config_available"); - setup_sensitivity_positive_toggle ("sysmenu", "chooser_button"); + setup_greeter_untranslate_entry ("welcome", + GDM_KEY_WELCOME); +} - setup_notify_toggle ("enable_debug", - GDM_KEY_DEBUG, - GDM_KEY_DEBUG /* notify_key */); - setup_notify_toggle ("enable_xdmcp", - GDM_KEY_XDMCP, - GDM_KEY_XDMCP /* notify_key */); - setup_notify_toggle ("honour_indirect", - GDM_KEY_INDIRECT, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("timedlogin_seconds", - GDM_KEY_TIMED_LOGIN_DELAY, - GDM_KEY_TIMED_LOGIN_DELAY /* notify_key */); - setup_intspin ("retry_delay", - GDM_KEY_RETRYDELAY, - GDM_KEY_RETRYDELAY /* notify_key */); - setup_intspin ("udpport", - GDM_KEY_UDPPORT, - GDM_KEY_UDPPORT /* notify_key */); - - setup_intspin ("maxpending", - GDM_KEY_MAXPEND, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("maxpendingindirect", - GDM_KEY_MAXINDIR, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("maxremotesessions", - GDM_KEY_MAXSESS, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("maxwait", - GDM_KEY_MAXWAIT, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("maxwaitindirect", - GDM_KEY_MAXINDWAIT, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("displaysperhost", - GDM_KEY_DISPERHOST, - "xdmcp/PARAMETERS" /* notify_key */); - setup_intspin ("pinginterval", - GDM_KEY_PINGINTERVAL, - "xdmcp/PARAMETERS" /* notify_key */); - - setup_greeter_toggle ("fb_browser", - GDM_KEY_BROWSER); - - /* General */ - setup_greeter_combobox ("local_greeter", GDM_KEY_GREETER); - setup_greeter_combobox ("remote_greeter", GDM_KEY_REMOTEGREETER); - - /* Greeter */ - setup_greeter_toggle ("sg_scale_background", +static void +setup_remote_welcome_message (void) +{ + /* Initialize and hookup callbacks for local welcome message settings */ + setup_greeter_toggle ("sg_defaultwelcomeremote", + GDM_KEY_DEFAULT_REMOTEWELCOME); + + setup_greeter_untranslate_entry ("welcomeremote", + GDM_KEY_REMOTEWELCOME); +} + +static void +setup_local_plain_settings (void) +{ + /* Style setting */ + setup_greeter_combobox ("local_greeter", + GDM_KEY_GREETER); + + /* Plain background settings */ + hookup_plain_background (); + + /* Plain logo settings */ + hookup_plain_logo (); + + /* Plain menu bar settings */ + setup_plain_menubar (); + + /* Local welcome message settings */ + setup_local_welcome_message (); +} + +static void +setup_local_tab (void) +{ + setup_local_plain_settings (); + setup_local_themed_settings (); +} + +static void +hookup_remote_plain_background (void) +{ + /* Initialize and hookup callbacks for plain background settings */ + GtkFileFilter *filter; + GtkWidget *color_radiobutton; + GtkWidget *color_colorbutton; + GtkWidget *image_radiobutton; + GtkWidget *image_filechooser; + GtkWidget *image_scale_to_fit; + GtkWidget *image_preview; + gchar *background_filename; + + color_radiobutton = glade_helper_get (xml, + "remote_background_color_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + color_colorbutton = glade_helper_get (xml, + "remote_background_colorbutton", + GTK_TYPE_COLOR_BUTTON); + + image_radiobutton = glade_helper_get (xml, + "remote_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + image_filechooser = glade_helper_get (xml, + "remote_background_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + image_scale_to_fit = glade_helper_get (xml, + "sg_scale_background_remote", + GTK_TYPE_CHECK_BUTTON); + + setup_greeter_color ("remote_background_colorbutton", + GDM_KEY_BACKGROUNDCOLOR); + + setup_greeter_toggle ("sg_scale_background_remote", GDM_KEY_BACKGROUNDSCALETOFIT); + setup_greeter_toggle ("sg_remote_color_only", GDM_KEY_BACKGROUNDREMOTEONLYCOLOR); - setup_greeter_image (dialog); - setup_greeter_color ("sg_backcolor", - GDM_KEY_BACKGROUNDCOLOR); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_scale_to_fit), + ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_BACKGROUNDSCALETOFIT)); + + background_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_BACKGROUNDIMAGE); + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (image_filechooser), + background_filename); - setup_greeter_toggle ("sg_defaultwelcome", - GDM_KEY_DEFAULT_WELCOME); - setup_greeter_toggle ("sg_defaultremotewelcome", - GDM_KEY_DEFAULT_REMOTEWELCOME); - setup_greeter_untranslate_entry ("welcome", - GDM_KEY_WELCOME); - setup_greeter_untranslate_entry ("remote_welcome", - GDM_KEY_REMOTEWELCOME); + switch (ve_config_get_int (ve_config_get (config_file), GDM_KEY_BACKGROUNDTYPE)) { + + case BACKGROUND_IMAGE_AND_COLOR: { + /* Image & Color background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), TRUE); + gtk_widget_set_sensitive (image_scale_to_fit, TRUE); + gtk_widget_set_sensitive (image_filechooser, TRUE); + gtk_widget_set_sensitive (color_colorbutton, TRUE); + + break; + } + case BACKGROUND_COLOR: { + /* Color background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), TRUE); + gtk_widget_set_sensitive (image_scale_to_fit, FALSE); + gtk_widget_set_sensitive (image_filechooser, FALSE); + gtk_widget_set_sensitive (color_colorbutton, TRUE); + + break; + } + case BACKGROUND_IMAGE: { + /* Image background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), FALSE); + gtk_widget_set_sensitive (image_scale_to_fit, TRUE); + gtk_widget_set_sensitive (image_filechooser, TRUE); + gtk_widget_set_sensitive (color_colorbutton, FALSE); + + break; + } + default: { + /* No background type */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (image_radiobutton), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radiobutton), FALSE); + gtk_widget_set_sensitive (color_colorbutton, FALSE); + gtk_widget_set_sensitive (image_scale_to_fit, FALSE); + gtk_widget_set_sensitive (image_filechooser, FALSE); + } + } - /* Accesibility */ - setup_greeter_toggle ("acc_theme", - GDM_KEY_ALLOW_GTK_THEME_CHANGE); - setup_greeter_toggle ("acc_sound_ready", - GDM_KEY_SOUND_ON_LOGIN_READY); - setup_greeter_toggle ("acc_sound_success", - GDM_KEY_SOUND_ON_LOGIN_SUCCESS); - setup_greeter_toggle ("acc_sound_failure", - GDM_KEY_SOUND_ON_LOGIN_FAILURE); + gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (image_filechooser), + FALSE); + image_preview = gtk_image_new (); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (background_filename)); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (image_filechooser), + image_preview); + gtk_widget_set_size_request (image_preview, 128, -1); + gtk_widget_show (image_preview); - /* Face browser */ - setup_greeter_toggle ("fb_allusers", - GDM_KEY_INCLUDEALL); - setup_face (); + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Images")); + gtk_file_filter_add_pixbuf_formats (filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (image_filechooser), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (image_filechooser), filter); + + g_object_set_data (G_OBJECT (color_radiobutton), "key", + GDM_KEY_BACKGROUNDTYPE); + + g_object_set_data (G_OBJECT (color_colorbutton), "key", + GDM_KEY_BACKGROUNDCOLOR); + + g_object_set_data (G_OBJECT (image_radiobutton), "key", + GDM_KEY_BACKGROUNDTYPE); + + g_object_set_data (G_OBJECT (image_filechooser), "key", + GDM_KEY_BACKGROUNDIMAGE); + + g_object_set_data (G_OBJECT (image_scale_to_fit), "key", + GDM_KEY_BACKGROUNDSCALETOFIT); + + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (local_background_type_toggled), NULL); + g_signal_connect (G_OBJECT (color_radiobutton), "toggled", + G_CALLBACK (local_background_type_toggled), NULL); + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), image_filechooser); + g_signal_connect (G_OBJECT (image_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), image_scale_to_fit); + g_signal_connect (G_OBJECT (color_radiobutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), color_colorbutton); + g_signal_connect (G_OBJECT (image_filechooser), "selection-changed", + G_CALLBACK (image_filechooser_response), image_filechooser); + g_signal_connect (image_filechooser, "update-preview", + G_CALLBACK (update_image_preview), NULL); + +} + +static void +hookup_remote_plain_logo (void) +{ + /* Initialize and hookup callbacks for plain logo settings */ + GtkFileFilter *filter; + GtkWidget *logo_checkbutton; + GtkWidget *logo_button; + GtkWidget *image_preview; + gchar *logo_filename; + + logo_checkbutton = glade_helper_get (xml, + "remote_logo_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + logo_button = glade_helper_get (xml, + "remote_logo_image_chooserbutton", + GTK_TYPE_FILE_CHOOSER_BUTTON); + + + gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (logo_button), + FALSE); + + image_preview = gtk_image_new (); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (logo_button), + image_preview); + gtk_widget_set_size_request (image_preview, 128, -1); + gtk_widget_show (image_preview); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Images")); + gtk_file_filter_add_pixbuf_formats (filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (logo_button), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (logo_button), filter); + + logo_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_LOGO); + + if (ve_string_empty (logo_filename)) { + gchar *previous_logo_filename; + + previous_logo_filename = ve_config_get_string (ve_config_get (config_file), + GDM_KEY_CHOOSER_BUTTON_LOGO); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (logo_checkbutton), + FALSE); + gtk_widget_set_sensitive (logo_button, FALSE); + + if (ve_string_empty (previous_logo_filename)) { + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (logo_button), + EXPANDED_PIXMAPDIR); + } + else { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (logo_button), + previous_logo_filename); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (previous_logo_filename)); + } + g_free (previous_logo_filename); + } + else { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (logo_button), + logo_filename); + gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), + create_preview_pixbuf (logo_filename)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (logo_checkbutton), + TRUE); + gtk_widget_set_sensitive (logo_button, TRUE); + } + g_free (logo_filename); + + g_object_set_data (G_OBJECT (logo_button), "key", + GDM_KEY_LOGO); + + g_object_set_data (G_OBJECT (logo_checkbutton), "key", + GDM_KEY_LOGO); + + g_signal_connect (G_OBJECT (logo_button), "selection-changed", + G_CALLBACK (logo_filechooser_response), logo_button); + + g_signal_connect (G_OBJECT (logo_checkbutton), "toggled", + G_CALLBACK (logo_toggle_toggled), NULL); + + g_signal_connect (G_OBJECT (logo_checkbutton), "toggled", + G_CALLBACK (toggle_toggled_sensitivity_positive), logo_button); + + g_signal_connect (logo_button, "update-preview", + G_CALLBACK (update_image_preview), NULL); +} + +static void +setup_remote_plain_settings (void) +{ + GtkSizeGroup *size_group; + GtkWidget *image_checkbutton; + GtkWidget *color_checkbutton; + + image_checkbutton = glade_helper_get (xml, "remote_background_image_checkbutton", + GTK_TYPE_CHECK_BUTTON); + color_checkbutton = glade_helper_get (xml, "remote_background_color_checkbutton", + GTK_TYPE_CHECK_BUTTON); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + gtk_size_group_add_widget (size_group, image_checkbutton); + gtk_size_group_add_widget (size_group, color_checkbutton); + + /* Style setting */ + setup_greeter_combobox ("remote_greeter", + GDM_KEY_REMOTEGREETER); + + /* Plain background settings */ + hookup_remote_plain_background (); + + /* Plain logo settings */ + hookup_remote_plain_logo (); + + /* Remote welcome message settings */ + setup_remote_welcome_message (); +} + +static void +setup_remote_themed_settings (void) +{ + gboolean GdmGraphicalThemeRand; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkTreeSelection *selection; + GtkTreeIter *select_iter = NULL; + GtkWidget *color_colorbutton; + + GtkWidget *theme_list = glade_helper_get (xml, "gg_theme_list_remote", + GTK_TYPE_TREE_VIEW); + GtkWidget *theme_list_local = glade_helper_get (xml, "gg_theme_list", + GTK_TYPE_TREE_VIEW); + GtkWidget *button = glade_helper_get (xml, "gg_install_new_theme_remote", + GTK_TYPE_BUTTON); + GtkWidget *del_button = glade_helper_get (xml, "gg_delete_theme_remote", + GTK_TYPE_BUTTON); + GtkWidget *mode_combobox = glade_helper_get (xml, "gg_mode_combobox_remote", + GTK_TYPE_COMBO_BOX); + + color_colorbutton = glade_helper_get (xml, + "remote_background_theme_colorbutton", + GTK_TYPE_COLOR_BUTTON); + + g_object_set_data (G_OBJECT (color_colorbutton), "key", + GDM_KEY_GRAPHICAL_THEME_COLOR); + + setup_greeter_color ("remote_background_theme_colorbutton", + GDM_KEY_GRAPHICAL_THEME_COLOR); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (theme_list), TRUE); + + GdmGraphicalThemeRand = ve_config_get_bool (ve_config_get (config_file), + GDM_KEY_GRAPHICAL_THEME_RAND); + + /* Register theme mode combobox */ + g_object_set_data_full (G_OBJECT (mode_combobox), "key", + g_strdup (GDM_KEY_GRAPHICAL_THEME_RAND), + (GDestroyNotify) g_free); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (theme_list_local))); + gtk_tree_view_set_model (GTK_TREE_VIEW (theme_list), + GTK_TREE_MODEL (store)); + /* Signals */ + g_signal_connect (mode_combobox, "changed", + G_CALLBACK (combobox_changed), NULL); + g_signal_connect (button, "clicked", + G_CALLBACK (install_new_theme), store); + g_signal_connect (del_button, "clicked", + G_CALLBACK (delete_theme), store); + + /* Init controls */ + gtk_widget_set_sensitive (del_button, FALSE); + gtk_combo_box_set_active (GTK_COMBO_BOX (mode_combobox), + GdmGraphicalThemeRand); + + /* The radio toggle column */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_toggle_new (); + gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), + TRUE); + g_signal_connect (G_OBJECT (renderer), "toggled", + G_CALLBACK (selected_toggled), store); + gtk_tree_view_column_pack_start (column, renderer, FALSE); + gtk_tree_view_column_set_attributes (column, renderer, + "active", THEME_COLUMN_SELECTED, NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); + gtk_tree_view_column_set_visible(column, !GdmGraphicalThemeRand); + + /* The checkbox toggle column */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_toggle_new (); + gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), + FALSE); + g_signal_connect (G_OBJECT (renderer), "toggled", + G_CALLBACK (selected_toggled), store); + gtk_tree_view_column_pack_start (column, renderer, FALSE); + gtk_tree_view_column_set_attributes (column, renderer, "active", + THEME_COLUMN_SELECTED_LIST, NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); + gtk_tree_view_column_set_visible (column, GdmGraphicalThemeRand); + + /* The preview column */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (column, renderer, FALSE); + gtk_tree_view_column_set_attributes (column, renderer, + "pixbuf", THEME_COLUMN_SCREENSHOT, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); + + /* The markup column */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "markup", THEME_COLUMN_MARKUP, NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (theme_list), column); + + /* Selection setup */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_list)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + g_signal_connect (selection, "changed", + G_CALLBACK (gg_selection_changed), NULL); + + if (select_iter != NULL) { + gtk_tree_selection_select_iter (selection, select_iter); + g_free (select_iter); + } +} + +static void +setup_remote_tab (void) +{ + GtkWidget *xdmcp_button; + + xdmcp_button = glade_helper_get (xml, "xdmcp_configbutton", + GTK_TYPE_BUTTON); + +#ifndef HAVE_LIBXDMCP + gtk_widget_set_sensitive (xdmcp_button, FALSE); +#else + g_signal_connect (G_OBJECT (xdmcp_button), "clicked", + G_CALLBACK (xdmcp_button_clicked), NULL); +#endif + + setup_remote_plain_settings (); + setup_remote_themed_settings (); +} + + +static GtkWidget * +setup_gui (void) +{ + GtkWidget *dialog; + + xml = glade_helper_load ("gdmsetup.glade", + "setup_dialog", + GTK_TYPE_DIALOG, + TRUE /* dump_on_destroy */); + + dialog = glade_helper_get (xml, "setup_dialog", GTK_TYPE_DIALOG); + + g_signal_connect (G_OBJECT (dialog), "delete_event", + G_CALLBACK (delete_event), NULL); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (dialog_response), NULL); + + setup_notebook = glade_helper_get (xml, "setup_notebook", + GTK_TYPE_NOTEBOOK); + + /* Markup glade labels */ + glade_helper_tagify_label (xml, "themes_label", "b"); + glade_helper_tagify_label (xml, "sounds_label", "b"); + glade_helper_tagify_label (xml, "local_background_label", "b"); + glade_helper_tagify_label (xml, "local_logo_label", "b"); + glade_helper_tagify_label (xml, "local_menubar_label", "b"); + glade_helper_tagify_label (xml, "local_welcome_message_label", "b"); + glade_helper_tagify_label (xml, "label_welcome_note", "i"); + glade_helper_tagify_label (xml, "label_welcome_note", "small"); + glade_helper_tagify_label (xml, "local_theme_backgroud_label", "b"); + glade_helper_tagify_label (xml, "gg_author_label", "b"); + glade_helper_tagify_label (xml, "gg_author_label", "small"); + glade_helper_tagify_label (xml, "gg_copyright_label", "b"); + glade_helper_tagify_label (xml, "gg_copyright_label", "small"); + glade_helper_tagify_label (xml, "remote_plain_background_label", "b"); + glade_helper_tagify_label (xml, "remote_logo_label", "b"); + glade_helper_tagify_label (xml, "remote_welcome_message_label", "b"); + glade_helper_tagify_label (xml, "remote_theme_background_label", "b"); + glade_helper_tagify_label (xml, "label_welcomeremote_note", "i"); + glade_helper_tagify_label (xml, "label_welcomeremote_note", "small"); + glade_helper_tagify_label (xml, "autologin", "b"); + glade_helper_tagify_label (xml, "timedlogin", "b"); + glade_helper_tagify_label (xml, "security_label", "b"); + glade_helper_tagify_label (xml, "xforwarding_label", "i"); + glade_helper_tagify_label (xml, "xforwarding_label", "small"); + glade_helper_tagify_label (xml, "fb_informationlabel", "i"); + glade_helper_tagify_label (xml, "fb_informationlabel", "small"); + + /* Setup preference tabs */ + setup_local_tab (); + setup_remote_tab (); + setup_accessibility_tab (); + setup_security_tab (); + setup_users_tab (); + + return (dialog); } static gboolean @@ -4594,11 +6186,53 @@ struct poptOption options [] = { { NULL, 0, 0, NULL, 0} }; +static void +apply_user_changes (GObject *object, gint arg1, gpointer user_data) +{ + GtkWidget *dialog = user_data; + + if (GdmUserChangesUnsaved == TRUE) { + + GtkWidget *prompt; + gint response; + + prompt = ve_hig_dialog_new (GTK_WINDOW (dialog), + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_NONE, + _("Apply the changes to users before closing?"), + _("If you don't apply, the changes made on " + "the Users tab will be disregarded.")); + + gtk_dialog_add_button (GTK_DIALOG (prompt), _("Close _without Applying"), GTK_RESPONSE_CLOSE); + gtk_dialog_add_button (GTK_DIALOG (prompt), "gtk-cancel", GTK_RESPONSE_CANCEL); + gtk_dialog_add_button (GTK_DIALOG (prompt), "gtk-apply", GTK_RESPONSE_APPLY); + + response = gtk_dialog_run (GTK_DIALOG (prompt)); + gtk_widget_destroy (prompt); + + if (response == GTK_RESPONSE_APPLY) { + GtkWidget *apply_button; + + apply_button = glade_helper_get (xml, "fb_faceapply", + GTK_TYPE_WIDGET); + g_signal_emit_by_name (G_OBJECT (apply_button), "clicked"); + } + + gtk_main_quit (); + + if (response == GTK_RESPONSE_CANCEL) { + gtk_main (); + } + } +} + int main (int argc, char *argv[]) { GnomeProgram *program; poptContext ctx; + GtkWidget *dialog; if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL) DOING_GDM_DEVELOPMENT = TRUE; @@ -4620,6 +6254,7 @@ main (int argc, char *argv[]) GNOME_PARAM_POPT_CONTEXT, &ctx, NULL); + gtk_window_set_default_icon_from_file (DATADIR"/pixmaps/gdm-setup.png", NULL); glade_gnome_init(); /* It is not null if config file location is passed in via command line */ @@ -4709,7 +6344,10 @@ main (int argc, char *argv[]) GdmSoundProgram = NULL; } - setup_gui (); + dialog = setup_gui (); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (apply_user_changes), dialog); + gtk_widget_show (dialog); if (RUNNING_UNDER_GDM) { guint sid; diff --git a/gui/gdmsetup.glade b/gui/gdmsetup.glade index 5c0dad51..73565adf 100644 --- a/gui/gdmsetup.glade +++ b/gui/gdmsetup.glade @@ -5,8 +5,7 @@ <requires lib="gnome"/> <widget class="GtkDialog" id="setup_dialog"> - <property name="visible">True</property> - <property name="title" translatable="yes">Login Screen Setup</property> + <property name="title" translatable="yes">Login Window Preferences</property> <property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> @@ -21,18 +20,18 @@ <property name="has_separator">False</property> <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> + <widget class="GtkVBox" id="dialog-vbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> + <widget class="GtkHButtonBox" id="dialog-action_area"> <property name="visible">True</property> <property name="layout_style">GTK_BUTTONBOX_END</property> <child> - <widget class="GtkButton" id="helpbutton1"> + <widget class="GtkButton" id="helpbutton2"> <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> @@ -45,7 +44,7 @@ </child> <child> - <widget class="GtkButton" id="closebutton1"> + <widget class="GtkButton" id="okbutton1"> <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> @@ -66,7 +65,8 @@ </child> <child> - <widget class="GtkNotebook" id="notebook1"> + <widget class="GtkNotebook" id="setup_notebook"> + <property name="border_width">5</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="show_tabs">True</property> @@ -76,54 +76,29 @@ <property name="enable_popup">False</property> <child> - <widget class="GtkVBox" id="vbox10"> - <property name="border_width">5</property> + <widget class="GtkVBox" id="local_tab_vbox"> + <property name="border_width">12</property> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox11"> + <widget class="GtkVBox" id="local_style_vbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="greeter_cat_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">Greeter</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox7"> + <widget class="GtkHBox" id="local_style_hbox"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="label37"> + <widget class="GtkLabel" id="local_stylelabel"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> + <property name="label" translatable="yes">_Style:</property> + <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -132,6 +107,7 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="mnemonic_widget">local_greeter</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="width_chars">-1</property> <property name="single_line_mode">False</property> @@ -145,396 +121,642 @@ </child> <child> - <widget class="GtkTable" id="greeter_table"> + <widget class="GtkComboBox" id="local_greeter"> <property name="visible">True</property> - <property name="n_rows">6</property> - <property name="n_columns">2</property> + <property name="items" translatable="yes">Plain +Plain with face browser +Themed</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="local_properties_vbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkVBox" id="local_plain_properties_vbox"> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> + <property name="spacing">18</property> <child> - <widget class="GtkLabel" id="local_greeter_label"> + <widget class="GtkVBox" id="local_plain_background_vbox"> <property name="visible">True</property> - <property name="label" translatable="yes">L_ocal: </property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="remote_greeter_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Remote: </property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkFixed" id="local_plain_fixed"> + <property name="height_request">6</property> + <property name="visible">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="welcome_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Welcome string: </property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">welcome</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="welcome" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="local_background_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Background</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="remote_welcome_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">Re_mote welcome string (%n = hostname): </property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">remote_welcome</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="remote_welcome" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="local_background_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> - <child> - <widget class="GtkEntry" id="welcome"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">String to be shown in the greeter as welcome. You can insert %n in here and it will be replaced by the name of your computer.</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - <accessibility> - <atkrelation target="welcome_label" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="local_background_indent_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkEntry" id="remote_welcome"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">String to be shown in the greeter for people logging in remotely with XDMCP. You can insert %n in here and it will be replaced by the name of your computer.</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - <accessibility> - <atkrelation target="remote_welcome_label" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkTable" id="local_background_table"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> - <child> - <widget class="GtkComboBox" id="local_greeter"> - <property name="visible">True</property> - <property name="items" translatable="yes">GTK+ Greeter -Themed Greeter</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - </packing> - </child> + <child> + <widget class="GtkCheckButton" id="local_background_image_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Image:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkComboBox" id="remote_greeter"> - <property name="visible">True</property> - <property name="items" translatable="yes">GTK+ Greeter -Themed Greeter -Disabled</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> - </packing> - </child> + <child> + <widget class="GtkFileChooserButton" id="local_background_image_chooserbutton"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="title" translatable="yes">Select Backgroud Image</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> + <property name="width_chars">-1</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> + </packing> + </child> - <child> - <widget class="GtkCheckButton" id="sg_defaultwelcome"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use default Welcome</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="local_background_scale_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> - <child> - <widget class="GtkCheckButton" id="sg_defaultremotewelcome"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use default Remote Welcome</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <child> + <widget class="GtkLabel" id="local_background_scale_indent_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="sg_scale_background"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sc_ale to fit screen</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkColorButton" id="local_background_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="use_alpha">False</property> + <property name="title" translatable="yes">Pick Background Color</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox199"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkCheckButton" id="local_background_color_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Co_lor:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="sg_defaultremotewelcomelabel"> + <widget class="GtkVBox" id="local_plain_logo_vbox"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="local_logo_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Logo</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox102"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label169"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox104"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkCheckButton" id="local_logo_image_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">I_mage:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkFileChooserButton" id="local_logo_image_chooserbutton"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="title" translatable="yes">Select Logo Image</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> + <property name="width_chars">-1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="sg_defaultwelcomelabel"> + <widget class="GtkVBox" id="LocalPlainMenuBarVBox"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkVBox" id="vbox12"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="local_menubar_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Menu Bar</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="autologin_cat_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">Automatic Login</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox103"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> - <child> - <widget class="GtkHBox" id="hbox8"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <child> + <widget class="GtkLabel" id="label170"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="label39"> - <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <child> + <widget class="GtkVBox" id="vbox73"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkCheckButton" id="sysmenu"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sho_w Actions menu</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox105"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label171"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="config_available"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Include Con_figure menu item</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox106"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label172"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="chooser_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Includ_e Hostname Chooser (XDMCP) menu item</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> @@ -544,85 +766,595 @@ Disabled</property> </child> <child> - <widget class="GtkTable" id="autologin_table"> - <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> + <widget class="GtkVBox" id="local_themed_properties_vbox"> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="autologin_label"> + <widget class="GtkHBox" id="hbox128"> <property name="visible">True</property> - <property name="label" translatable="yes">_Automatic login username:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="local_theme_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Theme:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="gg_mode_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Selected only +Random from selected +</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="autologin"> + <widget class="GtkHBox" id="hbox92"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Login a user automatically on first bootup</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkScrolledWindow" id="local_theme_scrolled_window"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="gg_theme_list"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">False</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox56"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="gg_install_new_theme"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox107"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label173"> + <property name="visible">True</property> + <property name="label">_Add...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="gg_delete_theme"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment6"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox108"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="stock">gtk-remove</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="LocalThemeRemoveButtonLabel"> + <property name="visible">True</property> + <property name="label">_Remove...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox87"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkVBox" id="vbox89"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkLabel" id="gg_copyright_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Copyright:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow11"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="gg_copyright_text_view"> + <property name="visible">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox88"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkLabel" id="gg_author_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Author:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow12"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="gg_author_text_view"> + <property name="visible">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkComboBoxEntry" id="autologin_combo"> + <widget class="GtkVBox" id="vbox90"> <property name="visible">True</property> - <property name="items" translatable="yes">dummy</property> - <property name="add_tearoffs">False</property> - <property name="has_frame">True</property> - <property name="focus_on_click">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkFixed" id="fixed3"> + <property name="height_request">12</property> + <property name="visible">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="local_theme_backgroud_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Background</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox129"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label206"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table14"> + <property name="visible">True</property> + <property name="n_rows">1</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkColorButton" id="local_background_theme_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="use_alpha">False</property> + <property name="title" translatable="yes">Pick Background Color</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">expand</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label207"> + <property name="visible">True</property> + <property name="label" translatable="yes">Co_lor:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">local_background_theme_colorbutton</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> @@ -636,21 +1368,21 @@ Disabled</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkVBox" id="vbox13"> + <widget class="GtkVBox" id="local_welcome_message_vbox1"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="timedlogin_cat_label"> + <widget class="GtkLabel" id="local_welcome_message_label"> <property name="visible">True</property> - <property name="label" translatable="yes">Timed Login</property> + <property name="label" translatable="yes">Welcome Message</property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -673,13 +1405,13 @@ Disabled</property> </child> <child> - <widget class="GtkHBox" id="hbox9"> + <widget class="GtkHBox" id="local_welcome_message_hbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label43"> + <widget class="GtkLabel" id="local_welcome_message_indent"> <property name="visible">True</property> <property name="label" translatable="yes"> </property> <property name="use_underline">False</property> @@ -704,104 +1436,16 @@ Disabled</property> </child> <child> - <widget class="GtkTable" id="timed_login_table"> + <widget class="GtkVBox" id="local_welcome_message_vbox2"> <property name="visible">True</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkLabel" id="timed_login_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Timed login username:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="timedlogin_seconds_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Seconds before login:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">timedlogin_seconds</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="timedlogin_seconds" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkSpinButton" id="timedlogin_seconds"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">0 0 100 1 10 10</property> - <accessibility> - <atkrelation target="timedlogin_seconds_label" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="spacing">0</property> <child> - <widget class="GtkCheckButton" id="timedlogin"> + <widget class="GtkRadioButton" id="sg_defaultwelcome"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Login a _user automatically after a specified number of seconds</property> + <property name="label" translatable="yes">_Default message of "Welcome"</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -810,51 +1454,119 @@ Disabled</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkComboBoxEntry" id="timedlogin_combo"> + <widget class="GtkTable" id="local_welcome_message_table"> <property name="visible">True</property> - <property name="items" translatable="yes">dummy</property> - <property name="add_tearoffs">False</property> - <property name="has_frame">True</property> - <property name="focus_on_click">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkRadioButton" id="sg_customwelcome"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">C_ustom:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <property name="group">sg_defaultwelcome</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="welcome"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_welcome_note"> + <property name="visible">True</property> + <property name="label" translatable="yes">%n will be replaced by hostname</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> </widget> @@ -865,10 +1577,10 @@ Disabled</property> </child> <child> - <widget class="GtkLabel" id="label1"> + <widget class="GtkLabel" id="local_tab_label"> <property name="visible">True</property> - <property name="label" translatable="yes">General</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Local</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -888,34 +1600,34 @@ Disabled</property> </child> <child> - <widget class="GtkHBox" id="hbox12"> + <widget class="GtkVBox" id="remote_tab_vbox"> + <property name="border_width">12</property> <property name="visible">True</property> - <property name="homogeneous">True</property> + <property name="homogeneous">False</property> <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox14"> - <property name="border_width">5</property> + <widget class="GtkVBox" id="vbox78"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">18</property> + <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox15"> + <widget class="GtkHBox" id="hbox116"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="sg_logo_cat_label"> + <widget class="GtkLabel" id="label184"> <property name="visible">True</property> - <property name="label" translatable="yes">Logo</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">_Style:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> + <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -932,113 +1644,12 @@ Disabled</property> </child> <child> - <widget class="GtkHBox" id="hbox10"> + <widget class="GtkComboBox" id="remote_greeter"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label45"> - <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox28"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow5"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkViewport" id="viewport2"> - <property name="visible">True</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - - <child> - <widget class="GtkImage" id="sg_logo"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="sg_browselogo"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Browse</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="sg_nologo"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">No Logo</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <property name="items" translatable="yes">Remote login disabled +Same as Local</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> </widget> <packing> <property name="padding">0</property> @@ -1049,170 +1660,32 @@ Disabled</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox16"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - </widget> - <packing> - <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox17"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox18"> + <widget class="GtkVBox" id="vbox79"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="sg_background_cat_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">Background</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="spacing">0</property> <child> - <widget class="GtkHBox" id="hbox13"> - <property name="visible">True</property> + <widget class="GtkVBox" id="remote_plain_properties_vbox"> <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label53"> - <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox4"> + <widget class="GtkVBox" id="vbox81"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hbox3"> + <widget class="GtkFixed" id="fixed2"> + <property name="height_request">6</property> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkRadioButton" id="sg_no_bg_rb"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_No background</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="sg_image_bg_rb"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Image</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">sg_no_bg_rb</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="sg_color_bg_rb"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Color</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">sg_no_bg_rb</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> </widget> <packing> <property name="padding">0</property> @@ -1222,16 +1695,22 @@ Disabled</property> </child> <child> - <widget class="GtkCheckButton" id="sg_scale_background"> + <widget class="GtkLabel" id="remote_plain_background_label"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Scale background image to fit</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="label" translatable="yes">Background</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -1241,35 +1720,249 @@ Disabled</property> </child> <child> - <widget class="GtkVBox" id="vbox27"> + <widget class="GtkHBox" id="hbox117"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> - <widget class="GtkScrolledWindow" id="scrolledwindow6"> + <widget class="GtkLabel" id="label186"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox127"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="remote_background_image_hhox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkCheckButton" id="remote_background_image_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Image:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkFileChooserButton" id="remote_background_image_chooserbutton"> + <property name="visible">True</property> + <property name="title" translatable="yes">Select Background Image</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> + <property name="width_chars">-1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="sg_scale_background_remote_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label187"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="sg_scale_background_remote"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sc_ale to fit screen</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> <child> - <widget class="GtkViewport" id="viewport3"> + <widget class="GtkHBox" id="hbox127"> <property name="visible">True</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> <child> - <widget class="GtkImage" id="sg_backimage"> + <widget class="GtkLabel" id="label198"> <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="sg_remote_color_only"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Do not show image for _remote logins</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="remote_background_color_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkCheckButton" id="remote_background_color_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Co_lor:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkColorButton" id="remote_background_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="use_alpha">False</property> + <property name="title" translatable="yes">Pick Background Color</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> <packing> @@ -1278,22 +1971,6 @@ Disabled</property> <property name="fill">True</property> </packing> </child> - - <child> - <widget class="GtkButton" id="sg_browsebackimage"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Browse</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> </widget> <packing> <property name="padding">0</property> @@ -1301,18 +1978,37 @@ Disabled</property> <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="remote_plain_logo_vbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="sg_remote_color_only"> + <widget class="GtkLabel" id="remote_logo_label"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Only color on remote displays</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="label" translatable="yes">Logo</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -1322,16 +2018,16 @@ Disabled</property> </child> <child> - <widget class="GtkHBox" id="hbox4"> + <widget class="GtkHBox" id="hbox122"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="sg_backcolor_label"> + <widget class="GtkLabel" id="label193"> <property name="visible">True</property> - <property name="label" translatable="yes">_Background color: </property> - <property name="use_underline">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -1340,14 +2036,10 @@ Disabled</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="mnemonic_widget">sg_backcolor</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="width_chars">-1</property> <property name="single_line_mode">False</property> <property name="angle">0</property> - <accessibility> - <atkrelation target="sg_backcolor" type="label-for"/> - </accessibility> </widget> <packing> <property name="padding">0</property> @@ -1357,28 +2049,57 @@ Disabled</property> </child> <child> - <widget class="GnomeColorPicker" id="sg_backcolor"> + <widget class="GtkHBox" id="remote_plain_logo_hbox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="dither">True</property> - <property name="use_alpha">False</property> - <property name="title" translatable="yes">Pick a color</property> - <property name="focus_on_click">True</property> - <accessibility> - <atkrelation target="sg_backcolor_label" type="labelled-by"/> - </accessibility> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkCheckButton" id="remote_logo_image_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">I_mage:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkFileChooserButton" id="remote_logo_image_chooserbutton"> + <property name="visible">True</property> + <property name="title" translatable="yes">Select Logo Image</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> + <property name="width_chars">-1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> @@ -1391,197 +2112,34 @@ Disabled</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="label" translatable="yes">GTK+ Greeter</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox5"> - <property name="border_width">8</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkVBox" id="vbox29"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkHBox" id="hbox33"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">10</property> - - <child> - <widget class="GtkLabel" id="gg_mode_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Mode:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkComboBox" id="gg_mode_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Only One Theme -Random Theme</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="gg_theme_list"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">False</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox6"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkViewport" id="viewport1"> - <property name="visible">True</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <widget class="GtkVBox" id="remote_themed_properties_vbox"> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkFrame" id="frame11"> + <widget class="GtkVBox" id="vbox91"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox7"> - <property name="width_request">230</property> + <widget class="GtkHBox" id="remote_theme_mode_hbox"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">4</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="gg_preview_cat_label"> + <widget class="GtkLabel" id="label208"> <property name="visible">True</property> - <property name="label" translatable="yes">Preview:</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">_Theme:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> @@ -1602,126 +2160,466 @@ Random Theme</property> </child> <child> - <widget class="GtkImage" id="gg_theme_preview"> - <property name="width_request">230</property> - <property name="height_request">170</property> + <widget class="GtkComboBox" id="gg_mode_combobox_remote"> <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> + <property name="items" translatable="yes">Selected only +Random from selected +</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="remote_theme_select_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkLabel" id="gg_theme_no_preview"> - <property name="width_request">230</property> - <property name="height_request">170</property> + <widget class="GtkScrolledWindow" id="scrolledwindow13"> + <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">No screenshot available</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="gg_theme_list_remote"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">False</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkTable" id="table7"> - <property name="border_width">3</property> + <widget class="GtkVBox" id="vbox92"> <property name="visible">True</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="row_spacing">3</property> - <property name="column_spacing">3</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="gg_desc_label"> + <widget class="GtkButton" id="gg_install_new_theme_remote"> <property name="visible">True</property> - <property name="label" translatable="yes">Description:</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment9"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox132"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image5"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label209"> + <property name="visible">True</property> + <property name="label">_Add...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="gg_copyright_label"> + <widget class="GtkButton" id="gg_delete_theme_remote"> <property name="visible">True</property> - <property name="label" translatable="yes">Copyright:</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment10"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox133"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="remove_image"> + <property name="visible">True</property> + <property name="stock">gtk-remove</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label210"> + <property name="visible">True</property> + <property name="label">_Remove...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkLabel" id="gg_author_label"> + <widget class="GtkVBox" id="vbox93"> <property name="visible">True</property> - <property name="label" translatable="yes">Author:</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkVBox" id="vbox94"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkLabel" id="label211"> + <property name="visible">True</property> + <property name="label" translatable="yes">Copyright:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow14"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="gg_copyright_text_view_remote"> + <property name="visible">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox95"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">3</property> + + <child> + <widget class="GtkLabel" id="label212"> + <property name="visible">True</property> + <property name="label" translatable="yes">Author:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow15"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="gg_author_text_view_remote"> + <property name="visible">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox96"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkFixed" id="fixed4"> + <property name="height_request">12</property> + <property name="visible">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="remote_theme_background_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Background</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox134"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label214"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> @@ -1730,111 +2628,100 @@ Random Theme</property> <property name="angle">0</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkTextView" id="gg_desc_text_view"> + <widget class="GtkTable" id="remote_theme_background_hbox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="overwrite">False</property> - <property name="accepts_tab">True</property> - <property name="justification">GTK_JUSTIFY_LEFT</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> - <property name="cursor_visible">False</property> - <property name="pixels_above_lines">0</property> - <property name="pixels_below_lines">0</property> - <property name="pixels_inside_wrap">0</property> - <property name="left_margin">0</property> - <property name="right_margin">0</property> - <property name="indent">0</property> - <property name="text" translatable="yes">description -widget</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">expand|shrink|fill</property> - <property name="y_options">fill</property> - </packing> - </child> + <property name="n_rows">1</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> - <child> - <widget class="GtkTextView" id="gg_author_text_view"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="overwrite">False</property> - <property name="accepts_tab">True</property> - <property name="justification">GTK_JUSTIFY_LEFT</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> - <property name="cursor_visible">False</property> - <property name="pixels_above_lines">0</property> - <property name="pixels_below_lines">0</property> - <property name="pixels_inside_wrap">0</property> - <property name="left_margin">0</property> - <property name="right_margin">0</property> - <property name="indent">0</property> - <property name="text" translatable="yes">author</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">shrink|fill</property> - <property name="y_options">fill</property> - </packing> - </child> + <child> + <widget class="GtkColorButton" id="remote_background_theme_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="use_alpha">False</property> + <property name="title" translatable="yes">Pick Background Color</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">expand</property> + </packing> + </child> - <child> - <widget class="GtkTextView" id="gg_copyright_text_view"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="overwrite">False</property> - <property name="accepts_tab">True</property> - <property name="justification">GTK_JUSTIFY_LEFT</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> - <property name="cursor_visible">False</property> - <property name="pixels_above_lines">0</property> - <property name="pixels_below_lines">0</property> - <property name="pixels_inside_wrap">0</property> - <property name="left_margin">0</property> - <property name="right_margin">0</property> - <property name="indent">0</property> - <property name="text" translatable="yes">copyright</property> + <child> + <widget class="GtkLabel" id="label215"> + <property name="visible">True</property> + <property name="label" translatable="yes">Co_lor:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">remote_background_theme_colorbutton</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">shrink|fill</property> - <property name="y_options">fill</property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> <packing> @@ -1843,35 +2730,236 @@ widget</property> <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="remote_welcome_message_vbox"> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkHButtonBox" id="hbuttonbox1"> + <widget class="GtkLabel" id="remote_welcome_message_label"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <property name="spacing">12</property> + <property name="label" translatable="yes">Welcome Message</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox98"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> <child> - <widget class="GtkButton" id="gg_install_new_theme"> + <widget class="GtkLabel" id="label161"> <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Install new theme</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> <child> - <widget class="GtkButton" id="gg_delete_theme"> + <widget class="GtkVBox" id="vbox66"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkRadioButton" id="sg_defaultwelcomeremote"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Default message of "Welcome to %n"</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table11"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkRadioButton" id="sg_customwelcomeremote"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">C_ustom:</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <property name="group">sg_defaultwelcomeremote</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="welcomeremote"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_welcomeremote_note"> + <property name="visible">True</property> + <property name="label" translatable="yes">%n will be replaced by hostname</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="remote_configure_xdmcp_vbox"> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkHBox" id="remove_configure_xdmcp_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="xdmcp_configbutton"> <property name="visible">True</property> - <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">_Delete theme</property> + <property name="label" translatable="yes">Configure _XDMCP...</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> </child> </widget> <packing> @@ -1895,10 +2983,10 @@ widget</property> </child> <child> - <widget class="GtkLabel" id="label5"> + <widget class="GtkLabel" id="remote_tab_label"> <property name="visible">True</property> - <property name="label" translatable="yes">Themed Greeter</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Remote</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -1918,22 +3006,41 @@ widget</property> </child> <child> - <widget class="GtkVBox" id="vbox8"> - <property name="border_width">5</property> + <widget class="GtkVBox" id="accessibility_tab_vbox"> + <property name="border_width">12</property> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox9"> + <widget class="GtkCheckButton" id="acc_modules"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Enable accessible login</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="themes_vbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="options_cat_label"> + <widget class="GtkLabel" id="themes_label"> <property name="visible">True</property> - <property name="label" translatable="yes">Options</property> + <property name="label" translatable="yes">Themes</property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -1956,13 +3063,13 @@ widget</property> </child> <child> - <widget class="GtkHBox" id="hbox6"> + <widget class="GtkHBox" id="themes_category_hbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label35"> + <widget class="GtkLabel" id="themes_indent_label"> <property name="visible">True</property> <property name="label" translatable="yes"> </property> <property name="use_underline">False</property> @@ -1987,92 +3094,114 @@ widget</property> </child> <child> - <widget class="GtkVBox" id="vbox2"> + <widget class="GtkCheckButton" id="acc_theme"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Allow users to change fonts and colors of plain greeter</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkCheckButton" id="enable_xdmcp"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Enable _XDMCP</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkVBox" id="sounds_vbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkCheckButton" id="fb_browser"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Show _Face Browser</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="sounds_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Sounds</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkCheckButton" id="enable_debug"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Enable debu_g messages to system log</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="sounds_category_hbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> - <child> - <widget class="GtkCheckButton" id="allowroot"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow _root to login with GDM</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="sounds_indent_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="sounds_table"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> <child> - <widget class="GtkCheckButton" id="allowremoteroot"> + <widget class="GtkCheckButton" id="acc_sound_ready"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow root to login r_emotely with GDM</property> + <property name="label" translatable="yes">_Login screen ready:</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -2081,17 +3210,20 @@ widget</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="allowremoteauto"> + <widget class="GtkCheckButton" id="acc_sound_success"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow remote _timed logins</property> + <property name="label" translatable="yes">Login _successful:</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -2100,18 +3232,20 @@ widget</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="sysmenu"> + <widget class="GtkCheckButton" id="acc_sound_failure"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Show the "Actions" menu (formerly known as the "System" menu). If not set, none of the system commands will be available (this includes restart, shutdown, configure, chooser)</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Show _actions menu</property> + <property name="label" translatable="yes">Login _failed:</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -2120,54 +3254,45 @@ widget</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox17"> + <widget class="GtkHBox" id="hbox182"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label62"> + <widget class="GtkFileChooserButton" id="acc_sound_ready_button"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="title" translatable="yes">Select Sound File</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="config_available"> + <widget class="GtkButton" id="acc_soundtest_ready_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow _configuration from the login screen</property> - <property name="use_underline">True</property> + <property name="label">gtk-media-play</property> + <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -2177,54 +3302,44 @@ widget</property> </child> </widget> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox18"> + <widget class="GtkHBox" id="hbox183"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label63"> + <widget class="GtkFileChooserButton" id="acc_sound_success_button"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="title" translatable="yes">Select Sound File</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="chooser_button"> + <widget class="GtkButton" id="acc_soundtest_success_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow running _XDMCP chooser from the login screen</property> - <property name="use_underline">True</property> + <property name="label">gtk-media-play</property> + <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -2234,98 +3349,64 @@ widget</property> </child> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="disallow_tcp"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Deny TCP connections to Xserver (disables xforwarding, but does not affect XDMCP)</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options">fill</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox1"> + <widget class="GtkHBox" id="hbox184"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="retry_delay_label"> + <widget class="GtkFileChooserButton" id="acc_sound_failure_button"> <property name="visible">True</property> - <property name="label" translatable="yes">Retry delay (_seconds):</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">retry_delay</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="title" translatable="yes">Select Sound File</property> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="show_hidden">False</property> <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="retry_delay" type="label-for"/> - </accessibility> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkSpinButton" id="retry_delay"> + <widget class="GtkButton" id="acc_soundtest_failure_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="retry_delay_label" type="labelled-by"/> - </accessibility> + <property name="label">gtk-media-play</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">fill</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> @@ -2339,7 +3420,7 @@ widget</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> @@ -2351,10 +3432,10 @@ widget</property> </child> <child> - <widget class="GtkLabel" id="label4"> + <widget class="GtkLabel" id="accessibility_tab_label"> <property name="visible">True</property> - <property name="label" translatable="yes">Security</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Accessibility</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -2374,60 +3455,29 @@ widget</property> </child> <child> - <widget class="GtkVBox" id="vbox30"> - <property name="border_width">5</property> + <widget class="GtkVBox" id="security_tab_vbox"> + <property name="border_width">12</property> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkLabel" id="xserver_cat_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">X Server Settings</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="spacing">18</property> <child> - <widget class="GtkHBox" id="hbox58"> + <widget class="GtkVBox" id="autologin_vbox"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label110"> + <widget class="GtkCheckButton" id="autologin"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Enable Automatic Login</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -2437,27 +3487,101 @@ widget</property> </child> <child> - <widget class="GtkLabel" id="label111"> + <widget class="GtkHBox" id="hbox136"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>WARNING:</b> Placing values in this section that your Xserver does not support will stop your Xserver -from restarting (effectively not allowing this configuration application to run), BE CAREFUL!</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label227"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table17"> + <property name="visible">True</property> + <property name="n_rows">1</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkLabel" id="autologin_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">_User:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">autologin_combo</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkComboBoxEntry" id="autologin_combo"> + <property name="visible">True</property> + <property name="items" translatable="yes">dummy</property> + <property name="add_tearoffs">False</property> + <property name="has_frame">True</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> @@ -2470,28 +3594,22 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkHBox" id="hbox82"> + <widget class="GtkVBox" id="timedlogin_vbox"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label129"> + <widget class="GtkCheckButton" id="timedlogin"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Enable _Timed Login</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -2501,137 +3619,149 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkLabel" id="label130"> - <property name="visible">True</property> - <property name="label" translatable="yes">Note: For settings to take effect, the gdm service will require a restart.</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox59"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">14</property> - - <child> - <widget class="GtkVBox" id="vbox46"> + <widget class="GtkHBox" id="hbox138"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="spacing">0</property> <child> - <widget class="GtkFrame" id="frame12"> + <widget class="GtkLabel" id="label231"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table18"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> <child> - <widget class="GtkAlignment" id="alignment4"> + <widget class="GtkLabel" id="timed_login_label"> <property name="visible">True</property> - <property name="xalign">0.5</property> + <property name="sensitive">False</property> + <property name="label" translatable="yes">U_ser:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox49"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">timedlogin_combo</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkVBox" id="vbox50"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <child> + <widget class="GtkCheckButton" id="allowremoteauto"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Allo_w remote timed logins</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow7"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + <child> + <widget class="GtkHBox" id="hbox148"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> - <child> - <widget class="GtkTreeView" id="xserver_tree_view"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">True</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="timedlogin_seconds_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="label" translatable="yes">_Pause before login:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">timedlogin_seconds</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkButton" id="xserver_remove_button"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Remove Server</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox141"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkHSeparator" id="hseparator41"> + <widget class="GtkSpinButton" id="timedlogin_seconds"> <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 100 1 10 10</property> </widget> <packing> <property name="padding">0</property> @@ -2641,124 +3771,62 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkVBox" id="vbox51"> + <widget class="GtkLabel" id="timedlogin_seconds_units"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkHBox" id="hbox81"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkSpinButton" id="xserver_spin_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="xserver_server_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="xserver_options_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="xserver_add_button"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Add/Modify Server</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="sensitive">False</property> + <property name="label" translatable="yes">seconds</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + </packing> </child> <child> - <widget class="GtkLabel" id="label128"> + <widget class="GtkComboBoxEntry" id="timedlogin_combo"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Servers to Start</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="sensitive">False</property> + <property name="items" translatable="yes">dummy</property> + <property name="add_tearoffs">False</property> + <property name="has_frame">True</property> + <property name="focus_on_click">True</property> </widget> <packing> - <property name="type">label_item</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> </packing> </child> </widget> @@ -2775,34 +3843,61 @@ from restarting (effectively not allowing this configuration application to run) <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkVSeparator" id="vseparator1"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkVBox" id="security_vbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="vbox45"> + <widget class="GtkVBox" id="vbox101"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hbox78"> + <widget class="GtkLabel" id="security_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Security</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox142"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">5</property> + <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label125"> + <widget class="GtkLabel" id="label238"> <property name="visible">True</property> - <property name="label" translatable="yes">Server Definition to Modify:</property> + <property name="label" translatable="yes"> </property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -2825,428 +3920,211 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkComboBox" id="xserver_mod_combobox"> + <widget class="GtkVBox" id="vbox102"> <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="xserver_modify_frame"> - <property name="border_width">1</property> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - - <child> - <widget class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox39"> + <widget class="GtkCheckButton" id="allowroot"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Allow local system administrator login</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkHBox" id="hbox77"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <child> + <widget class="GtkCheckButton" id="allowremoteroot"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">A_llow remote system administrator login</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="label124"> - <property name="visible">True</property> - <property name="label" translatable="yes">Server Name:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkCheckButton" id="enable_debug"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">E_nable debug messages to system log</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkEntry" id="xserver_name_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">256</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkCheckButton" id="disallow_tcp"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Deny TCP connections to Xserver</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkHSeparator" id="hseparator28"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox181"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> <child> - <widget class="GtkHBox" id="hbox61"> + <widget class="GtkLabel" id="label275"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label113"> - <property name="visible">True</property> - <property name="label" translatable="yes">Command:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="xserver_command_entry"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Usually something like: /usr/bin/X</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkHSeparator" id="hseparator29"> + <widget class="GtkLabel" id="xforwarding_label"> <property name="visible">True</property> + <property name="label" translatable="yes">Disables X forwarding, but does not affect XDMCP.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkHBox" id="hbox66"> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkRadioButton" id="xserver_greeter_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Login Greeter.</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Greeter</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="xserver_chooser_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Choose network computer to connect to.</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Chooser</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">xserver_greeter_radiobutton</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox145"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> <child> - <widget class="GtkHSeparator" id="hseparator36"> + <widget class="GtkLabel" id="label241"> <property name="visible">True</property> + <property name="label" translatable="yes">L_ogin retry delay:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">retry_delay</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox67"> + <widget class="GtkHBox" id="hbox146"> <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkCheckButton" id="xserver_handled_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Is a login attempt handled by this computer?</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Handled</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="xserver_flexible_checkbutton"> + <widget class="GtkSpinButton" id="retry_delay"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Flexible</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHSeparator" id="hseparator37"> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox63"> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label114"> - <property name="visible">True</property> - <property name="label" translatable="yes">Resolution:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="adjustment">1 0 100 1 10 10</property> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHSeparator" id="hseparator38"> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox64"> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label115"> - <property name="visible">True</property> - <property name="label" translatable="yes">Color Depth:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHSeparator" id="hseparator39"> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox65"> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label116"> + <widget class="GtkLabel" id="label242"> <property name="visible">True</property> - <property name="label" translatable="yes">Refresh Rate:</property> + <property name="label" translatable="yes">seconds</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -3267,87 +4145,75 @@ from restarting (effectively not allowing this configuration application to run) <property name="fill">False</property> </packing> </child> - - <child> - <placeholder/> - </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> + <property name="expand">False</property> <property name="fill">True</property> </packing> </child> </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> </child> </widget> - </child> - - <child> - <widget class="GtkLabel" id="label118"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Server Settings</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> <packing> - <property name="type">label_item</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> - <property name="padding">6</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> - <child> - <widget class="GtkHButtonBox" id="hbuttonbox2"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property> - <property name="spacing">0</property> + <child> + <widget class="GtkVBox" id="vbox103"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkButton" id="xserver_delete_button"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Delete Server Definition</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> + <child> + <widget class="GtkHBox" id="hbox151"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> - <child> - <widget class="GtkButton" id="xserver_create_button"> - <property name="sensitive">False</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Create Server Definition</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> + <child> + <widget class="GtkButton" id="config_xserverbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Configure _XServer...</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> </widget> @@ -3360,22 +4226,22 @@ from restarting (effectively not allowing this configuration application to run) </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> <packing> - <property name="tab_expand">True</property> + <property name="tab_expand">False</property> <property name="tab_fill">True</property> </packing> </child> <child> - <widget class="GtkLabel" id="XServer_label"> + <widget class="GtkLabel" id="security_tab_label"> <property name="visible">True</property> - <property name="label" translatable="yes">XServer</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Security</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -3395,35 +4261,55 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkVBox" id="vbox20"> - <property name="border_width">5</property> + <widget class="GtkVBox" id="users_tab_vbox"> + <property name="border_width">12</property> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">18</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="fb_informationlabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Note:</b> Users in the Include list will appear in the face browser if enabled and will appear in the user drop-down lists for automatic and timed logins on the Security tab. Users in the Exclude list will not appear.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_FILL</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> <child> - <widget class="GtkVBox" id="vbox21"> + <widget class="GtkVBox" id="vbox125"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="acc_options_cat_label"> + <widget class="GtkCheckButton" id="fb_allusers"> + <property name="border_width">3</property> <property name="visible">True</property> - <property name="label" translatable="yes">Options</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Include all users from /etc/passwd (not for NIS)</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> @@ -3433,161 +4319,275 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkHBox" id="hbox16"> + <widget class="GtkTable" id="table22"> <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">3</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> <child> - <widget class="GtkLabel" id="label61"> + <widget class="GtkLabel" id="fb_includelabel"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> + <property name="label" translatable="yes">I_nclude:</property> + <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0.5</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="mnemonic_widget">fb_include_treeview</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="width_chars">-1</property> <property name="single_line_mode">False</property> <property name="angle">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkVBox" id="vbox22"> + <widget class="GtkLabel" id="fb_excludelabel"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="label" translatable="yes">E_xclude:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">fb_exclude_treeview</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow19"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> <child> - <widget class="GtkCheckButton" id="acc_modules"> + <widget class="GtkTreeView" id="fb_include_treeview"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Enable _accessibility modules</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow20"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> <child> - <widget class="GtkCheckButton" id="acc_theme"> + <widget class="GtkTreeView" id="fb_exclude_treeview"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow theme selection in _GTK+ Greeter</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox124"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkVBox" id="UsersButtonBox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="fb_toexclude"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkImage" id="image19"> + <property name="visible">True</property> + <property name="stock">gtk-go-forward</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="fb_toinclude"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkImage" id="image20"> + <property name="visible">True</property> + <property name="stock">gtk-go-back</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> + <property name="expand">True</property> <property name="fill">False</property> </packing> </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox193"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="acc_sound_ready"> + <widget class="GtkButton" id="fb_includedelete"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Make a _sound when login window is ready</property> - <property name="use_underline">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox19"> - <property name="border_width">3</property> + <widget class="GtkButton" id="fb_includeadd"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> <child> - <widget class="GtkLabel" id="label64"> + <widget class="GtkAlignment" id="alignment22"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="acc_sound_ready_file_box"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> <child> - <widget class="GtkHBox" id="hbox24"> - <property name="border_width">3</property> + <widget class="GtkHBox" id="hbox198"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">2</property> <child> - <widget class="GtkLabel" id="label73"> + <widget class="GtkImage" id="image21"> <property name="visible">True</property> - <property name="label" translatable="yes">Sound file:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3597,10 +4597,10 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkLabel" id="acc_sound_ready_file"> + <widget class="GtkLabel" id="label294"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> + <property name="label">_Add...</property> + <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -3615,178 +4615,75 @@ from restarting (effectively not allowing this configuration application to run) <property name="angle">0</property> </widget> <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox25"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="acc_sound_ready_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Browse</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_nosound_ready_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">No Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_soundtest_ready_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Test Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox194"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="acc_sound_success"> + <widget class="GtkButton" id="fb_excludedelete"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Make a _sound after a successful login attempt</property> - <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox26"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label74"> + <widget class="GtkAlignment" id="alignment21"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="acc_sound_success_file_box"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> <child> - <widget class="GtkHBox" id="hbox32"> - <property name="border_width">3</property> + <widget class="GtkHBox" id="hbox192"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">2</property> <child> - <widget class="GtkLabel" id="label79"> + <widget class="GtkImage" id="image18"> <property name="visible">True</property> - <property name="label" translatable="yes">Sound file:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> + <property name="stock">gtk-remove</property> + <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3796,10 +4693,10 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkLabel" id="acc_sound_success_file"> + <widget class="GtkLabel" id="label290"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> + <property name="label">R_emove</property> + <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -3814,178 +4711,58 @@ from restarting (effectively not allowing this configuration application to run) <property name="angle">0</property> </widget> <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox28"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="acc_sound_success_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Browse</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_nosound_success_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">No Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_soundtest_success_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Test Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="acc_sound_failure"> + <widget class="GtkButton" id="fb_excludeadd"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Make a _sound after a failed login attempt</property> - <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox29"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label77"> + <widget class="GtkAlignment" id="alignment20"> <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="acc_sound_failure_file_box"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> <child> - <widget class="GtkHBox" id="hbox30"> - <property name="border_width">3</property> + <widget class="GtkHBox" id="hbox191"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">2</property> <child> - <widget class="GtkLabel" id="label78"> + <widget class="GtkImage" id="image17"> <property name="visible">True</property> - <property name="label" translatable="yes">Sound file:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3995,10 +4772,10 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkLabel" id="acc_sound_failure_file"> + <widget class="GtkLabel" id="label289"> <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> + <property name="label">A_dd...</property> + <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -4013,115 +4790,142 @@ from restarting (effectively not allowing this configuration application to run) <property name="angle">0</property> </widget> <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox31"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="acc_sound_failure_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Browse</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_nosound_failure_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">No Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="acc_soundtest_failure_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Test Sound</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> </packing> </child> </widget> <packing> <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox157"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkButton" id="fb_faceapply"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment17"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox186"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image14"> + <property name="visible">True</property> + <property name="stock">gtk-apply</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label280"> + <property name="visible">True</property> + <property name="label">A_pply User Changes</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> + + <child> + <placeholder/> + </child> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> </widget> @@ -4132,10 +4936,10 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkLabel" id="label59"> + <widget class="GtkLabel" id="users_tab_label"> <property name="visible">True</property> - <property name="label" translatable="yes">Accessibility</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Users</property> + <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> @@ -4153,24 +4957,518 @@ from restarting (effectively not allowing this configuration application to run) <property name="type">tab</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="xdmcp_dialog"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="title" translatable="yes">XDMCP Login WIndow Preferences</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> <child> - <widget class="GtkVBox" id="vbox1"> - <property name="border_width">5</property> + <widget class="GtkButton" id="closebutton2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table16"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="n_rows">9</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkCheckButton" id="honour_indirect"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Honor _indirect requests</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label216"> + <property name="visible">True</property> + <property name="label" translatable="yes">Listen on _UDP port: </property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">udpport</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label217"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum _pending requests:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">maxpending</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label218"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum p_ending indirect requests:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">maxpendingindirect</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label219"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum _remote sessions:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">maxremotesessions</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label220"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum _wait time:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">maxwait</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label221"> + <property name="visible">True</property> + <property name="label" translatable="yes">Maximum indirect w_ait time:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">maxwaitindirect</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label222"> + <property name="visible">True</property> + <property name="label" translatable="yes">Displays per _host:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">displaysperhost</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label223"> + <property name="visible">True</property> + <property name="label" translatable="yes">Pin_g interval:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">pinginterval</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="udpport"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 1 65536 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="maxpending"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">2 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="maxpendingindirect"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="maxremotesessions"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="maxwait"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="maxwaitindirect"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="displaysperhost"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox135"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">18</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="no_xdmcp_label"> + <widget class="GtkSpinButton" id="pinginterval"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">No XDMCP support in the binary. To enable XDMCP support you must recompile GDM with the XDMCP libraries.</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">15 0 6000 1 10 10</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label224"> + <property name="visible">True</property> + <property name="label" translatable="yes">seconds</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">True</property> + <property name="wrap">False</property> + <property name="selectable">False</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> @@ -4186,21 +5484,153 @@ from restarting (effectively not allowing this configuration application to run) <property name="fill">False</property> </packing> </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="xserver_dialog"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="title" translatable="yes">XServer Login Window Preferences</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="closebutton3"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox110"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="xserver_informationlabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Warning:</b> Using an invalid value could stop the XServer from restarting. The gdm service will require a restart before changes take effect.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox165"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> <child> - <widget class="GtkVBox" id="xdmcp_vbox"> + <widget class="GtkVBox" id="vbox117"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hbox14"> + <widget class="GtkLabel" id="server_to_start_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Servers To Start</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox175"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label56"> + <widget class="GtkLabel" id="label268"> <property name="visible">True</property> <property name="label" translatable="yes"> </property> <property name="use_underline">False</property> @@ -4225,492 +5655,227 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkTable" id="xdmcp_frame"> - <property name="border_width">4</property> + <widget class="GtkVBox" id="vbox112"> <property name="visible">True</property> - <property name="n_rows">9</property> - <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkCheckButton" id="honour_indirect"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Honour _indirect requests</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label9"> - <property name="visible">True</property> - <property name="label" translatable="yes">Listen on _UDP port: </property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">udpport</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="udpport" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label10"> - <property name="visible">True</property> - <property name="label" translatable="yes">Maximum _pending requests:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">maxpending</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="maxpending" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="label" translatable="yes">Max p_ending indirect requests:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">maxpendingindirect</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="maxpendingindirect" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="label" translatable="yes">Maximum _remote sessions:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">maxremotesessions</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="maxremotesessions" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label13"> - <property name="visible">True</property> - <property name="label" translatable="yes">Maximum _wait time:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">maxwait</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="maxwait" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label14"> + <widget class="GtkVBox" id="vbox113"> <property name="visible">True</property> - <property name="label" translatable="yes">Maximum indirect w_ait time:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">maxwaitindirect</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="maxwaitindirect" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="label" translatable="yes">Displays per _host:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">displaysperhost</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkrelation target="displaysperhost" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow18"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - <child> - <widget class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="label" translatable="yes">Pin_g interval (seconds):</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">pinginterval</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Ping interval (seconds):</atkproperty> - <atkrelation target="pinginterval" type="label-for"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkTreeView" id="xserver_tree_view"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">True</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> - <child> - <widget class="GtkSpinButton" id="udpport"> - <property name="width_request">58</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">177 1 65536 1 10 10</property> - <accessibility> - <atkrelation target="label9" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox195"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> - <child> - <widget class="GtkSpinButton" id="maxpending"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">2 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label10" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <placeholder/> + </child> - <child> - <widget class="GtkSpinButton" id="maxpendingindirect"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label11" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkButton" id="xserver_remove_button"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> - <child> - <widget class="GtkSpinButton" id="maxremotesessions"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label12" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkAlignment" id="alignment14"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> - <child> - <widget class="GtkSpinButton" id="maxwait"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label13" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox179"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image11"> + <property name="visible">True</property> + <property name="stock">gtk-remove</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="xserver_remove_buttonLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Remove</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> - <child> - <widget class="GtkSpinButton" id="maxwaitindirect"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label14" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkButton" id="xserver_add_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> - <child> - <widget class="GtkSpinButton" id="displaysperhost"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">1 0 100 1 10 10</property> - <accessibility> - <atkrelation target="label15" type="labelled-by"/> - </accessibility> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> + <child> + <widget class="GtkAlignment" id="alignment15"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> - <child> - <widget class="GtkSpinButton" id="pinginterval"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">15 0 6000 1 10 10</property> - <accessibility> - <atkrelation target="label16" type="labelled-by"/> - </accessibility> + <child> + <widget class="GtkHBox" id="hbox180"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image12"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="xserver_add_buttonlabel"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Add/Modify...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">fill</property> - <property name="y_options"></property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> @@ -4734,116 +5899,23 @@ from restarting (effectively not allowing this configuration application to run) <property name="fill">True</property> </packing> </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="XDMCP_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">XDMCP</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="face_frame"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> <child> - <widget class="GtkLabel" id="label132"> - <property name="visible">True</property> - <property name="label" translatable="yes">The "Users" tab specifies which users are visible to GDM. Users listed in "Include" will appear in the Face Browser if it is enabled in the "Security" tab and will also appear in the drop-down list for Automatic/Timed login under the "General" tab. Users listed in "Exclude" will not be displayed regardless of whether "Include All Users" is checked.</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHSeparator" id="hseparator42"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="fb_allusers"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Include All Users (Get "Include" user list from /etc/passwd. Not appropriate if using NIS)</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox20"> - <property name="border_width">3</property> + <widget class="GtkVBox" id="vbox115"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">12</property> <child> - <widget class="GtkVBox" id="fb_includebox"> + <widget class="GtkVBox" id="vbox126"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label68"> + <widget class="GtkLabel" id="label291"> <property name="visible">True</property> - <property name="label" translatable="yes">Include</property> + <property name="label" translatable="yes"></property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4866,77 +5938,56 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkScrolledWindow" id="scrolledwindow3"> + <widget class="GtkVBox" id="vbox120"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + <property name="homogeneous">False</property> + <property name="spacing">18</property> <child> - <widget class="GtkTreeView" id="fb_include_treeview"> + <widget class="GtkHBox" id="hbox167"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label72"> - <property name="visible">True</property> - <property name="label" translatable="yes">User to Include</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">3</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="homogeneous">False</property> + <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox21"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <child> + <widget class="GtkLabel" id="label261"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Servers:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_mod_combobox</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkEntry" id="fb_includeentry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> + <child> + <widget class="GtkComboBox" id="xserver_mod_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes"></property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> @@ -4946,250 +5997,580 @@ from restarting (effectively not allowing this configuration application to run) </child> <child> - <widget class="GtkButton" id="fb_includeadd"> + <widget class="GtkVBox" id="xserver_modify_vbox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Add</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkLabel" id="server_settings_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Server Settings</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox176"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label269"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox116"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkTable" id="table19"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkLabel" id="label262"> + <property name="visible">True</property> + <property name="label" translatable="yes">Server _name:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_name_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="xserver_name_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">256</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label263"> + <property name="visible">True</property> + <property name="label" translatable="yes">C_ommand:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_command_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="xserver_command_entry"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Example: /usr/X11R6/bin/X</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label272"> + <property name="visible">True</property> + <property name="label" translatable="yes">La_unch:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_style_combobox</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkComboBox" id="xserver_style_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Greeter +Chooser</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="xserver_handled_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Logins are handled by this computer</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="xserver_flexible_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Flexible (on demand)</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table20"> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + + <child> + <widget class="GtkLabel" id="label264"> + <property name="visible">True</property> + <property name="label" translatable="yes">Resolution:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label265"> + <property name="visible">True</property> + <property name="label" translatable="yes">Color depth:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label266"> + <property name="visible">True</property> + <property name="label" translatable="yes">Refresh rate:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> <packing> - <property name="padding">3</property> - <property name="expand">False</property> + <property name="padding">0</property> + <property name="expand">True</property> <property name="fill">True</property> </packing> </child> - - <child> - <widget class="GtkButton" id="fb_includedelete"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Delete</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">3</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> + <property name="expand">False</property> <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkVBox" id="fb_buttonbox"> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="fb_toinclude"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"><</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <widget class="GtkHBox" id="hbox196"> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> - <widget class="GtkButton" id="fb_toexclude"> + <widget class="GtkButton" id="xserver_deletebutton"> <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">></property> - <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox25"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <child> + <widget class="GtkAlignment" id="alignment13"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> - <child> - <widget class="GtkLabel" id="label69"> - <property name="visible">True</property> - <property name="label" translatable="yes">Exclude</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkHBox" id="hbox178"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow4"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + <child> + <widget class="GtkImage" id="image10"> + <property name="visible">True</property> + <property name="stock">gtk-remove</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkTreeView" id="fb_exclude_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> + <child> + <widget class="GtkLabel" id="label271"> + <property name="visible">True</property> + <property name="label" translatable="yes">Re_move Server</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> </widget> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label71"> - <property name="visible">True</property> - <property name="label" translatable="yes">User to exclude</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">3</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox22"> + <widget class="GtkButton" id="xserver_createbutton"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="sensitive">False</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> <child> - <widget class="GtkEntry" id="fb_excludeentry"> + <widget class="GtkAlignment" id="alignment16"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> - <child> - <widget class="GtkButton" id="fb_excludeadd"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Add</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> + <child> + <widget class="GtkHBox" id="hbox185"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image13"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="xserver_createbuttonlabel"> + <property name="visible">True</property> + <property name="label" translatable="yes">Add S_erver...</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> </child> </widget> <packing> - <property name="padding">3</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="fb_excludedelete"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Delete</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">3</property> + <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> @@ -5199,73 +6580,341 @@ from restarting (effectively not allowing this configuration application to run) <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="add_xserver_dialog"> + <property name="border_width">5</property> + <property name="title" translatable="yes">Add / Modify Servers To Start</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="cancelbutton1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="okbutton2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox122"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkTable" id="table21"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> <child> - <widget class="GtkHBox" id="hbox23"> + <widget class="GtkSpinButton" id="xserver_spin_button"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1 0 100 1 10 10</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkButton" id="fb_faceapply"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Apply</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> + <child> + <widget class="GtkComboBox" id="xserver_server_combobox"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="items" translatable="yes"></property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="fb_message"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> + <child> + <widget class="GtkEntry" id="xserver_options_entry"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + <property name="width_chars">25</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label277"> + <property name="visible">True</property> + <property name="label" translatable="yes">_VT:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_spin_button</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label278"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Server:</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_server_combobox</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label279"> + <property name="visible">True</property> + <property name="label" translatable="yes">Op_tions: </property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="mnemonic_widget">xserver_options_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> </widget> <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="add_user_dialog"> + <property name="border_width">5</property> + <property name="title" translatable="yes">Add User</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area5"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="cancelbutton2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> <child> - <widget class="GtkLabel" id="Face_label"> + <widget class="GtkButton" id="okbutton3"> <property name="visible">True</property> - <property name="label" translatable="yes">Users</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox197"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="fb_addlabel"> + <property name="visible">True</property> + <property name="label" translatable="yes">_User:</property> <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5275,13 +6924,35 @@ from restarting (effectively not allowing this configuration application to run) <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="mnemonic_widget">fb_addentry</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="width_chars">-1</property> <property name="single_line_mode">False</property> <property name="angle">0</property> </widget> <packing> - <property name="type">tab</property> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="fb_addentry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> </widget> diff --git a/gui/greeter/greeter.c b/gui/greeter/greeter.c index 9a1417c4..63f4b035 100644 --- a/gui/greeter/greeter.c +++ b/gui/greeter/greeter.c @@ -1282,7 +1282,11 @@ main (int argc, char *argv[]) /* the background unfilled. The cursor should be a watch already */ /* but just in case */ config = ve_config_get (config_file); - bg_color = ve_config_get_string (config, GDM_KEY_BACKGROUNDCOLOR); + bg_color = ve_config_get_string (config, GDM_KEY_GRAPHICAL_THEME_COLOR); + /* If a graphical theme color does not exist fallback to the plain color */ + if (ve_string_empty (bg_color)) { + bg_color = ve_config_get_string (config, GDM_KEY_BACKGROUNDCOLOR); + } setup_background_color (bg_color); greeter_session_init (); |