]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
import gtk greeter
authorunknown <robert.ancell@gmail.com>
Tue, 20 Jul 2010 15:42:18 +0000 (17:42 +0200)
committerunknown <robert.ancell@gmail.com>
Tue, 20 Jul 2010 15:42:18 +0000 (17:42 +0200)
doc/ldmgreeter-sections.txt
greeters/ldm-gtk-greeter.c
greeters/ldm-webkit-greeter.c
libldmgreeter/greeter.c
libldmgreeter/greeter.h

index 480b85c62387a5a855d4c4dbb6227590e375b132..c0a02c0371b24f70916f10fdb3e5305427650528 100644 (file)
@@ -92,6 +92,7 @@ ldm_session_new
 LdmGreeter
 ldm_greeter_new
 ldm_greeter_connect
+ldm_greeter_get_hostname
 ldm_greeter_get_num_users
 ldm_greeter_get_users
 ldm_greeter_get_languages
index 5b81d87d8f46379e78f6119920fc5d9e6407d747..6d1aa3d722431ba0fe70b3e0d1a307b51ea1cbd8 100644 (file)
@@ -16,7 +16,7 @@
 
 static LdmGreeter *greeter;
 static GtkListStore *user_model;
-static GtkWidget *user_window, *vbox, *label, *user_view;
+static GtkWidget *user_window, *vbox, *message_label, *user_view;
 static GtkWidget *username_entry, *password_entry;
 static GtkWidget *panel_window;
 
@@ -59,8 +59,8 @@ show_prompt_cb (LdmGreeter *greeter, const gchar *text)
 static void
 show_message_cb (LdmGreeter *greeter, const gchar *text)
 {
-    gtk_widget_show (label);
-    gtk_label_set_text (GTK_LABEL (label), text);
+    gtk_widget_show (message_label);
+    gtk_label_set_text (GTK_LABEL (message_label), text);
 }
 
 static void
@@ -72,8 +72,8 @@ authentication_complete_cb (LdmGreeter *greeter)
     }
     else
     {
-        gtk_widget_show (label);
-        gtk_label_set_text (GTK_LABEL (label), "Failed to authenticate");
+        gtk_widget_show (message_label);
+        gtk_label_set_text (GTK_LABEL (message_label), "Failed to authenticate");
         gtk_entry_set_text (GTK_ENTRY (password_entry), "");
         gtk_widget_grab_focus (username_entry);
     }
@@ -105,6 +105,25 @@ session_changed_cb (GtkWidget *widget)
         ldm_greeter_set_session (greeter, g_object_get_data (G_OBJECT (widget), "key"));
 }
 
+static void
+a11y_font_cb (GtkWidget *widget)
+{
+    if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+        g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 20", NULL);
+    else
+        g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 10", NULL);
+}
+
+static void
+a11y_contrast_cb (GtkWidget *widget)
+{
+    if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+        g_object_set (gtk_settings_get_default (), "gtk-theme-name", "HighContrastInverse", NULL);
+    else
+        g_object_set (gtk_settings_get_default (), "gtk-theme-name", "Ambiance", NULL);
+        ldm_greeter_set_session (greeter, g_object_get_data (G_OBJECT (widget), "key"));  
+}
+
 int
 main(int argc, char **argv)
 {
@@ -116,13 +135,30 @@ main(int argc, char **argv)
     GdkScreen *screen;
     gint screen_width, screen_height;
     GtkAllocation allocation;
+    GtkWidget *logo_image;
     GtkWidget *option_menu, *power_menu;
     GtkWidget *menu_bar, *menu, *menu_item;
     GdkColor background_color;
     gint n_power_items = 0;
 
+    gtk_rc_add_default_file ("foo");
+    gchar **i, **files = gtk_rc_get_default_files ();
+    for (i = files; *i; i++)
+    {
+      printf("%s\n", *i);
+    }
+  
     gtk_init (&argc, &argv);
 
+    g_object_set (gtk_settings_get_default (), "gtk-theme-name", "HumanLogin", NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-icon-theme-name", "LoginIcons", NULL);
+//    g_object_set (gtk_settings_get_default (), "gtk-cursor-theme-name", "DMZ-White", NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 10", NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-xft-dpi", 1024*96, NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-xft-hinting", 1, NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-xft-hintstyle", "hintslight", NULL);
+    g_object_set (gtk_settings_get_default (), "gtk-xft-rgba", "rgb", NULL);
+
     greeter = ldm_greeter_new ();
 
     g_signal_connect (G_OBJECT (greeter), "show-prompt", G_CALLBACK (show_prompt_cb), NULL);  
@@ -156,9 +192,14 @@ main(int argc, char **argv)
     vbox = gtk_vbox_new (FALSE, 6);
     gtk_container_add (GTK_CONTAINER (user_window), vbox);
 
-    label = gtk_label_new ("");
-    gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-    gtk_widget_set_no_show_all (label, TRUE);    
+    logo_image = gtk_image_new_from_icon_name ("computer", GTK_ICON_SIZE_DIALOG);
+    gtk_image_set_pixel_size (GTK_IMAGE (logo_image), 64);
+    gtk_box_pack_start (GTK_BOX (vbox), logo_image, FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (ldm_greeter_get_hostname (greeter)), FALSE, FALSE, 0);
+
+    message_label = gtk_label_new ("");
+    gtk_box_pack_start (GTK_BOX (vbox), message_label, FALSE, FALSE, 0);
+    gtk_widget_set_no_show_all (message_label, TRUE);
 
     user_model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF);
     items = ldm_greeter_get_users (greeter);
@@ -213,7 +254,7 @@ main(int argc, char **argv)
     gtk_widget_set_no_show_all (username_entry, TRUE);
 
     password_entry = gtk_entry_new ();
-    //gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE);
+    gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE);
     gtk_widget_set_sensitive (password_entry, FALSE);
     gtk_box_pack_start (GTK_BOX (vbox), password_entry, FALSE, FALSE, 0);
     g_signal_connect (password_entry, "activate", G_CALLBACK (password_activate_cb), NULL);
@@ -240,12 +281,16 @@ main(int argc, char **argv)
     gtk_menu_item_set_label (GTK_MENU_ITEM (menu_item), ""); // NOTE: Needed to make the icon show as selected
     gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menu_item), TRUE);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item);
-
     menu = gtk_menu_new ();
     gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?1"));
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?2"));
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?3"));
+
+    menu_item = gtk_check_menu_item_new_with_label (_("Large Font"));
+    g_signal_connect (menu_item, "toggled", G_CALLBACK (a11y_font_cb), NULL);
+    gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+
+    menu_item = gtk_check_menu_item_new_with_label (_("High Constrast"));
+    g_signal_connect (menu_item, "toggled", G_CALLBACK (a11y_contrast_cb), NULL);
+    gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
 
     menu_item = gtk_menu_item_new_with_label (_("Options"));
     gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item);
index 08eaba77b62060ebfab6cac301ab80eab24fd3cb..19b3be7dad30ed04cb9f0f0cf6c785aa93730b29 100644 (file)
@@ -240,6 +240,20 @@ get_session_comment_cb (JSContextRef context,
     return JSValueMakeString (context, string);
 }
 
+static JSValueRef
+get_hostname_cb (JSContextRef context,
+                 JSObjectRef thisObject,
+                 JSStringRef propertyName,
+                 JSValueRef *exception)
+{
+    LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+    JSStringRef string;
+
+    string = JSStringCreateWithUTF8CString (ldm_greeter_get_hostname (greeter));
+
+    return JSValueMakeString (context, string);
+}
+
 static JSValueRef
 get_num_users_cb (JSContextRef context,
                   JSObjectRef thisObject,
@@ -791,6 +805,7 @@ static const JSStaticValue ldm_session_values[] =
 
 static const JSStaticValue ldm_greeter_values[] =
 {
+    { "hostname", get_hostname_cb, NULL, kJSPropertyAttributeReadOnly },  
     { "users", get_users_cb, NULL, kJSPropertyAttributeReadOnly },
     { "languages", get_languages_cb, NULL, kJSPropertyAttributeReadOnly },
     { "language", get_language_cb, NULL, kJSPropertyAttributeReadOnly },
index cc9e786ac0ebec6a84996161665d6e69e2c10d73..44c33193fa1761c421c4976b8f75f0b8d1ba537c 100644 (file)
@@ -12,6 +12,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <locale.h>
+#include <sys/utsname.h>
 
 #include <gio/gdesktopappinfo.h>
 #include <dbus/dbus-glib.h>
@@ -22,6 +23,7 @@
 
 enum {
     PROP_0,
+    PROP_HOSTNAME,  
     PROP_NUM_USERS,
     PROP_USERS,
     PROP_LAYOUTS,
@@ -58,6 +60,8 @@ struct _LdmGreeterPrivate
 
     Display *display;
 
+    gchar *hostname;
+
     gboolean have_users;
     GList *users;
   
@@ -143,6 +147,25 @@ ldm_greeter_connect (LdmGreeter *greeter)
     return result;
 }
 
+/**
+ * ldm_greeter_get_hostname:
+ * @greeter: a #LdmGreeter
+ *
+ * Return value: The host this greeter is displaying
+ **/
+const gchar *
+ldm_greeter_get_hostname (LdmGreeter *greeter)
+{
+    if (!greeter->priv->hostname)
+    {
+        struct utsname info;
+        uname (&info);
+        greeter->priv->hostname = g_strdup (info.nodename);
+    }
+
+    return greeter->priv->hostname;
+}
+
 #define TYPE_USER dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID)
 #define TYPE_USER_LIST dbus_g_type_get_collection ("GPtrArray", TYPE_USER)
 
@@ -705,7 +728,7 @@ gboolean
 ldm_greeter_get_can_suspend (LdmGreeter *greeter)
 {
     DBusGProxy *proxy;
-    gboolean result = FALSE;
+    gboolean result = TRUE;
     GError *error = NULL;
 
     proxy = dbus_g_proxy_new_for_name (greeter->priv->system_bus,
@@ -973,6 +996,9 @@ ldm_greeter_get_property(GObject    *object,
     self = LDM_GREETER (object);
 
     switch (prop_id) {
+    case PROP_HOSTNAME:
+        g_value_set_string (value, ldm_greeter_get_hostname (self));
+        break;
     case PROP_NUM_USERS:
         g_value_set_int (value, ldm_greeter_get_num_users (self));
         break;
@@ -1025,91 +1051,98 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
     object_class->set_property = ldm_greeter_set_property;
     object_class->get_property = ldm_greeter_get_property;
 
-    g_object_class_install_property(object_class,
-                                    PROP_NUM_USERS,
-                                    g_param_spec_int("num-users",
-                                                     "num- users",
-                                                     "Number of login users",
-                                                     0, G_MAXINT, 0,
-                                                     G_PARAM_READABLE));
-    /*g_object_class_install_property(object_class,
-                                    PROP_USERS,
-                                    g_param_spec_list("users",
-                                                      "users",
-                                                      "Users that can login"));
-    g_object_class_install_property(object_class,
-                                    PROP_LAYOUTS,
-                                    g_param_spec_list("layouts",
-                                                      "layouts",
-                                                      "Available keyboard layouts"));*/
-    g_object_class_install_property(object_class,
-                                    PROP_LAYOUT,
-                                    g_param_spec_string("layout",
-                                                        "layout",
-                                                        "Current keyboard layout",
-                                                        NULL,
-                                                        G_PARAM_READWRITE));
-    /*g_object_class_install_property(object_class,
-                                    PROP_SESSIONS,
-                                    g_param_spec_list("sessions",
-                                                      "sessions",
-                                                      "Available sessions"));*/
-    g_object_class_install_property(object_class,
-                                    PROP_SESSION,
-                                    g_param_spec_string("session",
-                                                        "session",
-                                                        "Selected session",
-                                                        NULL,
-                                                        G_PARAM_READWRITE));
-    g_object_class_install_property(object_class,
-                                    PROP_TIMED_LOGIN_USER,
-                                    g_param_spec_string("timed-login-user",
-                                                        "timed-login-user",
-                                                        "User to login as when timed expires",
-                                                        NULL,
-                                                        G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_TIMED_LOGIN_DELAY,
-                                    g_param_spec_int("login-delay",
-                                                     "login-delay",
-                                                     "Number of seconds until logging in as default user",
-                                                     G_MININT, G_MAXINT, 0,
-                                                     G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_IS_AUTHENTICATED,
-                                    g_param_spec_boolean("is-authenticated",
-                                                         "is-authenticated",
-                                                         "TRUE if the selected user is authenticated",
-                                                         FALSE,
-                                                         G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_CAN_SUSPEND,
-                                    g_param_spec_boolean("can-suspend",
-                                                         "can-suspend",
-                                                         "TRUE if allowed to suspend the system",
-                                                         FALSE,
-                                                         G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_CAN_HIBERNATE,
-                                    g_param_spec_boolean("can-hibernate",
-                                                         "can-hibernate",
-                                                         "TRUE if allowed to hibernate the system",
-                                                         FALSE,
-                                                         G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_CAN_RESTART,
-                                    g_param_spec_boolean("can-restart",
-                                                         "can-restart",
-                                                         "TRUE if allowed to restart the system",
-                                                         FALSE,
-                                                         G_PARAM_READABLE));
-    g_object_class_install_property(object_class,
-                                    PROP_CAN_SHUTDOWN,
-                                    g_param_spec_boolean("can-shutdown",
-                                                         "can-shutdown",
-                                                         "TRUE if allowed to shutdown the system",
-                                                         FALSE,
-                                                         G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_NUM_USERS,
+                                     g_param_spec_string ("hostname",
+                                                          "hostname",
+                                                          "Hostname displaying greeter for",
+                                                          NULL,
+                                                          G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_NUM_USERS,
+                                     g_param_spec_int ("num-users",
+                                                       "num-users",
+                                                       "Number of login users",
+                                                       0, G_MAXINT, 0,
+                                                       G_PARAM_READABLE));
+    /*g_object_class_install_property (object_class,
+                                     PROP_USERS,
+                                     g_param_spec_list ("users",
+                                                        "users",
+                                                        "Users that can login"));
+    g_object_class_install_property (object_class,
+                                     PROP_LAYOUTS,
+                                     g_param_spec_list ("layouts",
+                                                        "layouts",
+                                                        "Available keyboard layouts"));*/
+    g_object_class_install_property (object_class,
+                                     PROP_LAYOUT,
+                                     g_param_spec_string ("layout",
+                                                          "layout",
+                                                          "Current keyboard layout",
+                                                          NULL,
+                                                          G_PARAM_READWRITE));
+    /*g_object_class_install_property (object_class,
+                                     PROP_SESSIONS,
+                                     g_param_spec_list ("sessions",
+                                                        "sessions",
+                                                        "Available sessions"));*/
+    g_object_class_install_property (object_class,
+                                     PROP_SESSION,
+                                     g_param_spec_string ("session",
+                                                          "session",
+                                                          "Selected session",
+                                                          NULL,
+                                                          G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_TIMED_LOGIN_USER,
+                                     g_param_spec_string ("timed-login-user",
+                                                          "timed-login-user",
+                                                          "User to login as when timed expires",
+                                                          NULL,
+                                                          G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_TIMED_LOGIN_DELAY,
+                                     g_param_spec_int ("login-delay",
+                                                       "login-delay",
+                                                       "Number of seconds until logging in as default user",
+                                                       G_MININT, G_MAXINT, 0,
+                                                       G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_IS_AUTHENTICATED,
+                                     g_param_spec_boolean ("is-authenticated",
+                                                           "is-authenticated",
+                                                           "TRUE if the selected user is authenticated",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_CAN_SUSPEND,
+                                     g_param_spec_boolean ("can-suspend",
+                                                           "can-suspend",
+                                                           "TRUE if allowed to suspend the system",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_CAN_HIBERNATE,
+                                     g_param_spec_boolean ("can-hibernate",
+                                                           "can-hibernate",
+                                                           "TRUE if allowed to hibernate the system",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_CAN_RESTART,
+                                     g_param_spec_boolean ("can-restart",
+                                                           "can-restart",
+                                                           "TRUE if allowed to restart the system",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_CAN_SHUTDOWN,
+                                     g_param_spec_boolean ("can-shutdown",
+                                                           "can-shutdown",
+                                                           "TRUE if allowed to shutdown the system",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
 
     /**
      * LdmGreeter::show-prompt:
index addfe9841c1e01a88b7976a6f0b14daf7eca3d36..f927e9410cc82a81d7aaad34a352baa659bafee9 100644 (file)
@@ -56,6 +56,8 @@ LdmGreeter *ldm_greeter_new (void);
 
 gboolean ldm_greeter_connect (LdmGreeter *greeter);
 
+const gchar *ldm_greeter_get_hostname (LdmGreeter *greeter);
+
 gint ldm_greeter_get_num_users (LdmGreeter *greeter);
 
 const GList *ldm_greeter_get_users (LdmGreeter *greeter);