annotate getan/config.py @ 483:d47e32e6b7e7

Logging can be activated and deactivated.
author Magnus Schieder <mschieder@intevation.de>
date Thu, 28 Jun 2018 12:01:16 +0200
parents 999a438474f2
children
rev   line source
482
999a438474f2 Changed Hashbangs to python3.
Magnus Schieder <mschieder@intevation.de>
parents: 469
diff changeset
1 #!/usr/bin/env python3
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
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
467
59d9c5840273 Porting Python 2 to Python 3.
Magnus Schieder <mschieder@intevation.de>
parents: 458
diff changeset
16 from configparser import SafeConfigParser, NoSectionError, NoOptionError
148
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
483
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
28 if level is logging.NOTSET:
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
29 logging.NullHandler()
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
30 else:
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
31 logging.basicConfig(level=level,
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
32 format='%(asctime)s %(levelname)s %(message)s',
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
33 filename=filename,
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
34 filemode='w')
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
35
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
36 logger = logging.getLogger()
36
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
37
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
38
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
39 def setup_locale():
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
40 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
41 if var in os.environ:
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
42 break
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
43 else:
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
44 default_locale = locale.getdefaultlocale()
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
45 # 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
46 # 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
47 if len(default_locale) > 1:
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
48 lang = default_locale[0]
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
49 if isinstance(lang, str):
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
50 os.environ["LANG"] = lang
e6f81aa329b1 Introduced i18n support; german and english translation available.
Ingo Weinzierl <ingo_weinzierl@web.de>
parents: 23
diff changeset
51
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
52
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
53 class Config(object):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
54
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
55 def __init__(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
56 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
57 "/etc/getanrc"])
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
58 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
59 self.theme = Theme(self)
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
60
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
61 def load(self, filenames):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
62 configparser = SafeConfigParser()
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
63 configparser.read(filenames)
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
64 return configparser
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
65
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
66 def get(self, section, key):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
67 return self.config.get(section, key)
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
68
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
69 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
70 try:
90abd423fc0c Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents: 148
diff changeset
71 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
72 except NoSectionError:
90abd423fc0c Fix: Return empty list if section is not found
Björn Ricks <bjoern.ricks@intevation.de>
parents: 148
diff changeset
73 return []
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
74
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
75 def get_keybinding(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
76 return self.keybinding
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
77
319
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
78 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
79 return self.theme
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
80
148
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 class Keybinding(object):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
83
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
84 KEYBINDINGS = "keybindings"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
85
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
86 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
87 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
88 KEY_SWITCH_LISTS = "switch_lists"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
89 KEY_ENTER = "enter"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
90 KEY_INSERT = "insert"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
91 KEY_DELETE = "delete"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
92 KEY_ESCAPE = "escape"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
93 KEY_ENTRY_DELETE = "entry_delete"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
94 KEY_ENTRY_UP = "entry_up"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
95 KEY_ENTRY_DOWN = "entry_down"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
96 KEY_ENTRY_MOVE = "entry_move"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
97 KEY_ENTRY_EDIT = "entry_edit"
400
527168c08ae4 Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 319
diff changeset
98 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
99 KEY_ENTRY_LENGTH = "entry_length"
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
100 KEY_ADD_TIME = "add_time"
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
101 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
102 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
103 KEY_PROJECT_EDIT = "project_edit"
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
104
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
105 DEFAULT_KEYBINDINGS = {
305
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
106 KEY_SWITCH_TIME_MODE: "f1",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
107 KEY_SWITCH_PROJECT_ORDER: "f2",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
108 KEY_SWITCH_LISTS: "tab",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
109 KEY_ENTER: "enter",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
110 KEY_INSERT: "insert",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
111 KEY_DELETE: "delete",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
112 KEY_ESCAPE: "esc",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
113 KEY_ENTRY_UP: "up",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
114 KEY_ENTRY_DOWN: "down",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
115 KEY_ENTRY_DELETE: "d",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
116 KEY_ENTRY_MOVE: "m",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
117 KEY_ENTRY_EDIT: "e",
400
527168c08ae4 Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 319
diff changeset
118 KEY_ENTRY_ADJUST: "a",
405
150180e972d3 Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 400
diff changeset
119 KEY_ENTRY_LENGTH: "l",
305
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
120 KEY_ADD_TIME: "+",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
121 KEY_SUBTRACT_TIME: "-",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
122 KEY_PROJECT_PAUSE: " ",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
123 KEY_PROJECT_EDIT: "backspace",
fcbdecb0f9e0 Update codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 176
diff changeset
124 }
148
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 __init__(self, config):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
127 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
128 self.config = config
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
129
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
130 def get_binding(self, key):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
131 value = None
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
132 try:
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
133 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
134 except (NoSectionError, NoOptionError):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
135 pass
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 if not value:
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
138 value = self.DEFAULT_KEYBINDINGS[key]
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
139 return value
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
140
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
141 def get_switch_time_mode(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
142 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
143
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
144 def get_switch_project_order(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
145 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
146
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
147 def get_switch_lists(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
148 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
149
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
150 def get_enter(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
151 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
152
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
153 def get_insert(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
154 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
155
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
156 def get_delete(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
157 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
158
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
159 def get_escape(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
160 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
161
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
162 def get_entry_delete(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
163 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
164
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
165 def get_entry_move(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
166 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
167
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
168 def get_entry_edit(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
169 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
170
400
527168c08ae4 Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 319
diff changeset
171 def get_entry_adjust(self):
527168c08ae4 Added possibility to move starting datetime of entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 319
diff changeset
172 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
173
405
150180e972d3 Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 400
diff changeset
174 def get_entry_length(self):
150180e972d3 Adds ability to adjust the length of (saved) entries.
Bernhard Reiter <bernhard@intevation.de>
parents: 400
diff changeset
175 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
176
148
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
177 def get_entry_up(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
178 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
179
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
180 def get_entry_down(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
181 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
182
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
183 def get_add_time(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
184 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
185
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
186 def get_subtract_time(self):
f0a2beb17f9b Add config classes to provide keybindings
Björn Ricks <bjoern.ricks@intevation.de>
parents: 66
diff changeset
187 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
188
171
a34693c5905f Use common name scheme for keybinding key names
Björn Ricks <bjoern.ricks@intevation.de>
parents: 164
diff changeset
189 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
190 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
191
6e8b23f1ee94 Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents: 171
diff changeset
192 def get_project_edit(self):
6e8b23f1ee94 Add new key for editing a project
Björn Ricks <bjoern.ricks@intevation.de>
parents: 171
diff changeset
193 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
194
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 class Theme(object):
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
197
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
198 THEME = "theme"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
199
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
200 # 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
201 KEY_HEADER = "header"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
202 KEY_BODY = "body"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
203 KEY_FOOTER = "footer"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
204 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
205 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
206 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
207 KEY_ENTRY = "entry"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
208 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
209 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
210 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
211 KEY_INFO = "info"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
212 KEY_QUESTION = "question"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
213 KEY_RUNNING = "running"
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
214 KEY_PAUSED_RUNNING = "paused_running"
469
050ffdec60d9 Fix the orientation problem
Magnus Schieder <mschieder@intevation.de>
parents: 467
diff changeset
215 KEY_OPEN_PROJECT = "open_project"
319
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
216
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
217 DEFAULT_THEME = {
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
218 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
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 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
228 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
229 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
230 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
231 KEY_PAUSED_RUNNING: "white, dark red",
469
050ffdec60d9 Fix the orientation problem
Magnus Schieder <mschieder@intevation.de>
parents: 467
diff changeset
232 KEY_OPEN_PROJECT: "white, light blue"
319
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
233 }
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
234
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
235 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
236 self.config = config
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
237
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
238 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
239 value = None
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
240 try:
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
241 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
242 except (NoSectionError, NoOptionError):
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
243 pass
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
244
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
245 if not value:
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
246 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
247 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
248
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
249 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
250 palette = []
467
59d9c5840273 Porting Python 2 to Python 3.
Magnus Schieder <mschieder@intevation.de>
parents: 458
diff changeset
251 for key in list(self.DEFAULT_THEME.keys()):
319
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
252 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
253 line = [key]
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
254 line.extend(colors)
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
255 palette.append(line)
ec84b522c94b Implement loading a palette theme from the getan config
Björn Ricks <bjoern.ricks@intevation.de>
parents: 305
diff changeset
256 return palette
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)