* gtk/TargetList.custom: add an operator for casting to

TargetEntry[], so you can use methods like
	TargetList.AddTextTargets() in situations where you need a
	TargetEntry[] rather than a TargetList.

	* gtk/glue/targetlist.c: glue for that

svn path=/trunk/gtk-sharp/; revision=48006
This commit is contained in:
Dan Winship 2005-08-04 18:03:21 +00:00
parent 3e19a1d102
commit dc9046526c
5 changed files with 97 additions and 10 deletions

View File

@ -1,3 +1,12 @@
2005-08-04 Dan Winship <danw@novell.com>
* gtk/TargetList.custom: add an operator for casting to
TargetEntry[], so you can use methods like
TargetList.AddTextTargets() in situations where you need a
TargetEntry[] rather than a TargetList.
* gtk/glue/targetlist.c: glue for that
2005-08-04 Mike Kestner <mkestner@novell.com>
* generator/Ctor.cs : call Finish and HandleException for static ctor

View File

@ -185,9 +185,10 @@
<Parameter Name="info" Type="System.UInt32" />
</Parameters>
<Docs>
<summary>To be added</summary>
<param name="info">a <see cref="T:System.UInt32" /></param>
<remarks>To be added</remarks>
<summary>Adds the target types for URIs to the target list</summary>
<param name="info">application-defined ID for these target types</param>
<remarks>Appends the URI targets supported by <see cref="T:Gtk.Selection" /> to the target list. All targets are
added with the same <paramref name="info" />.</remarks>
<since version="Gtk# 2.6" />
</Docs>
</Member>
@ -202,10 +203,11 @@
<Parameter Name="writable" Type="System.Boolean" />
</Parameters>
<Docs>
<summary>To be added</summary>
<param name="info">a <see cref="T:System.UInt32" /></param>
<param name="writable">a <see cref="T:System.Boolean" /></param>
<remarks>To be added</remarks>
<summary>Adds the target types for images to the target list</summary>
<param name="info">application-defined ID for these target types</param>
<param name="writable">if <see langword="true" />, only add the target types for which Gtk knows how to convert a <see cref="T:Gdk.Pixbuf" /> to the format.</param>
<remarks>Appends the image targets supported by <see cref="T:Gtk.Selection" /> to the target list. All targets are
added with the same <paramref name="info" />.</remarks>
<since version="Gtk# 2.6" />
</Docs>
</Member>
@ -219,11 +221,28 @@
<Parameter Name="info" Type="System.UInt32" />
</Parameters>
<Docs>
<summary>To be added</summary>
<param name="info">a <see cref="T:System.UInt32" /></param>
<remarks>To be added</remarks>
<summary>Adds the target types for text to the target list</summary>
<param name="info">application-defined ID for these target types</param>
<remarks>Appends the text targets supported by <see cref="T:Gtk.Selection" /> to the target list. All targets are
added with the same <paramref name="info" />.</remarks>
<since version="Gtk# 2.6" />
</Docs>
</Member>
<Member MemberName="op_Explicit">
<MemberSignature Language="C#" Value="public static Gtk.TargetEntry[] op_Explicit (Gtk.TargetList list);" />
<MemberType>Method</MemberType>
<ReturnValue>
<ReturnType>Gtk.TargetEntry[]</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="list" Type="Gtk.TargetList" />
</Parameters>
<Docs>
<param name="list">A <see cref="T:Gtk.TargetList" />.</param>
<summary>Converts a <see cref="T:Gtk.TargetList" /> to an array of <see cref="T:Gtk.TargetEntry" />.</summary>
<returns>An equivalent array of <see cref="T:Gtk.TargetEntry" />.</returns>
<remarks />
</Docs>
</Member>
</Members>
</Type>

View File

@ -34,3 +34,17 @@
public void Remove(string target) {
Remove(Gdk.Atom.Intern (target, false));
}
[DllImport("gtksharpglue-2")]
static extern int gtksharp_target_list_length (IntPtr list);
[DllImport("gtksharpglue-2")]
static extern void gtksharp_target_list_to_entry_array (IntPtr list, [In, Out] TargetEntry[] entries);
public static explicit operator TargetEntry[] (TargetList list)
{
int length = gtksharp_target_list_length (list.Handle);
TargetEntry[] entries = new TargetEntry[length];
gtksharp_target_list_to_entry_array (list.Handle, entries);
return entries;
}

View File

@ -10,6 +10,7 @@ libgtksharpglue_2_la_SOURCES = \
object.c \
selectiondata.c \
style.c \
targetlist.c \
vmglueheaders.h \
widget.c

44
gtk/glue/targetlist.c Normal file
View File

@ -0,0 +1,44 @@
/*
* Utilities for GtkTargetList
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the Lesser GNU General
* Public License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include <gtk/gtkselection.h>
/* forward declarations */
int gtksharp_target_list_length (GtkTargetList *list);
void gtksharp_target_list_to_entry_array (GtkTargetList *list, GtkTargetEntry *entries);
/* */
int
gtksharp_target_list_length (GtkTargetList *list)
{
return g_list_length (list->list);
}
void
gtksharp_target_list_to_entry_array (GtkTargetList *list, GtkTargetEntry *entries)
{
GList *l;
int i;
for (l = list->list, i = 0; l; l = l->next, i++) {
GtkTargetPair *pair = (GtkTargetPair *)l->data;
entries[i].target = gdk_atom_name (pair->target);
entries[i].flags = pair->flags;
entries[i].info = pair->info;
}
}