#!/usr/bin/env python3
"""
Widget that appear in front of everything else to quickly communicate something
to the user.
"""
import pyglet
import autoprop
from glooey.text import Label
from glooey.images import Background
from glooey.buttons import Button
from glooey.containers import Grid, HBox, Frame
from glooey.misc import Spacer
from glooey.helpers import *
[docs]@autoprop
@register_event_type('on_close')
class Dialog(Frame):
[docs] def open(self, gui):
self.close()
gui.add(self)
[docs] def close(self):
if self.root is not None:
self.root.remove(self)
self.dispatch_event('on_close', self)
[docs]@autoprop
class OkDialog(ButtonDialog):
[docs] def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._ok_button = self.OkButton()
self._ok_button.push_handlers(on_click=self.on_click_ok)
self.buttons.pack(self._ok_button)
[docs] def on_click_ok(self, widget):
self.close()
[docs]@autoprop
class YesNoDialog(ButtonDialog):
[docs] def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._yes_button = self.YesButton()
self._yes_button.push_handlers(on_click=self.on_click_yes)
self._no_button = self.NoButton()
self._no_button.push_handlers(on_click=self.on_click_no)
self._response = False
self.buttons.pack(self._yes_button)
self.buttons.pack(self._no_button)
[docs] def open(self, gui):
self._response = None
super().open(gui)
[docs] def on_click_yes(self, widget):
self._response = True
self.close()
[docs] def on_click_no(self, widget):
self._response = False
self.close()
[docs] def get_response(self):
return self._response