summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--atk.override2
-rw-r--r--codegen/codegen.py24
-rw-r--r--codegen/override.py3
-rw-r--r--gobject/pygtype.c34
-rw-r--r--gtk/gdk.override2
-rw-r--r--gtk/gtk.override2
-rw-r--r--gtk/libglade.override2
-rw-r--r--pango.override2
-rw-r--r--pygtype.c34
10 files changed, 95 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a2cbace..8a4ff893 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/pygtype.c b/pygtype.c
index df8530f4..84a07817 100644
--- a/pygtype.c
+++ b/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);
}