Getting a gtk.image from the get_preview function
Tomeu Vizoso
tomeu at sugarlabs.org
Thu Aug 6 11:47:31 EDT 2009
On Thu, Aug 6, 2009 at 16:58, 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.
The problem seems to be the None value passed to gtk.gdk.Pixmap(), try
passing a gdk.Window to it, probably the one of the current widget:
self.window.
Regards,
Tomeu
> Regards,
> VIJIT
>
> 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 Devel
mailing list