use the new stretchy overlays

for the layout toggle and the install confirmation
This commit is contained in:
Michael Hudson-Doyle 2018-04-17 12:24:07 +12:00
parent 7eafa420fb
commit 458520e671
2 changed files with 32 additions and 38 deletions

View File

@ -20,12 +20,7 @@ configuration.
""" """
import logging import logging
from urwid import ( from urwid import Text
LineBox,
Padding as UrwidPadding,
Text,
WidgetWrap,
)
from subiquitycore.ui.buttons import ( from subiquitycore.ui.buttons import (
back_btn, back_btn,
@ -36,6 +31,7 @@ from subiquitycore.ui.buttons import (
reset_btn, reset_btn,
) )
from subiquitycore.ui.container import Columns, ListBox, Pile from subiquitycore.ui.container import Columns, ListBox, Pile
from subiquitycore.ui.stretchy import Stretchy
from subiquitycore.ui.utils import button_pile, Color, Padding from subiquitycore.ui.utils import button_pile, Color, Padding
from subiquitycore.view import BaseView from subiquitycore.view import BaseView
@ -52,22 +48,24 @@ result in the loss of data on the disks selected to be formatted.
You will not be able to return to this or a previous screen once \ You will not be able to return to this or a previous screen once \
the installation has started. the installation has started.
Are you sure you want to continue? Are you sure you want to continue?""")
""")
class FilesystemConfirmationView(WidgetWrap): class FilesystemConfirmation(Stretchy):
def __init__(self, parent, controller): def __init__(self, parent, controller):
self.parent = parent self.parent = parent
self.controller = controller self.controller = controller
pile = Pile([ widgets = [
UrwidPadding(Text(confirmation_text), left=2, right=2), Text(confirmation_text),
Text(""),
button_pile([ button_pile([
cancel_btn(_("No"), on_press=self.cancel), cancel_btn(_("No"), on_press=self.cancel),
danger_btn(_("Continue"), on_press=self.ok)]), danger_btn(_("Continue"), on_press=self.ok)]),
Text(""), ]
]) super().__init__(
lb = LineBox(pile, title=_("Confirm destructive action")) _("Confirm destructive action"),
super().__init__(lb) widgets,
stretchy_index=0,
focus_index=2)
def ok(self, sender): def ok(self, sender):
self.controller.finish() self.controller.finish()
@ -275,4 +273,4 @@ class FilesystemView(BaseView):
self.controller.reset() self.controller.reset()
def done(self, button): def done(self, button):
self.show_overlay(FilesystemConfirmationView(self, self.controller), min_width=0) self.show_stretchy_overlay(FilesystemConfirmation(self, self.controller))

View File

@ -18,8 +18,6 @@ import logging
from urwid import ( from urwid import (
connect_signal, connect_signal,
LineBox, LineBox,
Padding as UrwidPadding,
SolidFill,
Text, Text,
WidgetWrap, WidgetWrap,
) )
@ -31,7 +29,6 @@ from subiquitycore.ui.buttons import (
) )
from subiquitycore.ui.container import ( from subiquitycore.ui.container import (
Columns, Columns,
ListBox,
Pile, Pile,
) )
from subiquitycore.ui.form import ( from subiquitycore.ui.form import (
@ -39,6 +36,9 @@ from subiquitycore.ui.form import (
Form, Form,
) )
from subiquitycore.ui.selector import Selector, Option from subiquitycore.ui.selector import Selector, Option
from subiquitycore.ui.stretchy import (
Stretchy,
)
from subiquitycore.ui.utils import button_pile, Color, Padding, screen from subiquitycore.ui.utils import button_pile, Color, Padding, screen
from subiquitycore.view import BaseView from subiquitycore.view import BaseView
@ -302,7 +302,7 @@ toggle_options = [
] ]
class ToggleQuestion(WidgetWrap): class ToggleQuestion(Stretchy):
def __init__(self, parent, setting): def __init__(self, parent, setting):
self.parent = parent self.parent = parent
@ -315,28 +315,24 @@ class ToggleQuestion(WidgetWrap):
except AttributeError: except AttributeError:
pass pass
pile = Pile([ widgets = [
ListBox([
Text(_(toggle_text)), Text(_(toggle_text)),
]), Text(""),
(1, SolidFill(" ")), Padding.center_79(Columns([
('pack', Padding.center_79(Columns([
('pack', Text(_("Shortcut: "))), ('pack', Text(_("Shortcut: "))),
Color.string_input(self.selector), Color.string_input(self.selector),
]))), ])),
(1, SolidFill(" ")), Text(""),
('pack', button_pile([ button_pile([
ok_btn(label=_("OK"), on_press=self.ok), ok_btn(label=_("OK"), on_press=self.ok),
cancel_btn(label=_("Cancel"), on_press=self.cancel), cancel_btn(label=_("Cancel"), on_press=self.cancel),
])), ]),
]) ]
pile.focus_position = 4
super().__init__( super().__init__(
LineBox( _("Select layout toggle"),
UrwidPadding( widgets,
pile, stretchy_index=0,
left=1, right=1), focus_index=4)
_("Select layout toggle")))
def ok(self, sender): def ok(self, sender):
self.parent.remove_overlay() self.parent.remove_overlay()
@ -411,7 +407,7 @@ class KeyboardView(BaseView):
setting = KeyboardSetting(layout=layout, variant=variant) setting = KeyboardSetting(layout=layout, variant=variant)
new_setting = setting.latinizable() new_setting = setting.latinizable()
if new_setting != setting: if new_setting != setting:
self.show_overlay(ToggleQuestion(self, new_setting), height=('relative', 100)) self.show_stretchy_overlay(ToggleQuestion(self, new_setting))
return return
self.really_done(setting) self.really_done(setting)