You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.1 KiB
64 lines
2.1 KiB
import sys, os, string
|
|
|
|
def vtkLoadPythonTkWidgets(interp):
|
|
"""vtkLoadPythonTkWidgets(interp) -- load vtk-tk widget extensions
|
|
|
|
This is a mess of mixed python and tcl code that searches for the
|
|
shared object file that contains the python-vtk-tk widgets. Both
|
|
the python path and the tcl path are searched.
|
|
"""
|
|
name = 'vtkRenderingPythonTkWidgets'
|
|
pkgname = string.capitalize(string.lower(name))
|
|
|
|
# find out if the file is already loaded
|
|
loaded = interp.call('info', 'loaded')
|
|
if string.find(loaded, pkgname) >= 0:
|
|
return
|
|
|
|
# create the platform-dependent file name
|
|
prefix = ''
|
|
if os.name == 'posix':
|
|
prefix = 'lib'
|
|
extension = interp.call('info', 'sharedlibextension')
|
|
filename = prefix+name+extension
|
|
|
|
# create an extensive list of paths to search
|
|
pathlist = sys.path
|
|
# add tcl paths, ensure that {} is handled properly
|
|
try:
|
|
auto_paths = string.split(interp.getvar('auto_path'))
|
|
except AttributeError:
|
|
auto_paths = interp.getvar('auto_path')
|
|
for path in auto_paths:
|
|
prev = str(pathlist[-1])
|
|
try:
|
|
# try block needed when one uses Gordon McMillan's Python
|
|
# Installer.
|
|
if len(prev) > 0 and prev[0] == '{' and prev[-1] != '}':
|
|
pathlist[-1] = prev+' '+path
|
|
else:
|
|
pathlist.append(path)
|
|
except AttributeError:
|
|
pass
|
|
# a common place for these sorts of things
|
|
if os.name == 'posix':
|
|
pathlist.append('/usr/local/lib')
|
|
|
|
# attempt to load
|
|
for path in pathlist:
|
|
try:
|
|
# try block needed when one uses Gordon McMillan's Python
|
|
# Installer.
|
|
if len(path) > 0 and path[0] == '{' and path[-1] == '}':
|
|
path = path[1:-1]
|
|
fullpath = os.path.join(path, filename)
|
|
except AttributeError:
|
|
pass
|
|
if ' ' in fullpath:
|
|
fullpath = '{'+fullpath+'}'
|
|
if interp.eval('catch {load '+fullpath+' '+pkgname+'}') == '0':
|
|
return
|
|
|
|
# re-generate the error
|
|
interp.call('load', filename)
|
|
|
|
|