Mercurial > getan > getan
annotate getan/config.py @ 458:2707676cfd03
check source code style.
author | Magnus Schieder <mschieder@intevation.de> |
---|---|
date | Fri, 02 Feb 2018 13:21:36 +0100 |
parents | 7fedbb73022e |
children | 59d9c5840273 |
rev | line source |
---|---|
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
3 # |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
4 # (c) 2010 by Ingo Weinzierl <ingo.weinzierl@intevation.de> |
406
84f9b1eeb8b6
CHANGES updated. AUTHOR BER added. zeiterfassung.py removed.
Bernhard Reiter <bernhard@intevation.de>
parents:
405
diff
changeset
|
5 # (c) 2017 by Intevation |
84f9b1eeb8b6
CHANGES updated. AUTHOR BER added. zeiterfassung.py removed.
Bernhard Reiter <bernhard@intevation.de>
parents:
405
diff
changeset
|
6 # Author: Bernhard.Reiter@intevation.de |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
7 # |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
8 # This is Free Software licensed under the terms of GPLv3 or later. |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
9 # For details see LICENSE coming with the source of 'getan'. |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
10 # |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
11 |
36
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
12 import locale |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
13 import logging |
36
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
14 import os |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
15 |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
16 from ConfigParser import SafeConfigParser, NoSectionError, NoOptionError |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
17 |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
18 logger = None |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
19 |
458
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
20 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
406
diff
changeset
|
21 def initialize(level, filename): |
66
13e3ec26dc36
Make the logging configurable for filename and level
Björn Ricks <bjoern.ricks@intevation.de>
parents:
39
diff
changeset
|
22 setup_logging(level, filename) |
36
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
23 setup_locale() |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
24 |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
25 |
66
13e3ec26dc36
Make the logging configurable for filename and level
Björn Ricks <bjoern.ricks@intevation.de>
parents:
39
diff
changeset
|
26 def setup_logging(level, filename): |
39
d4ce02a33acd
Minor fixes (logging, states)
Sascha L. Teichmann <teichmann@intevation.de>
parents:
36
diff
changeset
|
27 global logger |
66
13e3ec26dc36
Make the logging configurable for filename and level
Björn Ricks <bjoern.ricks@intevation.de>
parents:
39
diff
changeset
|
28 logging.basicConfig(level=level, |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
29 format='%(asctime)s %(levelname)s %(message)s', |
66
13e3ec26dc36
Make the logging configurable for filename and level
Björn Ricks <bjoern.ricks@intevation.de>
parents:
39
diff
changeset
|
30 filename=filename, |
23
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
31 filemode='w') |
9c4e8ba3c4fa
Added a new implementation of 'getan' based on urwid, a python console user interface library.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
diff
changeset
|
32 logger = logging.getLogger() |
36
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
33 |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
34 |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
35 def setup_locale(): |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
36 for var in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
37 if var in os.environ: |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
38 break |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
39 else: |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
40 default_locale = locale.getdefaultlocale() |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
41 # The default is normally a tuple of two strings. It may |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
42 # contain None, objects under some circumstances, though. |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
43 if len(default_locale) > 1: |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
44 lang = default_locale[0] |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
45 if isinstance(lang, str): |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
46 os.environ["LANG"] = lang |
e6f81aa329b1
Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents:
23
diff
changeset
|
47 |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
48 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
49 class Config(object): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
50 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
51 def __init__(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
52 self.config = self.load([os.path.expanduser("~/.getan/getanrc"), |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
53 "/etc/getanrc"]) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
54 self.keybinding = Keybinding(self) |
319
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
55 self.theme = Theme(self) |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
56 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
57 def load(self, filenames): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
58 configparser = SafeConfigParser() |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
59 configparser.read(filenames) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
60 return configparser |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
61 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
62 def get(self, section, key): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
63 return self.config.get(section, key) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
64 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
65 def items(self, section): |
164
90abd423fc0c
Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents:
148
diff
changeset
|
66 try: |
90abd423fc0c
Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents:
148
diff
changeset
|
67 return self.config.items(section) |
90abd423fc0c
Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents:
148
diff
changeset
|
68 except NoSectionError: |
90abd423fc0c
Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents:
148
diff
changeset
|
69 return [] |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
70 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
71 def get_keybinding(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
72 return self.keybinding |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
73 |
319
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
74 def get_theme(self): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
75 return self.theme |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
76 |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
77 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
78 class Keybinding(object): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
79 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
80 KEYBINDINGS = "keybindings" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
81 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
82 KEY_SWITCH_TIME_MODE = "switch_time_mode" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
83 KEY_SWITCH_PROJECT_ORDER = "switch_project_order" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
84 KEY_SWITCH_LISTS = "switch_lists" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
85 KEY_ENTER = "enter" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
86 KEY_INSERT = "insert" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
87 KEY_DELETE = "delete" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
88 KEY_ESCAPE = "escape" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
89 KEY_ENTRY_DELETE = "entry_delete" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
90 KEY_ENTRY_UP = "entry_up" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
91 KEY_ENTRY_DOWN = "entry_down" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
92 KEY_ENTRY_MOVE = "entry_move" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
93 KEY_ENTRY_EDIT = "entry_edit" |
400
527168c08ae4
Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
319
diff
changeset
|
94 KEY_ENTRY_ADJUST = "entry_adjust" |
405
150180e972d3
Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
400
diff
changeset
|
95 KEY_ENTRY_LENGTH = "entry_length" |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
96 KEY_ADD_TIME = "add_time" |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
97 KEY_SUBTRACT_TIME = "subtract_time" |
171
a34693c5905f
Use common name scheme for keybinding key names
Björn Ricks <bjoern.ricks@intevation.de>
parents:
164
diff
changeset
|
98 KEY_PROJECT_PAUSE = "project_pause" |
176
6e8b23f1ee94
Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents:
171
diff
changeset
|
99 KEY_PROJECT_EDIT = "project_edit" |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
100 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
101 DEFAULT_KEYBINDINGS = { |
305
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
102 KEY_SWITCH_TIME_MODE: "f1", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
103 KEY_SWITCH_PROJECT_ORDER: "f2", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
104 KEY_SWITCH_LISTS: "tab", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
105 KEY_ENTER: "enter", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
106 KEY_INSERT: "insert", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
107 KEY_DELETE: "delete", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
108 KEY_ESCAPE: "esc", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
109 KEY_ENTRY_UP: "up", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
110 KEY_ENTRY_DOWN: "down", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
111 KEY_ENTRY_DELETE: "d", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
112 KEY_ENTRY_MOVE: "m", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
113 KEY_ENTRY_EDIT: "e", |
400
527168c08ae4
Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
319
diff
changeset
|
114 KEY_ENTRY_ADJUST: "a", |
405
150180e972d3
Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
400
diff
changeset
|
115 KEY_ENTRY_LENGTH: "l", |
305
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
116 KEY_ADD_TIME: "+", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
117 KEY_SUBTRACT_TIME: "-", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
118 KEY_PROJECT_PAUSE: " ", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
119 KEY_PROJECT_EDIT: "backspace", |
fcbdecb0f9e0
Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
176
diff
changeset
|
120 } |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
121 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
122 def __init__(self, config): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
123 logger.debug("Keybindings are: %r" % config.items(self.KEYBINDINGS)) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
124 self.config = config |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
125 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
126 def get_binding(self, key): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
127 value = None |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
128 try: |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
129 value = self.config.get(self.KEYBINDINGS, key) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
130 except (NoSectionError, NoOptionError): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
131 pass |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
132 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
133 if not value: |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
134 value = self.DEFAULT_KEYBINDINGS[key] |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
135 return value |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
136 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
137 def get_switch_time_mode(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
138 return self.get_binding(self.KEY_SWITCH_TIME_MODE) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
139 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
140 def get_switch_project_order(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
141 return self.get_binding(self.KEY_SWITCH_PROJECT_ORDER) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
142 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
143 def get_switch_lists(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
144 return self.get_binding(self.KEY_SWITCH_LISTS) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
145 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
146 def get_enter(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
147 return self.get_binding(self.KEY_ENTER) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
148 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
149 def get_insert(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
150 return self.get_binding(self.KEY_INSERT) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
151 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
152 def get_delete(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
153 return self.get_binding(self.KEY_DELETE) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
154 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
155 def get_escape(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
156 return self.get_binding(self.KEY_ESCAPE) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
157 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
158 def get_entry_delete(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
159 return self.get_binding(self.KEY_ENTRY_DELETE) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
160 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
161 def get_entry_move(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
162 return self.get_binding(self.KEY_ENTRY_MOVE) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
163 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
164 def get_entry_edit(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
165 return self.get_binding(self.KEY_ENTRY_EDIT) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
166 |
400
527168c08ae4
Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
319
diff
changeset
|
167 def get_entry_adjust(self): |
527168c08ae4
Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
319
diff
changeset
|
168 return self.get_binding(self.KEY_ENTRY_ADJUST) |
527168c08ae4
Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
319
diff
changeset
|
169 |
405
150180e972d3
Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
400
diff
changeset
|
170 def get_entry_length(self): |
150180e972d3
Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
400
diff
changeset
|
171 return self.get_binding(self.KEY_ENTRY_LENGTH) |
150180e972d3
Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents:
400
diff
changeset
|
172 |
148
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
173 def get_entry_up(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
174 return self.get_binding(self.KEY_ENTRY_UP) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
175 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
176 def get_entry_down(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
177 return self.get_binding(self.KEY_ENTRY_DOWN) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
178 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
179 def get_add_time(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
180 return self.get_binding(self.KEY_ADD_TIME) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
181 |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
182 def get_subtract_time(self): |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
183 return self.get_binding(self.KEY_SUBTRACT_TIME) |
f0a2beb17f9b
Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents:
66
diff
changeset
|
184 |
171
a34693c5905f
Use common name scheme for keybinding key names
Björn Ricks <bjoern.ricks@intevation.de>
parents:
164
diff
changeset
|
185 def get_project_pause(self): |
a34693c5905f
Use common name scheme for keybinding key names
Björn Ricks <bjoern.ricks@intevation.de>
parents:
164
diff
changeset
|
186 return self.get_binding(self.KEY_PROJECT_PAUSE) |
176
6e8b23f1ee94
Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents:
171
diff
changeset
|
187 |
6e8b23f1ee94
Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents:
171
diff
changeset
|
188 def get_project_edit(self): |
6e8b23f1ee94
Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents:
171
diff
changeset
|
189 return self.get_binding(self.KEY_PROJECT_EDIT) |
319
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
190 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
191 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
192 class Theme(object): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
193 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
194 THEME = "theme" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
195 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
196 # TODO remove unused names |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
197 KEY_HEADER = "header" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
198 KEY_BODY = "body" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
199 KEY_FOOTER = "footer" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
200 KEY_PROJECT_FOOTER = "project_footer" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
201 KEY_ENTRY_FOOTER = "entry_footer" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
202 KEY_PROJECT_KEY = "project_key" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
203 KEY_ENTRY = "entry" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
204 KEY_FOCUSED_ENTRY = "focus_entry" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
205 KEY_SELECTED_ENTRY = "selected_entry" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
206 KEY_SELECTED_FOCUS_ENTRY = "selected_focus_entry" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
207 KEY_INFO = "info" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
208 KEY_QUESTION = "question" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
209 KEY_RUNNING = "running" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
210 KEY_PAUSED_RUNNING = "paused_running" |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
211 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
212 DEFAULT_THEME = { |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
213 KEY_HEADER: "white, dark blue", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
214 KEY_FOOTER: "yellow,dark blue", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
215 KEY_ENTRY_FOOTER: "white, dark blue", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
216 KEY_PROJECT_FOOTER: "white, dark blue", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
217 KEY_PROJECT_KEY: "black, dark cyan", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
218 KEY_BODY: "white, black", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
219 KEY_ENTRY: "white, dark blue", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
220 KEY_FOCUSED_ENTRY: "white, dark cyan", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
221 KEY_SELECTED_ENTRY: "yellow, light cyan", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
222 KEY_SELECTED_FOCUS_ENTRY: "yellow, dark cyan", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
223 KEY_INFO: "white, dark red", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
224 KEY_QUESTION: "white, dark red", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
225 KEY_RUNNING: "yellow, dark green", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
226 KEY_PAUSED_RUNNING: "white, dark red", |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
227 } |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
228 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
229 def __init__(self, config): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
230 self.config = config |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
231 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
232 def get_colors(self, key): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
233 value = None |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
234 try: |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
235 value = self.config.get(self.THEME, key) |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
236 except (NoSectionError, NoOptionError): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
237 pass |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
238 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
239 if not value: |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
240 value = self.DEFAULT_THEME[key] |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
241 return [val.strip() for val in value.split(",")] |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
242 |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
243 def get_palette(self): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
244 palette = [] |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
245 for key in self.DEFAULT_THEME.keys(): |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
246 colors = self.get_colors(key) |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
247 line = [key] |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
248 line.extend(colors) |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
249 palette.append(line) |
ec84b522c94b
Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents:
305
diff
changeset
|
250 return palette |