summaryrefslogtreecommitdiff
path: root/components/services/nautilus-dependent-shared
diff options
context:
space:
mode:
Diffstat (limited to 'components/services/nautilus-dependent-shared')
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-extensions.c47
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-extensions.h5
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-footer.c4
3 files changed, 50 insertions, 6 deletions
diff --git a/components/services/nautilus-dependent-shared/eazel-services-extensions.c b/components/services/nautilus-dependent-shared/eazel-services-extensions.c
index 29f4b499e..6a183538f 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-extensions.c
+++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.c
@@ -126,12 +126,6 @@ eazel_services_image_new_from_uri (const char *uri,
g_return_val_if_fail (uri != NULL, NULL);
- /* as an optimization, it can be a local file. If it doesn't start with http://,
- just pass it on to create_image_widget */
- if (!nautilus_istr_has_prefix (uri, "http://")) {
- return eazel_services_image_new (uri, tile_name, background_color);
- }
-
/* load the image - synchronously, at least at first */
pixbuf = nautilus_gdk_pixbuf_load (uri);
@@ -154,6 +148,47 @@ eazel_services_image_new_from_uri (const char *uri,
return image;
}
+
+
+GtkWidget *
+eazel_services_clickable_image_new_from_uri (const char *uri,
+ const char *tile_name,
+ guint32 background_color,
+ int max_width,
+ int max_height)
+{
+ GtkWidget *image = NULL;
+ GdkPixbuf *pixbuf;
+ GdkPixbuf *scaled_pixbuf;
+
+ g_return_val_if_fail (uri != NULL, NULL);
+
+ /* load the image - synchronously, at least at first */
+ pixbuf = nautilus_gdk_pixbuf_load (uri);
+
+ /* pin the image to the specified dimensions if necessary */
+ if (pixbuf && max_width > 0 && max_height > 0) {
+ scaled_pixbuf = nautilus_gdk_pixbuf_scale_down_to_fit (pixbuf, max_width, max_height);
+ gdk_pixbuf_unref (pixbuf);
+ pixbuf = scaled_pixbuf;
+ }
+
+ /* create the image widget then release the pixbuf*/
+ image = eazel_services_image_new_clickable (NULL, tile_name, background_color);
+
+ if (pixbuf != NULL) {
+ nautilus_labeled_image_set_pixbuf (NAUTILUS_LABELED_IMAGE (image),
+ pixbuf);
+ }
+
+ nautilus_gdk_pixbuf_unref_if_not_null (pixbuf);
+
+ return image;
+}
+
+
+
+
GtkWidget *
eazel_services_label_new (const char *text,
guint drop_shadow_offset,
diff --git a/components/services/nautilus-dependent-shared/eazel-services-extensions.h b/components/services/nautilus-dependent-shared/eazel-services-extensions.h
index 68ecb1b6d..818133182 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-extensions.h
+++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.h
@@ -75,6 +75,11 @@ GtkWidget *eazel_services_image_new_from_uri (const char *uri,
guint32 background_color,
int max_width,
int max_height);
+GtkWidget *eazel_services_clickable_image_new_from_uri (const char *uri,
+ const char *tile_name,
+ guint32 background_color,
+ int max_width,
+ int max_height);
GtkWidget *eazel_services_label_new (const char *text,
guint drop_shadow_offset,
float xalign,
diff --git a/components/services/nautilus-dependent-shared/eazel-services-footer.c b/components/services/nautilus-dependent-shared/eazel-services-footer.c
index aebcea1d0..1c4220772 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-footer.c
+++ b/components/services/nautilus-dependent-shared/eazel-services-footer.c
@@ -318,6 +318,10 @@ eazel_services_footer_update (EazelServicesFooter *footer,
g_return_if_fail (items != NULL);
g_return_if_fail (num_items > 0);
+ gtk_container_foreach (GTK_CONTAINER (footer),
+ (GtkCallback) gtk_widget_destroy,
+ NULL);
+
for (i = 0; i < num_items; i++) {
GtkWidget *item;