Ran update_copyright.py.
[hooke.git] / hooke / ui / gui / handler / selection.py
1 # Copyright (C) 2010-2011 W. Trevor King <wking@drexel.edu>
2 #
3 # This file is part of Hooke.
4 #
5 # Hooke is free software: you can redistribute it and/or modify it
6 # under the terms of the GNU Lesser General Public License as
7 # published by the Free Software Foundation, either version 3 of the
8 # License, or (at your option) any later version.
9 #
10 # Hooke is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
13 # Public License for more details.
14 #
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with Hooke.  If not, see
17 # <http://www.gnu.org/licenses/>.
18
19 """Define :class:`SelectionHandler` to handle
20 :class:`~hooke.interaction.SelectionRequest`\s.
21 """
22
23 import wx
24
25 from ..dialog.selection import Selection
26 from . import Handler
27
28
29 class SelectionHandler (Handler):
30     def __init__(self):
31         super(SelectionHandler, self).__init__(name='selection')
32
33     def run(self, hooke_frame, msg):
34         self._canceled = True
35         while self._canceled:
36             s = Selection(
37                 options=msg.options,
38                 message=msg.msg,
39                 button_id=wxID_OK,
40                 callbacks={
41                     'button': self._selection,
42                     },
43                 default=msg.default,
44                 selection_style='single',
45                 parent=self,
46                 label='Selection handler',
47                 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
48         return self._selected
49
50     def _selection(self, _class, method, options, selected):
51         self._selected = selected
52         self._canceled = False