.NET wrapper for Gtk and other related libraries
Go to file
Dan Winship eb4fdee774 Automatic memory management for opaque types [#49565]
* 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
2005-08-02 18:45:21 +00:00
art * parser/gapi2xml.pl (addParamsElem): change the handling of 2005-07-22 19:10:04 +00:00
atk 2005-07-28 Mike Kestner <mkestner@novell.com> 2005-07-28 21:24:55 +00:00
audit 2005-05-21 Mike Kestner <mkestner@novell.com> 2005-05-21 16:41:11 +00:00
doc 2005-08-01 Todd Berman <tberman@off.net> 2005-08-01 18:32:19 +00:00
gconf 2005-06-23 Mike Kestner <mkestner@novell.com> 2005-06-23 21:52:54 +00:00
gda Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
gdk Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
generator Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
glade 2005-06-10 Mike Kestner <mkestner@novell.com> 2005-06-10 15:42:00 +00:00
glib Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
gnome Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
gnomedb * generator/Parameters.cs (IsHidden): method to check if a 2005-05-02 20:10:03 +00:00
gnomevfs Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
gtk Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
gtkdotnet 2005-04-26 Miguel de Icaza <miguel@novell.com> 2005-04-26 19:54:31 +00:00
gtkhtml Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
pango Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
parser Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
rsvg Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
sample * gtk/ComboBoxEntry.custom: add an "Entry" property to cleanly 2005-07-27 13:52:51 +00:00
sources 2005-07-28 Mike Kestner <mkestner@novell.com> 2005-07-28 21:24:55 +00:00
vte 2005-05-16 Mike Kestner <mkestner@novell.com> 2005-05-16 19:07:27 +00:00
AssemblyInfo.cs.in 2005-01-08 Mike Kestner <mkestner@novell.com> 2005-01-09 00:26:45 +00:00
AUTHORS Contributions from wizito@gentelibre.org 2005-01-12 19:35:22 +00:00
autogen.sh 2005-05-04 Mike Kestner <mkestner@novell.com> 2005-05-04 20:53:02 +00:00
bootstrap 2005-06-17 Mike Kestner <mkestner@novell.com> 2005-06-17 12:43:09 +00:00
bootstrap-2.4 2005-06-17 Mike Kestner <mkestner@novell.com> 2005-06-17 12:43:09 +00:00
bootstrap-for-the-insane 2005-07-28 Mike Kestner <mkestner@novell.com> 2005-07-28 21:24:55 +00:00
ChangeLog Automatic memory management for opaque types [#49565] 2005-08-02 18:45:21 +00:00
configure.in.in * glib/Value.cs: Obsolete the EnumWrapper and UnwrappedObject 2005-07-22 18:36:50 +00:00
COPYING 2003-05-13 Mike Kestner <mkestner@speakeasy.net> 2003-05-14 01:08:40 +00:00
gapi-cdecl-insert 2005-03-23 Mike Kestner <mkestner@novell.com> 2005-03-23 20:35:15 +00:00
gtk-sharp.snk Add gtk-sharp.snk 2004-06-08 17:32:50 +00:00
HACKING 2003-03-13 Charles Iliya Krempeaux <charles@reptile.ca> 2003-03-16 07:03:45 +00:00
Makefile.am 2005-03-23 Mike Kestner <mkestner@novell.com> 2005-03-23 20:35:15 +00:00
Makefile.include 2005-06-17 Mike Kestner <mkestner@novell.com> 2005-06-17 18:48:27 +00:00
makefile.win32 2005-05-16 Mike Kestner <mkestner@novell.com> 2005-05-16 19:07:27 +00:00
NEWS 2004-03-12 Mike Kestner <mkestner@ximian.com> 2004-03-12 21:18:11 +00:00
README 2005-05-04 Mike Kestner <mkestner@novell.com> 2005-05-04 20:53:02 +00:00
README.generator 2004-12-30 Alp Toker <alp@atoker.com> 2004-12-30 10:17:14 +00:00

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).