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