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



Author: halfline
Date: Fri Feb  1 16:18:10 2008
New Revision: 5669
URL: http://svn.gnome.org/viewvc/gdm?rev=5669&view=rev

Log:
2008-02-01  Ray Strode  <rstrode redhat com>

	Put language selector in panel

	* configure.ac: put gconf libs in $GCONF_LIBS
	* gui/simple-greeter/Makefile.am: add widget to makefile
	New subclass of gdm-recent-option-widget that shows
	recently used languages.
	* gui/simple-greeter/gdm-greeter-panel.c
	(gdm_greeter_panel_class_init): create new 'language-selected' signal
	(on_language_activated): new function to emit language-selected when
	language option widget is changed
	(gdm_greeter_panel_init): drop dummy label, add option-widget to panel
	* gui/simple-greeter/gdm-greeter-session.c (on_select_language):
	move user data to first argument and drop GdmGreeterLoginWindow arg
	(toggle_panel): call on_select_language when language-selected is
	emitted from panel
	(toggle_login_window): s/connect/connect_swapped/ to deal with
	on_select_language signature change


Modified:
   trunk/ChangeLog
   trunk/configure.ac
   trunk/gui/simple-greeter/Makefile.am
   trunk/gui/simple-greeter/gdm-greeter-panel.c
   trunk/gui/simple-greeter/gdm-greeter-panel.h
   trunk/gui/simple-greeter/gdm-greeter-session.c

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Fri Feb  1 16:18:10 2008
@@ -82,6 +82,12 @@
 AC_SUBST(GTK_CFLAGS)
 AC_SUBST(GTK_LIBS)
 
+PKG_CHECK_MODULES(GCONF,
+        gconf-2.0 >= $GCONF_REQUIRED_VERSION
+)
+AC_SUBST(GCONF_CFLAGS)
+AC_SUBST(GCONF_LIBS)
+
 PKG_CHECK_MODULES(SIMPLE_GREETER,
         dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
         gtk+-2.0 >= $GTK_REQUIRED_VERSION

Modified: trunk/gui/simple-greeter/Makefile.am
==============================================================================
--- trunk/gui/simple-greeter/Makefile.am	(original)
+++ trunk/gui/simple-greeter/Makefile.am	Fri Feb  1 16:18:10 2008
@@ -68,11 +68,27 @@
 	test-greeter-panel.c	\
 	gdm-greeter-panel.h	\
 	gdm-greeter-panel.c	\
+	gdm-option-widget.h     \
+	gdm-option-widget.c     \
+	gdm-recent-option-widget.h	\
+	gdm-recent-option-widget.c	\
+	gdm-languages.h			\
+	gdm-languages.c			\
+	gdm-chooser-widget.h		\
+	gdm-chooser-widget.c		\
+	gdm-language-chooser-widget.h	\
+	gdm-language-chooser-widget.c	\
+	locarchive.h			\
+	gdm-language-chooser-dialog.h	\
+	gdm-language-chooser-dialog.c	\
+	gdm-language-option-widget.h	\
+	gdm-language-option-widget.c	\
 	$(NULL)
 
 test_greeter_panel_LDADD =	\
 	$(top_builddir)/gui/simple-greeter/libnotificationarea/libnotificationarea.la	\
 	$(GTK_LIBS)		\
+	$(GCONF_LIBS)		\
 	$(NULL)
 
 test_remote_login_window_SOURCES = 	\
@@ -171,6 +187,19 @@
 	gdm-remote-login-window.h	\
 	gdm-greeter-panel.h		\
 	gdm-greeter-panel.c		\
+	gdm-option-widget.h		\
+	gdm-option-widget.c		\
+	gdm-recent-option-widget.h	\
+	gdm-recent-option-widget.c	\
+	gdm-languages.h			\
+	gdm-languages.c			\
+	gdm-language-chooser-widget.h	\
+	gdm-language-chooser-widget.c	\
+	locarchive.h			\
+	gdm-language-chooser-dialog.h	\
+	gdm-language-chooser-dialog.c	\
+	gdm-language-option-widget.h	\
+	gdm-language-option-widget.c	\
 	gdm-session-chooser-widget.h	\
 	gdm-session-chooser-widget.c	\
 	gdm-user-chooser-widget.h	\

Modified: trunk/gui/simple-greeter/gdm-greeter-panel.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-panel.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-panel.c	Fri Feb  1 16:18:10 2008
@@ -31,6 +31,7 @@
 #include <gtk/gtk.h>
 
 #include "gdm-greeter-panel.h"
+#include "gdm-language-option-widget.h"
 
 #include "na-tray.h"
 
@@ -42,12 +43,20 @@
         GdkRectangle            geometry;
         GtkWidget              *hbox;
         GtkWidget              *hostname_label;
+        GtkWidget              *language_option_widget;
 };
 
 enum {
         PROP_0,
 };
 
+enum {
+        LANGUAGE_SELECTED,
+        NUMBER_OF_SIGNALS
+};
+
+static guint signals [NUMBER_OF_SIGNALS] = { 0, };
+
 static void     gdm_greeter_panel_class_init  (GdmGreeterPanelClass *klass);
 static void     gdm_greeter_panel_init        (GdmGreeterPanel      *greeter_panel);
 static void     gdm_greeter_panel_finalize    (GObject              *object);
@@ -367,14 +376,41 @@
         widget_class->realize = gdm_greeter_panel_real_realize;
         widget_class->unrealize = gdm_greeter_panel_real_unrealize;
         widget_class->size_request = gdm_greeter_panel_real_size_request;
+        signals[LANGUAGE_SELECTED] =
+                g_signal_new ("language-selected",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GdmGreeterPanelClass, language_selected),
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__STRING,
+                              G_TYPE_NONE,
+                              1, G_TYPE_STRING);
 
         g_type_class_add_private (klass, sizeof (GdmGreeterPanelPrivate));
 }
 
 static void
+on_language_activated (GdmLanguageOptionWidget *widget,
+                       GdmGreeterPanel         *panel)
+{
+
+        char *language;
+
+        language = gdm_language_option_widget_get_current_language_name (GDM_LANGUAGE_OPTION_WIDGET (panel->priv->language_option_widget));
+
+        if (language == NULL) {
+                return;
+        }
+
+        g_signal_emit (panel, signals[LANGUAGE_SELECTED], 0, language);
+
+        g_free (language);
+}
+
+static void
 gdm_greeter_panel_init (GdmGreeterPanel *panel)
 {
-        GtkWidget *label;
         NaTray    *tray;
 
         panel->priv = GDM_GREETER_PANEL_GET_PRIVATE (panel);
@@ -394,13 +430,16 @@
         gtk_window_set_opacity (GTK_WINDOW (panel), 0.75);
 
         panel->priv->hbox = gtk_hbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (panel->priv->hbox), 2);
         gtk_widget_show (panel->priv->hbox);
         gtk_container_add (GTK_CONTAINER (panel), panel->priv->hbox);
 
-        /* Add a label so that the panel gets sized correctly */
-        label = gtk_label_new ("");
-        gtk_box_pack_start (GTK_BOX (panel->priv->hbox), label, FALSE, FALSE, 6);
-        gtk_widget_show (label);
+        panel->priv->language_option_widget = gdm_language_option_widget_new ();
+        g_signal_connect (G_OBJECT (panel->priv->language_option_widget),
+                          "language-activated",
+                          G_CALLBACK (on_language_activated), panel);
+        gtk_box_pack_start (GTK_BOX (panel->priv->hbox), panel->priv->language_option_widget, FALSE, FALSE, 6);
+        gtk_widget_show (panel->priv->language_option_widget);
 
         /* FIXME: we should only show hostname on panel when connected
            to a remote host */

Modified: trunk/gui/simple-greeter/gdm-greeter-panel.h
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-panel.h	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-panel.h	Fri Feb  1 16:18:10 2008
@@ -44,6 +44,9 @@
 typedef struct
 {
         GtkWindowClass   parent_class;
+
+        void (* language_selected)           (GdmGreeterPanel *panel,
+                                              const char      *text);
 } GdmGreeterPanelClass;
 
 GType                  gdm_greeter_panel_get_type                       (void);

Modified: trunk/gui/simple-greeter/gdm-greeter-session.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-session.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-session.c	Fri Feb  1 16:18:10 2008
@@ -161,9 +161,8 @@
 }
 
 static void
-on_select_language (GdmGreeterLoginWindow *login_window,
-                    const char            *text,
-                    GdmGreeterSession     *session)
+on_select_language (GdmGreeterSession     *session,
+                    const char            *text)
 {
         gdm_greeter_client_call_select_language (session->priv->client,
                                                  text);
@@ -208,6 +207,12 @@
 {
         if (enabled) {
                 session->priv->panel = gdm_greeter_panel_new ();
+
+                g_signal_connect_swapped (session->priv->panel,
+                                          "language-selected",
+                                          G_CALLBACK (on_select_language),
+                                          session);
+
                 gtk_widget_show (session->priv->panel);
         } else {
                 gtk_widget_destroy (session->priv->panel);
@@ -243,10 +248,10 @@
                                   "session-selected",
                                   G_CALLBACK (on_select_session),
                                   session);
-                g_signal_connect (session->priv->login_window,
-                                  "language-selected",
-                                  G_CALLBACK (on_select_language),
-                                  session);
+                g_signal_connect_swapped (session->priv->login_window,
+                                          "language-selected",
+                                          G_CALLBACK (on_select_language),
+                                          session);
                 g_signal_connect (session->priv->login_window,
                                   "user-selected",
                                   G_CALLBACK (on_select_user),



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