fix up a pylint error and migrate some pure functions from terminal.py

This commit is contained in:
Chris Jones 2009-09-06 22:54:52 +01:00
parent 690bb61788
commit 0912fb8aae
1 changed files with 50 additions and 2 deletions

View File

@ -18,6 +18,8 @@
import sys import sys
import gtk import gtk
import os
import pwd
# set this to true to enable debugging output # set this to true to enable debugging output
DEBUG = True DEBUG = True
@ -39,11 +41,57 @@ def gerr(message = None):
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message) gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message)
dialog.run() dialog.run()
def has_ancestor(widget, type): def has_ancestor(widget, wtype):
"""Walk up the family tree of widget to see if any ancestors are of type""" """Walk up the family tree of widget to see if any ancestors are of type"""
while widget: while widget:
widget = widget.get_parent() widget = widget.get_parent()
if isinstance(widget, type): if isinstance(widget, wtype):
return(True) return(True)
return(False) return(False)
def path_lookup(command):
'''Find a command in our path'''
if os.path.isabs(command):
if os.path.isfile(command):
return(command)
else:
return(None)
elif command[:2] == './' and os.path.isfile(command):
dbg('path_lookup: Relative filename %s found in cwd' % command)
return(command)
try:
paths = os.environ['PATH'].split(':')
if len(paths[0]) == 0:
raise(ValueError)
except (ValueError, NameError):
dbg('path_lookup: PATH not set in environment, using fallbacks')
paths = ['/usr/local/bin', '/usr/bin', '/bin']
dbg('path_lookup: Using %d paths: %s', (len(paths), paths))
for path in paths:
target = os.path.join(path, command)
if os.path.isfile(target):
dbg('path_lookup: found %s' % target)
return(target)
dbg('path_lookup: Unable to locate %s' % command)
def shell_lookup():
"""Find an appropriate shell for the user"""
shells = [os.getenv('SHELL'), pwd.getpwuid(os.getuid())[6], 'bash',
'zsh', 'tcsh', 'ksh', 'csh', 'sh']
for shell in shells:
if shell is None:
continue
elif os.path.isfile(shell):
return(shell)
else:
rshell = path_lookup(shell)
if rshell is not None:
dbg('shell_lookup: Found %s at %s' % (shell, rshell))
return(rshell)
dbg('shell_lookup: Unable to locate a shell')