"""
paths.py
Copyright (C) 2009 Steve Borho <steve@borho.org>
This software may be used and distributed according to the terms
of the GNU General Public License, incorporated herein by reference.
"""
import os
def find_root(path):
p = os.path.isdir(path) and path or os.path.dirname(path)
while not os.path.isdir(os.path.join(p, ".hg")):
oldp = p
p = os.path.dirname(p)
if p == oldp:
return None
if not os.access(p, os.R_OK):
return None
return p
def get_tortoise_icon(icon):
'''Find a tortoise icon, apply to PyGtk window'''
path = os.path.join(get_prog_root(), 'icons', icon)
if os.path.isfile(path):
return path
else:
print 'icon not found', icon
return None
if os.name == 'nt':
import _winreg
import win32net
USE_OK = 0 # network drive status
def find_in_path(pgmname):
""" return first executable found in search path """
ospath = os.environ['PATH'].split(os.pathsep)
pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD')
pathext = pathext.lower().split(os.pathsep)
for path in ospath:
ppath = os.path.join(path, pgmname)
for ext in pathext:
if os.path.exists(ppath + ext):
return ppath + ext
return None
def get_prog_root():
try:
return _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE,
r"Software\TortoiseHg")
except:
return os.path.dirname(os.path.dirname(__file__))
def netdrive_status(drive):
"""
return True if a network drive is accessible (connected, ...),
or None if <drive> is not a network drive
"""
if hasattr(os.path, 'splitunc'):
unc, rest = os.path.splitunc(drive)
if unc: # All UNC paths (\\host\mount) are considered nonlocal
return True
letter = os.path.splitdrive(drive)[0]
_drives, total, _ = win32net.NetUseEnum(None, 1, 0)
for drv in _drives:
if drv['local'] == letter:
info = win32net.NetUseGetInfo(None, letter, 1)
return info['status'] == USE_OK
return False
else: # Not Windows
def find_in_path(pgmname):
""" return first executable found in search path """
ospath = os.environ['PATH'].split(os.pathsep)
for path in ospath:
ppath = os.path.join(path, pgmname)
if os.access(ppath, os.X_OK):
return ppath
return None
def get_prog_root():
path = os.path.dirname(os.path.dirname(__file__))
return os.path.dirname(path)
def netdrive_status(drive):
"""
return True if a network drive is accessible (connected, ...),
or None if <drive> is not a network drive
"""
return None
|
Loading...