diff options
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | atk.override | 2 | ||||
-rw-r--r-- | codegen/codegen.py | 24 | ||||
-rw-r--r-- | codegen/override.py | 3 | ||||
-rw-r--r-- | gobject/pygtype.c | 34 | ||||
-rw-r--r-- | gtk/gdk.override | 2 | ||||
-rw-r--r-- | gtk/gtk.override | 2 | ||||
-rw-r--r-- | gtk/libglade.override | 2 | ||||
-rw-r--r-- | pango.override | 2 | ||||
-rw-r--r-- | pygtype.c | 34 |
10 files changed, 95 insertions, 31 deletions
@@ -1,5 +1,26 @@ 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. + * gtk/gtk-types.c (PyGtkStyleHelper_Type): add module name to type name, and remove the commented out obsolete GdkColormap implementation. diff --git a/atk.override b/atk.override index 47aff34b..79ad51d1 100644 --- a/atk.override +++ b/atk.override @@ -8,6 +8,8 @@ headers #include <atk/atknoopobjectfactory.h> #include <atk/atknoopobject.h> %% +modulename atk +%% import gobject.GObject as PyGObject_Type %% ignore-glob diff --git a/codegen/codegen.py b/codegen/codegen.py index 71c892be..4dee7969 100644 --- a/codegen/codegen.py +++ b/codegen/codegen.py @@ -246,7 +246,7 @@ boxedgettertmpl = ('static PyObject *\n' boxedtmpl = """PyTypeObject Py%(typename)s_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ - "%(typename)s", /* tp_name */ + "%(classname)s", /* tp_name */ sizeof(PyGBoxed), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ @@ -306,7 +306,7 @@ pointerconsttmpl = ('static int\n' pointertmpl = """PyTypeObject Py%(typename)s_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ - "%(typename)s", /* tp_name */ + "%(classname)s", /* tp_name */ sizeof(PyGPointer), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ @@ -616,6 +616,10 @@ def write_class(parser, objobj, overrides, fp=sys.stdout): 'classname': objobj.name, 'initfunc': initfunc } + if overrides.modulename: + dict['classname'] = '%s.%s' % (overrides.modulename, objobj.name) + else: + dict['classname'] = objobj.name dict['getsets'] = write_getsets(parser, objobj, castmacro, overrides, fp) dict['methods'] = '_Py' + dict['class'] + '_methods' @@ -672,7 +676,11 @@ def write_interface(parser, interface, overrides, fp=sys.stdout): fp.write('};\n\n') # write the type template - dict = { 'class': interface.c_name, 'classname': interface.name } + dict = { 'class': interface.c_name } + if overrides.modulename: + dict['classname'] = '%s.%s' % (overrides.modulename, interface.name) + else: + dict['classname'] = inerface.name dict['methods'] = '_Py' + dict['class'] + '_methods' # handle slots ... @@ -880,6 +888,11 @@ def write_boxed(parser, boxedobj, overrides, fp=sys.stdout): # write the type template dict = { 'typename': boxedobj.c_name, 'initfunc': initfunc } + if overrides.modulename: + dict['classname'] = '%s.%s' % (overrides.modulename, boxedobj.name) + else: + dict['classname'] = boxedobj.name + dict['getsets'] = write_boxed_getsets(parser, boxedobj, overrides, fp) dict['methods'] = '_Py' + dict['typename'] + '_methods' @@ -1090,6 +1103,11 @@ def write_pointer(parser, pointerobj, overrides, fp=sys.stdout): # write the type template dict = { 'typename': pointerobj.c_name, 'initfunc': initfunc } + if overrides.modulename: + dict['classname'] = '%s.%s' % (overrides.modulename, pointerobj.name) + else: + dict['classname'] = pointerobj.name + dict['getsets'] = write_pointer_getsets(parser, pointerobj, overrides, fp) dict['methods'] = '_Py' + dict['typename'] + '_methods' diff --git a/codegen/override.py b/codegen/override.py index 88b3a730..bf512a31 100644 --- a/codegen/override.py +++ b/codegen/override.py @@ -11,6 +11,7 @@ import_pat = re.compile(r'\s*import\s+(\S+)\.([^\s.]+)\s+as\s+(\S+)') class Overrides: def __init__(self, filename=None): + self.modulename = None self.ignores = {} self.glob_ignores = [] self.overrides = {} @@ -86,6 +87,8 @@ class Overrides: elif words[0] == 'init': self.init = '%s\n#line %d "%s"\n%s' % \ (self.init, startline + 1, filename, rest) + elif words[0] == 'modulename': + self.modulename = words[1] elif words[0] == 'import': for line in string.split(buffer, '\n'): match = import_pat.match(line) diff --git a/gobject/pygtype.c b/gobject/pygtype.c index df8530f4..84a07817 100644 --- a/gobject/pygtype.c +++ b/gobject/pygtype.c @@ -818,25 +818,31 @@ add_property_docs(GType gtype, GString *string) GObjectClass *class; GParamSpec **props; guint n_props = 0, i; + gboolean has_prop = FALSE; class = g_type_class_ref(gtype); props = g_object_class_list_properties(class, &n_props); - if (n_props > 0) { - g_string_append_printf(string, "Properties from %s:\n", - g_type_name(gtype)); - - for (i = 0; i < n_props; i++) { - g_string_append_printf(string, " %s -> %s: %s\n", - g_param_spec_get_name(props[i]), - g_type_name(props[i]->value_type), - g_param_spec_get_nick(props[i])); - g_string_append_printf(string, " %s\n", - g_param_spec_get_blurb(props[i])); - } - g_free(props); - g_string_append(string, "\n"); + for (i = 0; i < n_props; i++) { + if (props[i]->owner_type != gtype) + continue; /* these are from a parent type */ + + /* print out the heading first */ + if (!has_prop) { + g_string_append_printf(string, "Properties from %s:\n", + g_type_name(gtype)); + has_prop = TRUE; + } + g_string_append_printf(string, " %s -> %s: %s\n", + g_param_spec_get_name(props[i]), + g_type_name(props[i]->value_type), + g_param_spec_get_nick(props[i])); + g_string_append_printf(string, " %s\n", + g_param_spec_get_blurb(props[i])); } + g_free(props); + if (has_prop) + g_string_append(string, "\n"); g_type_class_unref(class); } diff --git a/gtk/gdk.override b/gtk/gdk.override index 2d02a86b..e7c20239 100644 --- a/gtk/gdk.override +++ b/gtk/gdk.override @@ -14,6 +14,8 @@ headers extern PyTypeObject PyGtkWidget_Type; %% +modulename gtk.gdk +%% import gobject.GObject as PyGObject_Type import pango.Context as PyPangoContext_Type import pango.Font as PyPangoFont_Type diff --git a/gtk/gtk.override b/gtk/gtk.override index 2040d6dd..05fcd28c 100644 --- a/gtk/gtk.override +++ b/gtk/gtk.override @@ -19,6 +19,8 @@ extern PyTypeObject PyGdkPixbufAnimation_Type; extern PyTypeObject PyGdkDragContext_Type; %% +modulename gtk +%% import gobject.GObject as PyGObject_Type import atk.Object as PyAtkObject_Type import pango.Context as PyPangoContext_Type diff --git a/gtk/libglade.override b/gtk/libglade.override index 1392ed14..9407b4e1 100644 --- a/gtk/libglade.override +++ b/gtk/libglade.override @@ -6,6 +6,8 @@ headers #include <glade/glade.h> %% +modulename gtk.glade +%% import gobject.GObject as PyGObject_Type import gtk._gtk.Widget as PyGtkWidget_Type %% diff --git a/pango.override b/pango.override index d2cae681..03f740c6 100644 --- a/pango.override +++ b/pango.override @@ -6,6 +6,8 @@ headers #include <pango/pango.h> %% +modulename pango +%% import gobject.GObject as PyGObject_Type %% ignore-glob *_get_type @@ -818,25 +818,31 @@ add_property_docs(GType gtype, GString *string) GObjectClass *class; GParamSpec **props; guint n_props = 0, i; + gboolean has_prop = FALSE; class = g_type_class_ref(gtype); props = g_object_class_list_properties(class, &n_props); - if (n_props > 0) { - g_string_append_printf(string, "Properties from %s:\n", - g_type_name(gtype)); - - for (i = 0; i < n_props; i++) { - g_string_append_printf(string, " %s -> %s: %s\n", - g_param_spec_get_name(props[i]), - g_type_name(props[i]->value_type), - g_param_spec_get_nick(props[i])); - g_string_append_printf(string, " %s\n", - g_param_spec_get_blurb(props[i])); - } - g_free(props); - g_string_append(string, "\n"); + for (i = 0; i < n_props; i++) { + if (props[i]->owner_type != gtype) + continue; /* these are from a parent type */ + + /* print out the heading first */ + if (!has_prop) { + g_string_append_printf(string, "Properties from %s:\n", + g_type_name(gtype)); + has_prop = TRUE; + } + g_string_append_printf(string, " %s -> %s: %s\n", + g_param_spec_get_name(props[i]), + g_type_name(props[i]->value_type), + g_param_spec_get_nick(props[i])); + g_string_append_printf(string, " %s\n", + g_param_spec_get_blurb(props[i])); } + g_free(props); + if (has_prop) + g_string_append(string, "\n"); g_type_class_unref(class); } |