gdm r5788 - in trunk: . gui/simple-greeter



Author: mccann
Date: Mon Feb 18 18:28:08 2008
New Revision: 5788
URL: http://svn.gnome.org/viewvc/gdm?rev=5788&view=rev

Log:
2008-02-18  William Jon McCann  <jmccann redhat com>

	* gui/simple-greeter/gdm-language-option-widget.c:
	(gdm_language_option_widget_new):
	* gui/simple-greeter/gdm-option-widget.c:
	(gdm_option_widget_get_icon_name),
	(gdm_option_widget_set_icon_name),
	(gdm_option_widget_set_property), (gdm_option_widget_get_property),
	(gdm_option_widget_class_init), (gdm_option_widget_init),
	(gdm_option_widget_finalize):
	* gui/simple-greeter/gdm-session-option-widget.c:
	(gdm_session_option_widget_new):
	Add icons for language and session choosers.



Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-language-option-widget.c
   trunk/gui/simple-greeter/gdm-option-widget.c
   trunk/gui/simple-greeter/gdm-session-option-widget.c

Modified: trunk/gui/simple-greeter/gdm-language-option-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-language-option-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-language-option-widget.c	Mon Feb 18 18:28:08 2008
@@ -210,6 +210,7 @@
 
         object = g_object_new (GDM_TYPE_LANGUAGE_OPTION_WIDGET,
                                "label-text", _("_Language:"),
+                               "icon-name", "config-language",
                                "max-item-count", 8,
                                NULL);
 

Modified: trunk/gui/simple-greeter/gdm-option-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-option-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-option-widget.c	Mon Feb 18 18:28:08 2008
@@ -50,7 +50,9 @@
 struct GdmOptionWidgetPrivate
 {
         GtkWidget                *label;
+        GtkWidget                *image;
         char                     *label_text;
+        char                     *icon_name;
 
         GtkWidget                *items_combo_box;
         GtkListStore             *list_store;
@@ -69,7 +71,8 @@
 
 enum {
         PROP_0,
-        PROP_LABEL_TEXT
+        PROP_LABEL_TEXT,
+        PROP_ICON_NAME
 };
 
 enum {
@@ -277,11 +280,45 @@
         }
 }
 
+static const char *
+gdm_option_widget_get_icon_name (GdmOptionWidget *widget)
+{
+        return widget->priv->icon_name;
+}
+
+static void
+gdm_option_widget_set_icon_name (GdmOptionWidget *widget,
+                                 const char      *name)
+{
+        if (name == NULL && widget->priv->icon_name != NULL) {
+                /* remove icon */
+                g_free (widget->priv->icon_name);
+                widget->priv->icon_name = NULL;
+                gtk_widget_hide (widget->priv->image);
+                gtk_image_clear (GTK_IMAGE (widget->priv->image));
+                g_object_notify (G_OBJECT (widget), "icon-name");
+        } else if (name != NULL && widget->priv->icon_name == NULL) {
+                /* add icon */
+                widget->priv->icon_name = g_strdup (name);
+                gtk_widget_show (widget->priv->image);
+                gtk_image_set_from_icon_name (GTK_IMAGE (widget->priv->image), name, GTK_ICON_SIZE_BUTTON);
+                g_object_notify (G_OBJECT (widget), "icon-name");
+        } else if (name != NULL
+                   && widget->priv->icon_name != NULL
+                   && strcmp (widget->priv->icon_name, name) != 0) {
+                /* changed icon */
+                g_free (widget->priv->icon_name);
+                widget->priv->icon_name = g_strdup (name);
+                gtk_image_set_from_icon_name (GTK_IMAGE (widget->priv->image), name, GTK_ICON_SIZE_BUTTON);
+                g_object_notify (G_OBJECT (widget), "icon-name");
+        }
+}
+
 static void
 gdm_option_widget_set_property (GObject        *object,
-                                 guint           prop_id,
-                                 const GValue   *value,
-                                 GParamSpec     *pspec)
+                                guint           prop_id,
+                                const GValue   *value,
+                                GParamSpec     *pspec)
 {
         GdmOptionWidget *self;
 
@@ -291,7 +328,9 @@
         case PROP_LABEL_TEXT:
                 gdm_option_widget_set_label_text (self, g_value_get_string (value));
                 break;
-
+        case PROP_ICON_NAME:
+                gdm_option_widget_set_icon_name (self, g_value_get_string (value));
+                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                 break;
@@ -313,6 +352,10 @@
                 g_value_set_string (value,
                                     gdm_option_widget_get_label_text (self));
                 break;
+        case PROP_ICON_NAME:
+                g_value_set_string (value,
+                                    gdm_option_widget_get_icon_name (self));
+                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                 break;
@@ -321,8 +364,8 @@
 
 static GObject *
 gdm_option_widget_constructor (GType                  type,
-                                guint                  n_construct_properties,
-                                GObjectConstructParam *construct_properties)
+                               guint                  n_construct_properties,
+                               GObjectConstructParam *construct_properties)
 {
         GdmOptionWidget      *option_widget;
         GdmOptionWidgetClass *klass;
@@ -392,6 +435,14 @@
                                                               NULL,
                                                               (G_PARAM_READWRITE |
                                                                G_PARAM_CONSTRUCT)));
+        g_object_class_install_property (object_class,
+                                         PROP_ICON_NAME,
+                                         g_param_spec_string ("icon-name",
+                                                              _("Icon name"),
+                                                              _("The icon to use with the label"),
+                                                              NULL,
+                                                              (G_PARAM_READWRITE |
+                                                               G_PARAM_CONSTRUCT)));
 
 
         g_type_class_add_private (klass, sizeof (GdmOptionWidgetPrivate));
@@ -688,11 +739,16 @@
         gtk_container_add (GTK_CONTAINER (widget),
                            box);
 
+
+        widget->priv->image = gtk_image_new ();
+        gtk_widget_set_no_show_all (widget->priv->image, TRUE);
+        gtk_box_pack_start (GTK_BOX (box), widget->priv->image, FALSE, FALSE, 0);
+
         widget->priv->label = gtk_label_new ("");
         gtk_label_set_use_underline (GTK_LABEL (widget->priv->label), TRUE);
         gtk_label_set_use_markup (GTK_LABEL (widget->priv->label), TRUE);
         gtk_widget_show (widget->priv->label);
-        gtk_container_add (GTK_CONTAINER (box), widget->priv->label);
+        gtk_box_pack_start (GTK_BOX (box), widget->priv->label, FALSE, FALSE, 0);
 
         widget->priv->items_combo_box = gtk_combo_box_new ();
         g_signal_connect (widget->priv->items_combo_box,
@@ -760,6 +816,9 @@
 
         g_return_if_fail (widget->priv != NULL);
 
+        g_free (widget->priv->icon_name);
+        g_free (widget->priv->label_text);
+
         G_OBJECT_CLASS (gdm_option_widget_parent_class)->finalize (object);
 }
 

Modified: trunk/gui/simple-greeter/gdm-session-option-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-session-option-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-session-option-widget.c	Mon Feb 18 18:28:08 2008
@@ -168,6 +168,7 @@
 
         object = g_object_new (GDM_TYPE_SESSION_OPTION_WIDGET,
                                "label-text", _("_Sessions:"),
+                               "icon-name", "session-properties",
                                NULL);
 
         return GTK_WIDGET (object);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]