Module albow.dialog.Dialog
Source code
from albow.dialog.Modal import Modal
from albow.widgets.Button import Button
from albow.core.ui.Widget import Widget
from albow.layout.Row import Row
from albow.layout.Column import Column
class Dialog(Modal, Widget):
"""
The Dialog class provides a convenient container for implementing modal dialogs. Pressing Return or
Enter dismisses the dialog with the value True, and pressing Escape dismisses it with the value False.
See the `albow.core.ui.Widget` ``dismiss()`` and ``present()`` methods
"""
click_outside_response = None
"""
If this attribute is given a non-None value, then a mouse-down event outside the bounds of the dialog will
cause it to be dismissed with the given value.
"""
def __init__(self, client=None, responses=None, default=0, cancel=-1, **kwds):
"""
Args:
client: The widget the dialog is on top of
responses: A list of responses
default: The index to the default response; Default is the first
cancel: The index to the cancel response; Default is None
**kwds:
"""
Widget.__init__(self, **kwds)
if client or responses:
rows = []
w1 = 0
w2 = 0
if client:
rows.append(client)
w1 = client.width
if responses:
buttons = Row([
Button(text, action=lambda t=text: self.dismiss(t))
for text in responses], equalize='w')
rows.append(buttons)
w2 = buttons.width
if w1 < w2:
a = 'l'
else:
a = 'r'
contents = Column(rows, align=a)
m = self.margin
contents.topleft = (m, m)
self.add(contents)
self.shrink_wrap()
#
# TODO Appears to be some code for future use to provide other than True/False responses
#
if responses and default is not None:
self.enter_response = responses[default]
if responses and cancel is not None:
self.cancel_response = responses[cancel]
def mouse_down(self, e):
#
# PEP 8 update
# https://lintlyci.github.io/Flake8Rules/rules/E713.html
#
# if not e in self:
if e not in self:
response = self.click_outside_response
if response is not None:
self.dismiss(response)
Classes
class Dialog (client=None, responses=None, default=0, cancel=-1, **kwds)-
The Dialog class provides a convenient container for implementing modal dialogs. Pressing Return or Enter dismisses the dialog with the value True, and pressing Escape dismisses it with the value False.
See the
albow.core.ui.Widgetdismiss()andpresent()methodsArgs
client- The widget the dialog is on top of
responses- A list of responses
default- The index to the default response; Default is the first
cancel- The index to the cancel response; Default is None
**kwds:
Source code
class Dialog(Modal, Widget): """ The Dialog class provides a convenient container for implementing modal dialogs. Pressing Return or Enter dismisses the dialog with the value True, and pressing Escape dismisses it with the value False. See the `albow.core.ui.Widget` ``dismiss()`` and ``present()`` methods """ click_outside_response = None """ If this attribute is given a non-None value, then a mouse-down event outside the bounds of the dialog will cause it to be dismissed with the given value. """ def __init__(self, client=None, responses=None, default=0, cancel=-1, **kwds): """ Args: client: The widget the dialog is on top of responses: A list of responses default: The index to the default response; Default is the first cancel: The index to the cancel response; Default is None **kwds: """ Widget.__init__(self, **kwds) if client or responses: rows = [] w1 = 0 w2 = 0 if client: rows.append(client) w1 = client.width if responses: buttons = Row([ Button(text, action=lambda t=text: self.dismiss(t)) for text in responses], equalize='w') rows.append(buttons) w2 = buttons.width if w1 < w2: a = 'l' else: a = 'r' contents = Column(rows, align=a) m = self.margin contents.topleft = (m, m) self.add(contents) self.shrink_wrap() # # TODO Appears to be some code for future use to provide other than True/False responses # if responses and default is not None: self.enter_response = responses[default] if responses and cancel is not None: self.cancel_response = responses[cancel] def mouse_down(self, e): # # PEP 8 update # https://lintlyci.github.io/Flake8Rules/rules/E713.html # # if not e in self: if e not in self: response = self.click_outside_response if response is not None: self.dismiss(response)Ancestors
Subclasses
Class variables
var click_outside_response-
If this attribute is given a non-None value, then a mouse-down event outside the bounds of the dialog will cause it to be dismissed with the given value.
Methods
def mouse_down(self, e)-
Source code
def mouse_down(self, e): # # PEP 8 update # https://lintlyci.github.io/Flake8Rules/rules/E713.html # # if not e in self: if e not in self: response = self.click_outside_response if response is not None: self.dismiss(response)
Inherited members
Modal:Widget:addadd_anchoradd_centeredanchorattention_lostaugment_mouse_eventbg_colorbg_imageborder_colorborder_widthcall_handlercall_parent_handlerdefer_drawingdismissdrawdraw_overfg_colorfocusfocus_switchfontget_cursorget_focusget_margin_rectget_rootget_top_widgetget_visibleglobal_to_localhas_focusinheritedinvalidateis_gl_containerkey_downkey_uplocal_to_globalmarginmenu_barparentparent_resizedpresentrectrelative_moderemoveremove_anchorresizedscale_bgsel_colorset_parentset_size_for_texttab_stopvisible