Package Gnumed :: Package timelinelib :: Package wxgui :: Package dialogs :: Package shortcutseditor :: Module controller
[frames] | no frames]

Source Code for Module Gnumed.timelinelib.wxgui.dialogs.shortcutseditor.controller

 1  # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018  Rickard Lindberg, Roger Lindberg 
 2  # 
 3  # This file is part of Timeline. 
 4  # 
 5  # Timeline is free software: you can redistribute it and/or modify 
 6  # it under the terms of the GNU General Public License as published by 
 7  # the Free Software Foundation, either version 3 of the License, or 
 8  # (at your option) any later version. 
 9  # 
10  # Timeline is distributed in the hope that it will be useful, 
11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
13  # GNU General Public License for more details. 
14  # 
15  # You should have received a copy of the GNU General Public License 
16  # along with Timeline.  If not, see <http://www.gnu.org/licenses/>. 
17   
18   
19  from timelinelib.wxgui.framework import Controller 
20   
21   
22 -class MissingInput(Exception):
23 pass
24 25
26 -class DuplicateShortcut(Exception):
27 pass
28 29
30 -class ShortcutsEditorDialogController(Controller):
31
32 - def on_init(self, shortcut_config):
33 self.shortcut_config = shortcut_config 34 if shortcut_config: 35 functions = self.shortcut_config.get_functions() 36 modifier, key = self.shortcut_config.get_modifier_and_key(functions[0]) 37 self.view.SetFunctions(functions) 38 self.view.SetModifiers(self.shortcut_config.get_modifiers(), modifier) 39 self.view.SetShortcutKeys(self.shortcut_config.get_shortcuts(), key)
40
41 - def on_apply_clicked(self, evt):
42 self._set_new_shortcut_for_selected_function()
43
44 - def on_selection_changed(self, evt):
45 self._select_modifier_and_key_for_selected_function()
46
48 function = self.view.GetFunction() 49 modifier, key = self.shortcut_config.get_modifier_and_key(function) 50 self.view.SetModifier(modifier) 51 self.view.SetShortcutKey(key)
52
54 try: 55 self._validate_input() 56 self._validate_shortcut() 57 function = self.view.GetFunction() 58 shortcut = self._get_shortcut() 59 self.shortcut_config.edit(function, shortcut) 60 self.view.DisplayAckPopupWindow(_("Shortcut is saved")) 61 except MissingInput as ex: 62 self.view.DisplayWarningMessage(str(ex)) 63 except DuplicateShortcut as ex: 64 self.view.DisplayWarningMessage(str(ex))
65
66 - def _validate_input(self):
67 shortcut_key = self.view.GetShortcutKey() 68 modifier = self.view.GetModifier() 69 if not self.shortcut_config.is_valid(modifier, shortcut_key): 70 raise MissingInput(_("Both Modifier and Shortcut key must be given!"))
71
72 - def _validate_shortcut(self):
73 shortcut = self._get_shortcut() 74 if self.shortcut_config.exists(shortcut): 75 raise DuplicateShortcut(_("The shortcut %s is already bound to function '%s'!") % 76 (shortcut, self.shortcut_config.get_function(shortcut)))
77
78 - def _get_shortcut(self):
79 modifier = self.view.GetModifier() 80 shortcut_key = self.view.GetShortcutKey() 81 shortcut = "%s+%s" % (modifier, shortcut_key) 82 if shortcut.startswith("+"): 83 shortcut = shortcut[1:] 84 return shortcut
85