summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* interfaces don't have parents.James Henstridge2001-05-284-21/+16
| | | | | | | | | | | | 2001-05-27 James Henstridge <james@daa.com.au> * codegen/codegen.py (write_source): interfaces don't have parents. * codegen/definitions.py (InterfaceDef.write_defs): don't look for (parent ...) sections in interface definitions. * gtk/gtk.defs (Editable): interfaces don't have parents.
* 2001-05-06 James Henstridge <james@daa.com.au>James Henstridge2001-05-065-9/+229
| | | | | | | | | | | | | | | | | | | | 2001-05-07 James Henstridge <james@daa.com.au> * examples/gobject/signal.py: 2001-05-06 James Henstridge <james@daa.com.au> * gobjectmodule.c (pygobject__init__): make the __init__ function choose what GType to pass to g_object_new based on the __gtype__ attribute. (pygobject_methods): make __gobject_init__ an alias for GObject.__init__. (pyg_type_register): new function for registering new GTypes. (pyg_type_register): register the type as "module+class" rather than "module.class", as the second form is considered bad (would like to use the second form though. * configure.in: require 1.3.5 versions of glib and gtk+.
* Produce kind of nice docbook documentation. Example output available atJames Henstridge2001-05-043-46/+72
| | | | | | | | 2001-05-05 James Henstridge <james@daa.com.au> * codegen/docgen.py (DocbookDocWriter.output_toc): Produce kind of nice docbook documentation. Example output available at http://www.gnome.org/~james/pygtk-docs/.
* Updates to the docbook generator.James Henstridge2001-05-041-10/+257
|
* handle output of constructor and method docs. Use overrides file so as notJames Henstridge2001-05-038-15/+131
| | | | | | | | | | | | | | | | | | | | 2001-05-03 James Henstridge <james@daa.com.au> * codegen/docgen.py (DocWriter): handle output of constructor and method docs. Use overrides file so as not to output info about methods we don't actually wrap. * codegen/Makefile.am (noinst_PYTHON): update file list. * codegen/__init__.py (__all__): update module list. * codegen/mergedefs.py: same here. * codegen/docgen.py (DocWriter.__init__): same here. * codegen/codegen.py: import defsparser instead. * codegen/defsparser.py: rename from parser.py.
* fix up autogen script to call autoheaderJames Henstridge2001-05-023-22/+16
| | | | | | | | 2001-05-01 James Henstridge <james@daa.com.au> * autogen.sh: fix up autogen script to call autoheader * gtk/gtk.defs: remove colorsel palette manipulation functions.
* only run the AC_PATH_PROGS check if we don't have a PYTHON environmentMatthew Wilson2001-05-013-1/+9
| | | | | | | | | 2001-05-01 Matthew Wilson <msw@redhat.com> * acinclude.m4 (AM_PATH_PYTHON_JH): only run the AC_PATH_PROGS check if we don't have a PYTHON environment variable set * autogen.sh: run autoheader
* s/AC_PATH_PROG/AC_PATH_PROGS/ so we check for more than one pythonMatthew Wilson2001-05-012-1/+6
| | | | | | | 2001-05-01 Matthew Wilson <msw@redhat.com> * acinclude.m4 (AM_PATH_PYTHON_JH): s/AC_PATH_PROG/AC_PATH_PROGS/ so we check for more than one python interpreter.
* limit the symbols exported by the various modules to just their moduleJames Henstridge2001-04-283-3/+11
| | | | | | | 2001-04-28 James Henstridge <james@daa.com.au> * Makefile.am, pygtk/Makefile.am: limit the symbols exported by the various modules to just their module init function.
* remove buttons that called set_space_size method.James Henstridge2001-04-285-103/+108
| | | | | | | | | | | | | | | | 2001-04-28 James Henstridge <james@daa.com.au> * examples/pygtk-demo/demos/toolbar.py (main): remove buttons that called set_space_size method. * gtk/__init__.py: remove __all__ definition. It causes problems with python 2.1. * gtk/gtk.override: updated GtkColorSelection method overrides (ignore): remove gtk_entry_new from ignore list, as other entry constructor is gone. * gtk/gtk.defs: updates to make it work with current gtk+
* file pygtk-codegen-1.2.in was initially added on branch gtk-gnome-1-2.James Henstridge2001-04-250-0/+0
|
* start of automatic documentation generator.James Henstridge2001-04-214-0/+206
| | | | | | | 2001-04-21 James Henstridge <james@daa.com.au> * codegen/docgen.py, codegen/docextract.py: start of automatic documentation generator.
* same here.James Henstridge2001-04-087-901/+1690
| | | | | | | | | | | | | | | | | | | | | 2001-04-08 James Henstridge <james@daa.com.au> * gtk/gtk.override: same here. * gtk/gtk-types.c (_pygtk_register_boxed_types): more fixups * gtk/gtkobject-support.c: lots of similar fixups. * codegen/argtypes.py (_enum_name): gdk type codes now seem to be named GDK_TYPE_... and not GTK_TYPE_GDK_... 2001-04-07 James Henstridge <james@daa.com.au> * gtk/gtk.defs: lots of defs file updates. 2001-04-06 James Henstridge <james@daa.com.au> * codegen/h2def.py: add --onlyobjdefs flag to script.
* toolbar demo.James Henstridge2001-03-308-18/+223
| | | | | | | | | 2001-03-30 James Henstridge <james@daa.com.au> * examples/pygtk-demo/demos/toolbar.py (main): toolbar demo. * examples/pygtk-demo/demos/buttonbox.py (main): add button box demo.
* moved rewritten testgtk demo hereJames Henstridge2001-03-3024-284/+312
| | | | | | | | | | | | | | | | | | | | 2001-03-30 James Henstridge <james@daa.com.au> * examples/pygtk-demo: moved rewritten testgtk demo here * gobjectmodule.c (pygobject_set_property): initialise the GValue to { 0, }, so set_property actually works. (pygobject_get_property): same here. * gtk/gtk.defs: updated enum/flag defs. * gtk/gdk.defs: updated enum/flag defs. * examples/gobject/signal.py (D.do_my_signal): add small example of overriding class closure for a signal introduced from python code. * codegen/h2def.py: add --onlyenums flag to only output enum defs.
* simple example program that adds a signal to a class, connects a handlerJames Henstridge2001-03-277-23/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-27 James Henstridge <james@daa.com.au> * examples/gobject/signal.py: simple example program that adds a signal to a class, connects a handler to an instance of that class, and finally emits that signal. Messages are printed by both the signal handler and class method closure. * gobjectmodule.c (pyg_signal_class_closure_marshal): convert dashes in signal name to underscores. Why does g_siganl_name use dashes? (pyg_signal_class_closure_marshal): fix off by one error when setting up the python argument tuple. The first element was getting left uninitialised. Signals introduced in python now work. * gtk/gtk.defs (GtkFileSelection.get_filename): return value is const. * gtk/gtk.override (_wrap_gtk_list_store_set_value): change name. (_wrap_gtk_tree_store_insert): change name. * gtk/gtk.defs (GtkListStore.set_value): change from set_cell to set_value. (GtkListStore.set_value): same here.
* (pyg_signal_new): new function to create new signals. Doesn'tJames Henstridge2001-03-273-0/+162
| | | | work right yet.
* new function to get the closure used as the `class closure' for signals.James Henstridge2001-03-273-1/+197
| | | | | | | | | 2001-03-27 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_signal_class_closure_get): new function to get the closure used as the `class closure' for signals. We only need one, as we can get all the information we need from the invocation hint.
* add some comments about creating new GTypes here.James Henstridge2001-03-264-12/+267
| | | | | | | | | 2001-03-26 James Henstridge <james@daa.com.au> * gobjectmodule.c (pygobject__class_init__): add some comments about creating new GTypes here. * gobjectmodule.c: add type info functions to module.
* s/is_last/is_end/James Henstridge2001-03-247-388/+44
| | | | | | | | | | | | 2001-03-24 James Henstridge <james@daa.com.au> * gtk/gtk-types.c (pygtk_text_iter_is_end): s/is_last/is_end/ * gobjectmodule.c (pyg_closure_new): s/add_fnotify/add_finalize_notifier/ * gtk/gdk.defs, gtk/gtk.defs, gtk/gtk.override: various changes to make it compile again.
* Still broken. Needs more updatingJames Henstridge2001-03-1812-621/+554
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-18 James Henstridge <james@daa.com.au> * gtk/pygtktreemodel.c (pygtk_tree_model_class_init): signals are now created in the gtktreemodel.c, so we don't need to. * gtk/gtk.defs (Adjustment): make parent GtkObject, as GtkData is gone. (GtkText): remove from binding. * codegen/codegen.py (write_source): pass in the get_type function when registering classes. (gettypetmpl): remove template. (write_class): remove get_type method generator. Handled by __gtype__ * gobjectmodule.c (initgobject): add argument to g_type_init call. (pyg_value_from_pyobject): use G_VALUE_HOLDS_* rather than G_IS_VALUE_*. (pyg_value_as_pyobject): same here. (pygobject_register_class): add an argument that takes the get_type function for the GObject. This is used to add a __gtype__ attribute to the class (the get_type function is not actually called until __gtype__ is accessed).
* file pygdkpixbuf.h was initially added on branch gtk-gnome-1-2.James Henstridge2001-03-130-0/+0
|
* file gdkpixbufmodule.c was initially added on branch gtk-gnome-1-2.James Henstridge2001-03-130-0/+0
|
* destroy window on button's clicked signal rather than destroy signal.PYGTK_0_6_7GNOME_PYTHON_1_4_0James Henstridge2000-12-1411-96/+164
| | | | | | | | | | | | | | | | | | | | | 2000-12-14 James Henstridge <james@daa.com.au> * examples/testgtk/demos/menu.py (main): destroy window on button's clicked signal rather than destroy signal. * gtk/gtk.defs: remove gtk_object_default_construct and gtk_object_constructed. * gobjectmodule.c: change over to new notification functions. * gtk/gtk-types.c: rename functions. * gobjectmodule.c (pygobject_get_property): (pygobject_set_property): change function names to match changes in glib. (...connect|emit): use g_signal_parse_name instead of g_signal_lookup, so we can parse the detail out of the signal name string.
* fix PyObject_CallMethod calls to add parentheses around argument typeJames Henstridge2000-12-069-31/+239
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-06 James Henstridge <james@daa.com.au> * gtk/pygtktreemodel.c: fix PyObject_CallMethod calls to add parentheses around argument type list. (pygtk_tree_model_get_flags): decref py_ret -- not Py_None (pygtk_tree_model_get_n_columns): same here. (pygtk_tree_model_get_column_type): same here. (*): conditionally print out debugging messages. * examples/testgtk/demos/treemodel.py: simple test of PyGtkTreeModel. * gtk/pygtktreemodel.c: set iter->tree_node to NULL when returning FALSE, as GTK sometimes ignores the return value :( * codegen/codegen.py (interfacetypetmpl): don't set the interface type as having an instance dictionary. (write_interface): actually use interfacetypetmpl when writing out the interface type def. * codegen/argtypes.py (_conv_special_cases): add a special case for the underscore version of PyGtkTreeModel. * gtk/gtk.override: include pygtktreemodel.h * gtk/__init__.py: don't error out if we can't import ltihooks. * gtk/gtk-extrafuncs.defs: include defs for PyGtkTreeModel type. * gtk/Makefile.am (_gtkmodule_la_SOURCES): compile PyGtkTreeModel into pygtk. * gtk/pygtktreemodel.c: fix errors.
* check in initial leaky implementation of the GtkTreeModel for use fromJames Henstridge2000-12-064-2/+506
| | | | | | | | 2000-12-06 James Henstridge <james@daa.com.au> * gtk/pygtktreemodel.[ch]: check in initial leaky implementation of the GtkTreeModel for use from python. Can't test it right now because gtk head is broken.
* Havoc's enum handling patch.James Henstridge2000-11-293-3/+24
| | | | | | | | | 2000-11-29 James Henstridge <james@daa.com.au> * codegen/h2def.py (write_enum_defs): Havoc's enum handling patch. * TODO: add todo item about creating real GObject subclasses, and add some info on the GInterface stuff.
* fix bug where mod.__file__ is the .pyc file rather than the .py file.James Henstridge2000-11-294-5/+18
| | | | | | | | | | | | | 2000-11-29 James Henstridge <james@daa.com.au> * examples/testgtk/testgtk.py (load_module): fix bug where mod.__file__ is the .pyc file rather than the .py file. * gtk/gtk.defs: change parent type for some classes to GtkDialog to match changes in gtk+. * gtk/Makefile.am (pysitedir, pyexecdir): fix up directory names. It wasn't installing these files in a gtk/ subdirectory :(
* make changes to make GtkEditable into an interface.James Henstridge2000-11-165-23/+75
| | | | | | | | | | | 2000-11-16 James Henstridge <james@daa.com.au> * gtk/gtk.defs: make changes to make GtkEditable into an interface. * examples/testgtk/demos/__init__.py (demos): create the list of example modules on the fly, rather than having them hard coded into a list.
* start of a revamped testgtk example, similar to the new one in gtk.James Henstridge2000-11-1116-1708/+936
| | | | | | | | | | | | | | | | | | | | | | | 2000-11-11 James Henstridge <james@daa.com.au> * examples/testgtk/testgtk.py: start of a revamped testgtk example, similar to the new one in gtk. * gtk/gtk-types.c (PyGdkEvent_New): guard against a NULL axes member in the GdkEvent structure. * gtk/gtk.override (_wrap_gtk_tree_view_get_path_at_pos): implementation of this function. * codegen/argtypes.py (GtkTreePathArg): add an arg matcher for GtkTreePath objects, that represents them as tuples of integers. * gtk/gtk-types.c (_pygtk_register_boxed_types): add marshalers for GtkTreeIter and GtkTreePath so they can be used from signal handlers now. * gtk/gtk.override, gtk/gtk.defs: make name change for GtkTreeStore constructor.
* ignore the gtk_tree_view_new function, so gtk_tree_view_new_with_modelJames Henstridge2000-11-103-35/+157
| | | | | | | | | | | | | | 2000-11-10 James Henstridge <james@daa.com.au> * gtk/gtk.override: ignore the gtk_tree_view_new function, so gtk_tree_view_new_with_model gets chosen as the constructor. (_wrap_gtk_tree_store_...): fix up the iterator creation methods so that they can take NULL arguments. (_wrap_gtk_tree_view_column_new): new implementation of this constructor. Map keyword arguments to column attributes. * gtk/gtk.defs (gtk_tree_view_new_with_model, GtkTreeView.set_model): Allow NULL to be passed in as the model argument.
* add gtk_tree_model_get_{iter,path,value} functions.James Henstridge2000-11-104-22/+426
| | | | | | | | | | | | | | | | 2000-11-10 James Henstridge <james@daa.com.au> * gtk/gtk.override: add gtk_tree_model_get_{iter,path,value} functions. (_wrap_gtk_list_store_*): add constructor and set_cell implementations, and impls of the insertion functions that return the new GtkTreeIter, rather than treating it as an out argument. (_wrap_gtk_list_store_set_cell): allow string versions of type codes for convenience. (_wrap_gtk_list_store_insert): directly access column_headers structure member as the get_column_type method doesn't exist. (_wrap_gtk_tree_store_*): constructor, set_cell and tree iter creation methods added. Ignore [gs]et{,v}.
* these implement the GtkTreeModel interface. (TreeModel): add interfaceJames Henstridge2000-11-092-6/+17
| | | | | | | | 2000-11-09 James Henstridge <james@daa.com.au> * gtk/gtk.defs (ListStore, TreeStore): these implement the GtkTreeModel interface. (TreeModel): add interface definition here.
* register interfaces into the argument type matcher. (write_source): writeJames Henstridge2000-11-094-2/+158
| | | | | | | | | | | | | | | | | | | | | | | | 2000-11-09 James Henstridge <james@daa.com.au> * codegen/codegen.py (register_types): register interfaces into the argument type matcher. (write_source): write out interface source. Register interface class types before object types, as they may be used by objects. (write_source): set multiple base classes if an object implements an interface. (write_interface): function to write out the code for an interface. It is really a simplified version of write_class. * codegen/parser.py (DefsParser.interface): handle interface clauses. * codegen/definitions.py (InterfaceDef): add a class for interface definitions. (ObjectDef): add support for an implements keyword. * codegen/codegen.py (write_source): change code generator to pass bases in as a tuple rather than a single PyExtensionClass structure.
* change code generator to pass bases in as a tuple rather than a singleJames Henstridge2000-11-097-12/+25
| | | | | | | | | | | | | 2000-11-09 James Henstridge <james@daa.com.au> * codegen/codegen.py (write_source): change code generator to pass bases in as a tuple rather than a single PyExtensionClass structure. * pygobject.h: change prototype. * gobjectmodule.c (pygobject_register_class): allow for registerin a type with multiple base classes.
* add a special case for converting GObject -> G_OBJECT.James Henstridge2000-11-088-17/+138
| | | | | | | | | | | | | | | 2000-11-08 James Henstridge <james@daa.com.au> * codegen/argtypes.py (_conv_special_cases): add a special case for converting GObject -> G_OBJECT. * gobjectmodule.c (pygobject_connect*): g_signal_connect_closure renaming. * codegen/argtypes.py (arg): add GtkTreeIter support. * gtk/gtk-types.c, gtk/pygtk.h, gtk/pygtk-private.h: add a skeleton for the GtkTreeIter wrapper.
* todo file with a few items needed for the gtk 2.0 based pygtk.James Henstridge2000-11-044-1235/+1341
| | | | | | | | | | | 2000-11-04 James Henstridge <james@daa.com.au> * TODO: todo file with a few items needed for the gtk 2.0 based pygtk. * gtk/gtk.defs: add new GtkTree widget definitions. (GtkTreeViewColumn.get_justification): comment out as it doesn't exist.
* small changes to handle GtkTextIter objects as arguments to signals, nowJames Henstridge2000-11-022-1/+21
| | | | | | | | 2000-11-02 James Henstridge <james@daa.com.au> * gtk/gtk-types.c (_pygtk_register_boxed_types): small changes to handle GtkTextIter objects as arguments to signals, now that Havoc made the appropriate changes in gtk.
* reorder parameters to make it work with latest glib. (pygobject_connect*):James Henstridge2000-10-303-14/+21
| | | | | | | | | | | 2000-10-30 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_closure_marshal): reorder parameters to make it work with latest glib. (pygobject_connect*): pass 0 for the new detail parameter. Don't know what it is for. (pygobject_emit): pass 0 for detail parameter. (pygobject_stop_emission): pass 0 for detail parameter.
* init as module gtk._gtk. Using just _gtk doesn't seem to work with pythonJames Henstridge2000-10-3019-541/+2087
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-30 James Henstridge <james@daa.com.au> * gtk/gtkmodule.c (init_gtk): init as module gtk._gtk. Using just _gtk doesn't seem to work with python 2.0 2000-10-29 James Henstridge <james@james.daa.com.au> * examples/ide/gtkcons.py: small changes to make example run. * gtk/gtk-types.c: add GtkTextIter.forward_search implementation. * gtk/gtk.override: more override functions. * gtk/gtkobject-support.c: remove some of the unused functions from this file. 2000-10-28 James Henstridge <james@james.daa.com.au> * gtk/gtk.override: override the functions used to initialise GtkTextIter objects so that they return the iterator rather than setting up an static GtkTextIter structure. * gtk/gtk.defs (TextMark): add missing GtkTextMark object. Don't know why h2defs missed it. ("gtk-extrafuncs.defs"): include gtk-extrafuncs.defs. * codegen/argtypes.py: add GdkDevice and GtkTextIter to list of recognised boxed types. * gtk/gtk-types.c: add skeleton implementation of GtkTextIter. * gtk/pygtk.h, gtk/pygtk-private.h: add prototypes for GtkTextIter wrapper. * gtk/gtk.override: ref and sink GtkObjects which have their constructors listed in the overrides file. This should get rid of the last few warnings on exit related to reference counting. * codegen/codegen.py: use the keyword module to check for method and argument names that conflict with the python keywords. By using this module, we shouldn't have problems with new keywords in future versions of python. 2000-10-27 James Henstridge <james@james.daa.com.au> * gobjectmodule.c (pygobject_emit): support for emiting signals on GObjects from python. * codegen/codegen.py (write_constructor): sink GtkObjects. This prevents us losing our reference to the object if it is sunk. * codegen/argtypes.py (ArgMatcher.object_is_a): function to check if one object type is another type. * codegen/codegen.py (register_types): pass the parent type when registering a new GObject type. * gtk/gtk-types.c (_pygtk_register_boxed_types): register marshalers for the various boxed types, so that they work as expected inside the signal handlers. * gobjectmodule.c (pygobject_repr): small change to match style of other repr functions in python. * gtk/gtkmodule.c (init_gtk): only call g_thread_init() if pygtk threading support is enabled. * configure.in (enable_thread): add configure checks so that threading support can be disabled even if python was compiled with it. It defaults to off for now because GSignal has some mutex deadlocks at the moment.
* gtkmodule.c was moved to gtk/. This should get distckeck to work properlyJames Henstridge2000-10-261-1/+1
|
* readme file about defs formatJames Henstridge2000-10-261-0/+351
|
* include the autogen.sh script from extension-class-branchJames Henstridge2000-10-261-0/+89
|
* remove gtk_signal_set_funcs call.James Henstridge2000-10-266-190/+480
| | | | | | | | | | | 2000-10-26 James Henstridge <james@daa.com.au> * gtk/gtkmodule.c (init_gtk): remove gtk_signal_set_funcs call. * gobjectmodule.c (pyg_value_from_pyobject): default to using CObject for unknown boxed values and pointer values. (pyg_value_as_pyobject): same here. (pygobject_connect*): Add signal connection functions.
* new function for registering functions to marshal boxed GValues to/fromJames Henstridge2000-10-265-20/+308
| | | | | | | | | | | | | | | | | | 2000-10-26 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_boxed_register): new function for registering functions to marshal boxed GValues to/from their python wrappers. (pyg_value_from_pyobject): add boxed support. (pyg_value_as_pyobject): add boxed support. (pyg_closure_new): new function to create a python GClosure. (pyg_closure_destroy): cleanup function for a PyGClosure. (pyg_closure_marshal): marshaler for PyGClosure. (pyg_value_as_pyobject): add const to GValue argument. * pygobject.h: export a pyg_boxed_register function to register new boxed types for use with pyg_value_from_pyobject and pyg_value_as_pyobject.
* include <glib-object.h> rather than <gobject/...>James Henstridge2000-10-254-6/+2
|
* set the default python character encoding to UTF-8.James Henstridge2000-10-253-207/+246
| | | | | | | | | 2000-10-25 James Henstridge <james@daa.com.au> * gtk/gtkmodule.c (init_gtk): set the default python character encoding to UTF-8. * gtk/gtk.defs: more setting constructors and default arguments.
* more updates.James Henstridge2000-10-255-527/+237
| | | | | | | | | 2000-10-25 James Henstridge <james@daa.com.au> * gtk/gtk.defs: more updates. * gobjectmodule.c (pygobject_getattro): return NULL on error. This fixes the segfault :)
* add a field just to test pygobject_getattro. It isn't working quiteJames Henstridge2000-10-257-754/+801
| | | | | | | | | | | | | | | | | | | | | | 2000-10-25 James Henstridge <james@daa.com.au> * gtk/gtk.defs (Bin): add a field just to test pygobject_getattro. It isn't working quite properly at the moment though :( * gobjectmodule.c (check_bases): class->bases is a tuple -- not a list. (check_bases): check if class->bases != NULL before using it :( * gtk/gtk.defs: comment out new tree widget stuff at hp and owen's suggestion. * gtk/__init__.py: import gobject here as well to prevent weirdness. * gtk/gtk.defs: more updates, adding (is-constructor-of ...) and (default "...") clauses. * gtk/gtk.override (_wrap_gtk_button_new): handle the accel_group argument, and try to create a stock button if possible.
* various small fixes.James Henstridge2000-10-244-652/+172
| | | | | | | | 2000-10-25 James Henstridge <james@daa.com.au> * gtk/gtk.defs, gtk/gdk.defs: various small fixes. * gtk/gtk.override: fix lots of overrides to work with gtk 2.0