Permalink
Commits on Jul 9, 2002
  1. Reworking of Arjan Molenaar's (arjanmolenaar@hetnet.nl) patch from bug

    2002-07-09  James Henstridge  <james@daa.com.au>
    
    	Reworking of Arjan Molenaar's (arjanmolenaar@hetnet.nl) patch from
    	bug 71435.
    
    	* gtk/libglade.override (connect_one): watch the closure.
    	(connect_many): watch the closure.
    
    	* gtk/gtk.override (_wrap_gtk_toolbar_append_item): watch closure
    	for signal.
    	(_wrap_gtk_toolbar_prepend_item): same here.
    	(_wrap_gtk_toolbar_insert_item): same here.
    	(_wrap_gtk_toolbar_insert_stock): same here.
    	(_wrap_gtk_toolbar_append_element): same here.
    	(_wrap_gtk_toolbar_prepend_element): same here.
    	(_wrap_gtk_toolbar_insert_element): same here.
    
    	* pygobject.h (_PyGObject_Functions): add pygobject_watch_closure
    	to the list of exported functions.
    
    	* pygobject.c (pygobject_watch_closure): new function to watch a
    	closure.  We perform cyclic garbage collection on watched
    	closures.  The closure will automatically be unwatched when it
    	gets invalidated.
    	(pygobject_traverse): traverse watched closures as well.
    	(pygobject_clear): invalidate all watched closures
    	(pygobject_dealloc): invalidate watched closures on dealloc too.
    	(PyGObject_Type): register the invalidate handler.
    	(pygobject_connect): watch the closure we connect here.
    	(pygobject_connect_after): same here..
    	(pygobject_connect_object): same here.
    	(pygobject_connect_object_after): same here.
    
    	* pygtype.c (pyg_closure_new): clean up closure on invalidate,
    	rather than finalize (on invalidate, we break references).
    
    	* pygobject.h (PyGObject): add closures member to store references
    	to PyGClosures.
    James Henstridge committed with James Henstridge Jul 9, 2002
Commits on Jul 8, 2002
  1. apply another memory leak fix from Arjan (from bug #87413).

    2002-07-08  James Henstridge  <james@daa.com.au>
    
    	* pygobject.c (pygobject_connect): apply another memory leak fix
    	from Arjan (from bug #87413).
    	(pygobject_connect_after): equivalent fix here.
    	(pygobject_connect_object): and here.
    	(pygobject_connect_object_after): and here.
    James Henstridge committed with James Henstridge Jul 8, 2002
Commits on Jul 7, 2002
  1. add __grefcount__ property.

    2002-07-07  James Henstridge  <james@daa.com.au>
    
    	* pygobject.c (pygobject_get_refcount): add __grefcount__ property.
    James Henstridge committed with James Henstridge Jul 7, 2002
  2. update to use this function. (ArgMatcher.register_boxed): short circu…

    …it if
    
    2002-07-07  James Henstridge  <james@daa.com.au>
    
    	* codegen/argtypes.py (GtkTreePathArg.write_return): update to use
    	this function.
    	(ArgMatcher.register_boxed): short circuit if there is already a
    	handler for the boxed type (helps with setting custom handlers for
    	boxed types).
    
    	* gtk/gtk-types.c (pygdk_rectangle_from_pyobject): new function to
    	parse a GdkRectangle from a PyObject.
    
    	* gtk/pygtktreemodel.c (pygtk_generic_tree_model_get_path): print
    	a warning if the return value could not be converted to a
    	GtkTreePath.
    
    	* gtk/gtk.override (_wrap_gtk_tree_model_get_value): don't assume
    	tree paths are tuples.
    
    	* codegen/argtypes.py (GtkTreePathArg.write_param): fix up code
    	generator to get rid of assumption that tree paths are tuples, and
    	catch case where pygtk_tree_path_from_pyobject() returns NULL.
    
    	* gtk/gtk-types.c (pygtk_tree_path_from_pyobject): change so that
    	we treat an integer PyObject as a tree path with a single index.
    
    	* pygtype.c (pyg_closure_marshal): apply patch from Arjan Molenaar
    	<arjanmolenaar@hetnet.nl> that fixes a reference leak for the
    	argument tuple passed to the callback.
    	(pyg_signal_class_closure_marshal): apply similar fix here.
    James Henstridge committed with James Henstridge Jul 7, 2002
Commits on Jun 24, 2002
  1. Add GBoxed::copy

    Sun Jun 23 11:10:30 2002  Jonathan Blandford  <jrb@gnome.org>
    
    	* pygboxed.c: Add GBoxed::copy
    
    	* pygobject.c (pygobject_init): take kwargs so we can pass
    	construct-only arguments to our initialization function.
    Jonathan Blandford committed with Jonathan Blandford Jun 24, 2002
Commits on Jun 23, 2002
  1. copy boxed arguments.

    2002-06-23  James Henstridge  <james@daa.com.au>
    
    	* gtk/gtk.override (_wrap_gtk_tree_sortable_get_sort_column_id):
    	copy boxed arguments.
    
    	* pygobject.h: fix up prototypes.
    
    	* gobjectmodule.c (pyg_object_set_property): copy boxed arguments.
    
    	* pygobject.c (pygobject_get_property): copy boxed arguments here.
    	(pygobject_emit): same here.
    	(pygobject_chain_from_overridden): same here.
    
    	* pygtype.c (pyg_value_as_pyobject): add "copy_boxed" argument to
    	this function.
    	(pyg_closure_marshal): pass FALSE for copy_boxed argument.
    	(pyg_signal_class_closure_marshal): same here.
    James Henstridge committed with James Henstridge Jun 23, 2002
Commits on Jun 17, 2002
  1. if a value holds a PyObject*, the code that is getting the value is

    2002-06-17  Matt Wilson  <msw@redhat.com>
    
    	* pygtype.c (pyg_value_as_pyobject): if a value holds a PyObject*,
    	the code that is getting the value is expecting a valid object.
    	Translate NULL pointers to Py_None.
    Matt Wilson committed with Matt Wilson Jun 17, 2002
Commits on Jun 16, 2002
  1. decref the exception instance after raising the error.

    2002-06-15  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pyg_error_check): decref the exception instance
    	after raising the error.
    James Henstridge committed with James Henstridge Jun 16, 2002
Commits on May 31, 2002
  1. the path argument must be a tuple. Ints are not automatically convert…

    …ed to
    
    2002-05-31  Matt Wilson  <msw@redhat.com>
    
    	* examples/pygtk-demo/demos/list_store.py (fixed_toggled): the
    	path argument must be a tuple.  Ints are not automatically
    	converted to tuples any more.
    
    	* pygtype.c (pyg_value_as_pyobject): change the behavior of
    	G_TYPE_UINT to match the code generator's output on 32 bit
    	systems.
    Matt Wilson committed with Matt Wilson May 31, 2002
Commits on May 15, 2002
  1. add support for G_TYPE_INTERFACE, provided the interface has a prereq on

    2002-05-16  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c (pyg_value_from_pyobject): add support for
    	G_TYPE_INTERFACE, provided the interface has a prereq on
    	G_TYPE_OBJECT.
    	(pyg_value_as_pyobject): same here.
    James Henstridge committed with James Henstridge May 15, 2002
Commits on May 14, 2002
  1. add handler for G_TYPE_PARAM (fix bug #81695). (pyg_value_as_pyobject):

    2002-05-14  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c (pyg_value_from_pyobject): add handler for
    	G_TYPE_PARAM (fix bug #81695).
    	(pyg_value_as_pyobject): same in this function.
    James Henstridge committed with James Henstridge May 14, 2002
Commits on Mar 19, 2002
  1. allow override of autoconf and autoheader

    2002-03-19  Matt Wilson  <msw@redhat.com>
    
    	* autogen.sh: allow override of autoconf and autoheader
    
    	* gtk/gtk.defs (GtkTreeModel.get_iter_root): use the
    	gtk_tree_model_get_iter_first code, get_iter_root is going to be
    	deprecated.
    	(GtkTreeModel.get_iter_first): added
    
    	* gtk/gtk.override (_wrap_gtk_tree_model_get_iter_root): check the
    	return value of gtk_tree_model_get_iter_root and return None if it
    	failed.  Rename to _wrap_gtk_tree_model_get_iter_first.
    
    	* codegen/codegen.py (write_class, write_interface, write_boxed
    	write_pointer): use overrides.is_already_included to prevent from
    	having the same override code included twice in one file.  This
    	allows two methods to point to the same function.
    
    	* codegen/override.py (Overrides.is_already_included): added a
    	function that returns true if the override code has been emitted
    	already.
    
    2002-03-11  Matt Wilson  <msw@redhat.com>
    
    	* gobjectmodule.c: remove pygobject_exception_notifiers and
    	pyg_fatal_exceptions_notify.
    Matt Wilson committed with Matt Wilson Mar 19, 2002
Commits on Mar 16, 2002
  1. fix up property listing.

    2002-03-16  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c (add_property_docs): fix up property listing.
    
    	* gtk/libglade.override: add modulename directive.
    
    	* gtk/gdk.override: add modulename directive.
    
    	* gtk/gtk.override: add modulename directive.
    
    	* atk.override: add modulename directive.
    
    	* pango.override: add modulename directive.
    
    	* codegen/codegen.py (write_class): if override.modulename is set,
    	put it into the classname.
    	(write_interface): same here.
    	(write_boxed): same here.
    	(write_pointer): same here.
    
    	* codegen/override.py (Overrides.__parse_override): add support
    	for a "modulename" directive for overrides files.
    James Henstridge committed with James Henstridge Mar 16, 2002
Commits on Feb 12, 2002
  1. Fix a leak

    2002-02-12  Johan Dahlin  <jdahlin@telia.com>
    
            * gobjectmodule.c (initgobject): Fix a leak
    
            * gtk/gtkmodule.c (init_gtk): Fix another one
    Johan Dahlin committed with Johan Dahlin Feb 12, 2002
Commits on Feb 5, 2002
  1. register pointer types as well.

    2002-02-05  James Henstridge  <james@daa.com.au>
    
    	* codegen/codegen.py (register_types): register pointer types as
    	well.
    
    	* codegen/argtypes.py (PointerArg): handling for pointer arg
    	types.
    	(ArgMatcher.register_pointer): add function to register pointer
    	types.
    
    	* gtk/gtk.override (_wrap_gtk_ctree__get_selection): GtkCTreeNode
    	is not a boxed type.
    	(_wrap_gtk_ctree_base_nodes): same.
    	(_wrap_gtk_ctree_insert_node): same.
    	(_wrap_gtk_ctree_find_by_row_data): same.
    	(_wrap_gtk_ctree_find_all_by_row_data): same.
    	(_wrap_gtk_ctree_node_get_text): same.
    	(_wrap_gtk_ctree_node_get_pixmap): same.
    	(_wrap_gtk_ctree_node_get_pixtext): same.
    	(_wrap_gtk_ctree_get_node_info): same.
    	(_wrap_gtk_ctree_node_set_row_data): same.
    	(_wrap_gtk_ctree_node_get_row_data): same here.
    	(_wrap_gtk_ctree_getattr): same here.
    
    	* codegen/codegen.py (write_source): register pointer types as
    	pointers.
    
    	* pango.override (_wrap_pango_font_description_new): ignore some
    	private (well, pango module API) functions.
    
    	* gtk/gtk-types.defs (CTreeNode): make this a pointer type.
    
    	* codegen/codegen.py (write_pointer_method): new method to write
    	methods for GPointer types.
    	(write_pointer_constructor): new function for writing constructor
    	for GPointer types.
    	(write_pointer_getsets): new function for writing getters for
    	pointer objects (this should be merged with the GObject and GBoxed
    	versions ...).
    	(write_pointer): add new function, which calls all the GPointer
    	related functions.
    	(write_source): write pointer types.
    
    	* gobjectmodule.c (initgobject): actually ready the GPointer type.
    
    	* gtk/gtk-types.defs (CTreeNode): get rid of fields here.  They
    	will be covered by the custom getattr() function, so no need to
    	duplicate.
    
    	* codegen/codegen.py (write_boxed_getsets): convert to use getsets
    	for boxed objects.
    	(write_boxed): use write_boxed_getsets() to write the getsets,
    	while allowing boxed objects to specify a getattr() function.
    
    2002-02-04  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (initgobject): add GPointer to the module dict.
    	(pygobject_api_functions): and to the API vtable.
    
    	* pygobject.h (pyg_constant_strip_prefix): and add it to the
    	public header.
    
    	* pygobject-private.h (pyg_pointer_new): add stuff to private
    	header ...
    
    	* pygboxed.c (PyGPointer): add code to handle base GPointer type.
    
    	* codegen/defsparser.py (DefsParser.__init__): add self.pointers
    	attribute.
    	(DefsParser.define_pointer): handle (define-pointer ...).
    	(DefsParser.write_defs): handle pointer types.
    
    	* codegen/definitions.py (PointerDef): new definition type for
    	G_TYPE_POINTER subclasses.
    James Henstridge committed with James Henstridge Feb 5, 2002
Commits on Jan 28, 2002
  1. same code here, if __doc__ hasn't already been set. (initgobject): don't

    2002-01-28  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pyg_type_register): same code here, if __doc__
    	hasn't already been set.
    	(initgobject): don't bother setting __doc__ on GObject here, as
    	pygobject_register_class() does this for us.
    
    	* pygobject.c (pygobject_register_class): need to set the __doc__
    	descriptor on every class, otherwise it gets lost.
    James Henstridge committed with James Henstridge Jan 28, 2002
Commits on Jan 24, 2002
  1. use g_string_append_printf(). (add_property_docs): same here.

    2002-01-24  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c (add_signal_docs): use g_string_append_printf().
    	(add_property_docs): same here.
    
    	* examples/simple/tooltip.py: updated version from Steve George.
    James Henstridge committed with James Henstridge Jan 24, 2002
Commits on Jan 23, 2002
  1. (add_signal_docs): only get the class for a type if it is a

    	classed type.
    James Henstridge committed Jan 23, 2002
  2. (add_property_docs): fix small bug.

    James Henstridge committed Jan 23, 2002
  3. fill in __doc__ descriptor

    2002-01-23  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c (object_doc_descr_get): fill in __doc__ descriptor
    
    	* gobjectmodule.c (initgobject): add __doc__ descriptor to GObject
    	and GInterface.  Add __gdoc__ as a synonym because type.__doc__
    	masks our descriptor sometimes :(
    
    	* pygtype.c (object_doc_descr_get): skeleton of the __doc__
    	descriptor.
    	(PyGObjectDoc_Type): type definition.
    	(pyg_object_descr_doc_get): function to create and return the
    	__doc__ descriptor (we only need one for all classes).
    James Henstridge committed with James Henstridge Jan 23, 2002
Commits on Jan 22, 2002
  1. move GObject wrapper stuff here.

    2002-01-22  James Henstridge  <james@daa.com.au>
    
    	* pygobject.c: move GObject wrapper stuff here.
    James Henstridge committed with James Henstridge Jan 22, 2002
  2. and again :(

    James Henstridge committed Jan 22, 2002
  3. small patch to get things working again after last commit.

    James Henstridge committed Jan 22, 2002
  4. move closure stuff here.

    2002-01-22  James Henstridge  <james@daa.com.au>
    
    	* pygtype.c: move closure stuff here.
    James Henstridge committed with James Henstridge Jan 22, 2002
  5. don't create boxed_marshal hash table, and remove the type functions …

    …moved
    
    2002-01-22  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (initgobject): don't create boxed_marshal hash
    	table, and remove the type functions moved to pygtype.c.
    
    	* pygtype.c: move GType stuff here from gobjectmodule.c.
    	(pyg_register_boxed_custom): store the custom boxed marshal
    	functions as GType data, rather than in a separate hash table.
    James Henstridge committed with James Henstridge Jan 22, 2002
Commits on Jan 21, 2002
  1. list extra source files.

    2002-01-21  James Henstridge  <james@daa.com.au>
    
    	* Makefile.am (gobjectmodule_la_SOURCES): list extra source files.
    
    	* pygobject-private.h (pyg_boxed_new): new header for functions
    	shared between files in gobjectmodule.
    
    	* pygboxed.c (pyg_register_boxed): move GBoxed handling code here.
    James Henstridge committed with James Henstridge Jan 21, 2002
Commits on Jan 12, 2002
  1. convert None, int, long, float, str and object to GTypes.

    2002-01-12  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pyg_type_from_object): convert None, int, long,
    	float, str and object to GTypes.
    
    	* gtk/gtkmodule.c (init_gtk): only raise a runtime error if we
    	can't initialise gtk.
    James Henstridge committed with James Henstridge Jan 12, 2002
Commits on Jan 11, 2002
  1. removed debugging code I didn't mean to check in.

    2002-01-11  Matt Wilson  <msw@redhat.com>
    
    	* gtk/gtk.override (_wrap_gtk_toolbar_insert_stock): removed
    	debugging code I didn't mean to check in.
    
    	* gobjectmodule.c (pyg_closure_new): use PyTuple_SetItem to build
    	the tuple if extra_args isn't one.  It's faster than using
    	abstractions and clarifies ownership rules, so we always incref
    	extra_args even if we're about to wrap it in a tuple.  Fixes
    	crashes when passing callback functions into
    	GtkToolbar.{append_item,prepend_item,insert_item,insert_stock,
    	append_element}
    Matt Wilson committed with Matt Wilson Jan 11, 2002
Commits on Jan 7, 2002
  1. the F10 key is used to start navigating the menu -- not alt.

    2002-01-07  James Henstridge  <james@daa.com.au>
    
    	* examples/pygtk-demo/demos/itemfactory.py (main): the F10 key is
    	used to start navigating the menu -- not alt.
    
    	* gtk/gtk-types.c (PyGtkStyleHelper_Dealloc): use PyObject_DEL.
    	(PyGtkStyle_Dealloc): same here.
    	(PyGdkWindow_Dealloc): same here.
    	(PyGdkGC_Dealloc): same here.
    	(PyGdkColormap_Dealloc): same here.
    	(pygdk_atom_dealloc): same here.
    
    	* gobjectmodule.c (pyg_type_wrapper_dealloc): use PyObject_DEL to
    	prevent segfaults with pymalloc.
    	(pyg_param_spec_dealloc): same here.
    James Henstridge committed with James Henstridge Jan 7, 2002
  2. initialise GThread if threading is enabled at compile time (this doesn't

    2002-01-07  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (initgobject): initialise GThread if threading
    	is enabled at compile time (this doesn't initialise GDK threading
    	though -- you need to run gtk.gdk.threads_init for that).
    James Henstridge committed with James Henstridge Jan 7, 2002
  3. add overriden implementation that allows threads while waiting, so some

    2002-01-07  James Henstridge  <james@daa.com.au>
    
    	* gtk/gdk.override (_wrap_gdk_threads_enter): add overriden
    	implementation that allows threads while waiting, so some other
    	thread has a chance to give up the gdk lock.
    
    	* gtk/gtkmodule.c (functions): remove stuff.
    
    	* gtk/pygtk-private.h: remove definitions here as well.
    
    	* gtk/pygtk.h (_PyGtk_FunctionStruct): remove destroy notify and
    	thread block stuff.
    
    	* gtk/gtkobject-support.c: remove pygtk_destroy_notify.
    
    	* gtk/gtk.override (pygtk_tree_foreach_marshal): move this
    	function here from gtkobject-support.c, and don't bother blocking
    	threads.
    	(_wrap_gtk_tree_selection_selected_foreach): same here -- don't
    	need to unblock threads.
    	(pygtk_tree_selection_marshal): move this function here from
    	gtkobject-support.c.  Convert to use pyg_block_threads.
    	(_wrap_gtk_dialog_run): add overriden implementation that unblocks
    	threads.
    	(_wrap_gtk_main): use pyg_block_threads
    	(_wrap_gtk_main_iteration): same.
    	(_wrap_gtk_item_factory_create_items): same here.
    	(_wrap_gtk_menu_popup): same here.
    	(_wrap_gtk_clist_set_row_data): use pyg_destroy_notify
    	(_wrap_gtk_timeout_add): same here.
    	(_wrap_gtk_idle_add): same here.
    	(_wrap_gtk_quit_add): same here.
    	(_wrap_gtk_input_add_full): same here.
    	(_wrap_gtk_ctree_node_set_row_data): same here.
    
    	* gtk/gtkobject-support.c: remove PyGTK_BLOCK_THREADS and
    	PyGTK_UNBLOCK_THREADS macros.
    	(pygtk_destroy_notify): use pyg_block_threads.
    	(pygtk_custom_destroy_notify): same.
    	(pygtk_handler_marshal): same.
    	(pygtk_input_marshal): same.
    
    	* gtk/gdk.override (_wrap_gdk_threads_init): register gdk lock
    	based recursive threads block/unblock functions.  If threading was
    	disabled at compile time, then this function will error out.
    
    	* gtk/gdk.defs (threads_enter, threads_leave, threads_leave): add
    	functions.
    
    	* gobjectmodule.c (functions): add destroy_notify here as well.
    
    	* pygobject.h: add destroy_notify to the PyGObject_Functions
    	vtable.
    James Henstridge committed with James Henstridge Jan 7, 2002
  4. handler for registering thread block/unblock funcs.

    2002-01-07  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pyg_set_thread_block_funcs): handler for
    	registering thread block/unblock funcs.
    	(pygobject_destroy_notify): block threads during DECREF call.
    	(pyg_closure_destroy): block threads during closure DECREF.
    	(pyg_closure_marshal): block threads when calling function.
    	(pyg_signal_class_closure_marshal): block threads.
    	(functions): add extra functions to vtable.
    
    	* pygobject.h (struct _PyGObject_Functions): add thread
    	block/unblock slots to the API table.
    James Henstridge committed with James Henstridge Jan 7, 2002
Commits on Dec 20, 2001
  1. fix for updated API. (pygobject_methods): just call the method "chain".

    2001-12-20  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pygobject_chain_from_overridden): fix for
    	updated API.
    	(pygobject_methods): just call the method "chain".
    James Henstridge committed with James Henstridge Dec 20, 2001
Commits on Dec 18, 2001
  1. forgot to add these types here :(

    James Henstridge committed Dec 18, 2001
  2. add support for int64/uint64. Fix up code for unsigned int/long to parse

    2001-12-18  James Henstridge  <james@daa.com.au>
    
    	* gobjectmodule.c (pyg_value_from_pyobject): add support for
    	int64/uint64.  Fix up code for unsigned int/long to parse long
    	ints if necessary.
    	(pyg_value_as_pyobject): add support for int64/uint64, and get
    	UINT/ULONG to return python long ints if necessary, rather than
    	wrapping around.
    James Henstridge committed with James Henstridge Dec 18, 2001