[gnome-software] Show font screenshots
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Show font screenshots
- Date: Tue, 22 Oct 2013 15:36:25 +0000 (UTC)
commit f8d925510dd35e41da75733310f6cc510355915d
Author: Richard Hughes <richard hughsie com>
Date: Tue Oct 22 16:35:40 2013 +0100
Show font screenshots
The font screenshots are not in standard large/small sizes so load the preview
at any size provided.
src/gs-app.c | 5 ++++-
src/gs-screenshot-image.c | 3 ++-
src/gs-screenshot.c | 14 +++++++++++---
src/gs-screenshot.h | 4 +++-
src/gs-shell-details.c | 23 ++++++++++++++++++++---
src/plugins/gs-plugin-appstream.c | 2 --
6 files changed, 40 insertions(+), 11 deletions(-)
---
diff --git a/src/gs-app.c b/src/gs-app.c
index e2eae0d..8ba94db 100644
--- a/src/gs-app.c
+++ b/src/gs-app.c
@@ -233,7 +233,10 @@ gs_app_to_string (GsApp *app)
for (i = 0; i < priv->screenshots->len; i++) {
ss = g_ptr_array_index (priv->screenshots, i);
g_string_append_printf (str, "\tscreenshot-%02i:\t%s\n",
- i, gs_screenshot_get_url (ss, G_MAXUINT, G_MAXUINT));
+ i, gs_screenshot_get_url (ss,
+ G_MAXUINT,
+ G_MAXUINT,
+ NULL));
}
tmp = g_hash_table_lookup (priv->urls, GS_APP_URL_KIND_HOMEPAGE);
if (tmp != NULL)
diff --git a/src/gs-screenshot-image.c b/src/gs-screenshot-image.c
index a29782a..b5b2a92 100644
--- a/src/gs-screenshot-image.c
+++ b/src/gs-screenshot-image.c
@@ -259,7 +259,8 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
/* test if size specific cachdir exists */
url = gs_screenshot_get_url (priv->screenshot,
priv->width,
- priv->height);
+ priv->height,
+ NULL);
if (url == NULL) {
/* TRANSLATORS: this is when we request a screenshot size that
* the generator did not create or the parser did not add */
diff --git a/src/gs-screenshot.c b/src/gs-screenshot.c
index 989a99f..4a744dc 100644
--- a/src/gs-screenshot.c
+++ b/src/gs-screenshot.c
@@ -114,8 +114,8 @@ gs_screenshot_add_image (GsScreenshot *screenshot,
/* check if already exists */
item = gs_screenshot_get_item (screenshot, width, height);
if (item != NULL) {
- g_warning ("replaced URL %s with %s for %ux%u",
- item->url, url, width, height);
+ g_debug ("replaced URL %s with %s for %ux%u",
+ item->url, url, width, height);
g_free (item->url);
item->url = g_strdup (url);
} else {
@@ -131,7 +131,10 @@ gs_screenshot_add_image (GsScreenshot *screenshot,
* gs_screenshot_get_url:
**/
const gchar *
-gs_screenshot_get_url (GsScreenshot *screenshot, guint width, guint height)
+gs_screenshot_get_url (GsScreenshot *screenshot,
+ guint width,
+ guint height,
+ GtkRequisition *provided)
{
GsScreenshotItem *item;
@@ -143,6 +146,11 @@ gs_screenshot_get_url (GsScreenshot *screenshot, guint width, guint height)
if (item == NULL)
return NULL;
+ if (provided != NULL) {
+ provided->width = item->width;
+ provided->height = item->height;
+ }
+
return item->url;
}
diff --git a/src/gs-screenshot.h b/src/gs-screenshot.h
index 90ca16f..33f0d2b 100644
--- a/src/gs-screenshot.h
+++ b/src/gs-screenshot.h
@@ -23,6 +23,7 @@
#define __GS_SCREENSHOT_H
#include <glib-object.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
@@ -64,7 +65,8 @@ void gs_screenshot_add_image (GsScreenshot *screenshot,
guint height);
const gchar *gs_screenshot_get_url (GsScreenshot *screenshot,
guint width,
- guint height);
+ guint height,
+ GtkRequisition *provided);
G_END_DECLS
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 9d4e557..b3433bf 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -245,6 +245,7 @@ gs_shell_details_screenshot_selected_cb (GtkListBox *list,
static void
gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
{
+ const gchar *tmp;
GPtrArray *screenshots;
GsScreenshot *ss;
GsShellDetailsPrivate *priv = shell_details->priv;
@@ -252,6 +253,7 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
GtkWidget *ssimg;
GtkWidget *widget;
guint i;
+ GtkRequisition provided;
/* set screenshots */
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
@@ -272,9 +274,24 @@ gs_shell_details_refresh_screenshots (GsShellDetails *shell_details)
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),
- GS_SCREENSHOT_SIZE_LARGE_WIDTH,
- GS_SCREENSHOT_SIZE_LARGE_HEIGHT);
+
+ /* do we have a screenshot of the right size? */
+ tmp = gs_screenshot_get_url (ss,
+ GS_SCREENSHOT_SIZE_LARGE_WIDTH,
+ GS_SCREENSHOT_SIZE_LARGE_HEIGHT,
+ &provided);
+ if (tmp != NULL) {
+ gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
+ GS_SCREENSHOT_SIZE_LARGE_WIDTH,
+ GS_SCREENSHOT_SIZE_LARGE_HEIGHT);
+ } else {
+ /* use any size provided */
+ gs_screenshot_get_url (ss, G_MAXUINT, G_MAXUINT, &provided);
+ gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
+ provided.width,
+ provided.height);
+ }
+
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);
diff --git a/src/plugins/gs-plugin-appstream.c b/src/plugins/gs-plugin-appstream.c
index 6c78826..a27826b 100644
--- a/src/plugins/gs-plugin-appstream.c
+++ b/src/plugins/gs-plugin-appstream.c
@@ -431,8 +431,6 @@ gs_plugin_refine_add_screenshots (GsApp *app, AppstreamApp *item)
ss_kind == APPSTREAM_SCREENSHOT_KIND_DEFAULT);
for (j = 0; j < images_as->len; j++) {
im = g_ptr_array_index (images_as, j);
- if (appstream_image_get_kind (im) == APPSTREAM_IMAGE_KIND_SOURCE)
- continue;
gs_screenshot_add_image (screenshot,
appstream_image_get_url (im),
appstream_image_get_width (im),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]