[pygtk] Re: gtk.Clipboard and custom selection targets under win32
Richard Procter
rnp at paradise.net.nz
Thu Oct 4 05:48:42 WST 2007
On 2/10/2007, at 1:13 PM, Richard Procter wrote:
> Hi all,
>
> I'm trying to share application-specific data between my program
> instances using the gtk.Clipboard and a custom target to
> distinguish it from normal text.
I found a workaround which appears to work: use
gtk.gdk.SELECTION_TYPE_BITMAP for the target type instead of STRING.
def get_f(clipboard, selection, target_handle, userdata):
selection.set(gtk.gdk.SELECTION_TYPE_BITMAP, 8, "Hello there")
I don't know whether this type guarantees that the data will to be
copied verbatim.
regards,
Richard.
> The following snippets work on linux but not on win32, where it
> gives the warning:
> copy:13: GtkWarning: gdk_property_change: assertion `type !=
> GDK_TARGET_STRING' failed
> This appears to come from gdk/win32/gdkproperty-win32.c
>
> Has anyone used custom selection targets under win32 with more
> success?
>
> regards,
> Richard.
>
> The 'copy' process
> """
> import pygtk
> pygtk.require('2.0')
> import gtk
>
> def get_f(clipboard, selection, target_handle, userdata):
> selection.set("STRING", 8, "Hello there")
>
> def clear_f(clipboard, userdata):
> pass
>
> targets = [("Foobar", 0, 0)]
> gtk.clipboard_get().set_with_data(targets, get_f, clear_f)
> gtk.main()
> """
>
> The 'paste' process
> """
> import pygtk
> pygtk.require('2.0')
> import gtk
>
> def request_f(clipboard, selection, userdata):
> print "Target ", selection.target
> print "Type ", selection.type
> print "Format ", selection.format
> print "Data in selection is ", selection.data
>
> gtk.clipboard_get().request_contents("Foobar", request_f)
> gtk.main()
> """
>
> Under linux, the string in the custom target is copied successfully:
> """
> Target Foobar
> Type STRING
> Format 8
> Data in selection is Hello there
> """
>
> Under win32, I get
> copy:13: GtkWarning: gdk_property_change: assertion `type !=
> GDK_TARGET_STRING' failed
>
> win32 (Windows 2000 SP4):
> gtk.pygtk_version == (2, 8, 6) or (2, 10, 6)
> gtk.gtk_version == (2, 8, 10) or (2, 10, 11)
> python 2.4
>
> linux:
> gtk.pygtk_version == (2, 8, 6)
> gtk.gtk_version == (2, 8, 20)
> python 2.4
>
More information about the pygtk
mailing list