summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2002-08-18 07:01:39 +0000
committerJames Henstridge <jamesh@src.gnome.org>2002-08-18 07:01:39 +0000
commit2582e5f02b58a806d405e8cf299c8b775b19e9d4 (patch)
tree9b24a3b4da8d2afe0e72236f04fc1d722078185a
parent444b7817f9bf54c7848f151d55f2375465f44166 (diff)
downloadpygobject-2582e5f02b58a806d405e8cf299c8b775b19e9d4.tar.gz
pygobject-2582e5f02b58a806d405e8cf299c8b775b19e9d4.tar.xz
pygobject-2582e5f02b58a806d405e8cf299c8b775b19e9d4.zip
same here.
2002-08-18 James Henstridge <james@daa.com.au> * gtk/Makefile.am: same here. * Makefile.am: install in a gtk-2.0 subdir of site-packages. * pygtk.py: new file to help with pygtk version parallel install.
-rw-r--r--pygtk.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/pygtk.py b/pygtk.py
new file mode 100644
index 0000000..44304f5
--- /dev/null
+++ b/pygtk.py
@@ -0,0 +1,57 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygtk - Python bindings for the GTK+ widget set.
+# Copyright (C) 1998-2002 James Henstridge
+#
+# pygtk.py: pygtk version selection code.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+
+import sys, os, re
+
+__all__ = ['require']
+
+_pygtk_dir_pat = re.compile(r'^gtk-([\d]+[\d\.]+)$')
+
+def _get_available_versions():
+ versions = {}
+ for dir in sys.path:
+ if not dir: dir = os.getcwd()
+ if _pygtk_dir_pat.match(os.path.basename(dir)):
+ continue # if the dir is a pygtk dir, skip it
+ for filename in os.listdir(dir):
+ pathname = os.path.join(dir, filename)
+ if not os.path.isdir(pathname):
+ continue # skip non directories
+ match = _pygtk_dir_pat.match(filename)
+ if match and not versions.has_key(match.group(1)):
+ versions[match.group(1)] = pathname
+ return versions
+
+def require(version):
+ assert not sys.modules.has_key('gtk'), \
+ "pygtk.require() must be called before importing gtk"
+
+ versions = _get_available_versions()
+ assert versions.has_key(version), \
+ "required version '%s' not found on system" % version
+
+ # remove any pygtk dirs first ...
+ for dir in sys.path:
+ if _pygtk_dir_pat.match(os.path.basename(dir)):
+ sys.path.remove(dir)
+
+ # prepend the pygtk path ...
+ sys.path.insert(0, versions[version])