[Sugar-devel] [PATCH] implements #1106 - Browse: No preview in Journal for downloaded image

Gonzalo Odiard godiard at sugarlabs.org
Wed Sep 15 08:21:50 EDT 2010


Ok. I addressed all concerns from the previous mails and the comments in
irc.
This patch take the supported mime types from the pixbuf library and open
the image at the desired size to optimize if possible the io.

Gonzalo

On Wed, Sep 15, 2010 at 7:58 AM, Simon Schampijer <simon at schampijer.de>wrote:

> Hi Gonzalo,
>
> thanks for the new patch. Would be good to tell in a few words what you
> did change to the previous one, like: "I addressed all concerns." or
> "That one I did not address since..."
>
> Regards,
>    Simon
>
> On 09/14/2010 08:06 PM, godiard at sugarlabs.org wrote:
> > From: Gonzalo Odiard<godiard at sugarlabs.org>
> >
> > ---
> >   downloadmanager.py |   32 ++++++++++++++++++++++++++++++++
> >   1 files changed, 32 insertions(+), 0 deletions(-)
> >
> > diff --git a/downloadmanager.py b/downloadmanager.py
> > index 3eec649..24d3911 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,43 @@ class Download:
> >                   sniffed_mime_type =
> mime.get_for_file(self._target_file.path)
> >                   self.dl_jobject.metadata['mime_type'] =
> sniffed_mime_type
> >
> > +            pixbuf_mime_types = []
> > +            for pixbuf_format in gtk.gdk.pixbuf_get_formats():
> > +                pixbuf_mime_types.extend(pixbuf_format['mime_types'])
> > +
> > +            if self._mime_type in pixbuf_mime_types:
> > +                self.dl_jobject.metadata['preview'] =
> self._get_preview_image()
> > +
> >               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)
> > +
> > +        OPAQUE_WHITE = 0xffffffff
> > +        pixbuf2.fill(OPAQUE_WHITE)
> > +
> > +        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:
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
>



-- 
Gonzalo Odiard
SugarLabs Argentina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.sugarlabs.org/archive/sugar-devel/attachments/20100915/c47bea91/attachment-0001.htm 


More information about the Sugar-devel mailing list