Re: [Evolution-hackers] For the userinterface dudes (appointment alarm dialog)



Hi there,

I understand the UI proposal of Calum Benson and will for sure take a
look at the possibility to do it that way.

For now I have implemented it so that the GUI is like on the screenshot.

It's probably pretty unstable and .. I don't know :-)

But it would be great if some folks tested this and commented on it.


The idea of Calum Benson is more easily implementable after this patch,
of course.

It's just a few userinterface-changes to the current patch.

I wont have time to tryout that idea this evening. I invite anybody
interested to do that

Make sure that you inform me about it. Because I'm planning to take a
look at it too. It would be stupid to duplicate work, of course.

ps. I'm not expecting that this would go in the GNOME 2.10.0 branch or
2.2.x release. So I'm not trying to hurry getting this finished.

ps. JPR: This is (already) the stuff that we've been talking about on
IRC.


Sorry for the quick e-mail .. I lost track of time a bit and I have to
pickup my girlfriend somewhere :-). I've ran this one only once so YES
it's probably full of bugs and crashes and stuff. 

But thats fun.  So ... have fun



On Fri, 2005-03-11 at 15:00 +0100, Philip Van Hoof wrote:
> I'm planning to redo some of the appointment alarm dialog code. The
> current problem with it is that if multiple events happened (while you
> where gone), you'll see multiple dialogboxes.
> 
> The idea is to "catch" them in the same dialog.
> 
> http://www.freax.be/files/alarm-notify.glade.png
> 
> 
> If you have UI/usability comments: please throw them.
> 
> 
> 
-- 
Philip Van Hoof, Software Developer @ Cronos
home: me at freax dot org
gnome: pvanhoof at gnome dot org
work: philip dot vanhoof at cronos dot be
junk: philip dot vanhoof at gmail dot com
http://www.freax.be, http://www.freax.eu.org
? alarm-notify.gladep
Index: alarm-notify-dialog.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-notify-dialog.c,v
retrieving revision 1.33
diff -u -r1.33 alarm-notify-dialog.c
--- alarm-notify-dialog.c	4 Mar 2005 14:39:13 -0000	1.33
+++ alarm-notify-dialog.c	11 Mar 2005 16:25:46 -0000
@@ -22,6 +22,7 @@
 #include <config.h>
 #include <stdio.h>
 #include <string.h>
+#include <gtk/gtk.h>
 #include <gtk/gtkdialog.h>
 #include <gtk/gtkimage.h>
 #include <gtk/gtklabel.h>
@@ -42,6 +43,20 @@
 #include <e-util/e-icon-factory.h>
 
 
+	
+enum {
+	ALARM_SUMMARY_COLUMN,
+	ALARM_DESCRIPTION_COLUMN,
+	ALARM_LOCATION_COLUMN,
+
+	ALARM_START_COLUMN,
+	ALARM_END_COLUMN,
+	
+	ALARM_FUNCINFO_COLUMN,
+
+	N_ALARM_COLUMNS
+};
+
 /* The useful contents of the alarm notify dialog */
 typedef struct {
 	GladeXML *xml;
@@ -54,19 +69,39 @@
 	GtkWidget *location;
 	GtkWidget *start;
 	GtkWidget *end;
+	GtkWidget *treeview;
+	GtkWidget *scrolledwindow;
+	
+} AlarmNotify;
 
+typedef struct {
 	AlarmNotifyFunc func;
 	gpointer func_data;
-} AlarmNotify;
+} AlarmFuncInfo;
 
 enum {
-        AN_RESPONSE_EDIT = 0,
+	AN_RESPONSE_EDIT = 0,
 	AN_RESPONSE_SNOOZE = 1
 };
 
 
 
 static void
+tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data);
+
+static void
+fill_in_labels (AlarmNotify *an, const gchar *summary, const gchar *description, 
+			const gchar *location, time_t occur_start, time_t occur_end);
+
+
+
+GtkTreeIter current_iter;
+AlarmNotify *an;
+gboolean have_one = FALSE;
+
+
+
+static void
 an_update_minutes_label (GtkSpinButton *sb, gpointer data)
 {
 	AlarmNotify *an;
@@ -86,19 +121,28 @@
 {
 	int snooze_timeout;
 	AlarmNotify *an = user_data;
-
-	switch (response_id) {
-	case AN_RESPONSE_EDIT:
-		(* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data);
-		break;
-	case AN_RESPONSE_SNOOZE:
-		snooze_timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time));
-		(* an->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, an->func_data);
-		break;
-	case GTK_RESPONSE_CLOSE:
-	case GTK_RESPONSE_DELETE_EVENT:
-		(* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
-		break;
+	GtkTreeIter iter;
+	GtkTreeModel *model = NULL;
+	AlarmFuncInfo *funcinfo;
+	GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
+
+	if (gtk_tree_selection_get_selected (selection, &model, &iter))
+	{
+		gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);	
+	
+		switch (response_id) {
+		case AN_RESPONSE_EDIT:
+			(* funcinfo->func) (ALARM_NOTIFY_EDIT, -1, funcinfo->func_data);
+			break;
+		case AN_RESPONSE_SNOOZE:
+			snooze_timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time));
+			(* funcinfo->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, funcinfo->func_data);
+			break;
+		case GTK_RESPONSE_CLOSE:
+		case GTK_RESPONSE_DELETE_EVENT:
+			(* funcinfo->func) (ALARM_NOTIFY_CLOSE, -1, funcinfo->func_data);
+			break;
+		}
 	}
 }
 
@@ -109,8 +153,17 @@
 
 	g_object_unref (an->xml);
 	g_free (an);
+	
+	
+	g_print ("DESTROY\n");
+
+	
+	have_one = FALSE;
+	
+	an = NULL;
 }
 
+
 /**
  * alarm_notify_dialog:
  * @trigger: Trigger time for the alarm.
@@ -134,14 +187,17 @@
 		     const char *description, const char *location,
 		     AlarmNotifyFunc func, gpointer func_data)
 {
-	AlarmNotify *an;
 	GtkWidget *image;
-	icaltimezone *current_zone;
-	char *title;
-	char *start, *end;
 	char *icon_path;
 	GList *icon_list;
-
+	GtkTreeIter iter;
+	GtkTreeViewColumn *column = NULL;
+	GtkTreeModel *model = NULL;
+	AlarmFuncInfo *funcinfo = g_new0 (AlarmFuncInfo, 1);
+	
+	funcinfo->func = func;
+	funcinfo->func_data = func_data;
+	
 	g_return_val_if_fail (trigger != -1, NULL);
 
 	/* Only VEVENTs or VTODOs can have alarms */
@@ -151,85 +207,168 @@
 	g_return_val_if_fail (location != NULL, NULL);
 	g_return_val_if_fail (func != NULL, NULL);
 
-	an = g_new0 (AlarmNotify, 1);
+	if (!have_one)
+	{
+		GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+		GtkTreeSelection *select;
+
+		model = GTK_TREE_MODEL (gtk_list_store_new (
+			N_ALARM_COLUMNS, 
+		
+			G_TYPE_STRING, /* Summary */
+			G_TYPE_STRING, /* Description */
+			G_TYPE_STRING, /* Location */
+		
+			G_TYPE_POINTER, /* Start */
+			G_TYPE_POINTER, /* End */
+		
+			G_TYPE_POINTER /* FuncInfo*/));
+		
+		an = g_new0 (AlarmNotify, 1);
+		have_one = TRUE;
+		
+		an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL, NULL);
+		if (!an->xml) {
+			g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
+				g_free (an);
+			return NULL;
+		}
+
+		an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
+		an->title = glade_xml_get_widget (an->xml, "title-label");
+		an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time");
+		an->minutes_label = glade_xml_get_widget (an->xml, "minutes-label");
+		an->description = glade_xml_get_widget (an->xml, "description-label");
+		an->location = glade_xml_get_widget (an->xml, "location-label");
+		an->start = glade_xml_get_widget (an->xml, "start-label");
+		an->end = glade_xml_get_widget (an->xml, "end-label");
+		an->treeview = glade_xml_get_widget (an->xml, "appointments-treeview");
+		an->scrolledwindow = glade_xml_get_widget (an->xml, "treeview-scrolledwindow");
+		
+		if (!(an->dialog && an->scrolledwindow && an->treeview && an->title && an->snooze_time
+		      && an->description && an->location && an->start && an->end)) {
+			g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
+			g_object_unref (an->xml);
+			g_free (an);
+			return NULL;
+		}
+
+		gtk_tree_view_set_model (GTK_TREE_VIEW(an->treeview), model);
+		
+		column = gtk_tree_view_column_new_with_attributes (_("Summary"),
+						renderer,
+						"text", ALARM_SUMMARY_COLUMN, NULL);
+		
+		gtk_tree_view_append_column (GTK_TREE_VIEW (an->treeview), column);
+		
+		select = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
+		gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+		
+		g_signal_connect (G_OBJECT (select), "changed",
+			G_CALLBACK (tree_selection_changed_cb), an);
+		
+		gtk_widget_realize (an->dialog);
+		gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->vbox), 0);
+		gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->action_area), 12);
 
-	an->func = func;
-	an->func_data = func_data;
+		image = glade_xml_get_widget (an->xml, "alarm-image");
+		icon_path = e_icon_factory_get_icon_filename ("stock_alarm", E_ICON_SIZE_DIALOG);
+		gtk_image_set_from_file (GTK_IMAGE (image), icon_path);
+		g_free (icon_path);
+		
+		g_signal_connect (G_OBJECT (an->dialog), "response", G_CALLBACK (dialog_response_cb), an);
+		g_signal_connect (G_OBJECT (an->dialog), "destroy", G_CALLBACK (dialog_destroyed_cb), an);
+		
+		if (!GTK_WIDGET_REALIZED (an->dialog))
+		gtk_widget_realize (an->dialog);
 
-	an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL, NULL);
-	if (!an->xml) {
-		g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
-		g_free (an);
-		return NULL;
+		icon_list = e_icon_factory_get_icon_list ("stock_alarm");
+		if (icon_list) {
+			gtk_window_set_icon_list (GTK_WINDOW (an->dialog), icon_list);
+			g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+			g_list_free (icon_list);
+		}
+	
+		/* Set callback for updating the snooze "minutes" label */
+		g_signal_connect (G_OBJECT (an->snooze_time), "value_changed",
+		 		G_CALLBACK (an_update_minutes_label), an);
+		
+	} else {
+		gtk_widget_show (an->scrolledwindow);
+		gtk_widget_show (an->treeview);
 	}
+	
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (an->treeview));
+	
+	gtk_list_store_append (GTK_LIST_STORE(model), &iter);
+
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_SUMMARY_COLUMN, summary, -1);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_DESCRIPTION_COLUMN, description, -1);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_LOCATION_COLUMN, location, -1);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_START_COLUMN, occur_start, -1);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_END_COLUMN, occur_end, -1);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_FUNCINFO_COLUMN, funcinfo, -1);
+
+	fill_in_labels (an, summary, description, location, occur_start, occur_end);
+
+	gtk_tree_view_row_activated (GTK_TREE_VIEW (an->treeview), 
+		gtk_tree_model_get_path (model, &iter), column);
+		
+	gtk_widget_show (an->dialog);
 
-	an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
-	an->title = glade_xml_get_widget (an->xml, "title-label");
-	an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time");
-	an->minutes_label = glade_xml_get_widget (an->xml, "minutes-label");
-	an->description = glade_xml_get_widget (an->xml, "description-label");
-	an->location = glade_xml_get_widget (an->xml, "location-label");
-	an->start = glade_xml_get_widget (an->xml, "start-label");
-	an->end = glade_xml_get_widget (an->xml, "end-label");
-
-	if (!(an->dialog && an->title && an->snooze_time
-	      && an->description && an->location && an->start && an->end)) {
-		g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
-		g_object_unref (an->xml);
-		g_free (an);
-		return NULL;
+	return an->dialog;
+}
+
+static void
+tree_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data)
+{
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+
+	if (gtk_tree_selection_get_selected (selection, &model, &iter))
+	{
+		AlarmNotify *an = user_data;
+		gchar *summary, *description, *location;
+		time_t occur_start, occur_end;
+		
+		gtk_tree_model_get (model, &iter, ALARM_SUMMARY_COLUMN, &summary, -1);
+		gtk_tree_model_get (model, &iter, ALARM_DESCRIPTION_COLUMN, &description, -1);
+		gtk_tree_model_get (model, &iter, ALARM_LOCATION_COLUMN, &location, -1);
+		gtk_tree_model_get (model, &iter, ALARM_START_COLUMN, &occur_start, -1);
+		gtk_tree_model_get (model, &iter, ALARM_END_COLUMN, &occur_end, -1);\
+		
+		fill_in_labels (an, summary, description, location, occur_start, occur_end);
 	}
+}
 
-	gtk_widget_realize (an->dialog);
-	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->vbox), 0);
-	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->action_area), 12);
-
-	image = glade_xml_get_widget (an->xml, "alarm-image");
-	icon_path = e_icon_factory_get_icon_filename ("stock_alarm", E_ICON_SIZE_DIALOG);
-	gtk_image_set_from_file (GTK_IMAGE (image), icon_path);
-	g_free (icon_path);
 
-	/* Title */
 
-	gtk_window_set_title (GTK_WINDOW (an->dialog), summary);
+static void 
+fill_in_labels (AlarmNotify *an, const gchar *summary, const gchar *description, 
+		const gchar *location, time_t occur_start, time_t occur_end)
+{
+		icaltimezone *current_zone;
+		gchar *title, *start, *end;
 
+	/* Title */
+	gtk_window_set_title (GTK_WINDOW (an->dialog), summary);
+	
 	/* Set the widget contents */
-
 	title = g_strdup_printf ("<big><b>%s</b></big>", summary);
 	gtk_label_set_markup (GTK_LABEL (an->title), title);
 	g_free (title);
-
+	
 	gtk_label_set_text (GTK_LABEL (an->description), description);
 	gtk_label_set_text (GTK_LABEL (an->location), location);
 
 	/* Stringize the times */
-
 	current_zone = config_data_get_timezone ();
-
 	start = timet_to_str_with_zone (occur_start, current_zone);
 	gtk_label_set_text (GTK_LABEL (an->start), start);
-
+	g_free (start);
+	
 	end = timet_to_str_with_zone (occur_end, current_zone);
 	gtk_label_set_text (GTK_LABEL (an->end), end);
-
-	/* Set callback for updating the snooze "minutes" label */
-	g_signal_connect (G_OBJECT (an->snooze_time), "value_changed",
-			  G_CALLBACK (an_update_minutes_label), an);
-	/* Run! */
-
-	if (!GTK_WIDGET_REALIZED (an->dialog))
-		gtk_widget_realize (an->dialog);
-
-	icon_list = e_icon_factory_get_icon_list ("stock_alarm");
-	if (icon_list) {
-		gtk_window_set_icon_list (GTK_WINDOW (an->dialog), icon_list);
-		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
-		g_list_free (icon_list);
-	}
-
-	g_signal_connect (G_OBJECT (an->dialog), "response", G_CALLBACK (dialog_response_cb), an);
-	g_signal_connect (G_OBJECT (an->dialog), "destroy", G_CALLBACK (dialog_destroyed_cb), an);
-	gtk_widget_show (an->dialog);
-
-	return an->dialog;
+	g_free (end);
+			  
 }
Index: alarm-notify.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-notify.c,v
retrieving revision 1.48
diff -u -r1.48 alarm-notify.c
--- alarm-notify.c	28 Feb 2005 23:38:48 -0000	1.48
+++ alarm-notify.c	11 Mar 2005 16:25:46 -0000
@@ -285,7 +285,7 @@
 alarm_notify_new (void)
 {
 	AlarmNotify *an;
-
+	
 	an = g_object_new (TYPE_ALARM_NOTIFY,
 			   "poa", bonobo_poa_get_threaded (ORBIT_THREAD_HINT_PER_REQUEST, NULL),
 			   NULL);
Index: alarm-notify.glade
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-notify.glade,v
retrieving revision 1.10
diff -u -r1.10 alarm-notify.glade
--- alarm-notify.glade	23 Nov 2004 06:24:57 -0000	1.10
+++ alarm-notify.glade	11 Mar 2005 16:25:46 -0000
@@ -5,7 +5,7 @@
 
 <widget class="GtkDialog" id="alarm-notify">
   <property name="visible">True</property>
-  <property name="title" translatable="yes">Appointment</property>
+  <property name="title" translatable="yes">Appointments</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
@@ -18,6 +18,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">False</property>
 
   <child internal-child="vbox">
@@ -88,6 +89,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
@@ -159,6 +164,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
@@ -202,6 +211,36 @@
 	  <property name="spacing">12</property>
 
 	  <child>
+	    <widget class="GtkScrolledWindow" id="treeview-scrolledwindow">
+	      <property name="width_request">150</property>
+	      <property name="can_focus">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="shadow_type">GTK_SHADOW_IN</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkTreeView" id="appointments-treeview">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="headers_visible">False</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		  <property name="fixed_height_mode">False</property>
+		  <property name="hover_selection">False</property>
+		  <property name="hover_expand">False</property>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
 	    <widget class="GtkImage" id="alarm-image">
 	      <property name="visible">True</property>
 	      <property name="stock">gtk-dialog-info</property>
@@ -214,7 +253,7 @@
 	    <packing>
 	      <property name="padding">0</property>
 	      <property name="expand">False</property>
-	      <property name="fill">False</property>
+	      <property name="fill">True</property>
 	    </packing>
 	  </child>
 
@@ -237,6 +276,10 @@
 		  <property name="yalign">0.5</property>
 		  <property name="xpad">0</property>
 		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
@@ -265,6 +308,10 @@
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
@@ -295,6 +342,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">0</property>
@@ -319,6 +370,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">0</property>
@@ -343,6 +398,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">0</property>
@@ -367,6 +426,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">1</property>
@@ -392,6 +455,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">1</property>
@@ -417,6 +484,10 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">1</property>
@@ -466,6 +537,10 @@
 			      <property name="yalign">0.5</property>
 			      <property name="xpad">0</property>
 			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
@@ -498,6 +573,10 @@
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
 			  <property name="mnemonic_widget">snooze-time</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
 			</widget>
 			<packing>
 			  <property name="left_attach">0</property>
@@ -525,7 +604,7 @@
 	    </widget>
 	    <packing>
 	      <property name="padding">0</property>
-	      <property name="expand">True</property>
+	      <property name="expand">False</property>
 	      <property name="fill">True</property>
 	    </packing>
 	  </child>


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