[Bugs] #1106 NORM: Browse: No preview in Journal for downloaded image

Sugar Labs Bugs bugtracker-noreply at sugarlabs.org
Thu Aug 12 13:56:24 EDT 2010


#1106: Browse: No preview in Journal for downloaded image
----------------------------+-----------------------------------------------
    Reporter:  Mokurai      |          Owner:  lucian     
        Type:  enhancement  |         Status:  assigned   
    Priority:  Normal       |      Milestone:  0.90       
   Component:  Browse       |        Version:  Unspecified
    Severity:  Critical     |       Keywords:  GPA r?     
Distribution:  Unspecified  |   Status_field:  Unconfirmed
----------------------------+-----------------------------------------------
Changes (by lucian):

  * priority:  High => Normal


Comment:

 The patch doesn't apply: fatal: corrupt patch at line 16

 Please follow Tomeu's instructions.

 Replying to [comment:5 godiard]:
 > This patch resolves the problem in browser.
 > I don't know if may be a good idea do the preview in the datastore
 instead.
 >
 > Gonzalo
 > {{{
 > [gonzalo at aronax Browse.activity]$ diff -u downloadmanager.py.ori
 downloadmanager.py
 > --- downloadmanager.py.ori    2010-07-05 20:27:06.000000000 -0300
 > +++ downloadmanager.py    2010-08-06 02:17:23.095272320 -0300
 > @@ -36,8 +36,10 @@
 >  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
 >  # 0.82.3 is the only version used
 >  import dbus
 > @@ -192,12 +194,47 @@
 >                  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'] = ''
 > +
 >              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):
 > +        pixbuf = gtk.gdk.pixbuf_new_from_file(self._target_file.path)
 > +        width, height = pixbuf.get_width(), pixbuf.get_height()
 > +
 > +        preview_width = style.zoom(300)
 > +        preview_height =  style.zoom(225)
 > +
 > +        if (width > preview_width) or (height > preview_height):
 > +            scale_x = float(width) / preview_width
 > +            scale_y = float(height) / preview_height
 > +            scale = max(scale_x,scale_y)
 > +
 > +            pixbuf = pixbuf.scale_simple(float(width) / scale, height /
 scale,
 > +                                     gtk.gdk.INTERP_BILINEAR)
 > +        pixbuf2 =
 gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,pixbuf.get_has_alpha(),8,preview_width,preview_height)
 > +        pixbuf2.fill(0xffffffff)
 > +        margin_x = (preview_width - pixbuf.get_width()) / 2
 > +        margin_y = (preview_height - pixbuf.get_height()) / 2
 > +
 > +
 pixbuf.copy_area(0,0,pixbuf.get_width(),pixbuf.get_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:
 > @@ -273,10 +310,10 @@
 >          self.dl_jobject.metadata['progress'] = '0'
 >          self.dl_jobject.metadata['keep'] = '0'
 >          self.dl_jobject.metadata['buddies'] = ''
 > -        self.dl_jobject.metadata['preview'] = ''
 >          self.dl_jobject.metadata['icon-color'] = \
 >                  profile.get_color().to_string()
 >          self.dl_jobject.metadata['mime_type'] = self._mime_type
 > +        self.dl_jobject.metadata['preview'] = ''
 >          self.dl_jobject.file_path = ''
 >          datastore.write(self.dl_jobject)
 > }}}

-- 
Ticket URL: <http://bugs.sugarlabs.org/ticket/1106#comment:9>
Sugar Labs <http://sugarlabs.org/>
Sugar Labs bug tracking system


More information about the Bugs mailing list