summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2006-07-23 15:02:18 +0000
committerJohan Dahlin <johan@src.gnome.org>2006-07-23 15:02:18 +0000
commit89d569d07deebc33e9e7a3ca4251056af38d5cbd (patch)
tree33d2243283b6841d36ba2b2b17784e624e2c259d
parent30510d904960bef4c9382aac264b052739b4b237 (diff)
downloadpygtk-89d569d07deebc33e9e7a3ca4251056af38d5cbd.tar.gz
Revert dynamic namespaces, it is not possible to solve it without breaking
* Makefile.am: * gtk/Makefile.am: * gtk/__init__.py: * gtk/_gtk.py: * gtk/_lazyutils.py: * gtk/deprecation.py: * gtk/gtk.override: * gtk/gtkmodule.c: (init_gtk): * gtk/libglademodule.c: (initglade): Revert dynamic namespaces, it is not possible to solve it without breaking the ABI.
-rw-r--r--ChangeLog15
-rw-r--r--Makefile.am32
-rw-r--r--gtk/Makefile.am51
-rw-r--r--gtk/__init__.py30
-rw-r--r--gtk/_gtk.py30
-rw-r--r--gtk/_lazyutils.py15
-rw-r--r--gtk/deprecation.py2
-rw-r--r--gtk/gtk.override2
-rw-r--r--gtk/gtkmodule.c5
-rw-r--r--gtk/libglademodule.c4
10 files changed, 86 insertions, 100 deletions
diff --git a/ChangeLog b/ChangeLog
index 281a526a..e9e3e524 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-07-23 Johan Dahlin <johan@gnome.org>
+
+ * Makefile.am:
+ * gtk/Makefile.am:
+ * gtk/__init__.py:
+ * gtk/_gtk.py:
+ * gtk/_lazyutils.py:
+ * gtk/deprecation.py:
+ * gtk/gtk.override:
+ * gtk/gtkmodule.c: (init_gtk):
+ * gtk/libglademodule.c: (initglade):
+
+ Revert dynamic namespaces, it is not possible
+ to solve it without breaking the ABI.
+
2006-07-23 Gustavo J. A. M. Carneiro <gjc@gnome.org>
* gtk/_gtk.py: Add _PyGtk_API alias from _gtkimpl, for
diff --git a/Makefile.am b/Makefile.am
index d47cb106..7b99c1af 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -105,38 +105,6 @@ pkgpyexec_LTLIBRARIES += pangocairo.la
defs_DATA += $(PANGOCAIRO_DEFS)
endif
-# libglade module
-# XXX: Move libglade to
-LIBGLADE_DEFS = gtk/libglade.defs
-CLEANFILES += gtk/libglade.c
-EXTRA_DIST += $(LIBGLADE_DEFS) gtk/libglade.override
-libglade.c: $(LIBGLADE_DEFS) gtk/libglade.override
-_glade_la_CFLAGS = $(LIBGLADE_CFLAGS)
-_glade_la_LIBADD = $(LIBGLADE_LIBS)
-_glade_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_glade
-_glade_la_SOURCES = gtk/libglademodule.c
-nodist__glade_la_SOURCES = gtk/libglade.c
-if BUILD_LIBGLADE
-pkgpyexec_LTLIBRARIES += _glade.la
-defs_DATA += $(LIBGLADE_DEFS)
-endif
-
-# gtkunixprint module
-GTKUNIXPRINT_DEFS = gtk/gtkunixprint.defs
-CLEANFILES += gtk/gtkunixprint.c
-EXTRA_DIST += $(GTKUNIXPRINT_DEFS) gtk/gtkunixprint.override
-gtkunixprint.c: $(GTKUNIXPRINT_DEFS) gtk/gtkunixprint.override
-gtkunixprint_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTKUNIXPRINT_CFLAGS)
-gtkunixprint_la_LIBADD = $(GTKUNIXPRINT_LIBS)
-gtkunixprint_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initgtkunixprint
-gtkunixprint_la_SOURCES = gtk/gtkunixprintmodule.c
-nodist_gtkunixprint_la_SOURCES = gtk/gtkunixprint.c
-if BUILD_GTKUNIXPRINT
-pkgpyexec_LTLIBRARIES += gtkunixprint.la
-defs_DATA += $(GTKUNIXPRINT_DEFS)
-endif
-
-
# code generator
.defs.c:
(cd $(srcdir)\
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 6031d75b..cd913483 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -25,8 +25,6 @@ pygtkexec_LTLIBRARIES =
pygtkdir = $(pkgpythondir)/gtk
pygtk_PYTHON = \
__init__.py \
- _gtk.py \
- _lazyutils.py \
compat.py \
deprecation.py \
keysyms.py
@@ -99,26 +97,22 @@ EXTRA_DIST += \
gdk.defs: $(GDK_DEFS)
$(CREATEDEFS) $@ $(GDK_DEFS)
-gdk.defs: Makefile
gtk.defs: $(GTK_DEFS)
$(CREATEDEFS) $@ $(GTK_DEFS)
-gtk.defs: Makefile
gdk-types.defs: $(GDK_TYPES_DEFS)
$(CREATEDEFS) $@ $(GDK_TYPES_DEFS)
-gdk-types.defs: Makefile
gtk-types.defs: $(GTK_TYPES_DEFS)
$(CREATEDEFS) $@ $(GTK_TYPES_DEFS)
-gtk-types.defs: Makefile
gdk.c: gdk-types.defs gdk.defs $(GDK_OVERRIDES)
gtk.c: gdk-types.defs gtk-types.defs gtk.defs gdk-types.defs $(GTK_OVERRIDES)
-_gtkimpl_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTK_CFLAGS)
-_gtkimpl_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gtkimpl
-_gtkimpl_la_LIBADD = $(GTK_LIBS)
-_gtkimpl_la_SOURCES = \
+_gtk_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTK_CFLAGS)
+_gtk_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gtk
+_gtk_la_LIBADD = $(GTK_LIBS)
+_gtk_la_SOURCES = \
gtk-types.c \
gtkmodule.c \
gtkobject-support.c \
@@ -128,14 +122,45 @@ _gtkimpl_la_SOURCES = \
pygtkcellrenderer.c \
pygtktreemodel.h \
pygtktreemodel.c
-nodist__gtkimpl_la_SOURCES = gtk.c gdk.c
+nodist__gtk_la_SOURCES = gtk.c gdk.c
if BUILD_GTK
-pygtkexec_LTLIBRARIES += _gtkimpl.la
+pygtkexec_LTLIBRARIES += _gtk.la
defs_DATA += $(GDK_DEFS) $(GDK_TYPES_DEFS) $(GTK_DEFS) $(GTK_TYPES_DEFS) \
gdk.defs gtk.defs gdk-types.defs gtk-types.defs
endif
+
+# libglade module
+LIBGLADE_DEFS = libglade.defs
+CLEANFILES += libglade.c
+EXTRA_DIST += $(LIBGLADE_DEFS) libglade.override
+libglade.c: $(LIBGLADE_DEFS) libglade.override
+glade_la_CFLAGS = $(LIBGLADE_CFLAGS)
+glade_la_LIBADD = $(LIBGLADE_LIBS)
+glade_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initglade
+glade_la_SOURCES = libglademodule.c
+nodist_glade_la_SOURCES = libglade.c
+if BUILD_LIBGLADE
+pygtkexec_LTLIBRARIES += glade.la
+defs_DATA += $(LIBGLADE_DEFS)
+endif
+
+# gtkunixprint module
+GTKUNIXPRINT_DEFS = gtkunixprint.defs
+CLEANFILES += gtkunixprint.c
+EXTRA_DIST += $(GTKUNIXPRINT_DEFS) gtkunixprint.override
+gtkunixprint.c: $(GTKUNIXPRINT_DEFS) gtkunixprint.override
+gtkunixprint_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTKUNIXPRINT_CFLAGS)
+gtkunixprint_la_LIBADD = $(GTKUNIXPRINT_LIBS)
+gtkunixprint_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initgtkunixprint
+gtkunixprint_la_SOURCES = gtkunixprintmodule.c
+nodist_gtkunixprint_la_SOURCES = gtkunixprint.c
+if BUILD_GTKUNIXPRINT
+pkgpyexec_LTLIBRARIES = gtkunixprint.la
+defs_DATA += $(GTKUNIXPRINT_DEFS)
+endif
+
if PLATFORM_WIN32
-_gtkimpl_la_CFLAGS += -DPLATFORM_WIN32
+_gtk_la_CFLAGS += -DPLATFORM_WIN32
endif
diff --git a/gtk/__init__.py b/gtk/__init__.py
index 9b50006c..608646aa 100644
--- a/gtk/__init__.py
+++ b/gtk/__init__.py
@@ -42,7 +42,7 @@ if ver < (2, 11, 1):
raise ImportError(
"PyGTK requires PyGObject 2.11.1 or higher, but %s was found" % (ver,))
-from gtk import _gtkimpl
+from gtk import _gtk
import gdk
if ltihooks:
@@ -55,12 +55,11 @@ from gtk.deprecation import _Deprecated, _DeprecatedConstant
def _init():
import sys
- init_check = _gtkimpl._get_symbol(globals(), 'init_check')
try:
sys_path = sys.path[:]
try:
- init_check()
+ _gtk.init_check()
except RuntimeError, e:
print >> sys.stderr, "WARNING: %s" % e
finally:
@@ -70,15 +69,14 @@ def _init():
sys.path = sys_path
# install the default log handlers
- add_log_handlers = _gtkimpl._get_symbol(globals(), 'add_log_handlers')
- add_log_handlers()
+ _gtk.add_log_handlers()
keysyms = LazyModule('keysyms', locals())
_init()
# CAPI
-_PyGtk_API = _gtkimpl._PyGtk_API
+_PyGtk_API = _gtk._PyGtk_API
gdk.INPUT_READ = _gobject.IO_IN | _gobject.IO_HUP | _gobject.IO_ERR
gdk.INPUT_WRITE = _gobject.IO_OUT | _gobject.IO_HUP
@@ -123,14 +121,14 @@ del _Deprecated, _DeprecatedConstant, _gobject, _init, _lazyutils
# Do this as late as possible, so programs like pyflakes can check
# everything above
-from gtk._gtkimpl import *
-
-# For testing, so you can just turn of dynamicnamespace in gtk.override
-if hasattr(_gtkimpl, '_get_symbol_names'):
- import gtk
- ns = LazyNamespace(_gtkimpl, locals())
- ns.add_submodule('glade', '_glade')
- ns.add_submodule('_gtk', 'gtk._gtk')
- sys.modules['gtk'] = ns
- sys.modules['gtk.glade'] = LazyModule('_glade', {})
+from gtk._gtk import *
+
+# # For testing, so you can just turn of dynamicnamespace in gtk.override
+# if hasattr(_gtk, '_get_symbol_names'):
+# import gtk
+# ns = LazyNamespace(_gtk, locals())
+# ns.add_submodule('glade', '_glade')
+# ns.add_submodule('_gtk', 'gtk._gtk')
+# sys.modules['gtk'] = ns
+# sys.modules['gtk.glade'] = LazyModule('_glade', {})
diff --git a/gtk/_gtk.py b/gtk/_gtk.py
deleted file mode 100644
index 6d71cd55..00000000
--- a/gtk/_gtk.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygtk - Python bindings for the GTK+ widget set.
-# Copyright (C) 2006 Johan Dahlin
-#
-# gtk/_gtk.py: backwards compatibility code.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-from gtk import _gtkimpl
-import gtk
-
-l = locals()
-for symbol in _gtkimpl._get_symbol_names():
- l[symbol] = _gtkimpl._get_symbol(gtk.__dict__, symbol)
-del l
-
-_PyGtk_API = _gtkimpl._PyGtk_API
diff --git a/gtk/_lazyutils.py b/gtk/_lazyutils.py
index cf40199c..2bc3aa60 100644
--- a/gtk/_lazyutils.py
+++ b/gtk/_lazyutils.py
@@ -33,7 +33,18 @@ class LazyModule(object):
sys.modules[self._modname] = module
return getattr(module, attr)
-_marker = object()
+class _NotLoadedMarker:
+ pass
+_marker = _NotLoadedMarker()
+
+class LazyDict(dict):
+ def __init__(self, module):
+ self._module = module
+ dict.__init__(self)
+
+ def __getitem__(self, name):
+ print name
+ return getattr(self._module, name)
class LazyNamespace(ModuleType):
def __init__(self, module, locals):
@@ -47,7 +58,7 @@ class LazyNamespace(ModuleType):
for symbol in module._get_symbol_names():
lazy_symbols[symbol] = ns[symbol] = _marker
- ns.update(__dict__=ns,
+ ns.update(__dict__=LazyDict(self),
__bases__=(ModuleType,),
add_submodule=self.add_submodule)
diff --git a/gtk/deprecation.py b/gtk/deprecation.py
index ed6ef54a..38918268 100644
--- a/gtk/deprecation.py
+++ b/gtk/deprecation.py
@@ -23,7 +23,7 @@ import os
import sys
import warnings
-from gtk._gtkimpl import DeprecationWarning
+from gtk._gtk import DeprecationWarning
def _is_pydoc():
if sys.argv:
diff --git a/gtk/gtk.override b/gtk/gtk.override
index c400d079..93cced21 100644
--- a/gtk/gtk.override
+++ b/gtk/gtk.override
@@ -119,8 +119,6 @@ include
%%
modulename gtk
%%
-options dynamicnamespace
-%%
import gobject.GObject as PyGObject_Type
import atk.Object as PyAtkObject_Type
import pango.Context as PyPangoContext_Type
diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c
index 4a3a3acb..921a0b81 100644
--- a/gtk/gtkmodule.c
+++ b/gtk/gtkmodule.c
@@ -206,7 +206,7 @@ init_pycairo(void)
}
DL_EXPORT(void)
-init_gtkimpl(void)
+init_gtk(void)
{
PyObject *m, *d, *tuple, *o;
@@ -225,7 +225,7 @@ init_gtkimpl(void)
pygobject_register_sinkfunc(GTK_TYPE_INVISIBLE, sink_gtkinvisible);
pygobject_register_sinkfunc(GTK_TYPE_OBJECT, sink_gtkobject);
- m = Py_InitModule("gtk._gtkimpl", pygtk_functions);
+ m = Py_InitModule("gtk._gtk", pygtk_functions);
d = PyModule_GetDict(m);
/* gtk+ version */
@@ -242,6 +242,7 @@ init_gtkimpl(void)
_pygtk_register_boxed_types(d);
pygtk_register_classes(d);
+ pygtk_add_constants(m, "GTK_");
pygtk_add_extra_constants(m);
pygtk_add_stock_items(d);
diff --git a/gtk/libglademodule.c b/gtk/libglademodule.c
index 07711142..0fc20c7a 100644
--- a/gtk/libglademodule.c
+++ b/gtk/libglademodule.c
@@ -32,11 +32,11 @@ void pylibglade_register_classes(PyObject *d);
extern PyMethodDef pylibglade_functions[];
DL_EXPORT(void)
-init_glade(void)
+initglade(void)
{
PyObject *m, *d;
- m = Py_InitModule("_glade", pylibglade_functions);
+ m = Py_InitModule("gtk.glade", pylibglade_functions);
d = PyModule_GetDict(m);
init_pygobject();