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

Tomeu Vizoso tomeu at sugarlabs.org
Wed Sep 15 07:03:45 EDT 2010


On Wed, Sep 15, 2010 at 12:58, 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..."

Also, the commit message should describe the change, not just refer to
a bug, because they use to be several possible solutions to a single
problem.

Regards,

Tomeu

> 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
>


More information about the Sugar-devel mailing list