89ef42650895249afea9979ce0e53ebd5b842914
[hooke.git] / hooke / ui / gui / handler / selection.py
1 # Copyright
2
3 """Define :class:`SelectionHandler` to handle
4 :class:`~hooke.interaction.SelectionRequest`\s.
5 """
6
7 import wx
8
9 from ..dialog.selection import SelectionDialog
10 from . import Handler
11
12
13 class SelectionHandler (Handler):
14     def __init__(self):
15         super(StringHandler, self).__init__(name='selection')
16
17     def run(self, hooke_frame, msg):
18         self._canceled = True
19         while self._canceled:
20             s = SelectionDialog(
21                 options=msg.options,
22                 message=msg.msg,
23                 button_id=wxID_OK,
24                 callbacks={
25                     'button': self._selection,
26                     },
27                 default=msg.default,
28                 selection_style='single',
29                 parent=self,
30                 label='Selection handler',
31                 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER),
32             )
33         return self._selected
34
35     def _selection(self, _class, method, options, selected):
36         self._selected = selected
37         self._canceled = False