1import os 2import sys 3 4import fsboot 5from fsbc.path import unicode_path 6from fsbc.util import memoize 7 8CSIDL_DESKTOP = 0 9CSIDL_PERSONAL = 5 10CSIDL_APPDATA = 26 11CSIDL_MYPICTURES = 39 12CSIDL_PROFILE = 40 13CSIDL_COMMON_DOCUMENTS = 46 14 15 16@memoize 17def get_user_name(): 18 return fsboot.user_name() 19 20 21@memoize 22def xdg_user_dir(name): 23 return fsboot.xdg_user_dir(name) 24 25 26@memoize 27def get_desktop_dir(allow_create=True): 28 if sys.platform == "win32": 29 path = fsboot.csidl_dir(fsboot.CSIDL_DESKTOP) 30 else: 31 path = xdg_user_dir("DESKTOP") 32 if not path: 33 path = os.path.join(get_home_dir(), "Desktop") 34 path = unicode_path(path) 35 if allow_create and not os.path.isdir(path): 36 os.makedirs(path) 37 return path 38 39 40def get_documents_dir(create=False): 41 return fsboot.documents_dir(create=create) 42 43 44@memoize 45def get_common_documents_dir(): 46 if sys.platform == "win32": 47 path = fsboot.csidl_dir(CSIDL_COMMON_DOCUMENTS) 48 else: 49 raise NotImplementedError("Only for windows") 50 path = unicode_path(path) 51 return path 52 53 54@memoize 55def get_pictures_dir(allow_create=True): 56 if sys.platform == "win32": 57 path = fsboot.csidl_dir(CSIDL_MYPICTURES) 58 else: 59 path = xdg_user_dir("PICTURES") 60 if not path: 61 path = os.path.join(get_home_dir(), "Pictures") 62 path = unicode_path(path) 63 if allow_create and not os.path.isdir(path): 64 os.makedirs(path) 65 return path 66 67 68def get_home_dir(): 69 return fsboot.home_dir() 70 71 72def get_data_dir(create=True): 73 return fsboot.common_data_dir(create=create) 74