[gnome-software] Show all the screenshots with captions for the details view for fonts



commit d8a54041a3144e5bd4b2e80cb9ccdad10b4edecb
Author: Richard Hughes <richard hughsie com>
Date:   Thu Oct 24 21:34:05 2013 +0100

    Show all the screenshots with captions for the details view for fonts
    
    You need new AppStream metadata for this to work. We'll do something closer to
    the mockups soon.

 src/gnome-software.ui  |    1 +
 src/gs-shell-details.c |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/src/gnome-software.ui b/src/gnome-software.ui
index 086a18f..11aca21 100644
--- a/src/gnome-software.ui
+++ b/src/gnome-software.ui
@@ -818,6 +818,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="orientation">vertical</property>
+                        <property name="spacing">6</property>
                         <child>
                           <placeholder/>
                         </child>
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index b3433bf..83eda48 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -249,12 +249,45 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
        GPtrArray *screenshots;
        GsScreenshot *ss;
        GsShellDetailsPrivate *priv = shell_details->priv;
+       GtkWidget *label;
        GtkWidget *list;
        GtkWidget *ssimg;
        GtkWidget *widget;
        guint i;
        GtkRequisition provided;
 
+       /* treat screenshots differently */
+       if (gs_app_get_id_kind (priv->app) == GS_APP_ID_KIND_FONT) {
+               widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+                                                            "box_details_screenshot_main"));
+               gs_container_remove_all (GTK_CONTAINER (widget));
+               screenshots = gs_app_get_screenshots (priv->app);
+               for (i = 0; i < screenshots->len; i++) {
+                       ss = g_ptr_array_index (screenshots, i);
+
+                       /* set caption */
+                       label = gtk_label_new (gs_screenshot_get_caption (ss));
+                       g_object_set (label,
+                                     "xalign", 0.0,
+                                     NULL);
+                       gtk_box_pack_start (GTK_BOX (widget), label, FALSE, FALSE, 0);
+                       gtk_widget_set_visible (label, TRUE);
+
+                       /* set images */
+                       ssimg = gs_screenshot_image_new (priv->session);
+                       gs_screenshot_image_set_cachedir (GS_SCREENSHOT_IMAGE (ssimg),
+                                                         g_get_user_cache_dir ());
+                       gs_screenshot_image_set_screenshot (GS_SCREENSHOT_IMAGE (ssimg), ss);
+                       gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
+                                                     G_MAXUINT,
+                                                     G_MAXUINT);
+                       gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), NULL);
+                       gtk_box_pack_start (GTK_BOX (widget), ssimg, FALSE, FALSE, 0);
+                       gtk_widget_set_visible (ssimg, TRUE);
+               }
+               return;
+       }
+
        /* set screenshots */
        widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
                                                     "box_details_screenshot_main"));


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