[gnome-control-center/wip/background-new-ui] background: implement new UI design from Jakub Steiner



commit 1702af9e0a3a1a6a74d4105ba082d4c7bf113eff
Author: Thomas Wood <thos gnome org>
Date:   Sun Aug 22 19:58:29 2010 +0100

    background: implement new UI design from Jakub Steiner

 panels/background/Makefile.am           |    4 +-
 panels/background/background.ui         |   88 +++++++++++++------------------
 panels/background/cc-background-panel.c |   67 ++++++++++++++++++-----
 panels/background/gloss.png             |  Bin 0 -> 5854 bytes
 panels/background/video-display.png     |  Bin 0 -> 24708 bytes
 5 files changed, 92 insertions(+), 67 deletions(-)
---
diff --git a/panels/background/Makefile.am b/panels/background/Makefile.am
index 82d3c07..80444a5 100644
--- a/panels/background/Makefile.am
+++ b/panels/background/Makefile.am
@@ -3,7 +3,9 @@ cappletname = background
 
 uidir = $(pkgdatadir)/ui/background
 dist_ui_DATA = \
-	background.ui
+	background.ui \
+	video-display.png \
+	gloss.png
 
 
 INCLUDES = 						\
diff --git a/panels/background/background.ui b/panels/background/background.ui
index 85a575c..ebd978a 100644
--- a/panels/background/background.ui
+++ b/panels/background/background.ui
@@ -58,52 +58,33 @@
       <column type="gpointer"/>
     </columns>
   </object>
-  <object class="GtkVBox" id="background-panel">
+  <object class="GtkHBox" id="background-panel">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <property name="spacing">12</property>
     <child>
-      <object class="GtkHBox" id="pictures-vbox">
+      <object class="GtkVBox" id="vbox2">
         <property name="visible">True</property>
-        <property name="spacing">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
         <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow1">
-            <property name="width_request">150</property>
+          <object class="GtkComboBox" id="sources-combobox">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">in</property>
+            <property name="model">sources-liststore</property>
+            <property name="active">0</property>
             <child>
-              <object class="GtkTreeView" id="sources-treeview">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="model">sources-liststore</property>
-                <property name="headers_visible">False</property>
-                <property name="headers_clickable">False</property>
-                <property name="search_column">0</property>
-                <child>
-                  <object class="GtkTreeViewColumn" id="treeviewcolumn1">
-                    <property name="title">Sources</property>
-                    <child>
-                      <object class="GtkCellRendererText" id="cellrenderertext2"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-              </object>
+              <object class="GtkCellRendererText" id="cellrenderertext2"/>
+              <attributes>
+                <attribute name="text">0</attribute>
+              </attributes>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
           <object class="GtkScrolledWindow" id="scrolledwindow2">
-            <property name="width_request">400</property>
+            <property name="width_request">300</property>
             <property name="height_request">300</property>
             <property name="visible">True</property>
             <property name="can_focus">True</property>
@@ -132,29 +113,25 @@
         </child>
       </object>
       <packing>
+        <property name="expand">False</property>
         <property name="position">0</property>
       </packing>
     </child>
     <child>
-      <object class="GtkHBox" id="details-box">
-        <property name="width_request">175</property>
+      <object class="GtkVBox" id="vbox3">
         <property name="visible">True</property>
-        <property name="spacing">12</property>
+        <property name="orientation">vertical</property>
         <child>
           <object class="GtkDrawingArea" id="preview-area">
-            <property name="width_request">200</property>
             <property name="visible">True</property>
           </object>
           <packing>
-            <property name="expand">False</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkVBox" id="vbox1">
+          <object class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
             <child>
               <object class="GtkLabel" id="background-label">
                 <property name="visible">True</property>
@@ -169,6 +146,18 @@
                 <property name="visible">True</property>
                 <property name="spacing">12</property>
                 <child>
+                  <object class="GtkColorButton" id="style-color">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="color">#000000000000</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
                   <object class="GtkComboBox" id="style-combobox">
                     <property name="visible">True</property>
                     <property name="model">style-liststore</property>
@@ -182,18 +171,6 @@
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkColorButton" id="style-color">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="color">#000000000000</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
@@ -205,14 +182,21 @@
             </child>
           </object>
           <packing>
+            <property name="expand">False</property>
             <property name="position">1</property>
           </packing>
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
         <property name="position">1</property>
       </packing>
     </child>
   </object>
+  <object class="GtkSizeGroup" id="sizegroup">
+    <property name="mode">vertical</property>
+    <widgets>
+      <widget name="background-label"/>
+      <widget name="edit-hbox"/>
+    </widgets>
+  </object>
 </interface>
diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c
index 99ffc1a..e752771 100644
--- a/panels/background/cc-background-panel.c
+++ b/panels/background/cc-background-panel.c
@@ -63,6 +63,9 @@ struct _CcBackgroundPanelPrivate
   GCancellable *copy_cancellable;
 
   GtkWidget *spinner;
+
+  GdkPixbuf *screen;
+  GdkPixbuf *gloss;
 };
 
 enum
@@ -164,6 +167,18 @@ cc_background_panel_dispose (GObject *object)
       priv->thumb_factory = NULL;
     }
 
+  if (priv->screen)
+    {
+      g_object_unref (priv->screen);
+      priv->screen = NULL;
+    }
+
+  if (priv->gloss)
+    {
+      g_object_unref (priv->gloss);
+      priv->gloss = NULL;
+    }
+
   G_OBJECT_CLASS (cc_background_panel_parent_class)->dispose (object);
 }
 
@@ -201,7 +216,7 @@ cc_background_panel_class_finalize (CcBackgroundPanelClass *klass)
 }
 
 static void
-source_changed_cb (GtkTreeSelection         *selection,
+source_changed_cb (GtkComboBox              *combo,
                    CcBackgroundPanelPrivate *priv)
 {
   GtkTreeIter iter;
@@ -210,7 +225,8 @@ source_changed_cb (GtkTreeSelection         *selection,
   guint type;
   BgSource *source;
 
-  gtk_tree_selection_get_selected (selection, &model, &iter);
+  gtk_combo_box_get_active_iter (combo, &iter);
+  model = gtk_combo_box_get_model (combo);
   gtk_tree_model_get (model, &iter,
                       1, &type,
                       3, &source, -1);
@@ -315,7 +331,6 @@ backgrounds_changed_cb (GtkIconView       *icon_view,
   GConfChangeSet *cs;
   gchar *pcolor, *scolor;
   CcBackgroundPanelPrivate *priv = panel->priv;
-  GtkTreeSelection *selection;
 
   list = gtk_icon_view_get_selected_items (icon_view);
 
@@ -324,9 +339,9 @@ backgrounds_changed_cb (GtkIconView       *icon_view,
 
   /* check if the current source is read only, i.e. the image placement and
    * color is predefined */
-  selection = gtk_tree_view_get_selection (WID ("sources-treeview"));
-  model = gtk_tree_view_get_model (WID ("sources-treeview"));
-  gtk_tree_selection_get_selected (selection, &model, &iter);
+  model = gtk_combo_box_get_model (GTK_COMBO_BOX (WID ("sources-combobox")));
+  gtk_combo_box_get_active_iter (GTK_COMBO_BOX (WID ("sources-combobox")),
+                                 &iter);
   gtk_tree_model_get (model, &iter, 2, &priv->current_source_readonly, -1);
 
 
@@ -455,28 +470,52 @@ preview_expose_cb (GtkWidget         *widget,
   GtkAllocation allocation;
   CcBackgroundPanelPrivate *priv = panel->priv;
   GdkPixbuf *pixbuf = NULL;
+  gint offset_x;
+  gint offset_y;
+  const gint preview_width = 208;
+  const gint preview_height = 124;
+  const gint preview_x = 24;
+  const gint preview_y = 44;
 
   cr = gdk_cairo_create (gtk_widget_get_window (widget));
 
   gtk_widget_get_allocation (widget, &allocation);
 
+  offset_x = (allocation.width / 2) - (256 / 2);
+  offset_y = (allocation.height / 2) - (256 / 2);
+
   if (priv->current_background)
     {
       pixbuf = gnome_wp_item_get_thumbnail (priv->current_background,
                                             priv->thumb_factory,
-                                            allocation.width,
-                                            allocation.height);
+                                            preview_width,
+                                            preview_height);
+    }
+
+  if (priv->screen)
+    {
+      gdk_cairo_set_source_pixbuf (cr, priv->screen, offset_x, offset_y);
+      cairo_paint (cr);
     }
 
   if (pixbuf)
     {
-      gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+      gdk_cairo_set_source_pixbuf (cr, pixbuf, offset_x + preview_x,
+                                   offset_y + preview_y);
 
       cairo_paint (cr);
 
       g_object_unref (pixbuf);
     }
 
+
+  if (priv->gloss)
+    {
+      gdk_cairo_set_source_pixbuf (cr, priv->gloss, offset_x + preview_x,
+                                   offset_y + preview_y);
+      cairo_paint (cr);
+    }
+
   cairo_destroy (cr);
 
   return TRUE;
@@ -542,10 +581,9 @@ cc_background_panel_init (CcBackgroundPanel *self)
 {
   CcBackgroundPanelPrivate *priv;
   gchar *objects[] = { "backgrounds-liststore", "style-liststore",
-      "sources-liststore", "background-panel", NULL };
+      "sources-liststore", "background-panel", "sizegroup", NULL };
   GError *err = NULL;
   GtkWidget *widget;
-  GtkTreeSelection *selection;
   gint width, height;
   GtkListStore *store;
   gchar *filename;
@@ -613,9 +651,8 @@ cc_background_panel_init (CcBackgroundPanel *self)
   gtk_widget_show_all (GTK_WIDGET (self));
 
   /* connect to source change signal */
-  widget = WID ("sources-treeview");
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
-  g_signal_connect (selection, "changed", G_CALLBACK (source_changed_cb), priv);
+  widget = WID ("sources-combobox");
+  g_signal_connect (widget, "changed", G_CALLBACK (source_changed_cb), priv);
 
   /* connect to the background iconview change signal */
   widget = WID ("backgrounds-iconview");
@@ -628,6 +665,8 @@ cc_background_panel_init (CcBackgroundPanel *self)
   g_signal_connect (widget, "expose-event", G_CALLBACK (preview_expose_cb),
                     self);
 
+  priv->screen = gdk_pixbuf_new_from_file (DATADIR "/video-display.png", NULL);
+  priv->gloss = gdk_pixbuf_new_from_file (DATADIR "/gloss.png", NULL);
 
   width = 150;
   height = width * ((double) gdk_screen_get_height (gdk_screen_get_default ()) /
diff --git a/panels/background/gloss.png b/panels/background/gloss.png
new file mode 100644
index 0000000..f30f6d2
Binary files /dev/null and b/panels/background/gloss.png differ
diff --git a/panels/background/video-display.png b/panels/background/video-display.png
new file mode 100644
index 0000000..08d72dc
Binary files /dev/null and b/panels/background/video-display.png differ



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