Re: [Evolution-hackers] For the userinterface dudes (appointment alarm dialog)
- From: Philip Van Hoof <spamfrommailing freax org>
- To: evolution-hackers lists ximian com
- Cc: JP Rosevear <jpr novell com>, evolution-patches ximian com, Calum Benson <Calum Benson Sun COM>
- Subject: Re: [Evolution-hackers] For the userinterface dudes (appointment alarm dialog)
- Date: Sat, 12 Mar 2005 15:16:38 +0100
Some fixes ... and important adjustments to the glade-stuff.
--
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 12 Mar 2005 14:15:01 -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,7 +43,27 @@
#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 {
+ AlarmNotifyFunc func;
+ gpointer func_data;
+} AlarmFuncInfo;
+
typedef struct {
GladeXML *xml;
@@ -54,19 +75,35 @@
GtkWidget *location;
GtkWidget *start;
GtkWidget *end;
-
- AlarmNotifyFunc func;
- gpointer func_data;
+ GtkWidget *treeview;
+ GtkWidget *scrolledwindow;
+
+ AlarmFuncInfo *cur_funcinfo;
+
} AlarmNotify;
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);
+
+
+
+AlarmNotify *an = NULL;
+gboolean have_one = FALSE;
+
+
+
+static void
an_update_minutes_label (GtkSpinButton *sb, gpointer data)
{
AlarmNotify *an;
@@ -86,18 +123,52 @@
{
int snooze_timeout;
AlarmNotify *an = user_data;
-
+ GtkTreeIter iter;
+ gboolean valid=FALSE;
+ 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);
+ } else {
+ funcinfo = an->cur_funcinfo;
+ }
+
switch (response_id) {
case AN_RESPONSE_EDIT:
- (* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data);
+ (* 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));
- (* an->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, an->func_data);
+ (* funcinfo->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, funcinfo->func_data);
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+
+ /* If there isn't more then one in the store */
+ valid = gtk_tree_model_get_iter_first (model, &iter);
+ if (valid)
+ {
+ gtk_tree_selection_select_iter (selection, &iter);
+ valid = gtk_tree_model_iter_next (model, &iter);
+ if (!valid)
+ {
+ gtk_widget_hide (an->treeview);
+ gtk_widget_hide (an->scrolledwindow);
+ } else {
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+ } else {
+ (* funcinfo->func) (ALARM_NOTIFY_CLOSE, -1, funcinfo->func_data);
+ have_one = FALSE;
+ }
+
+
break;
case GTK_RESPONSE_CLOSE:
case GTK_RESPONSE_DELETE_EVENT:
- (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
+ (* funcinfo->func) (ALARM_NOTIFY_CLOSE, -1, funcinfo->func_data);
+ have_one = FALSE;
break;
}
}
@@ -109,8 +180,11 @@
g_object_unref (an->xml);
g_free (an);
+ have_one = FALSE;
+ an = NULL;
}
+
/**
* alarm_notify_dialog:
* @trigger: Trigger time for the alarm.
@@ -134,14 +208,18 @@
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);
+ GtkTreeSelection *selection = NULL;
+
+ 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 +229,173 @@
g_return_val_if_fail (location != NULL, NULL);
g_return_val_if_fail (func != NULL, NULL);
- an = g_new0 (AlarmNotify, 1);
+ if (!an || !have_one)
+ {
+ GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+
+ 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);
+
+ 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);
+ an = NULL;
+ 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);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
+ g_signal_connect (G_OBJECT (selection), "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);
+
+
+ have_one = TRUE;
+
+ } else {
+ gtk_widget_show (an->scrolledwindow);
+ gtk_widget_show (an->treeview);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
}
- 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;
+
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ 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);
+ an->cur_funcinfo = funcinfo;
+
+ gtk_tree_selection_select_iter (selection, &iter);
+
+ gtk_widget_show (an->dialog);
+
+ 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);\
+ gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &an->cur_funcinfo, -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 12 Mar 2005 14:15:01 -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 12 Mar 2005 14:15:02 -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">False</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>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]