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



Author: halfline
Date: Thu Feb  7 01:43:39 2008
New Revision: 5707
URL: http://svn.gnome.org/viewvc/gdm?rev=5707&view=rev

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

	Add the session option widget to the panel

	* gui/simple-greeter/gdm-greeter-panel.c (GdmGreeterPanelPrivate):
	Add session_option_widget to struct.
	(gdm_greeter_panel_class_init): add session-selected signal
	(on_session_activated): new function to handle session-activated
	signal from the option widget.  It emits session-selected on the
	panel.
	(gdm_greeter_panel_init): create the option widget and connect
	session-activated to on_session_activated

	* gui/simple-greeter/gdm-greeter-panel.h: add session_selected
	member to class struct

	* gui/simple-greeter/Makefile.am: add session option widget to
	makefile


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

Modified: trunk/gui/simple-greeter/Makefile.am
==============================================================================
--- trunk/gui/simple-greeter/Makefile.am	(original)
+++ trunk/gui/simple-greeter/Makefile.am	Thu Feb  7 01:43:39 2008
@@ -71,6 +71,8 @@
 	gdm-greeter-login-window.c	\
 	gdm-chooser-widget.h		\
 	gdm-chooser-widget.c		\
+	gdm-sessions.h			\
+	gdm-sessions.c			\
 	gdm-session-chooser-widget.h	\
 	gdm-session-chooser-widget.c	\
 	gdm-user-chooser-widget.h	\
@@ -107,6 +109,10 @@
 	gdm-language-chooser-dialog.c	\
 	gdm-language-option-widget.h	\
 	gdm-language-option-widget.c	\
+	gdm-sessions.h			\
+	gdm-sessions.c			\
+	gdm-session-option-widget.h	\
+	gdm-session-option-widget.c	\
 	$(NULL)
 
 test_greeter_panel_LDADD =	\
@@ -146,6 +152,8 @@
 	test-session-chooser.c		\
 	gdm-chooser-widget.h		\
 	gdm-chooser-widget.c		\
+	gdm-sessions.h			\
+	gdm-sessions.c			\
 	gdm-session-chooser-widget.h	\
 	gdm-session-chooser-widget.c	\
 	gdm-session-chooser-dialog.h	\
@@ -218,6 +226,10 @@
 	gdm-language-chooser-dialog.c	\
 	gdm-language-option-widget.h	\
 	gdm-language-option-widget.c	\
+	gdm-sessions.h			\
+	gdm-sessions.c			\
+	gdm-session-option-widget.h	\
+	gdm-session-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	Thu Feb  7 01:43:39 2008
@@ -32,6 +32,7 @@
 
 #include "gdm-greeter-panel.h"
 #include "gdm-language-option-widget.h"
+#include "gdm-session-option-widget.h"
 
 #include "na-tray.h"
 
@@ -44,6 +45,7 @@
         GtkWidget              *hbox;
         GtkWidget              *hostname_label;
         GtkWidget              *language_option_widget;
+        GtkWidget              *session_option_widget;
 };
 
 enum {
@@ -52,6 +54,7 @@
 
 enum {
         LANGUAGE_SELECTED,
+        SESSION_SELECTED,
         NUMBER_OF_SIGNALS
 };
 
@@ -387,6 +390,17 @@
                               G_TYPE_NONE,
                               1, G_TYPE_STRING);
 
+        signals[SESSION_SELECTED] =
+                g_signal_new ("session-selected",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GdmGreeterPanelClass, session_selected),
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__STRING,
+                              G_TYPE_NONE,
+                              1, G_TYPE_STRING);
+
         g_type_class_add_private (klass, sizeof (GdmGreeterPanelPrivate));
 }
 
@@ -409,6 +423,24 @@
 }
 
 static void
+on_session_activated (GdmSessionOptionWidget *widget,
+                      GdmGreeterPanel        *panel)
+{
+
+        char *session;
+
+        session = gdm_session_option_widget_get_current_session (GDM_SESSION_OPTION_WIDGET (panel->priv->session_option_widget));
+
+        if (session == NULL) {
+                return;
+        }
+
+        g_signal_emit (panel, signals[SESSION_SELECTED], 0, session);
+
+        g_free (session);
+}
+
+static void
 gdm_greeter_panel_init (GdmGreeterPanel *panel)
 {
         NaTray    *tray;
@@ -441,6 +473,13 @@
         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);
 
+        panel->priv->session_option_widget = gdm_session_option_widget_new ();
+        g_signal_connect (G_OBJECT (panel->priv->session_option_widget),
+                          "session-activated",
+                          G_CALLBACK (on_session_activated), panel);
+        gtk_box_pack_start (GTK_BOX (panel->priv->hbox), panel->priv->session_option_widget, FALSE, FALSE, 6);
+        gtk_widget_show (panel->priv->session_option_widget);
+
         /* FIXME: we should only show hostname on panel when connected
            to a remote host */
         if (0) {

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	Thu Feb  7 01:43:39 2008
@@ -47,6 +47,9 @@
 
         void (* language_selected)           (GdmGreeterPanel *panel,
                                               const char      *text);
+
+        void (* session_selected)            (GdmGreeterPanel *panel,
+                                              const char      *text);
 } GdmGreeterPanelClass;
 
 GType                  gdm_greeter_panel_get_type                       (void);



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