* generator/CallbackGen.cs : don't create native delegates for nulls.
* generator/ObjectGen.cs : revamp the ObjectManager code.
* glib/Object.cs : use new ObjectManager.RegisterType overload.
* glib/ObjectManager.cs : rewrite to kill the lameass LoadWithPartial
hack and keep a GType to Type mapping for quicker lookup/activation.
svn path=/trunk/gtk-sharp/; revision=42241
* gapi-cdecl-insert : a little perl script to insert modopts
* Makefile.am : dist the new script.
for cdecl callback delegates on win32.
* glade/makefile.win32 : use gapi-cdecl-insert
* glade/XML.custom : add [GLib.CDeclCallback] to RawXMLConnectFunc.
* glib/makefile.win32 : use gapi-cdecl-insert
* glib/CDeclCallbackAttribute.cs : new attr to tag delegates with
that will be invoked from native code. We have to mangle the il
with a modopt otherwise they are stdcall'd.
* glib/ManagedValue.cs : add [GLib.CDeclCallback] to Copy/Free.
switch to using GCHandles instead of the current IntPtr hack.
svn path=/trunk/gtk-sharp/; revision=42168
* glib/Object.cs: use IsDefined to check for ClassInitializer
attribute, fixes a warning and is supposedly better for performance
svn path=/trunk/gtk-sharp/; revision=41839
* glib/Makefile.am : add new file.
* glib/Object.cs : add protected PersistentData hash to hold data
across GC cycles.
* glib/WeakObject.cs : new object to hold managed refs weakly against
the native object.
* gtk/ListStore.custom : hold refs for DefaultSortFuncs.
* gtk/TreeModelSort.custom : hold refs for DefaultSortFuncs.
* gtk/TreeStore.custom : hold refs for DefaultSortFuncs.
svn path=/trunk/gtk-sharp/; revision=41740
* generator/CallbackGen.cs : don't derive Wrappers from DelegateWrapper
any more. It leaks delegates like crazy. We effectively now use call
scope as the default for delegate parameters.
* generator/MethodBody.cs : use new simpler Wrapper ctor.
* glib/DelegateWrapper.cs : mark the ctor obsolete so people know to
update any manually coded wrappers out there.
* */*.custom : use new simpler Callback Wrapper ctors.
svn path=/trunk/gtk-sharp/; revision=41738
* glib/Marshaller.cs : don't use g_utf8_strlen to determine the byte
count to be copied, it returns chars, not bytes.
* glib/glue/unichar.c : implement a quick and dirty strlen glue func.
svn path=/trunk/gtk-sharp/; revision=41661
* */*.cs : scrub for StringToPtrAnsi and string usage in DllImports.
* */*.custom : begin the scrub here too.
* generator/ConstStringGen.cs : implement IManualMarshaler and move to
100% IntPtr marshaling.
* generator/Ctor.cs : call Body.Finish too.
* generator/IManualMarshaler.cs : new interface for generatables that
marshal manually and need cleanup.
* generator/Makefile.am : new file.
* generator/MethodBody.cs : use IManualMarshaler if applicable.
svn path=/trunk/gtk-sharp/; revision=41579
* generator/ImportSignature.cs : out param handling fix.
* generator/Makefile.am : kill StringGen.cs.
* generator/MethodBody.cs : simplify out param handling.
* generator/StringGen.cs : kill it, now using MarshalGen.
* generator/SymbolTable.cs : make non-const strings use an appropriate
MarshalGen. Non-const strings are now correctly marshaled as Utf8.
* glib/Marshaller.cs : add some utf8-fu for strdup/free marshaling.
Add a method to alloc/copy structs to native memory, unused yet.
* gtk/Gtk.metadata : partially fix a broken delegate.
svn path=/trunk/gtk-sharp/; revision=41459
* generator/ClassBase.cs : use "as" instead of a cast in FromNative.
* generator/Method.cs : remove the if/else checks for Object retvals.
* glib/Object.cs : return null immediately for NULL in GetObject.
svn path=/trunk/gtk-sharp/; revision=41409
* glib/Idle.cs : add locking on the source_handlers.
* glib/Source.cs : add locking on the source_handlers.
* glib/Timeout.cs : add locking on the source_handlers.
svn path=/trunk/gtk-sharp/; revision=41290
* glib/ObjectManager.cs (GetValidParentType): return null if
G_TYPE_INVALID is returned from glue. [Fixes#72150]
svn path=/trunk/gtk-sharp/; revision=40063
* generator/Makefile.am : remove source file.
* generator/Signal.cs : generate marshaling callbacks and use new
GLib.Signal marshaling class for events.
* generator/SignalHandler.cs : kill. byebye SignalCallback subclasses.
* glib/Makefile.am : update source files.
* glib/GLibSharp.voidObjectIntPtrSignal.cs : kill.
* glib/Object.cs : mark the old Before/After props Obsolete. Use
GLib.Signal for the notify prop methods.
* glib/Signal.cs : new signal marshaling class. It manages all the
ConnectBefore/After stuff internally and connects itself to the native
object using GCHandles and DestroyNotify lifecycle management.
* glib/SignalCallback.cs : mark Obsolete.
[Fixes#72018 and #69847]
svn path=/trunk/gtk-sharp/; revision=40007
subscribe to the "notify" signal (with property details). [#71684]
* glib/GLibSharp.voidObjectIntPtrSignal.cs: autogenerated, for
notifications
* glib/NotifyHandler.cs: sort of autogenerated
svn path=/trunk/gtk-sharp/; revision=39717
* glib/Value.cs : add a private debugging DllImport for ref_counts
since the glue is there already. g_value_get_object returns an
unowned ref, so don't pretend like we own it. Make get_Val work for
GObject subclasses. [Fixes#71125]
svn path=/trunk/gtk-sharp/; revision=39615
sure the output has no unescaped "%"s. (For wrapping printf-style
unmanaged methods with String.Format-style managed ones.)
* gtk/MessageDialog.custom (MessageDialog): use it. #71405. Also,
use gtk_message_dialog_new_with_markup by default, and add an
overloaded ctor that lets you use the non-markup version.
* gtk/Gtk.metadata: hide the GtkMessageDialog ctors so we don't
get ellipsis warnings about them.
* sample/GtkDemo/DemoApplicationWindow.cs:
* sample/GtkDemo/DemoDialog.cs: simplify the MessageDialog usage;
don't need to call String.Format separately now.
svn path=/trunk/gtk-sharp/; revision=39256
* configure.in : kill a ton of redundant stuff.
* AssemblyInfo.cs.in : moved here, only need one.
* Makefile.include : rules for building generated assemblies.
* Makefile.am : removed gtk-sharp-2.0.pc handling.
* */AssemblyInfo.cs.in : killed
* */Makefile.am : refactored out a ton of rules to an include.
* */*-pc.in : added Cflags entries pointing to the gapi files.
* generator/CodeGenerator.cs : add -I: synonym --include.
* gnomevfs/gnome-vfs-api.raw : remamed from gnomevfs-api.raw.
* gtk/gtk-sharp-2.0.pc.in : moved here from top.
* parser/gapi-fixup.cs : add --symbol arg to merge sym files.
* sources/gtk-sharp-sources.xml : remamed gnome-vfs-api.raw.
svn path=/trunk/gtk-sharp/; revision=38551
* glib/ClassInitializerAttribute.cs : new attr for identifying type.
inialization methods to be run by RegisterGType.
* glib/Makefile.am : add file.
* glib/Object.cs : add private method to invoke ClassInitializers.
* gtk/glue/widget.c : some new glue for binding registration.
* gtk/BindingAttribute.cs : new attr for registering key bindings.
* gtk/Makefile.am : add file.
* gtk/Widget.custom : add ClassInitializer method to scan types
for [Binding] and register key bindings.
svn path=/trunk/gtk-sharp/; revision=38074
GLib.Marshaller.CharToGUnichar and .GUnicharToChar [#70704]
* generator/SymbolTable.cs (SymbolTable): add a GUnicharGen.
* generator/Makefile.am (sources): add GUnicharGen.cs
* parser/gapi2xml.pl (addPropElem): g_param_spec_unichar() has
type "gunichar" not "unichar".
* gtk/gtk-api.raw: Regen
* glib/Marshaller.cs: Import CharToGUnichar's glue method by the
right name
svn path=/trunk/gtk-sharp/; revision=37998
* generator/StructGen.cs: Check to see if a GType is going to be
generated. If not, generate a GType.Pointer. This fixes bug
#70017.
* glib/TypeConverter.cs: Remove the .IsValueType check, as those
now have GType properties.
* gda/Gda.metadata: Change GdaValue.GType to GdaValue.GdaType.
* doc/en/Gda/Value.xml: Regenerated to reflect new API.
svn path=/trunk/gtk-sharp/; revision=36912
the
child properties for a given widget in a container, and generate
the child properties as properties on those classes.
* parser/gapi2xml.pl (addPropElem): don't prepend "child_" to
child prop names any more
* generator/ClassBase.cs (ClassBase): keep childprops separate
from properties
(GenChildProperties): create a subclass of Gtk.ContainerChild
containing the container type's child properties, and override
the
Container indexer to return that type.
* generator/ObjectGen.cs (Generate): call GenChildProperties
* generator/Property.cs:
* generator/ChildProperty.cs: Simplify these a bunch, since
* child
properties are now represented as C# properties as well. Also
add
[GLib.Property(cname)] and [Gtk.ChildProperty(cname)]
attributes.
* glib/Makefile.am (sources): add PropertyAttribute.cs
* glib/PropertyAttribute.cs: attribute used to label
GObject properties
* gtk/Makefile.am (sources): add ChildPropertyAttribute.cs
* gtk/gtk-api.raw: regenerate for parser changes (remove
"Child"/"child_" from child property names).
* gtk/ChildPropertyAttribute.cs: attribute used to label
GtkContainer child properties
* gtk/Container.custom: define the ContainerChild class, and an
indexer to return instances of it.
* doc/en/Gtk/: update for container child property change
svn path=/trunk/gtk-sharp/; revision=36284
that take the name of the type rather than an object/property
name pair; this way they work for both GObject properties and
GtkContainer child properties.
* glib/glue/value.c (gtksharp_value_create_from_type_name): glue
for that
* glib/Opaque.cs (GetOpaque): Fix this.
* generator/Property.cs (Generate): Use the new GLib.Value
constructors. (Fixes setting of enum-valued child properties.)
svn path=/trunk/gtk-sharp/; revision=36174
(Object(GType)): Mark this ctor Obsolete
* gtk/Gtk.metadata: disable the generated GType ctor on Gtk.Widget
* gtk/Widget.custom (Widget, CreateNativeObject,
Widget_ParentSet): Connect to our own ParentSet event from
CreateNativeObject and the GType ctor, and keep a static Hashtable
of parented widgets, so that adding a managed widget to a
container keeps both the GObject and the managed object alive.
* generator/ObjectGen.cs (GenCtors): handle the disable_gtype_ctor
flag. Also, mark GType ctors [Obsolete]
svn path=/trunk/gtk-sharp/; revision=35885
GtkContainer child properties
* generator/Property.cs:
* generator/ChildProperty.cs: make Property subclassable and add a
"ChildProperty" subclass.
* generator/Makefile.am (sources): add ChildProperty.cs
* generator/ClassBase.cs: handle "childprop" nodes by creating
ChildProperty objects.
* glib/Value.cs (explicit operator EnumWrapper): use
g_value_get_flags() rather than g_value_get_enum() when
appropriate.
* glib/glue/value.c (glibsharp_value_holds_flags): glue for that
* gtk/gtk-api.raw: regen to pick up child properties
* gtk/Gtk.metadata:
* gtk/Container.custom: hide the auto-generated
Gtk.Container.ChildGetProperty and implement a nicer one by hand.
* gtk/glue/container.c (gtksharp_container_child_get_property):
utility function to set up an appropriate GValue for us
svn path=/trunk/gtk-sharp/; revision=35702
* glib/GString.cs : new marshaling class for GStrings. Used by
generator to map GString params and returns onto managed strings.
* glib/Makefile.am : add new file.
svn path=/trunk/gtk-sharp/; revision=34523
* glib/Source.cs: Add new base class to hold the method to be
called, and the proxy handler we use to keep references to them
and avoid a collection.
Exposes a new variables that references all the active Timeouts
and Idle handlers to avoid collection/
* glib/Timeout.cs: Implement TimeoutProxy that acts as a filter to
remove the proxy when the timeout is removed.
Register a TimeoutProxy when we create a timeout.
* glib/Idle.cs: Implement IdleProxy that acts as a filter to
remove the proxy when the idle handler is removed.
Register an IdleProxy when we create a timeout.
svn path=/trunk/gtk-sharp/; revision=34094