Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Steve Borho,                      
Steve Borho,                          
Steve Borho,                    
Steve Borho,                              
Steve Borho,                    
Steve Borho,                                                                              
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# paths.py - TortoiseHg path utilities # # Copyright 2009 Steve Borho <steve@borho.org> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. try: from config import icon_path, bin_path, license_path, locale_path except ImportError: icon_path, bin_path, license_path, locale_path = None, None, None, None
import os, sys
def find_root(path=None): p = path or os.getcwd() 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 tortoisehg icon"
icopath = os.path.join(get_icon_path(), icon)
if os.path.isfile(icopath): return icopath else: print 'icon not found', icon return None
def get_icon_path(): global icon_path return icon_path or os.path.join(get_prog_root(), 'icons')
def get_license_path(): global license_path return license_path or os.path.join(get_prog_root(), 'COPYING.txt') def get_locale_path(): global locale_path return locale_path or os.path.join(get_prog_root(), 'locale') if os.name == 'nt': import _winreg import win32net
import win32api import win32file
def find_in_path(pgmname): "return first executable found in search path" global bin_path ospath = os.environ['PATH'].split(os.pathsep) ospath.insert(0, bin_path or get_prog_root()) 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():
if getattr(sys, 'frozen', False): try: return _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, r"Software\TortoiseHg") except: pass return os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
def is_on_fixed_drive(path): if hasattr(os.path, 'splitunc'):
unc, rest = os.path.splitunc(path)
if unc: # All UNC paths (\\host\mount) are considered not-fixed return False drive, remain = os.path.splitdrive(path) if drive: return win32file.GetDriveType(drive) == win32file.DRIVE_FIXED else: return False USE_OK = 0 # network drive status
def netdrive_status(drive): """ return True if a network drive is accessible (connected, ...), or False 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 """ global bin_path ospath = os.environ['PATH'].split(os.pathsep) ospath.insert(0, bin_path or get_prog_root()) 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(os.path.dirname(__file__))) return path def netdrive_status(drive): """ return True if a network drive is accessible (connected, ...), or False if <drive> is not a network drive """ return False
def is_on_fixed_drive(path): return True