[annum] Reworked widget creation code to make it easier to read



commit f6d88ef68af478f66fc9c89ee7508648d06a1f3b
Author: Gustavo Noronha Silva <gustavo noronha collabora co uk>
Date:   Wed Jan 27 16:07:31 2010 -0200

    Reworked widget creation code to make it easier to read
    
    The code tried to be generic, but failed at being readable. This tries
    to fix it.

 src/annum-shell-sidebar.c |   64 ++++++++++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 27 deletions(-)
---
diff --git a/src/annum-shell-sidebar.c b/src/annum-shell-sidebar.c
index 83f5f22..5f44751 100644
--- a/src/annum-shell-sidebar.c
+++ b/src/annum-shell-sidebar.c
@@ -40,7 +40,10 @@ G_DEFINE_TYPE (AnnumShellSidebar, annum_shell_sidebar, E_TYPE_SHELL_SIDEBAR)
 
 struct _AnnumShellSidebarPrivate {
 	GtkWidget *paned;
+	GtkWidget *vbox;
+
 	GtkWidget *selector;
+
 	GtkWidget *date_navigator;
 
 	/* UID -> Client */
@@ -335,6 +338,11 @@ static void annum_shell_sidebar_dispose (GObject * object)
 		priv->paned = NULL;
 	}
 
+	if (priv->vbox != NULL) {
+		g_object_unref (priv->vbox);
+		priv->vbox = NULL;
+	}
+
 	if (priv->selector != NULL) {
 		g_object_unref (priv->selector);
 		priv->selector = NULL;
@@ -373,10 +381,9 @@ static void annum_shell_sidebar_constructed (GObject * object)
 	ESourceList *source_list;
 	ESource *source;
 	ECalendarItem *calitem;
+	GtkWidget *widget;
 	GConfBridge *bridge;
 	GtkTreeModel *model;
-	GtkWidget *container;
-	GtkWidget *widget;
 	AtkObject *a11y;
 	GSList *list, *iter;
 	const gchar *key;
@@ -398,43 +405,46 @@ static void annum_shell_sidebar_constructed (GObject * object)
 	    annum_shell_backend_get_source_list (ANNUM_SHELL_BACKEND
 						  (shell_backend));
 
-	container = GTK_WIDGET (shell_sidebar);
-
-	widget = gtk_vpaned_new ();
-	gtk_container_add (GTK_CONTAINER (container), widget);
-	priv->paned = g_object_ref (widget);
-	gtk_widget_show (widget);
-
-	container = widget;
-
+	/* Paned - main divisor of the side bar */
+	priv->paned = gtk_vpaned_new ();
+	gtk_container_add (GTK_CONTAINER (shell_sidebar), priv->paned);
+	g_object_ref (priv->paned);
+	gtk_widget_show (priv->paned);
+
+	/* VBox that separates the calendar chooser from the add button,
+	 * first part of the paned.
+	 */
+	priv->vbox = gtk_vbox_new (FALSE, 0);
+	gtk_paned_pack1 (GTK_PANED (priv->paned), priv->vbox, TRUE, TRUE);
+	g_object_ref (priv->vbox);
+	gtk_widget_show (priv->vbox);
+
+	/* Scrolled window, with the calendar selector */
 	widget = gtk_scrolled_window_new (NULL, NULL);
+	gtk_container_add (GTK_CONTAINER (priv->vbox), widget);
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (widget),
 					GTK_POLICY_AUTOMATIC,
 					GTK_POLICY_AUTOMATIC);
 	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (widget),
 					     GTK_SHADOW_IN);
-	gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, TRUE);
 	gtk_widget_show (widget);
 
-	container = widget;
-
-	widget = e_calendar_selector_new (source_list);
-	e_source_selector_set_select_new (E_SOURCE_SELECTOR (widget), TRUE);
-	gtk_container_add (GTK_CONTAINER (container), widget);
-	a11y = gtk_widget_get_accessible (widget);
+	priv->selector = e_calendar_selector_new (source_list);
+	e_source_selector_set_select_new (E_SOURCE_SELECTOR (priv->selector), TRUE);
+	gtk_container_add (GTK_CONTAINER (widget), priv->selector);
+	a11y = gtk_widget_get_accessible (priv->selector);
 	atk_object_set_name (a11y, _("Calendar Selector"));
-	priv->selector = g_object_ref (widget);
-	gtk_widget_show (widget);
-
-	container = priv->paned;
+	priv->selector = g_object_ref (priv->selector);
+	gtk_widget_show (priv->selector);
 
-	widget = e_calendar_new ();
-	calitem = E_CALENDAR (widget)->calitem;
+	/* Mini-calendar (date navigator) - second part of the paned. */
+	priv->date_navigator = e_calendar_new ();
+	gtk_paned_pack2 (GTK_PANED (priv->paned), priv->date_navigator, FALSE, TRUE);
+	calitem = E_CALENDAR (priv->date_navigator)->calitem;
 	e_calendar_item_set_days_start_week_sel (calitem, 9);
 	e_calendar_item_set_max_days_sel (calitem, 42);
-	gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, TRUE);
-	priv->date_navigator = g_object_ref (widget);
-	gtk_widget_show (widget);
+	g_object_ref (priv->date_navigator);
+	gtk_widget_show (priv->date_navigator);
 
 	e_binding_new (shell_settings, "cal-show-week-numbers",
 		       calitem, "show-week-numbers");



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