gdm r5669 - in trunk: . gui/simple-greeter
- From: halfline svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r5669 - in trunk: . gui/simple-greeter
- Date: Fri, 1 Feb 2008 16:18:11 +0000 (GMT)
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]