=== PyGTK 2.5.2 === 2005-01-10 Johan Dahlin * autogen.sh: Check for automake-1.9 aswell, fixes 162396 (Raphael Kubo da Costa) 2005-01-10 Johan Dahlin * .cvsignore: * Makefile.am: * configure.in: * gtk/Makefile.am: * pygtk-2.0.pc.in: * setup.py: * tests/common.py: * tests/testhelpermodule.c: Make the build of atk, pango and gtk conditional. Fixes bug #74144. 2005-01-10 Johan Dahlin * tests/Makefile.am: * tests/common.py: * tests/runtests.py: * tests/test_thread.py: Make testsuite work and do things the way they were supposed to be done from the beginning. 2005-01-10 Gustavo J. A. M. Carneiro * gtk/gtk.override (_wrap_GtkCellLayout__proxy_do_set_cell_data_func): Implement proxy function for virtual 'set_cell_data_func' of interface GtkCellLayout. 2005-01-09 Gustavo J. A. M. Carneiro * gobject/pygtype.c (pyg_value_from_pyobject): Handle conversion of python sequence to G_TYPE_VALUE_ARRAY GValue. (pyg_param_gvalue_from_pyobject): idem. Patch by jylefort@brutele.be; Fixes #160452. * gtk/gdk.override (_wrap_gdk_pixmap_colormap_create_from_xpm): Accept GdkDrawable instead of GdkWindow as first argument. Fixes #159282. 2005-01-09 Tim Evans * gtk/gtk.defs (gtk_get_current_event): Add (caller-owns-return #t). * gtk/gtk.override (_wrap_gtk_get_current_event_state): Impl. Reviewed by Gustavo Carneiro. Fixes #159397. 2005-01-09 Gustavo J. A. M. Carneiro * gobject/pygtype.c (pyg_value_from_pyobject): Be consistent about not raising an exception on error return. Patch by jylefort@brutele.be, fixes #160595. * tests/Makefile.am (tests): Add test_subprocess.py. * tests/test_subprocess.py: Unit test for gobject.spawn_async and gobject.child_watch_add. * gobject/gobjectmodule.c (pyg_spawn_async): Add wrapper for g_spawn_async_with_pipes. (pyg_child_watch_add): Add wrapper for g_child_watch_add_full. * gobject/pygobject.h, gobject/pygobject-private.h: Define pyg_threads_enabled as PyEval_ThreadsInitialized() on Python 2.4, so that it is no longer required to call gobject.threads_init on that platform. Also define pyg_begin|end_allow_threads as Py_BEGIN|END_ALLOW_THREADS, since these functions are rarely invoked, thus represent a minimal overhead. * gobject/gobjectmodule.c (pyg_type_register): Return the type being registered, to make gobject.type_register usable as Python 2.4 @decorator. * codegen/codegen.py (Wrapper.write_constructor): Move writing of pygobject_no_constuctor to the new methods write_default_constructor (when no constructor is declared in the .defs) and write_noconstructor (when a constructor is declared but could not be generated). (GObjectWrapper.write_default_constructor): Override to return '0'. This makes the constructor for GObjects become GObject.__init__ by default, unless there is a constructor function in the .defs and it could not be generated for some reason. * gtk/pygtkcellrenderer.c (pygtk_generic_cell_renderer_new): Deprecate GtkGenericCellRenderer, since all virtual methods of GtkCellRenderer are now supported. * gtk/gtk.override (_wrap_GtkCellRenderer__proxy_do_get_size): Override, implementation copied from PyGtkGenericCellRenderer, with minor adjustments/fixes. 2005-01-09 Gustavo J. A. M. Carneiro * gobject/gobjectmodule.c (pyg_type_register): Look for GInterface's among tb_bases and register implementation support for them. (pyg_register_interface_info): Add. Registers a GInterfaceInfo* containing python proxy implementation with a GInterface GType. * gobject/pygobject.h (pyg_register_interface_info): Add. * gtk/gtk-types.defs (Editable): Add (vtable "GtkEditableClass"), because the GtkEditable vtable structure name is GtkEditableClass instead of GtkEditableIface. * codegen/definitions.py (InterfaceDef.__init__): Add/parse vtable attribute, to contain the C structure name of the virtual table of an interface. If not given, the vtable name defaults to (c_name + "Iface"). Add attribute interface_info, to hold the GInterfaceInfo variable for the interface. * codegen/reversewrapper.py (GEnumReturn.write_conversion): Add missing code=None parameter. (GFlagsReturn.write_conversion): idem. * codegen/codegen.py: Add global iproxies_coverage to track coverage statistics of interface proxies. (Wrapper.write_methods): Split out writing virtual method accessors to a separate method (write_virtual_accessors). (GInterfaceWrapper.write_virtual_accessors): Override to disable writing virtual accessors for interfaces. (GInterfaceWrapper.write_virtuals): Override to generate interface virtuals, interface_init function, and interface_info structure. (write_registers): Call pyg_register_interface_info for interfaces with some implementation support. * gtk/gtk.defs: Add (define-virtual ...) declarations for all interface virtual methods in gtk. Fixes #154974: Interface implementation support. 2005-01-09 Gustavo J. A. M. Carneiro * codegen/reversewrapper.py (GBoxedParam.convert_c2py): When the C type begins with const, force python wrapper to create a copy of the boxed value, and typecast to avoid const warning. * codegen/codegen.py (Wrapper.write_virtuals): In the generated class_init function, don't declare the variable 'klass' if it is not needed. 2005-01-08 Adam Hooper * tests/test_actiongroup.py: Add test script for bug #162874. 2005-01-08 Adam Hooper reviewed by: Johan Dahlin * gtk/gtk.override: Py_DECREF action in gtk_action_group_add_*actions. This should disconnect all the groups from the callbacks when destroyed. Fixes bug 162874 2005-01-08 Johan Dahlin * Makefile.am: Add pygtk_postinstall.py * docs/random/missing-symbols: Updated * gtk/__init__.py: Deprecate gtk.idle_add and friends. * gtk/gtk.defs: Merge in 2.6 api, for GtkLabel functions, thanks to Gian Mario Tagliaretti, fixes bug #163296 * tests/test_thread.py: Don't use gtk.idle_add 2005-01-08 Gustavo J. A. M. Carneiro * codegen/reversewrapper.py (GFlagsReturn, GFlagsParam): Add type handlers for GFlags in reverse wrappers. (GtkTreePathParam): Add type handler for GtkTreePath* param. 2005-01-08 Gustavo J. A. M. Carneiro * gtk/gtk.override: Declare PyGdkDevice_Type, now needed for some virtual method. * gtk/gtk.defs: Add a bunch of virtual method declarations for all non-deprecated gtk widgets. * gobject/pygobject.h: Add pyg_register_class_init to the API vtable and as macro, and PyGClassInitFunc typedef. * gobject/gobjectmodule.c (initgobject): Create pygobject_class_init_key, a GQuark that indentifiers the class_init data for a GType class. (pyg_register_class_init): Add, registers a class intialization function of type "int (*PyGClassInitFunc) (gpointer gclass, PyTypeObject *pyclass);" (pyg_run_class_init): Add, runs a stack of class initialization functions for a newly registered GObject class. (pyg_type_register): Call pyg_run_class_init right after the type is registered. Add pyg_register_class_init to pygobject_api_functions. * codegen/scanvirtuals.py: An utility script to scan for virtual methods in header files. At the moment it is not very intelligent and doesn't distinguish between virtual methods and interface definitions. * codegen/defsparser.py (DefsParser.__init__): Initialize attribute 'virtuals', to hold list of object's virtual methods. (DefsParser.define_virtual): Adds a new virtual method. (DefsParser.find_virtuals): Returns list of virtual methods of an object. * codegen/definitions.py (ObjectDef.__init__): Add a class_init_func member variable. Rename class MethodDef to MethodDefBase, subclass MethodDefBase as MethodDef, move code that checks for presence of 'c_name' from MethodDefBase into MethodDef. (MethodDefBase.write_defs): Rename to _write_defs, and don't write the initial "(define-method ...". (MethodDef.write_defs): Write the "(define-method ..." here, then call _write_defs to write the remaining. (VirtualDef): New class to information of an object's virtual method. It inherits from MethodBaseDef. * codegen/codegen.py: Add class Coverage, to track and display coverage statistics. Add globals functions_coverage, methods_coverage, vproxies_coverage, and vaccessors_coverage. (Wrapper.virtual_accessor_tmpl): Add template for virtual method "accessor", which is a classmethod that calls a GObject virtual method for GType corresponding to the class of the method. This is used in virtual method implementations for chaining to parent classes. (Wrapper.write_class): Call self.write_virtuals() in the end, to write virtual method proxies. (Wrapper.write_function_wrapper): Don't overwrite subsdict['cname'] if it already has a value, since we need to pass a different function name when generating virtual method accessors. (Wrapper.write_methods): Update coverage statistics in methods_coverage. (Wrapper.write_methods): Generate virtual metho accessor functions, as classmethods. (Wrapper.write_virtuals): Generate virtual method proxies using the reverse wrapper generator. Also generates a class_init function to register the virtual proxies with the object class, but only for those virtuals that appear to be actually implemented in python code to avoid calling into python code for nothing. (Wrapper.write_functions): Update coverage statistics in functions_coverage. (write_registers): Generate code to call pyg_register_class_init if the object has a class init function. (main): Print all coverage statistics at the end of code generation. * codegen/argtypes.py (ArgMatcher.register_reverse) (ArgMatcher.register_reverse_ret, ArgMatcher.get_reverse) (ArgMatcher.get_reverse_ret): New APIs to register and lookup reverse wrappers type handlers. * codegen/Makefile.am (codegen_PYTHON): Add reversewrapper.py. * codegen/reversewrapper.py: New code to generate 'reverse wrappers', i.e. wrappers that are called from C, call into Python, and then return the python return value back to C. Fixes #145314: Overriding GTK+ virtual methods. 2004-12-26 John Finlay * gtk/gdk.override (_wrap_gdk_event_tp_setattr): Fix garbled code and allow message_type to be set. Fixes #162292. (Raphael Kubo da Costa) 2004-12-23 John Finlay * gtk/gdk.defs (render_to_drawable, render_to_drawable_alpha): Add drprecation warnings. Fixes #162097 (Steve Chaplin) * gtk/gtk.override (_wrap_gtk_dialog_set_alternative_button_order): Implement 2004-12-23 Johan Dahlin * gtk/__init__.py: Improve deprecation warnings, to display correct lines (stacklevel should 2, not 1 which is default) 2004-12-23 Johan Dahlin * configure.in: Post release version bump