GtkSharp/gtk/Clipboard.custom
Mike Kestner c0b574a686 2003-02-21 Mike Kestner <mkestner@speakeasy.net>
* mapdllnames.pl : a little whitespace action
	* api/*-api.xml : move to win32 dllnames
	* */makefile.win32 : remove the mapdllnames step
	* */*.cs : move to win32 dllnames
	* */*.custom : move to win32 dllnames
	* sources/gtk-sharp.sources : move to win32 dllnames

svn path=/trunk/gtk-sharp/; revision=11823
2003-02-22 04:34:56 +00:00

59 lines
1.9 KiB
Text

public static Hashtable clipboard_objects = new Hashtable ();
private static uint clipboard_object_next_id = 0;
[DllImport("libgtk-win32-2.0-0.dll")]
static extern bool gtk_clipboard_set_with_data(IntPtr raw, IntPtr targets, int n_targets, GtkSharp.GtkClipboardGetFuncNative get_func, GtkSharp.GtkClipboardClearFuncNative clear_func, uint id);
[DllImport("gtksharpglue")]
static extern IntPtr gtksharp_clipboard_target_list_add (IntPtr list, string name, uint flags, uint info);
[DllImport("gtksharpglue")]
static extern IntPtr gtksharp_clipboard_target_list_to_array (IntPtr list);
[DllImport("gtksharpglue")]
static extern void gtksharp_clipboard_target_array_free (IntPtr targets);
[DllImport("gtksharpglue")]
static extern void gtksharp_clipboard_target_list_free (IntPtr list);
GtkSharp.GtkClipboardGetFuncWrapper get_func_wrapper;
GtkSharp.GtkClipboardClearFuncWrapper clear_func_wrapper;
public bool Set (Gtk.TargetEntry[] targets,
Gtk.ClipboardGetFunc get_func,
Gtk.ClipboardClearFunc clear_func,
object data)
{
uint this_id;
lock (clipboard_objects) {
this_id = clipboard_object_next_id++;
clipboard_objects[this_id] = data;
}
get_func_wrapper = new GtkSharp.GtkClipboardGetFuncWrapper (get_func);
clear_func_wrapper = new GtkSharp.GtkClipboardClearFuncWrapper (clear_func);
IntPtr list = IntPtr.Zero;
foreach (Gtk.TargetEntry t in targets) {
list = gtksharp_clipboard_target_list_add (list, t.target, t.flags, t.info);
}
IntPtr array = gtksharp_clipboard_target_list_to_array (list);
bool ret = gtk_clipboard_set_with_data (Handle, array, targets.Length, get_func_wrapper.NativeDelegate, clear_func_wrapper.NativeDelegate, this_id);
gtksharp_clipboard_target_array_free (array);
gtksharp_clipboard_target_list_free (list);
return ret;
}
public void SetText (string new_text)
{
SetText (new_text, new_text.Length);
}