Mini Shell
from .widgets import *
def add_ok_cancel_buttons(d):
if d.h == 0:
d.autosize(0, 1)
if d.w < 20:
d.w = 20
hw = d.w // 2
off1 = (hw + 1) // 2 - 4
off2 = (d.w - hw) + hw // 2 - 4
b = WButton(8, "OK")
d.add(off1, d.h - 1, b)
b.finish_dialog = ACTION_OK
b = WButton(8, "Cancel")
d.add(off2, d.h - 1, b)
b.finish_dialog = ACTION_CANCEL
class DTextEntry(Dialog):
def __init__(self, entry_w, text, title=""):
super().__init__(10, 5, title=title)
self.entry = WTextEntry(entry_w, text)
self.entry.finish_dialog = ACTION_OK
self.add(1, 1, self.entry)
def result(self):
res = self.loop()
if res == ACTION_OK:
return self.entry.get()
class DMultiEntry(Dialog):
def __init__(self, entry_w, entry_h, lines, title=""):
super().__init__(10, 5, entry_w + 2, entry_h + 3, title=title)
self.widget = WMultiEntry(entry_w, entry_h, lines)
self.add(1, 1, self.widget)
add_ok_cancel_buttons(self)
def result(self):
res = self.loop()
if res == ACTION_CANCEL:
return res
return self.widget.content
class DConfirmation(Dialog):
def __init__(self, lines, title=""):
super().__init__(10, 5, title=title)
if not isinstance(lines, list):
lines = [lines]
i = 1
for l in lines:
self.add(2, i, WLabel(l))
i += 1
self.autosize(extra_w=1, extra_h=1)
add_ok_cancel_buttons(self)
def result(self):
return self.loop()
Zerion Mini Shell 1.0