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

sumit singh sumit.coder at gmail.com
Thu Aug 6 12:16:57 EDT 2009


I tried it using the self.canvas.window and the self.window both of
them , but they still give the same error.

On a separate note, would it be a good idea to use the hippoImage
itself as the image of the button, I mean wrapping it into a hippobox
and then using that box as the image of the button?

Actually we had planned to start the deployment/testing of the project
from tomorrow, everything else is almost in sync with tomorrow's
deadline except this problem, so may be I should use this concept to
solve the immediate purpose, and would try and find a better soln
after meeting tomorrow's deadline as we will proceed further with the
project. Kindly give your suggestions.

Regards,
sumit

On Thu, Aug 6, 2009 at 9:17 PM, Tomeu Vizoso<tomeu at sugarlabs.org> wrote:
> 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 Sugar-devel mailing list