[Sugar-devel] [PATCH] implements #1106 - Browse: No preview in Journal for downloaded image
Walter Bender
walter.bender at gmail.com
Tue Sep 14 10:07:42 EDT 2010
On Tue, Sep 14, 2010 at 9:50 AM, <godiard at sugarlabs.org> wrote:
> From: Gonzalo Odiard <godiard at gmail.com>
>
> ---
> downloadmanager.py | 28 ++++++++++++++++++++++++++++
> 1 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/downloadmanager.py b/downloadmanager.py
> index 3eec649..f9d8ef7 100644
> --- a/downloadmanager.py
> +++ b/downloadmanager.py
> @@ -36,6 +36,7 @@ from sugar import profile
> from sugar import mime
> from sugar.graphics.alert import Alert, TimeoutAlert
> from sugar.graphics.icon import Icon
> +from sugar.graphics import style
> from sugar.activity import activity
>
> # #3903 - this constant can be removed and assumed to be 1 when dbus-python
> @@ -192,12 +193,39 @@ class Download:
> sniffed_mime_type = mime.get_for_file(self._target_file.path)
> self.dl_jobject.metadata['mime_type'] = sniffed_mime_type
>
> + if self._mime_type in ('image/bmp','image/gif','image/jpeg','image/png','image/tiff'):
> + self.dl_jobject.metadata['preview'] = self.__get_preview_image()
> + else:
> + self.dl_jobject.metadata['preview'] = ''
What about svg?
> +
> datastore.write(self.dl_jobject,
> transfer_ownership=True,
> reply_handler=self._internal_save_cb,
> error_handler=self._internal_save_error_cb,
> timeout=360 * DBUS_PYTHON_TIMEOUT_UNITS_PER_SECOND)
>
> + def __get_preview_image(self):
> + preview_width, preview_height = style.zoom(300), style.zoom(225)
> +
> + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self._target_file.path, preview_width, preview_height)
> + width, height = pixbuf.get_width(), pixbuf.get_height()
> +
> + pixbuf2 = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, pixbuf.get_has_alpha(),
> + pixbuf.get_bits_per_sample(), preview_width, preview_height)
> + pixbuf2.fill(0xffffffff)
> +
> + margin_x, margin_y = (preview_width - width) / 2, (preview_height - height) / 2
> +
> + pixbuf.copy_area(0, 0, width, height, pixbuf2, margin_x, margin_y)
> +
> + preview_data = []
> + def save_func(buf, data):
> + data.append(buf)
> +
> + pixbuf2.save_to_callback(save_func, 'png', user_data=preview_data)
> + preview_data = ''.join(preview_data)
> + return dbus.ByteArray(preview_data)
> +
> def __start_response_cb(self, alert, response_id):
> global _active_downloads
> if response_id is gtk.RESPONSE_CANCEL:
> --
> 1.7.2.2
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
>
--
Walter Bender
Sugar Labs
http://www.sugarlabs.org
More information about the Sugar-devel
mailing list