[rhythmbox] podcast: move info bar for errors to the top of the dialog



commit 60bcdb3f1c500239e4bceabf8d0bc8dee50a157e
Author: Jonathan Matthew <jonathan d14n org>
Date:   Sun May 27 19:55:19 2012 +1000

    podcast: move info bar for errors to the top of the dialog
    
    also fix the parent class for the dialog to be GtkBox rather than
    GtkVBox and/or GtkHBox.

 data/ui/podcast-add-dialog.ui   |  107 ++++++++++++++++-----------------------
 podcast/rb-podcast-add-dialog.c |    8 ++-
 podcast/rb-podcast-add-dialog.h |    4 +-
 podcast/rb-podcast-source.c     |   22 +++++---
 4 files changed, 63 insertions(+), 78 deletions(-)
---
diff --git a/data/ui/podcast-add-dialog.ui b/data/ui/podcast-add-dialog.ui
index 37caaf6..6a9944a 100644
--- a/data/ui/podcast-add-dialog.ui
+++ b/data/ui/podcast-add-dialog.ui
@@ -9,43 +9,6 @@
     <property name="can_focus">False</property>
     <property name="row_spacing">6</property>
     <child>
-      <object class="GtkVPaned" id="paned">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
-            <child>
-              <object class="GtkTreeView" id="feed-view">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="border_width">1</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection" id="treeview-selection1"/>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="resize">False</property>
-            <property name="shrink">True</property>
-          </packing>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
-        <property name="width">1</property>
-        <property name="height">1</property>
-      </packing>
-    </child>
-    <child>
       <object class="GtkLabel" id="label1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
@@ -61,30 +24,6 @@ Subscribe to podcasts to download new episodes as they are published.</property>
       </packing>
     </child>
     <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
-      <placeholder/>
-    </child>
-    <child>
       <object class="GtkGrid" id="grid1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
@@ -164,10 +103,50 @@ Subscribe to podcasts to download new episodes as they are published.</property>
       </packing>
     </child>
     <child>
-      <object class="GtkBox" id="info-bar-container">
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <object class="GtkVPaned" id="paned">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
+        <property name="can_focus">True</property>
+        <property name="vexpand">True</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <child>
+              <object class="GtkTreeView" id="feed-view">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="border_width">1</property>
+                <child internal-child="selection">
+                  <object class="GtkTreeSelection" id="treeview-selection"/>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="resize">False</property>
+            <property name="shrink">True</property>
+          </packing>
+        </child>
         <child>
           <placeholder/>
         </child>
diff --git a/podcast/rb-podcast-add-dialog.c b/podcast/rb-podcast-add-dialog.c
index 54417d2..f4590e7 100644
--- a/podcast/rb-podcast-add-dialog.c
+++ b/podcast/rb-podcast-add-dialog.c
@@ -113,7 +113,7 @@ static const char *podcast_uri_prefixes[] = {
 
 static guint signals[LAST_SIGNAL] = {0,};
 
-G_DEFINE_TYPE (RBPodcastAddDialog, rb_podcast_add_dialog, GTK_TYPE_VBOX);
+G_DEFINE_TYPE (RBPodcastAddDialog, rb_podcast_add_dialog, GTK_TYPE_BOX);
 
 
 static gboolean
@@ -666,10 +666,11 @@ impl_constructed (GObject *object)
 
 	dialog->priv->info_bar_message = gtk_label_new ("");
 	dialog->priv->info_bar = gtk_info_bar_new ();
+	g_object_set (dialog->priv->info_bar, "spacing", 0, NULL);
 	gtk_container_add (GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (dialog->priv->info_bar))),
 			   dialog->priv->info_bar_message);
 	gtk_widget_set_no_show_all (dialog->priv->info_bar, TRUE);
-	gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "info-bar-container")), dialog->priv->info_bar, TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (dialog), dialog->priv->info_bar, FALSE, FALSE, 0);
 	gtk_widget_show (dialog->priv->info_bar_message);
 
 	dialog->priv->subscribe_button = GTK_WIDGET (gtk_builder_get_object (builder, "subscribe-button"));
@@ -732,7 +733,7 @@ impl_constructed (GObject *object)
 	gtk_tree_view_append_column (GTK_TREE_VIEW (dialog->priv->feed_view), column);
 
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "podcast-add-dialog"));
-	gtk_box_pack_start (GTK_BOX (dialog), widget, TRUE, TRUE, 12);	/* 12? */
+	gtk_box_pack_start (GTK_BOX (dialog), widget, TRUE, TRUE, 12);
 
 	gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (dialog->priv->feed_view), TRUE);
 
@@ -936,6 +937,7 @@ rb_podcast_add_dialog_new (RBShell *shell, RBPodcastManager *podcast_mgr)
 	return GTK_WIDGET (g_object_new (RB_TYPE_PODCAST_ADD_DIALOG,
 					 "shell", shell,
 					 "podcast-manager", podcast_mgr,
+					 "orientation", GTK_ORIENTATION_VERTICAL,
 					 NULL));
 }
 
diff --git a/podcast/rb-podcast-add-dialog.h b/podcast/rb-podcast-add-dialog.h
index 2c06ffc..dfd5d6d 100644
--- a/podcast/rb-podcast-add-dialog.h
+++ b/podcast/rb-podcast-add-dialog.h
@@ -48,14 +48,14 @@ typedef struct RBPodcastAddDialogPrivate RBPodcastAddDialogPrivate;
 
 struct _RBPodcastAddDialog
 {
-	GtkHBox parent;
+	GtkBox parent;
 
 	RBPodcastAddDialogPrivate *priv;
 };
 
 struct _RBPodcastAddDialogClass
 {
-	GtkHBoxClass parent;
+	GtkBoxClass parent;
 
 	/* signals */
 	void	(*close)	(RBPodcastAddDialog *dialog);
diff --git a/podcast/rb-podcast-source.c b/podcast/rb-podcast-source.c
index 279fcd0..179660c 100644
--- a/podcast/rb-podcast-source.c
+++ b/podcast/rb-podcast-source.c
@@ -88,6 +88,7 @@ struct _RBPodcastSourcePrivate
 
 	guint prefs_notify_id;
 
+	GtkWidget *grid;
 	GtkWidget *paned;
 	GtkWidget *add_dialog;
 	GtkAction *add_action;
@@ -347,6 +348,7 @@ static void
 podcast_add_dialog_closed_cb (RBPodcastAddDialog *dialog, RBPodcastSource *source)
 {
 	rb_podcast_source_do_query (source);
+	gtk_widget_set_margin_top (GTK_WIDGET (source->priv->grid), 6);
 	gtk_widget_hide (source->priv->add_dialog);
 	gtk_widget_show (GTK_WIDGET (source->priv->toolbar));
 	gtk_widget_show (source->priv->paned);
@@ -393,6 +395,7 @@ podcast_cmd_new_podcast (GtkAction *action, RBPodcastSource *source)
 	g_object_set (source, "query-model", query_model, NULL);
 	g_object_unref (query_model);
 
+	gtk_widget_set_margin_top (GTK_WIDGET (source->priv->grid), 0);
 	gtk_widget_hide (source->priv->paned);
 	gtk_widget_hide (GTK_WIDGET (source->priv->toolbar));
 	gtk_widget_show (source->priv->add_dialog);
@@ -1318,7 +1321,6 @@ impl_constructed (GObject *object)
 	GSettings *settings;
 	int position;
 	GtkUIManager *ui_manager;
-	GtkWidget *grid;
 
 	RB_CHAIN_GOBJECT_METHOD (rb_podcast_source_parent_class, constructed, object);
 	source = RB_PODCAST_SOURCE (object);
@@ -1578,18 +1580,20 @@ impl_constructed (GObject *object)
 	gtk_paned_pack2 (GTK_PANED (source->priv->paned),
 			 GTK_WIDGET (source->priv->posts), TRUE, FALSE);
 
-	grid = gtk_grid_new ();
-	gtk_widget_set_margin_top (GTK_WIDGET (grid), 6);
-	gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
-	gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
-	gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET (source->priv->toolbar), 0, 0, 1, 1);
-	gtk_grid_attach (GTK_GRID (grid), source->priv->paned, 0, 1, 1, 1);
+	source->priv->grid = gtk_grid_new ();
+	gtk_widget_set_margin_top (GTK_WIDGET (source->priv->grid), 6);
+	gtk_grid_set_column_spacing (GTK_GRID (source->priv->grid), 6);
+	gtk_grid_set_row_spacing (GTK_GRID (source->priv->grid), 6);
+	gtk_grid_attach (GTK_GRID (source->priv->grid), GTK_WIDGET (source->priv->toolbar), 0, 0, 1, 1);
+	gtk_grid_attach (GTK_GRID (source->priv->grid), source->priv->paned, 0, 1, 1, 1);
 
-	gtk_container_add (GTK_CONTAINER (source), grid);
+	gtk_container_add (GTK_CONTAINER (source), source->priv->grid);
 
 	/* podcast add dialog */
 	source->priv->add_dialog = rb_podcast_add_dialog_new (shell, source->priv->podcast_mgr);
-	gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET (source->priv->add_dialog), 0, 2, 1, 1);
+	gtk_widget_show_all (source->priv->add_dialog);
+	gtk_widget_set_margin_top (source->priv->add_dialog, 0);
+	gtk_grid_attach (GTK_GRID (source->priv->grid), GTK_WIDGET (source->priv->add_dialog), 0, 2, 1, 1);
 	gtk_widget_set_no_show_all (source->priv->add_dialog, TRUE);
 	g_signal_connect_object (source->priv->add_dialog, "closed", G_CALLBACK (podcast_add_dialog_closed_cb), source, 0);
 



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