]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Support theme properties, use this to find the gtkrc in GNOME theme
authorunknown <robert.ancell@gmail.com>
Wed, 21 Jul 2010 07:30:17 +0000 (09:30 +0200)
committerunknown <robert.ancell@gmail.com>
Wed, 21 Jul 2010 07:30:17 +0000 (09:30 +0200)
13 files changed:
configure.ac
doc/ldmgreeter-sections.txt
doc/tmpl/greeter.sgml
greeters/ldm-gtk-greeter.c
greeters/ldm-webkit-greeter.c
libldmgreeter/greeter.c
libldmgreeter/greeter.h
src/Makefile.am
src/display.c
src/ldm-marshal.list [new file with mode: 0644]
themes/Makefile.am
themes/gnome/Makefile.am [new file with mode: 0644]
themes/gnome/gtkrc [new file with mode: 0644]

index a5c780dc6983a0918fe730c47ba9e20ca27c9739..ba52bba4e5ec7cf7df44faf224c848eb755da5cb 100644 (file)
@@ -179,6 +179,7 @@ libldmgreeter/Makefile
 po/Makefile.in
 src/Makefile
 themes/Makefile
+themes/gnome/Makefile
 themes/webkit/Makefile
 ])
 
index b3c1a48e3a254a9f66792968986293c4b51c4b03..81146c012da0300da2926e265692f55be8a111e0 100644 (file)
@@ -94,8 +94,9 @@ ldm_greeter_new
 ldm_greeter_connect
 ldm_greeter_get_hostname
 ldm_greeter_get_theme
-ldm_greeter_get_theme_string_property
-ldm_greeter_get_theme_integer_property
+ldm_greeter_get_string_property
+ldm_greeter_get_integer_property
+ldm_greeter_get_boolean_property
 ldm_greeter_get_num_users
 ldm_greeter_get_users
 ldm_greeter_get_languages
index c62f6d3cfa6530867a06a91f61dedab76887aec4..d689657c2b14604d5ee10d3d5c5b279fbf00b4f5 100644 (file)
@@ -146,6 +146,11 @@ g_object_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), NULL);
 
 </para>
 
+<!-- ##### ARG LdmGreeter:hostname ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG LdmGreeter:is-authenticated ##### -->
 <para>
 
@@ -194,6 +199,54 @@ g_object_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), NULL);
 @Returns: 
 
 
+<!-- ##### FUNCTION ldm_greeter_get_hostname ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_theme ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_string_property ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@name: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_integer_property ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@name: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_boolean_property ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@name: 
+@Returns: 
+
+
 <!-- ##### FUNCTION ldm_greeter_get_num_users ##### -->
 <para>
 
index 12c0797d1bcae7f80a3f4c3551b5e847d162b37a..ceff9e8b0947b17a1ee8fd0fbf5ebc352b7b1414 100644 (file)
@@ -127,6 +127,7 @@ a11y_contrast_cb (GtkWidget *widget)
 int
 main(int argc, char **argv)
 {
+    gchar *theme_dir, *rc_file, *rc_path;
     GdkWindow *root;
     const GList *items, *item;
     GSList *session_radio_list = NULL, *language_radio_list = NULL, *layout_radio_list = NULL;
@@ -154,9 +155,15 @@ main(int argc, char **argv)
 
     ldm_greeter_connect (greeter);
 
-      printf("2.%s\n", ldm_greeter_get_theme (greeter));
-
-    gtk_rc_add_default_file ("foo");
+    theme_dir = g_path_get_dirname (ldm_greeter_get_theme (greeter));
+    rc_file = ldm_greeter_get_string_property (greeter, "gtkrc");
+    if (rc_file)
+    {
+        rc_path = g_build_filename (theme_dir, rc_file, NULL);
+        g_free (rc_file);
+        gtk_rc_add_default_file (rc_path);
+    }
+    g_free (theme_dir);
 
     gtk_init (&argc, &argv);
 
index 19b3be7dad30ed04cb9f0f0cf6c785aa93730b29..cbc2c4a6c06fff298c84893797bd391f7e9c44e2 100644 (file)
@@ -492,6 +492,84 @@ get_timed_login_delay_cb (JSContextRef context,
     return JSValueMakeNumber (context, delay);
 }
 
+static JSValueRef
+get_string_property_cb (JSContextRef context,
+                        JSObjectRef function,
+                        JSObjectRef thisObject,
+                        size_t argumentCount,
+                        const JSValueRef arguments[],
+                        JSValueRef *exception)
+{
+    LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+    JSStringRef name_arg;
+    char name[1024];
+    gchar *value;
+    JSStringRef string;
+
+    // FIXME: Throw exception
+    if (argumentCount != 1)
+        return JSValueMakeNull (context);
+
+    name_arg = JSValueToStringCopy (context, arguments[0], NULL);
+    JSStringGetUTF8CString (name_arg, name, 1024);
+    JSStringRelease (name_arg);
+  
+    value = ldm_greeter_get_string_property (greeter, name);
+
+    if (!value)
+        return JSValueMakeNull (context);
+
+    string = JSStringCreateWithUTF8CString (value);
+    g_free (value);
+    return JSValueMakeString (context, string);
+}
+
+static JSValueRef
+get_integer_property_cb (JSContextRef context,
+                         JSObjectRef function,
+                         JSObjectRef thisObject,
+                         size_t argumentCount,
+                         const JSValueRef arguments[],
+                         JSValueRef *exception)
+{
+    LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+    JSStringRef name_arg;
+    char name[1024];
+
+    // FIXME: Throw exception
+    if (argumentCount != 1)
+        return JSValueMakeNull (context);
+
+    name_arg = JSValueToStringCopy (context, arguments[0], NULL);
+    JSStringGetUTF8CString (name_arg, name, 1024);
+    JSStringRelease (name_arg);
+  
+    return JSValueMakeNumber (context, ldm_greeter_get_integer_property (greeter, name));
+}
+
+static JSValueRef
+get_boolean_property_cb (JSContextRef context,
+                         JSObjectRef function,
+                         JSObjectRef thisObject,
+                         size_t argumentCount,
+                         const JSValueRef arguments[],
+                         JSValueRef *exception)
+{
+    LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+    JSStringRef name_arg;
+    char name[1024];
+
+    // FIXME: Throw exception
+    if (argumentCount != 1)
+        return JSValueMakeNull (context);
+
+    name_arg = JSValueToStringCopy (context, arguments[0], NULL);
+    JSStringGetUTF8CString (name_arg, name, 1024);
+    JSStringRelease (name_arg);
+
+    return JSValueMakeBoolean (context, ldm_greeter_get_boolean_property (greeter, name));
+}
+
 static JSValueRef
 cancel_timed_login_cb (JSContextRef context,
                        JSObjectRef function,
@@ -826,7 +904,10 @@ static const JSStaticValue ldm_greeter_values[] =
 
 static const JSStaticFunction ldm_greeter_functions[] =
 {
-    { "cancel_timed_login", cancel_timed_login_cb, kJSPropertyAttributeReadOnly },  
+    { "get_string_property", get_string_property_cb, kJSPropertyAttributeReadOnly },
+    { "get_integer_property", get_integer_property_cb, kJSPropertyAttributeReadOnly },
+    { "get_boolean_property", get_boolean_property_cb, kJSPropertyAttributeReadOnly },
+    { "cancel_timed_login", cancel_timed_login_cb, kJSPropertyAttributeReadOnly },
     { "start_authentication", start_authentication_cb, kJSPropertyAttributeReadOnly },
     { "provide_secret", provide_secret_cb, kJSPropertyAttributeReadOnly },
     { "cancel_authentication", cancel_authentication_cb, kJSPropertyAttributeReadOnly },
index cbc13a61ea2d8641350b25a7d1c0b160b1c2dcd9..d2a29abc10763b4ab2923ae08ea230fd5073cf08 100644 (file)
@@ -197,14 +197,14 @@ load_theme (LdmGreeter *greeter)
 }
 
 /**
- * ldm_greeter_get_string_theme:
+ * ldm_greeter_get_string_property:
  * @greeter: a #LdmGreeter
  * @name: the name of the property to get
  *
- * Return value: The value of this property or NULL if is not defined
+ * Return value: The value of this property or NULL if it is not defined
  **/
 gchar *
-ldm_greeter_get_theme_string_property (LdmGreeter *greeter, const gchar *name)
+ldm_greeter_get_string_property (LdmGreeter *greeter, const gchar *name)
 {
     GError *error = NULL;
     gchar *result;
@@ -220,14 +220,14 @@ ldm_greeter_get_theme_string_property (LdmGreeter *greeter, const gchar *name)
 }
 
 /**
- * ldm_greeter_get_int_theme:
+ * ldm_greeter_get_integer_property:
  * @greeter: a #LdmGreeter
  * @name: the name of the property to get
  *
- * Return value: The value of this property or NULL if is not defined
+ * Return value: The value of this property or 0 if it is not defined
  **/
 gint
-ldm_greeter_get_theme_integer_property (LdmGreeter *greeter, const gchar *name)
+ldm_greeter_get_integer_property (LdmGreeter *greeter, const gchar *name)
 {
     GError *error = NULL;
     gint result;
@@ -242,6 +242,29 @@ ldm_greeter_get_theme_integer_property (LdmGreeter *greeter, const gchar *name)
     return result;
 }
 
+/**
+ * ldm_greeter_get_boolean_property:
+ * @greeter: a #LdmGreeter
+ * @name: the name of the property to get
+ *
+ * Return value: The value of this property or FALSE if it is not defined
+ **/
+gboolean
+ldm_greeter_get_boolean_property (LdmGreeter *greeter, const gchar *name)
+{
+    GError *error = NULL;
+    gboolean result;
+
+    load_theme (greeter);
+
+    result = g_key_file_get_boolean (greeter->priv->theme_file, "theme", name, &error);
+    if (!result)
+        g_warning ("Error reading theme property: %s", error->message); // FIXME: Can handle G_KEY_FILE_ERROR_KEY_NOT_FOUND and G_KEY_FILE_ERROR_GROUP_NOT_FOUND
+    g_clear_error (&error);
+
+    return result;
+}
+
 #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)
 
index c3ba3c13be891cc89d8130e68d729e268d1654eb..bd6665e0ace7ae519ab4caebb6a180d22a851f6e 100644 (file)
@@ -60,9 +60,11 @@ const gchar *ldm_greeter_get_hostname (LdmGreeter *greeter);
 
 const gchar *ldm_greeter_get_theme (LdmGreeter *greeter);
 
-gchar *ldm_greeter_get_theme_string_property (LdmGreeter *greeter, const gchar *name);
+gchar *ldm_greeter_get_string_property (LdmGreeter *greeter, const gchar *name);
 
-gint ldm_greeter_get_theme_integer_property (LdmGreeter *greeter, const gchar *name);
+gint ldm_greeter_get_integer_property (LdmGreeter *greeter, const gchar *name);
+
+gboolean ldm_greeter_get_boolean_property (LdmGreeter *greeter, const gchar *name);
 
 gint ldm_greeter_get_num_users (LdmGreeter *greeter);
 
index e0a3b130e9f44634b087a93a9c6f3c8aec9b3928..a2da809f1b2684b02973453d7abc0abea55f3468 100644 (file)
@@ -69,7 +69,8 @@ lightdm_LDADD = \
        $(LIGHTDM_LIBS) \
        -lpam
 
-EXTRA_DIST = display-manager.xml \
+EXTRA_DIST = ldm-marshal.list \
+       display-manager.xml \
        display.xml \
        user-manager.xml
 
index 7a29772c0b9a73e160ccb419cf2376407f5dff93..736cc0f779b056b7c2f33bd78278cc9dcd536cfa 100644 (file)
@@ -357,7 +357,6 @@ display_connect (Display *display, const gchar **theme, const gchar **session, c
 
     filename = g_strdup_printf ("%s.theme", display->priv->greeter_theme);
     *theme = g_build_filename (THEME_DIR, filename, NULL);
-    printf("1.%s\n", *theme);
     g_free (filename);
     *session = g_strdup (display->priv->session_name);
     *username = g_strdup (display->priv->default_user);
diff --git a/src/ldm-marshal.list b/src/ldm-marshal.list
new file mode 100644 (file)
index 0000000..360a4c2
--- /dev/null
@@ -0,0 +1,2 @@
+BOOLEAN:OBJECT
+VOID:INT,POINTER
index 86ee7aa4885426be09b48c0b6c164c1fce0e234b..a12c5b9b21b050ac49cf780b9e82c5f94e929aa9 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS = webkit
+SUBDIRS = gnome webkit
 
 themedir = $(THEME_DIR)
 theme_DATA = gnome.theme webkit.theme
diff --git a/themes/gnome/Makefile.am b/themes/gnome/Makefile.am
new file mode 100644 (file)
index 0000000..bac1b44
--- /dev/null
@@ -0,0 +1,7 @@
+themedir = $(THEME_DIR)/gnome
+theme_DATA = gtkrc
+
+EXTRA_DIST = $(theme_DATA)
+
+DISTCLEANFILES = \
+       Makefile.in
diff --git a/themes/gnome/gtkrc b/themes/gnome/gtkrc
new file mode 100644 (file)
index 0000000..817e1f7
--- /dev/null
@@ -0,0 +1,9 @@
+gtk_theme_name = "HumanLogin"
+gtk_icon_theme_name = "LoginIcons"
+gtk_cursor_theme_name = "DMZ-White"
+gtk_font_name = "UbuntuBeta 10"
+# Not working, but set to 96*1024 (=96dpi)
+gtk_xft_dpi = 98304
+gtk_xft_hinting = 1
+gtk_xft_hintstyle = "hintslight"
+gtk_xft_rgba = "rgb"