mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
bundle winpaths
This commit is contained in:
parent
d7d036c5a1
commit
8470e072b6
1 changed files with 167 additions and 0 deletions
167
aqt/winpaths.py
Normal file
167
aqt/winpaths.py
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
#coding: UTF8
|
||||||
|
"""
|
||||||
|
System File Locations
|
||||||
|
Retrieves common system path names on Windows XP/Vista
|
||||||
|
Depends only on ctypes, and retrieves path locations in Unicode
|
||||||
|
"""
|
||||||
|
|
||||||
|
import ctypes
|
||||||
|
from ctypes import windll, wintypes
|
||||||
|
|
||||||
|
__license__ = "MIT"
|
||||||
|
__version__ = "0.2"
|
||||||
|
__author__ = "Ryan Ginstrom"
|
||||||
|
__description__ = "Retrieves common Windows system paths as Unicode strings"
|
||||||
|
|
||||||
|
class PathConstants(object):
|
||||||
|
"""
|
||||||
|
Define constants here to avoid dependency on shellcon.
|
||||||
|
Put it in a class to avoid polluting namespace
|
||||||
|
"""
|
||||||
|
|
||||||
|
CSIDL_DESKTOP = 0
|
||||||
|
CSIDL_PROGRAMS = 2
|
||||||
|
CSIDL_PERSONAL = 5
|
||||||
|
CSIDL_FAVORITES = 6
|
||||||
|
CSIDL_STARTUP = 7
|
||||||
|
CSIDL_RECENT = 8
|
||||||
|
CSIDL_SENDTO = 9
|
||||||
|
CSIDL_BITBUCKET = 10
|
||||||
|
CSIDL_STARTMENU = 11
|
||||||
|
CSIDL_MYDOCUMENTS = 12
|
||||||
|
CSIDL_MYMUSIC = 13
|
||||||
|
CSIDL_MYVIDEO = 14
|
||||||
|
CSIDL_DESKTOPDIRECTORY = 16
|
||||||
|
CSIDL_DRIVES = 17
|
||||||
|
CSIDL_NETWORK = 18
|
||||||
|
CSIDL_NETHOOD = 19
|
||||||
|
CSIDL_FONTS = 20
|
||||||
|
CSIDL_TEMPLATES = 21
|
||||||
|
CSIDL_COMMON_STARTMENU = 22
|
||||||
|
CSIDL_COMMON_PROGRAMS = 23
|
||||||
|
CSIDL_COMMON_STARTUP = 24
|
||||||
|
CSIDL_COMMON_DESKTOPDIRECTORY = 25
|
||||||
|
CSIDL_APPDATA = 26
|
||||||
|
CSIDL_PRINTHOOD = 27
|
||||||
|
CSIDL_LOCAL_APPDATA = 28
|
||||||
|
CSIDL_ALTSTARTUP = 29
|
||||||
|
CSIDL_COMMON_ALTSTARTUP = 30
|
||||||
|
CSIDL_COMMON_FAVORITES = 31
|
||||||
|
CSIDL_INTERNET_CACHE = 32
|
||||||
|
CSIDL_COOKIES = 33
|
||||||
|
CSIDL_HISTORY = 34
|
||||||
|
CSIDL_COMMON_APPDATA = 35
|
||||||
|
CSIDL_WINDOWS = 36
|
||||||
|
CSIDL_SYSTEM = 37
|
||||||
|
CSIDL_PROGRAM_FILES = 38
|
||||||
|
CSIDL_MYPICTURES = 39
|
||||||
|
CSIDL_PROFILE = 40
|
||||||
|
CSIDL_SYSTEMX86 = 41
|
||||||
|
CSIDL_PROGRAM_FILESX86 = 42
|
||||||
|
CSIDL_PROGRAM_FILES_COMMON = 43
|
||||||
|
CSIDL_PROGRAM_FILES_COMMONX86 = 44
|
||||||
|
CSIDL_COMMON_TEMPLATES = 45
|
||||||
|
CSIDL_COMMON_DOCUMENTS = 46
|
||||||
|
CSIDL_COMMON_ADMINTOOLS = 47
|
||||||
|
CSIDL_ADMINTOOLS = 48
|
||||||
|
CSIDL_CONNECTIONS = 49
|
||||||
|
CSIDL_COMMON_MUSIC = 53
|
||||||
|
CSIDL_COMMON_PICTURES = 54
|
||||||
|
CSIDL_COMMON_VIDEO = 55
|
||||||
|
CSIDL_RESOURCES = 56
|
||||||
|
CSIDL_RESOURCES_LOCALIZED = 57
|
||||||
|
CSIDL_COMMON_OEM_LINKS = 58
|
||||||
|
CSIDL_CDBURN_AREA = 59
|
||||||
|
# 60 unused
|
||||||
|
CSIDL_COMPUTERSNEARME = 61
|
||||||
|
|
||||||
|
class WinPathsException(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _err_unless_zero(result):
|
||||||
|
if result == 0:
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
raise WinPathsException("Failed to retrieve windows path: %s" % result)
|
||||||
|
|
||||||
|
_SHGetFolderPath = windll.shell32.SHGetFolderPathW
|
||||||
|
_SHGetFolderPath.argtypes = [wintypes.HWND,
|
||||||
|
ctypes.c_int,
|
||||||
|
wintypes.HANDLE,
|
||||||
|
wintypes.DWORD, wintypes.LPCWSTR]
|
||||||
|
_SHGetFolderPath.restype = _err_unless_zero
|
||||||
|
|
||||||
|
def _get_path_buf(csidl):
|
||||||
|
path_buf = wintypes.create_unicode_buffer(wintypes.MAX_PATH)
|
||||||
|
result = _SHGetFolderPath(0, csidl, 0, 0, path_buf)
|
||||||
|
return path_buf.value
|
||||||
|
|
||||||
|
def get_local_appdata():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_LOCAL_APPDATA)
|
||||||
|
|
||||||
|
def get_appdata():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_APPDATA)
|
||||||
|
|
||||||
|
def get_desktop():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_DESKTOP)
|
||||||
|
|
||||||
|
def get_programs():
|
||||||
|
"""current user -> Start menu -> Programs"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_PROGRAMS)
|
||||||
|
|
||||||
|
def get_admin_tools():
|
||||||
|
"""current user -> Start menu -> Programs -> Admin tools"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_ADMINTOOLS)
|
||||||
|
|
||||||
|
def get_common_admin_tools():
|
||||||
|
"""all users -> Start menu -> Programs -> Admin tools"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_COMMON_ADMINTOOLS)
|
||||||
|
|
||||||
|
def get_common_appdata():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_COMMON_APPDATA)
|
||||||
|
|
||||||
|
def get_common_documents():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_COMMON_DOCUMENTS)
|
||||||
|
|
||||||
|
def get_cookies():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_COOKIES)
|
||||||
|
|
||||||
|
def get_history():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_HISTORY)
|
||||||
|
|
||||||
|
def get_internet_cache():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_INTERNET_CACHE)
|
||||||
|
|
||||||
|
def get_my_pictures():
|
||||||
|
"""Get the user's My Pictures folder"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_MYPICTURES)
|
||||||
|
|
||||||
|
def get_personal():
|
||||||
|
"""AKA 'My Documents'"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_PERSONAL)
|
||||||
|
|
||||||
|
get_my_documents = get_personal
|
||||||
|
|
||||||
|
def get_program_files():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_PROGRAM_FILES)
|
||||||
|
|
||||||
|
def get_program_files_common():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_PROGRAM_FILES_COMMON)
|
||||||
|
|
||||||
|
def get_system():
|
||||||
|
"""Use with care and discretion"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_SYSTEM)
|
||||||
|
|
||||||
|
def get_windows():
|
||||||
|
"""Use with care and discretion"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_WINDOWS)
|
||||||
|
|
||||||
|
def get_favorites():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_FAVORITES)
|
||||||
|
|
||||||
|
def get_startup():
|
||||||
|
"""current user -> start menu -> programs -> startup"""
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_STARTUP)
|
||||||
|
|
||||||
|
def get_recent():
|
||||||
|
return _get_path_buf(PathConstants.CSIDL_RECENT)
|
Loading…
Reference in a new issue