[Sugar-devel] Getting a gtk.image from the get_preview function

Tomeu Vizoso tomeu at sugarlabs.org
Thu Aug 6 11:48:25 EDT 2009


On Thu, Aug 6, 2009 at 17:05, sumit singh<sumit.coder at gmail.com> wrote:
> Tomeu,
>
> Moreover, is it possible to use a hippocanvas surface as a button
> image or something like a button or a normal image even, I mean can I
> pack a hippocanvas in a vbox or hbox? Sorry, for asking such a basic
> question but I don't have any idea about hippocanvas.

It is possible, though I'm not sure you need it in Write. Search for a
file called detailedentry.py for an example.

Regards,

Tomeu

> Regards,
> sumit
>
> On Thu, Aug 6, 2009 at 8:28 PM, sumit singh<sumit.coder at gmail.com> wrote:
>> Hi Tomeu,
>>
>> Thanx for your reply. I tried this as well, but doesn't seems to work.
>> Here is my code--   http://pastebin.be/20215  , where get_preview2()
>> is similar to get_preview fn and it returns in a similar manner. This
>> is the get preview2 fn--- http://pastebin.be/20216
>> . The log error can be found at --- http://pastebin.be/20214 . Kindly
>> give your suggestions.
>>
>> Regards,
>
>>
>> On Thu, Aug 6, 2009 at 1:15 PM, Tomeu Vizoso<tomeu at sugarlabs.org> wrote:
>>> On Wed, Aug 5, 2009 at 13:05, sumit singh<sumit.coder at gmail.com> wrote:
>>>> Hi Tomeu,
>>>>
>>>> Thanx for your reply. I tried using the it , but it doesn't seem to
>>>> work, it gives an error that the image should be a gdkpixbuf or None.
>>>> Here is my code-  http://pastebin.be/20184  , isn't it so that while
>>>> creating the pixmap on line no15, we are just using the height and
>>>> width of the surface and not the surface anywhere. I mean how are we
>>>> transferring the data of the image to the pixmap.
>>>> Thinking this I also tried this approach but didn't worked----
>>>> http://pastebin.be/20185 .
>>>>
>>>> Kindly have a look as in where am I doing the mistake.
>>>
>>> Have written some code based on my earlier pointers, but haven't tested it:
>>>
>>> # wrap the png data in a "virtual file"
>>> import StringIO.StringIO
>>> png_file = StringIO.StringIO(preview_data)
>>>
>>> # create a cairo surface with the png data
>>> surface = cairo.ImageSurface.create_from_png(png_file)
>>>
>>> # create a pixmap with the same dimensions
>>> w, h = surface.get_width(), surface.get_height()
>>> pixmap = gtk.gdk.Pixmap (None, w, h, 24)
>>>
>>> # create a cairo graphics context dor drawing into the pixmap
>>> cr = pixmap.cairo_create ()
>>>
>>> # paint the surface to the graphics context
>>> cr.set_source_surface (surface, 0, 0)
>>> cr.paint ()
>>>
>>> # create an image widget and assign the pixmap to it
>>> im = gtk.Image()
>>> im.set_from_pixmap(pixmap, None)
>>>
>>> You may want to read a bit about pixmaps, pixbufs, etc. Both in the
>>> PyGtk and X11 documentation:
>>>
>>> http://www.pygtk.org/pygtktutorial/sec-pixmaps.html
>>> http://www.pygtk.org/docs/pygtk/class-gdkpixmap.html
>>> http://tronche.com/gui/x/xlib/pixmap-and-cursor/pixmap.html
>>>
>>> HTH,
>>>
>>> Tomeu
>>>
>>>> Regards,
>>>> sumit
>>>>
>>>> On Wed, Aug 5, 2009 at 12:33 PM, Tomeu Vizoso<tomeu at sugarlabs.org> wrote:
>>>>> On Wed, Aug 5, 2009 at 03:06, sumit singh<sumit.coder at gmail.com> wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> I would like to ask what is the best way to get a gtk.Image from the
>>>>>> data returned by get_preview function of activity.Activity fn of
>>>>>> sugar. I want to make an image buttton using this data. Currently, I
>>>>>> am doing it by saving the data in a temp file using the tempfile
>>>>>> module of sugar and then by loading the image from this file, however,
>>>>>> as I will be req to load around 15-20 such images, I can't say how
>>>>>> fast the process will end into. Is there a faster method?
>>>>>>
>>>>>> For your reference , here is the code of how the journal activity uses
>>>>>> this data---- http://pastebin.be/20177 , but as I don't want to use
>>>>>> hippo canvas, so this method won't work. Kindly give your suggestions.
>>>>>
>>>>> Sorry, didn't remembered that the journal used hippo to display the
>>>>> previews when I recommended you to look at that.
>>>>>
>>>>> If you get a cairo surface like the journal does, you can draw it to a
>>>>> pixmap and then tell a gtk.Image to display it. More details in this
>>>>> post (disregard the pixbuf stuff):
>>>>>
>>>>> http://lethalman.blogspot.com/2009/04/create-pixbuf-from-cairo-surface.html
>>>>>
>>>>> HTH,
>>>>>
>>>>> Tomeu
>>>>>
>>>>>> Regards,
>>>>>> sumit
>>>>>>
>>>>>
>>>>
>>>
>>
>


More information about the Sugar-devel mailing list