* generator/CallbackGen.cs: the new generated wrappers have:
-(optional) Field of the same type returned by the callback.
-A call to RemoveIfNotAlive at the beginning. It returns true,
return the dummy field.
-Added an object to the ctor signature and pass it to the base
class.
* generator/Ctor.cs: added a Params property.
* generator/Method.cs: set Static property in Parameters if the method
is static.
* generator/Parameters.cs: added Static property. The call creation of
the delegate wrapper (if applicable) uses the new signature. Pass a null
as object is the method is static.
* generator/StructBase.cs: set Static for the parameters of the ctors.
* glib/DelegateWrapper.cs: the ctor takes an object (the one creating
the wrapper or null) and creates a weak reference to it. Store it in
a static Hashtable (this way the wrapper itself is not garbage
collected).
(RemoveIfNotAlive): called from the native delegate callbacks. If the
target of the weak reference has been garbage collected, removes itself
from the hashtable to let the GC dispose this instance and returns true.
* gdk/Pixbuf.custom:
* gtk/Clipboard.custom:
* gtk/GtkSharp.GtkClipboardClearFuncNative.cs:
* gtk/GtkSharp.GtkClipboardGetFuncNative.cs:
* glade/XML.custom: changed delegate wrappers to match the new
signature.
svn path=/trunk/gtk-sharp/; revision=13237
* generator/SignalHandler.cs : Added Patch submitted by
Mark Crichton <crichton@gimp.org>, to get GtkMozEmbed
bindings working.
svn path=/trunk/gtk-sharp/; revision=13043
* generator/SignalHandler.cs: the generated Dispose method now calls
base.Dispose and always disconnects the handler. Thanks to
Petr Danecek <danecek@ucl.cas.cz>.
svn path=/trunk/gtk-sharp/; revision=12060
* generator/Parser.cs: use XmlDocument.Load (Stream). The one using
(String) expects an uri.
* generator/Signal.cs: always remove the delegate from the signal
callback (prior to this, the last handler was not being removed).
Dispose the callback (ie, disconnect from the signal) when there are
no registered delegates to handle it.
* generator/SignalHandler.cs: added 2 new fields to hold the instance
and the handler ID. The finalization is now done in Dispose and
disconnects the signal handler when no delegate will handle the signal.
Changed gobject-2.0 to libgobject-2.0-0.dll.
* glib/SignalCallback.cs: implemented IDisposable interface.
svn path=/trunk/gtk-sharp/; revision=11976
* generator/ObjectGen.cs : gen GLib.Value ctor, not uint
* glib/Object.cs : use GLib.Type in RegisterGType and
make the g_object_new ctor use GLib.Type.
* glib/Type.cs : new thin wrapper for GValue type
* glib/*.cs : s/Type/System.Type
svn path=/trunk/gtk-sharp/; revision=11920
* generator/CallbackGen.cs : suppress len params from
string/len pairs.
* generator/Parameters.cs : begin the refactoring to use
Parameter class. Suppress len params from string/len pairs.
*/*.custom : remove all overrides of string/len pairs
*/*.cs : ditto. Thanks to Alp Toker for the foundation
patch that this change was built upon.
svn path=/trunk/gtk-sharp/; revision=11913
* glib/SignalCallback.cs: new methods AddDelegate and RemoveDelegate.
* generator/Signal.cs: add/remove signal handlers from the delegate used
to invoke them.
* generator/SignalHandler.cs: use Delegate instead of MulticastDelegate.
svn path=/trunk/gtk-sharp/; revision=11255
* api/*.xml : a few new attrs
* generator/Parameters.cs : remove redundant ref keywords
* gtk/ListStore.custom: overload SetColumnTypes
* gtk/TreeStore.custom: overload SetColumnTypes
* parser/GAPI/Metadata.pm : allow callback nodes at class level
* sources/Gtk.metadata : hide ClipboardClearFunc and GetFunc,
tag types param of SetColumnTypes as array, uncomment needs_ref
tags on Widget methods to match the current api.xml file
svn path=/trunk/gtk-sharp/; revision=9148
use when the IntPtr is NULL.
* generator/SignalHandler.cs, generator/CallbackGen.cs: removed
call to Initialize for structs
* gtk/Clipboard.custom, gtk/ClipboardClearFunc.cs,
gtk/ClipboardGetFunc.cs,
gtk/GtkSharp.GtkClipboardClearFuncNative.cs,
gtk/GtkSharp.ClipboardGetFuncNative.cs, SelectionData.custom:
Hand-wrapped selection handling stuff, along with relevant
signals and the like.
* gnome/voidObjectAffineSVPintSignal.cs: removed Initialize
for hand-wrapped signal
* sample/GnomeHelloWorld.cs, sample/Size.cs: compare against
.Zero instead of using IsNull
* api/gtk-api.xml, sources/Gtk.metadata: metadata updates for
hiding some manually-wrapped stuff
svn path=/trunk/gtk-sharp/; revision=8912
Much of this patch from Vlad, with substantial rework by mk.
* */makefile.win32 : introduce mapdllnames.pl, api, and glue
* generator/CallbackGen.cs : rework namespacing for csc compilation
* generator/Parameters.cs : ditto
* generator/Signal.cs : ditto
* generator/SignalHandler.cs : ditto
* glue/win32dll.c : new dll construction source
* glib/Value.cs : new ushort ctor/cast operator
* gtk/Table.custom : comment this out until we add a default ctor tag
* gtk/ThreadNotify.cs : make ReadyEvent public
* sources/Gdk.metadata : mark a Parse() param as ref
svn path=/trunk/gtk-sharp/; revision=8590
(So Miguel told me just to go ahead and commit -kris)
* gtk/TreeSelection.custom: new file, defines a working
GetSelected method (GetSelected is a bit tricky function).
* generator/InterfaceGen.cs (Generate): also call AppendCustom
* sources/Gtk.metadata: hide the autogenerated
Gtk.TreeSelection.GetSelected method.
svn path=/trunk/gtk-sharp/; revision=8071
* glade/HandlerNotFoundExeception.cs: Added.
* glade/Makefile.in
* glade/XML.custom: Support for autoconnecting signals using
reflection.
* glib/SignalAttribute.cs: Added.
* generator/Signal.cs: Mark events generated from glib signals
with the "Signal" attribute.
* sample/GladeTest.cs
* sample/Makefile.in
* sample/test.glade: Test of signal autoconnection.
svn path=/trunk/gtk-sharp/; revision=7430
* sources/Gtk.metadata: Set null_ok on the callback argument
to Menu.Popup.
* generator/Parameters.cs: Handle null_ok properly for callback
arguments.
svn path=/trunk/gtk-sharp/; revision=7412
* glib/Object.cs (Ref): Added.
* gtk/Object.custom (Ref): Overload. Note that we were reffed.
(DisposeNative): Unref if we were explicitly reffed.
* generator/Method.cs: Call Ref if needs_ret is set.
* generator/StructBase.cs: Call Ref on all object accessors.
* glue/style.c: Ref returned GCs.
* sources/Gtk.metadata: Set needs_ret on various gdk-related
accessors in GtkWidget. Hide Ref/Unref methods on Widget and
RcStyle as these ought to be deprecated anyway.
svn path=/trunk/gtk-sharp/; revision=7380
* parser/gapi2xml.pl: Add support for "fake struct" opaque types.
* generator/StructBase.cs: Generate wrapper fields for opaque
fields as well as pointer fields.
* api/gdk-symbols.xml: Remove GdkAtom as it is now wrapped.
svn path=/trunk/gtk-sharp/; revision=7311
* generator/CallbackGen.cs: Generate wrappers to map
from managed delegates to native ones.
* generator/Ctor.cs: Call parms.Initialize for the static case.
* generator/Parameters.cs: Add "CType" property. Append []
to CSType if necessary. Add "HideData" property if a container
wishes to hide the user_data (used in callbacks).
(Initialize): Add case for callback.
* generator/SymbolTable.cs: Add size_t.
* glue/program.c: string[] marshalling is no longer broken,
remove hack.
* sources/Gtk.metadata: Disable
GtkColorSelection.SetChangePaletteHook and
GtkTreeView.GetSearchEqualFunc for now, they return delegates and
we don't support native->managed delegate mapping yet.
svn path=/trunk/gtk-sharp/; revision=7133
* art/Makefile.in (clean): Change to avoid bugging out on generated/CVS.
* glib/ObjectManager.cs: Added. Used to be auto-generated, but
now it can infer names, and relies on per-namespace ObjectManager
classes to inform it of oddly-named classes.
* generator/IGeneratable.cs, GenBase.cs: New "DoGenerate" property.
* generator/*Gen.cs: Honor DoGenerate.
* generator/CodeGenerator.cs: Support including dependency files
which will not be generated.
* generator/ObjectGen.cs: Generate mapping file per-namespace, as one
that calls back to the one in glib. Only generate if the name does
not follow the normal conventions, otherwise, GtkSharp.ObjectManager
can infer the name.
* generator/Parser.cs: Accept 'generate' flag to pass on to the
IGeneratables. Parse a new toplevel element, "symbol", which adds
a type to the SymbolTable (instead of hard-coding it).
* generator/SignalHandler.cs: Do not optimize signal handler creation,
instead creating them in their own namespaces. Do not generate
if the calling Signal told us not to.
* generator/Signal.cs: Do not generate handlers if container's DoGenerate
is false. Adjust to the marshaller name being in a sub-namespace.
* generator/SymbolTable.cs (AddSimpleType, AddManualType): Used
to add simple and manually wrapped types at runtime instead of
compile-time.
(FromNative): Remove hard-coded cases for manually wrapped types, use
a generic case instead.
* api: Added. Move api files and generation targets here.
* source: Added. Move source parsing here.
* generator/makefile: Move actual generation to api/.
* glib/Makefile.in: Remove generated/* target.
* glue/Makefile.am: Fix to include canvas-marshal. Move canvas stuff
to GNOME target.
* gnome/CanvasProxy.cs: Update to work with SignalHandlers being
namespace-specific.
* parser/Metadata.pm: Moved to GAPI/Metadata.pm, renamed, etc.
* parser/gapi2xml.pl: Use GAPI::Metadata.
* parser/makefile: Install scripts, remove source parse build target.
Rename formatXML to gapi_format_xml.
svn path=/trunk/gtk-sharp/; revision=6818
* parser/Gtk.metadata: add a bunch of out arg rules, add
a vararg rule for the ListStore constructor, change method names of
TreeModel's signal emission methods, remove opaque rule of
GtkTreeIter, remove null_ok rules of TreeModel.IterNChildren
and TreeModel.IterNthChild.
* parser/Metadata.pm: add some code to be able to filter on
parameter names.
* generator/Method.cs: a method with accessor args and a non-void
return value cannot be written as property.
* sample/Makefile.in, sample/TreeViewDemo.cs: add a simple TreeView
demo app.
* gtk/ListStore.custom, gtk/TreeModel.custom, gtk/TreeModelSort.custom,
gtk/TreeStore.custom, gtk/TreeView.custom: customizations.
svn path=/trunk/gtk-sharp/; revision=6576
[ Mike, this is everything I wanted in for the release. ]
* generator/StructBase.cs: Generate field accessors for wrapped
types (opaque, object, and structs/boxed). Bitfields, unions, and
arrays are still unsupported for accessors, and are probably marshalling
incorrectly. But this is enough to get events working (see example
in sample/GnomeHelloWorld.cs).
* parser/Metadata.pm: Support a "delete" directive, and set metadata
on structs and boxed (previously was only checking objects and interfaces).
* parser/Gdk.metadata: Delete bogus entries GdkWindowObject and
GdkPixmapObject (more evil drawable stuff.)
* sample/GnomeHelloWorld.cs: Show an example of how to use marshalled
events, in our selection callback.
svn path=/trunk/gtk-sharp/; revision=6370
* generator/StructBase.cs (GetFieldInfo): Generate strings correctly.
Also, delegates are not marshalling correctly right now, change those
to IntPtr.
* generator/SymbolTable.cs: New method IsCallback.
* sample/GnomeHelloWorld.cs: Use Gnome.App and stock menu items.
Use the new event handlers.
svn path=/trunk/gtk-sharp/; revision=6300