updated BaseUI
[meabook] / config.py
1 """
2 Configuration module
3 """
4
5 import os
6 from ConfigParser import ConfigParser
7
8 CONFIG_NAME = 'config.ini'
9
10 class MeabookConfig:
11     def __init__(self, basedir, database):
12         self.database = database
13         self.cp = ConfigParser()
14         self._path = os.path.join(basedir, CONFIG_NAME)
15         if not os.path.exists(self._path):
16             self.new()
17         self.cp.readfp(open(self._path))
18
19     def __del__(self):
20         self.save()
21
22     def save(self):
23         """Save configuration file content."""
24
25         self.cp.write(open(self._path, 'w'))
26
27     def new(self):
28         """Creates default config file."""
29
30         self.cp.add_section('fields')
31         self.cp.set('fields', 'show-fields', ','.join( \
32             self.database.get_fields()))
33         self.cp.set('fields', 'fields-order', ','.join( \
34             self.database.get_fields()))
35         self.cp.add_section('general')
36         self.cp.set('general', 'last-active-level', 1)
37         self.save()
38
39     def set_fields(self, fields):
40         """Sets fields, that will be shown for user."""
41
42         self.cp.set('fields', 'show-fields', ','.join(fields))
43
44     def get_fields(self):
45         """Gets fields, that will be shown for user."""
46
47         return self.cp.get('fields', 'show-fields').split(',')
48
49
50     def set_order(self, fields):
51         """Sets fields order."""
52
53         self.cp.set('fields', 'fields-order', ','.join(fields))
54
55     def get_order(self):
56         """Gets fields order."""
57
58         return self.cp.get('fields', 'fields-order').split(',')
59
60     def get_last_active_level(self):
61         """Gets last active level before exit."""
62
63         return int(self.cp.get('general', 'last-active-level'))
64
65     def set_last_active_level(self, level):
66         """Sets last active level before exit."""
67
68         self.cp.set('general', 'last-active-level', level)