]> git.phdru.name Git - m_librarian.git/blob - m_librarian/wx/session_config.py
Feat(wx): Save window size in session config
[m_librarian.git] / m_librarian / wx / session_config.py
1 #! /usr/bin/env python
2
3 from __future__ import print_function
4 import os
5
6 from ..config import RawConfigParser, ConfigWrapper, find_config_file
7
8
9 __all__ = ['get_session_config']
10
11
12 def _find_config_dirs_posix():
13     config_dirs = []
14     if 'XDG_CACHE_HOME' in os.environ:
15         config_dirs.append(os.environ['XDG_CACHE_HOME'])
16     home_cache = os.path.expanduser('~/.cache')
17     if home_cache not in config_dirs:
18         config_dirs.append(home_cache)
19     return config_dirs
20
21
22 def _find_config_dirs():
23     if os.name == 'posix':
24         return _find_config_dirs_posix()
25     return None
26
27
28 _ml_session_config = None
29
30
31 class SessionConfigWrapper(ConfigWrapper):
32     def __init__(self, config, config_path):
33         ConfigWrapper.__init__(self, config)
34         self.config_path = config_path
35
36     def set(self, section, option, value):
37         if not self.config.has_section(section):
38             self.config.add_section(section)
39         super(SessionConfigWrapper, self).set(section, option, value)
40
41     def save(self):
42         if self.config_path is None:
43             config_dirs = _find_config_dirs()
44             self.config_path = \
45                 os.path.join(config_dirs[0], 'm_librarian_session.conf')
46         with open(self.config_path, 'wt') as fp:
47             self.config.write(fp)
48
49
50 def get_session_config(config_path=None):
51     global _ml_session_config
52     if _ml_session_config is None:
53         _ml_session_config = RawConfigParser()
54         if config_path is None:
55             config_dirs = _find_config_dirs()
56             config_path = \
57                 find_config_file(config_dirs, 'm_librarian_session.conf')
58         if config_path is not None:
59             _ml_session_config.read(config_path)
60         _ml_session_config = \
61             SessionConfigWrapper(_ml_session_config, config_path)
62     return _ml_session_config
63
64
65 def _test():
66     config_dirs = _find_config_dirs()
67     print("Config dirs:", config_dirs)
68     print("Config file:",
69           find_config_file(config_dirs, 'm_librarian_session.conf'))
70
71
72 if __name__ == '__main__':
73     _test()