summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Lebl <jirka@5z.com>2002-05-03 23:33:59 +0000
committerGeorge Lebl <jirka@src.gnome.org>2002-05-03 23:33:59 +0000
commit27200b26ef7a8e9dfe27d6260da35d09fffd81da (patch)
tree33cce67379a86c2a2adb957d7886b1a4379977ae
parent8c2a8e32e10bb147f1d350fdf1e1b669d85327b9 (diff)
downloadgdm-27200b26ef7a8e9dfe27d6260da35d09fffd81da.tar.gz
add notifies for sysmenu and config available
Fri May 03 16:42:42 2002 George Lebl <jirka@5z.com> * daemon/gdm.[ch], daemon/slave.c: add notifies for sysmenu and config available * gui/gdmsetup.glade, gui/gdmsetup.c: glade design pages for both greeters and connect a few of the items to actual config. Also add security sysmenu and config_available items
-rw-r--r--ChangeLog9
-rw-r--r--daemon/gdm.c18
-rw-r--r--daemon/gdm.h4
-rw-r--r--daemon/slave.c6
-rw-r--r--gui/gdmsetup-strings.c28
-rw-r--r--gui/gdmsetup.c259
-rw-r--r--gui/gdmsetup.glade739
7 files changed, 996 insertions, 67 deletions
diff --git a/ChangeLog b/ChangeLog
index 48a685d5..12c64121 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Fri May 03 16:42:42 2002 George Lebl <jirka@5z.com>
+
+ * daemon/gdm.[ch], daemon/slave.c: add notifies for sysmenu and
+ config available
+
+ * gui/gdmsetup.glade, gui/gdmsetup.c: glade design pages for both
+ greeters and connect a few of the items to actual config. Also
+ add security sysmenu and config_available items
+
2002-05-03 jacob berkman <jacob@ximian.com>
* Makefile.am (SUBDIRS):
diff --git a/daemon/gdm.c b/daemon/gdm.c
index e579216d..4bb42c50 100644
--- a/daemon/gdm.c
+++ b/daemon/gdm.c
@@ -2222,6 +2222,24 @@ update_config (const char *key)
notify_displays_int (GDM_NOTIFY_ALLOWREMOTEAUTOLOGIN, val);
goto update_config_ok;
+ } else if (is_key (key, GDM_KEY_SYSMENU)) {
+ gboolean val = gnome_config_get_bool (GDM_KEY_SYSMENU);
+ if (ve_bool_equal (val, GdmSystemMenu))
+ goto update_config_ok;
+ GdmSystemMenu = val;
+
+ notify_displays_int (GDM_NOTIFY_SYSMENU, val);
+
+ goto update_config_ok;
+ } else if (is_key (key, GDM_KEY_CONFIG_AVAILABLE)) {
+ gboolean val = gnome_config_get_bool (GDM_KEY_CONFIG_AVAILABLE);
+ if (ve_bool_equal (val, GdmConfigAvailable))
+ goto update_config_ok;
+ GdmConfigAvailable = val;
+
+ notify_displays_int (GDM_NOTIFY_CONFIG_AVAILABLE, val);
+
+ goto update_config_ok;
} else if (is_key (key, GDM_KEY_RETRYDELAY)) {
int val = gnome_config_get_int (GDM_KEY_RETRYDELAY);
if (val == GdmRetryDelay)
diff --git a/daemon/gdm.h b/daemon/gdm.h
index dd916434..df63f82c 100644
--- a/daemon/gdm.h
+++ b/daemon/gdm.h
@@ -423,6 +423,8 @@ GdmXServer * gdm_find_x_server (const char *id);
#define GDM_NOTIFY_ALLOWREMOTEROOT "AllowRemoteRoot" /* <true/false as int> */
#define GDM_NOTIFY_ALLOWROOT "AllowRoot" /* <true/false as int> */
#define GDM_NOTIFY_ALLOWREMOTEAUTOLOGIN "AllowRemoteAutoLogin" /* <true/false as int> */
+#define GDM_NOTIFY_SYSMENU "SystemMenu" /* <true/false as int> */
+#define GDM_NOTIFY_CONFIG_AVAILABLE "ConfigAvailable" /* <true/false as int> */
#define GDM_NOTIFY_RETRYDELAY "RetryDelay" /* <seconds> */
#define GDM_NOTIFY_GREETER "Greeter" /* <greeter binary> */
#define GDM_NOTIFY_REMOTEGREETER "RemoteGreeter" /* <greeter binary> */
@@ -553,6 +555,8 @@ GdmXServer * gdm_find_x_server (const char *id);
* xdmcp/TimedLogin (2.3.90.3)
* xdmcp/TimedLoginEnable (2.3.90.3)
* xdmcp/TimedLoginDelay (2.3.90.3)
+ * greeter/SystemMenu (2.3.90.3)
+ * greeter/ConfigAvailable (2.3.90.3)
* Supported since: 2.3.90.2
* Arguments: <key>
* <key> is just the base part of the key such as "security/AllowRemoteRoot"
diff --git a/daemon/slave.c b/daemon/slave.c
index a7288c90..efaedb29 100644
--- a/daemon/slave.c
+++ b/daemon/slave.c
@@ -3028,6 +3028,12 @@ gdm_slave_handle_notify (GdmConnection *conn, const char *msg, gpointer data)
GdmAllowRemoteRoot = val;
} else if (sscanf (msg, GDM_NOTIFY_ALLOWREMOTEAUTOLOGIN " %d", &val) == 1) {
GdmAllowRemoteAutoLogin = val;
+ } else if (sscanf (msg, GDM_NOTIFY_SYSMENU " %d", &val) == 1) {
+ GdmSystemMenu = val;
+ kill (display->greetpid, SIGHUP);
+ } else if (sscanf (msg, GDM_NOTIFY_CONFIG_AVAILABLE " %d", &val) == 1) {
+ GdmConfigAvailable = val;
+ kill (display->greetpid, SIGHUP);
} else if (sscanf (msg, GDM_NOTIFY_RETRYDELAY " %d", &val) == 1) {
GdmRetryDelay = val;
} else if (strncmp (msg, GDM_NOTIFY_GREETER " ",
diff --git a/gui/gdmsetup-strings.c b/gui/gdmsetup-strings.c
index 96431803..dde7b794 100644
--- a/gui/gdmsetup-strings.c
+++ b/gui/gdmsetup-strings.c
@@ -22,11 +22,33 @@ gchar *s = N_("Seconds before login:");
gchar *s = N_("*");
gchar *s = N_("Timed login");
gchar *s = N_("General");
+gchar *s = N_("*");
+gchar *s = N_("Welcome string: ");
+gchar *s = N_("*");
+gchar *s = N_("Logo");
+gchar *s = N_("Always use _24 hour clock format");
+gchar *s = N_("Show choosable user images (face browser)");
+gchar *s = N_("Miscellaneous");
+gchar *s = N_("_No background");
+gchar *s = N_("_Image");
+gchar *s = N_("_Color");
+gchar *s = N_("_Scale background image to fit");
+gchar *s = N_("*");
+gchar *s = N_("_Only color on remote displays");
+gchar *s = N_("Background color: ");
+gchar *s = N_("Pick a color");
+gchar *s = N_("Background");
gchar *s = N_("Standard greeter");
+gchar *s = N_("<b>Preview:</b>");
+gchar *s = N_("No preview available");
+gchar *s = N_("_Install new theme");
+gchar *s = N_("Theme");
gchar *s = N_("Graphical greeter");
-gchar *s = N_("Allow root to login with GDM");
-gchar *s = N_("Allow root to login remotely with GDM");
-gchar *s = N_("Allow remote timed logins");
+gchar *s = N_("Allow _root to login with GDM");
+gchar *s = N_("Allow root to login r_emotely with GDM");
+gchar *s = N_("Allow remote _timed logins");
+gchar *s = N_("Show _system menu");
+gchar *s = N_("Allow _configuration from the login screen");
gchar *s = N_("Retry delay (seconds) :");
gchar *s = N_("Options");
gchar *s = N_("Security");
diff --git a/gui/gdmsetup.c b/gui/gdmsetup.c
index 8d88a97b..ce8375e0 100644
--- a/gui/gdmsetup.c
+++ b/gui/gdmsetup.c
@@ -49,6 +49,43 @@ static gboolean gdm_running = FALSE;
static GladeXML *xml;
static void
+update_greeters (void)
+{
+ char *p, *ret;
+ long pid;
+
+ if ( ! gdm_running)
+ return;
+
+ ret = gdmcomm_call_gdm (GDM_SUP_GREETERPIDS,
+ NULL /* auth_cookie */,
+ "2.3.90.2",
+ 5);
+ if (ret == NULL)
+ return;
+ p = strchr (ret, ' ');
+ if (p == NULL) {
+ g_free (ret);
+ return;
+ }
+ p++;
+
+ for (;;) {
+ if (sscanf (p, "%ld", &pid) != 1) {
+ g_free (ret);
+ return;
+ }
+ kill (pid, SIGHUP);
+ p = strchr (p, ';');
+ if (p == NULL) {
+ g_free (ret);
+ return;
+ }
+ p++;
+ }
+}
+
+static void
run_timeout (GtkWidget *widget, guint tm, gboolean (*func) (GtkWidget *))
{
guint id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget),
@@ -326,6 +363,102 @@ setup_intspin (const char *name,
G_CALLBACK (timeout_remove), NULL);
}
+static gboolean
+greeter_toggle_timeout (GtkWidget *toggle)
+{
+ const char *key = g_object_get_data (G_OBJECT (toggle), "key");
+
+ gnome_config_push_prefix ("=" GDM_CONFIG_FILE "=/");
+ gnome_config_set_bool (key, GTK_TOGGLE_BUTTON (toggle)->active);
+ gnome_config_pop_prefix ();
+
+ gnome_config_sync ();
+
+ update_greeters ();
+
+ return FALSE;
+}
+
+static void
+greeter_toggle_toggled (GtkWidget *toggle)
+{
+ run_timeout (toggle, 500, greeter_toggle_timeout);
+}
+
+static void
+setup_greeter_toggle (const char *name,
+ const char *key)
+{
+ GtkWidget *toggle = glade_helper_get (xml, name,
+ GTK_TYPE_TOGGLE_BUTTON);
+ gboolean val;
+
+ gnome_config_push_prefix ("=" GDM_CONFIG_FILE "=/");
+ val = gnome_config_get_bool (key);
+ gnome_config_pop_prefix ();
+
+ g_object_set_data_full (G_OBJECT (toggle),
+ "key", g_strdup (key),
+ (GDestroyNotify) g_free);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), val);
+
+ g_signal_connect (G_OBJECT (toggle), "toggled",
+ G_CALLBACK (greeter_toggle_toggled), NULL);
+ g_signal_connect (G_OBJECT (toggle), "destroy",
+ G_CALLBACK (timeout_remove), NULL);
+}
+
+static gboolean
+greeter_entry_timeout (GtkWidget *entry)
+{
+ const char *key = g_object_get_data (G_OBJECT (entry), "key");
+ const char *text;
+
+ text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ gnome_config_push_prefix ("=" GDM_CONFIG_FILE "=/");
+ gnome_config_set_string (key, ve_sure_string (text));
+ gnome_config_pop_prefix ();
+
+ gnome_config_sync ();
+
+ update_greeters ();
+
+ return FALSE;
+}
+
+static void
+greeter_entry_changed (GtkWidget *toggle)
+{
+ run_timeout (toggle, 500, greeter_entry_timeout);
+}
+
+static void
+setup_greeter_entry (const char *name,
+ const char *key)
+{
+ GtkWidget *entry = glade_helper_get (xml, name, GTK_TYPE_ENTRY);
+ char *val;
+
+ gnome_config_push_prefix ("=" GDM_CONFIG_FILE "=/");
+ val = gnome_config_get_string (key);
+ gnome_config_pop_prefix ();
+
+ g_object_set_data_full (G_OBJECT (entry),
+ "key", g_strdup (key),
+ (GDestroyNotify) g_free);
+
+ gtk_entry_set_text (GTK_ENTRY (entry), ve_sure_string (val));
+
+ g_signal_connect (G_OBJECT (entry), "changed",
+ G_CALLBACK (greeter_entry_changed), NULL);
+ g_signal_connect (G_OBJECT (entry), "destroy",
+ G_CALLBACK (timeout_remove), NULL);
+
+ g_free (val);
+}
+
static void
add_menuitem (GtkWidget *menu, const char *str, const char *label,
const char *select, GtkWidget **selected)
@@ -356,6 +489,12 @@ setup_greeter_option (const char *name,
val = gnome_config_get_string (key);
gnome_config_pop_prefix ();
+ if (val != NULL &&
+ strcmp (val, EXPANDED_BINDIR "/gdmlogin --disable-sound --disable-crash-dialog") == 0) {
+ g_free (val);
+ val = g_strdup (EXPANDED_BINDIR "/gdmlogin");
+ }
+
menu = gtk_menu_new ();
add_menuitem (menu, EXPANDED_BINDIR "/gdmlogin",
@@ -415,6 +554,68 @@ setup_xdmcp_support (void)
}
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);
+
+ 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);
+ } 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);
+ 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);
+ }
+}
+
+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);
+
+ 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);
+
+ background_toggled ();
+}
+
+static void
dialog_response (GtkWidget *dlg, int response, gpointer data)
{
if (response == GTK_RESPONSE_CLOSE) {
@@ -440,6 +641,7 @@ setup_gui (void)
G_CALLBACK (dialog_response), NULL);
setup_xdmcp_support ();
+ setup_background_support ();
setup_user_combo ("autologin_combo",
GDM_KEY_AUTOMATICLOGIN);
@@ -462,6 +664,12 @@ setup_gui (void)
setup_notify_toggle ("allowremoteauto",
GDM_KEY_ALLOWREMOTEAUTOLOGIN,
GDM_KEY_ALLOWREMOTEAUTOLOGIN /* notify_key */);
+ setup_notify_toggle ("sysmenu",
+ GDM_KEY_SYSMENU,
+ GDM_KEY_SYSMENU /* notify_key */);
+ setup_notify_toggle ("config_available",
+ GDM_KEY_CONFIG_AVAILABLE,
+ GDM_KEY_CONFIG_AVAILABLE /* notify_key */);
setup_notify_toggle ("enable_xdmcp",
GDM_KEY_XDMCP,
@@ -505,6 +713,20 @@ setup_gui (void)
setup_greeter_option ("local_greeter", GDM_KEY_GREETER);
setup_greeter_option ("remote_greeter", GDM_KEY_REMOTEGREETER);
+
+ /* Greeter configurations */
+
+ setup_greeter_toggle ("sg_use_24_clock",
+ GDM_KEY_USE_24_CLOCK);
+ setup_greeter_toggle ("sg_browser",
+ GDM_KEY_BROWSER);
+ setup_greeter_toggle ("sg_scale_background",
+ GDM_KEY_BACKGROUNDSCALETOFIT);
+ setup_greeter_toggle ("sg_remote_color_only",
+ GDM_KEY_BACKGROUNDREMOTEONLYCOLOR);
+
+ setup_greeter_entry ("sg_welcome",
+ GDM_KEY_WELCOME);
}
static gboolean
@@ -528,43 +750,6 @@ gdm_event (GSignalInvocationHint *ihint,
return TRUE;
}
-static void
-update_greeters (void)
-{
- char *p, *ret;
- long pid;
-
- if ( ! gdm_running)
- return;
-
- ret = gdmcomm_call_gdm (GDM_SUP_GREETERPIDS,
- NULL /* auth_cookie */,
- "2.3.90.2",
- 5);
- if (ret == NULL)
- return;
- p = strchr (ret, ' ');
- if (p == NULL) {
- g_free (ret);
- return;
- }
- p++;
-
- for (;;) {
- if (sscanf (p, "%ld", &pid) != 1) {
- g_free (ret);
- return;
- }
- kill (pid, SIGHUP);
- p = strchr (p, ';');
- if (p == NULL) {
- g_free (ret);
- return;
- }
- p++;
- }
-}
-
int
main (int argc, char *argv[])
{
diff --git a/gui/gdmsetup.glade b/gui/gdmsetup.glade
index 84e58a7b..db9a295c 100644
--- a/gui/gdmsetup.glade
+++ b/gui/gdmsetup.glade
@@ -2,6 +2,7 @@
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
+<requires lib="gnome"/>
<widget class="GtkDialog" id="setup_dialog">
<property name="visible">True</property>
@@ -345,6 +346,7 @@
<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>
@@ -469,27 +471,6 @@
</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">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">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
<widget class="GtkCombo" id="timedlogin_combo">
<property name="visible">True</property>
<property name="value_in_list">False</property>
@@ -527,6 +508,29 @@
<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="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">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">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
@@ -587,7 +591,463 @@
</child>
<child>
- <placeholder/>
+ <widget class="GtkTable" id="table6">
+ <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">3</property>
+ <property name="column_spacing">3</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GnomePixmapEntry" id="sg_logo">
+ <property name="visible">True</property>
+ <property name="history_id">logo</property>
+ <property name="max_saved">10</property>
+ <property name="modal">False</property>
+ <property name="do_preview">True</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry1">
+ <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" translatable="yes">*</property>
+ <property name="activates_default">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="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="sg_welcome_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Welcome string: </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>
+ <accessibility>
+ <atkrelation target="sg_welcome" type="label-for"/>
+ </accessibility>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="sg_welcome">
+ <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" translatable="yes">*</property>
+ <property name="activates_default">False</property>
+ <accessibility>
+ <atkrelation target="sg_welcome_label" type="labelled-by"/>
+ </accessibility>
+ </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>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <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.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </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>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame9">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="sg_use_24_clock">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Always use _24 hour clock format</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</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="sg_browser">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show choosable user images (face browser)</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</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>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Miscellaneous</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>
+ </widget>
+ <packing>
+ <property name="type">label_item</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">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame8">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <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="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="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="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>
+ <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">_Scale background image to fit</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</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="GnomePixmapEntry" id="sg_backimage">
+ <property name="visible">True</property>
+ <property name="history_id">background</property>
+ <property name="max_saved">10</property>
+ <property name="modal">False</property>
+ <property name="do_preview">True</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry2">
+ <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" translatable="yes">*</property>
+ <property name="activates_default">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="GtkCheckButton" id="sg_remote_color_only">
+ <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="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="hbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="sg_backcolor_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Background color: </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>
+ <accessibility>
+ <atkrelation target="sg_backcolor" type="label-for"/>
+ </accessibility>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GnomeColorPicker" id="sg_backcolor">
+ <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>
+ <accessibility>
+ <atkrelation target="sg_backcolor_label" type="controlled-by"/>
+ </accessibility>
+ </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>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Background</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>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
</child>
<child>
@@ -610,7 +1070,187 @@
</child>
<child>
- <placeholder/>
+ <widget class="GtkFrame" id="frame10">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <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>
+ </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="vbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Preview:&lt;/b&gt;</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>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkImage" id="gg_theme_preview">
+ <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>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="gg_theme_no_preview">
+ <property name="label" translatable="yes">No preview 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">False</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>
+ </widget>
+ </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="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkButton" id="button1">
+ <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>
+ <signal name="clicked" handler="install_new_theme" last_modification_time="Fri, 03 May 2002 22:48:54 GMT"/>
+ </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">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Theme</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>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
</child>
<child>
@@ -650,7 +1290,7 @@
<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="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="active">False</property>
@@ -668,7 +1308,7 @@
<widget class="GtkCheckButton" id="allowremoteroot">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Allow root to login remotely with GDM</property>
+ <property name="label" translatable="yes">Allow root to login r_emotely with GDM</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
@@ -686,7 +1326,43 @@
<widget class="GtkCheckButton" id="allowremoteauto">
<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">Allow remote _timed logins</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</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="sysmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show _system menu</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</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="config_available">
+ <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="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
@@ -1077,6 +1753,7 @@
<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>
@@ -1092,6 +1769,7 @@
<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>
@@ -1106,13 +1784,14 @@
<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>
+ <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>
@@ -1134,6 +1813,7 @@
<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>
@@ -1155,6 +1835,7 @@
<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>
@@ -1176,6 +1857,7 @@
<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>
@@ -1197,6 +1879,7 @@
<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>
@@ -1218,6 +1901,7 @@
<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>
@@ -1239,6 +1923,7 @@
<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>
</packing>
</child>