annotate frontends/src/primitivus/config.py @ 2307:8fa7edd0da24

plugin Pubsub Hook: first draft: This new plugin allow to attach an external action to a Pubsub event (i.e. notification). Hook can be persitent accross restarts, or temporary (will be deleted on profile disconnection). Only Python files are handled for now. In the future, it may make sense to move hooks in a generic plugin which could be used by ad-hoc commands, messages, pubsub, etc.
author Goffi <goffi@goffi.org>
date Wed, 05 Jul 2017 15:05:47 +0200
parents 2daf7b4c6756
children 8b37a62336c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1934
2daf7b4c6756 use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
1 #!/usr/bin/env python2
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Primitivus: a SAT frontend
1766
d17772b0fe22 copyright update
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """This module manage configuration specific to Primitivus"""
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
21
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat_frontends.primitivus.constants import Const as C
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat_frontends.primitivus.keys import action_key_map
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import ConfigParser
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
26
1165
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
27 def applyConfig(host):
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 """Parse configuration and apply found change
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
29
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 raise: can raise various Exceptions if configuration is not good
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 """
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 config = ConfigParser.SafeConfigParser()
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 config.read(C.CONFIG_FILES)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 try:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 options = config.items(C.CONFIG_SECTION)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 except ConfigParser.NoSectionError:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 options = []
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 shortcuts = {}
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 for name, value in options:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 if name.startswith(C.CONFIG_OPT_KEY_PREFIX.lower()):
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 action = name[len(C.CONFIG_OPT_KEY_PREFIX):].upper()
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 shortcut = value
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 if not action or not shortcut:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 raise ValueError("Bad option: {} = {}".format(name, value))
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 shortcuts[action] = shortcut
1165
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
46 if name == "disable_mouse":
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
47 host.loop.screen.set_mouse_tracking(False)
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 action_key_map.replace(shortcuts)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 action_key_map.check_namespaces()