.NET wrapper for Gtk and other related libraries
eb4fdee774
* glib/Opaque.cs (Owned): new property saying whether or not gtk# owns the memory. (Opaque): Set Owned to true in the void ctor and false in the IntPtr one. (GetOpaque): add a new overload that can also create opaques, a la GLib.Object.GetObject. (Ref, Unref, Free): empty virtual methods to be overridden by subclasses. (set_Raw): Unref() and possibly Free() the old value, Ref() the new one. (~Opaque, Dispose): set Raw to IntPtr.Zero (triggering Free/Unref if needed) * parser/gapi2xml.pl (addReturnElem): if the method is named Copy and returns a pointer, set the "owned" attribute on the return-type. * */*-api.raw: Regen * generator/HandleBase.cs (FromNative): Add new FromNative/FromNativeReturn overloads that takes a "bool owned" param. Implement the 1-arg FromNative and FromNativeReturn in terms of that. * generator/ObjectBase.cs (FromNative): Implement HandleBase's new overload. Use the two-arg version of GLib.Object.GetObject when "owned" is true. * generator/OpaqueGen.cs (Generate): Pull out Ref, Unref, and Free/Destroy/Dispose methods and handle them specially by overriding Opaque.Ref, .Unref, and .Free appropriately. (If any of the methods are marked deprecated, output a deprecated do-nothing method as well, to save us from having to write all those deprecated methods by hand.) (FromNative): use GetOpaque, passing "owned". * generator/ReturnValue.cs (FromNative): if the value is a HandleBase, pass Owned to its FromNative(). * generator/Parameters.cs (Owned): new property (for use on out params) (FromNative): Call FromNative() on the generatable, handling Owned in the case of HandleBase. * generator/ManagedCallString.cs: * generator/MethodBody.cs: * generator/Signal.cs: use param.FromNative() rather than param.Generatable.FromNative(), to get ownership right. * */*.metadata: Mark opaque ref/unref/free methods deprecated (except where we were hiding them before). Add "owned" attributes to return values and out params as needed. * pango/AttrIterator.custom (GetFont): work around a memory-management oddity of the underlying method. * pango/AttrFontDesc.cs (AttrFontDesc): copy the passed-in FontDescriptor, since the attribute will assume ownership of it. * gtk/TreeView.custom (GetPathAtPos): set the "owned" flag on the returned TreePaths. * gtk/TargetList.custom: Remove refcounting stuff, which is now handled automatically * gtk/NodeStore.cs (GetPath): clear the Owned flag on the created TreePath so that the underlying structure doesn't get freed when the function returns * gtkhtml/HTMLStream.custom (Destroy): hide this and then reimplement it by hand to keep OpaqueGen from using it in Dispose(), since calling it after an HTMLStream.Close() will result in a crash. svn path=/trunk/gtk-sharp/; revision=47928 |
||
---|---|---|
art | ||
atk | ||
audit | ||
doc | ||
gconf | ||
gda | ||
gdk | ||
generator | ||
glade | ||
glib | ||
gnome | ||
gnomedb | ||
gnomevfs | ||
gtk | ||
gtkdotnet | ||
gtkhtml | ||
pango | ||
parser | ||
rsvg | ||
sample | ||
sources | ||
vte | ||
AssemblyInfo.cs.in | ||
AUTHORS | ||
autogen.sh | ||
bootstrap | ||
bootstrap-2.4 | ||
bootstrap-for-the-insane | ||
ChangeLog | ||
configure.in.in | ||
COPYING | ||
gapi-cdecl-insert | ||
gtk-sharp.snk | ||
HACKING | ||
Makefile.am | ||
Makefile.include | ||
makefile.win32 | ||
NEWS | ||
README | ||
README.generator |
The Gtk# website can be found at: http://gtk-sharp.sourceforge.net/ Gtk# is a .NET language binding for the GTK+ toolkit and assorted GNOME libraries. Gtk# is free software, licensed under the GNU LGPL. The target is the 2.6 platform. Building & Installing Gtk#: --------------------------- To compile Gtk# on Win32 using the .NET framework compiler and libraries, in the top level directory, type: make -f makefile.win32 The Linux build is the traditional: ./configure make make install You may want to consider using configure's prefix option to install Gtk# using the same prefix as Mono. That way all of your .NET assemblies get placed in the same place, and you don't need to do any extra "configuring" to make it so mono (and mint) can find your assemblies. In other words, doing something like: ./configure --prefix=/the/path/that/was/used/for/mono make make install (Of course, replace "/the/path/that/was/used/for/mono" with whatever path which was used for Mono. This might have been "/usr", "/usr/local", or something similar.) If you are compiling from SVN, you will need libtool and the auto* tools and will need to replace the configure above with bootstrap for the 2.5.x version or bootstrap-2.4 for the 1.9.x version. Discussion & Support: --------------------- A mailing list for Gtk# discussion is available. You can subscribe to the mailing list by visiting: http://lists.ximian.com/mailman/listinfo/gtk-sharp-list And following the instructions (on that page) to subscribe. Messages are posted on this mailing list by sending them to: gtk-sharp-list@ximian.com (The mailing list requires you to subscribe in order to post messages.) An archive of this mailing list can be found at: http://lists.ximian.com/archives/public/gtk-sharp-list/ Further, a Wiki is available for Gtk#, and can be found at: http://www.nullenvoid.com/gtksharp/wiki/ Also, people can get help with and discuss Gtk# on IRC via the #mono channel on the irc.gnome.org IRC server. People looking for general help with C# should visit the #c# channel on irc.freenode.net IRC server. Developers: ----------- For developers wishing to "get started" with Gtk#, they are encouraged to read the Mono Hand Book: http://www.go-mono.com/tutorial In the Mono Hand Book, Chapter 21 is on Gtk#. (In the Mono Hand Book, the Gtk# .NET bindings are refered to as GNOME.NET.) Hackers: -------- For those who wish to help with the development of Gtk#, they should read the file named: HACKING. Also, anyone wishing to hack Gtk# is encouraged to join the Gtk# mailing list. And to visit the #mono IRC channel (on irc.gnome.org).