def __init__(self, data, field_labels, btn_label, callbacks):
self.app = data["app"]
self.error = False
self.fields, self.callbacks = [], callbacks
for label in field_labels:
self.fields.append(InputField(label, next_callback=self.next))
input_fields = urwid.Pile(self.fields)
self.message_field = urwid.Text('')
error_row = urwid.Columns([(17, urwid.Text('')), self.message_field])
buttons = [TextButton(btn_label, on_press=self.next)]
if callbacks['back']:
buttons.insert(0, TextButton('< Back', align='left', on_press=callbacks['back']))
footer = urwid.AttrMap(urwid.Columns(buttons), 'button')
card = Card(urwid.Pile(
[data["content"], input_fields, error_row]), footer=footer)
urwid.WidgetWrap.__init__(self, card)
python类WidgetWrap()的实例源码
def __init__(self, title, cred, tests, data):
self.app = None
self.tester = data["tester"]
urn = cred["nodelist"][0][0] + ":" + str(cred["nodelist"][0][1]) + (
"/" + (cred["database"]) if bool(cred["database"]) else "")
self.data = {"title": title, "callback": data["callback"],
"urn": urn, "num_tests": len(tests)}
self.progress_text = urwid.Text(
('progress', '0/' + str(self.data["num_tests"])))
running_display = urwid.Columns(
[(14, urwid.Text(('text', 'Running test'))), self.progress_text])
self.progress_bar = CustomProgressBar(
'progress', 'remaining', 0, self.data["num_tests"])
self.text_running = urwid.Text(('text', ''))
box = urwid.BoxAdapter(urwid.Filler(
self.text_running, valign='top'), 2)
pile = urwid.Pile([running_display, self.progress_bar, DIV, box])
urwid.WidgetWrap.__init__(self, pile)
def __init__(self, data, field_labels, btn_label, callbacks):
self.app = data["app"]
self.error = False
self.fields, self.callbacks = [], callbacks
for label in field_labels:
self.fields.append(InputField(label, next_callback=self.next))
input_fields = urwid.Pile(self.fields)
self.message_field = urwid.Text('')
error_row = urwid.Columns([(17, urwid.Text('')), self.message_field])
buttons = [TextButton(btn_label, on_press=self.next)]
if callbacks['back']:
buttons.insert(0, TextButton('< Back', align='left', on_press=callbacks['back']))
footer = urwid.AttrMap(urwid.Columns(buttons), 'button')
card = Card(urwid.Pile(
[data["content"], input_fields, error_row]), footer=footer)
urwid.WidgetWrap.__init__(self, card)
def __init__(self, title, cred, tests, data):
self.app = None
self.tester = data["tester"]
urn = cred["nodelist"][0][0] + ":" + str(cred["nodelist"][0][1]) + (
"/" + (cred["database"]) if bool(cred["database"]) else "")
self.data = {"title": title, "callback": data["callback"],
"urn": urn, "num_tests": len(tests)}
self.progress_text = urwid.Text(
('progress', '0/' + str(self.data["num_tests"])))
running_display = urwid.Columns(
[(14, urwid.Text(('text', 'Running test'))), self.progress_text])
self.progress_bar = CustomProgressBar(
'progress', 'remaining', 0, self.data["num_tests"])
self.text_running = urwid.Text(('text', ''))
box = urwid.BoxAdapter(urwid.Filler(
self.text_running, valign='top'), 2)
pile = urwid.Pile([running_display, self.progress_bar, DIV, box])
urwid.WidgetWrap.__init__(self, pile)
def __init__(self):
self.options = []
unsure = urwid.RadioButton(self.options, u"Unsure")
yes = urwid.RadioButton(self.options, u"Yes")
no = urwid.RadioButton(self.options, u"No")
display_widget = urwid.GridFlow([unsure, yes, no], 15, 3, 1, 'left')
urwid.WidgetWrap.__init__(self, display_widget)
def __init__(self, list_item, show_hits, match=None):
self.list_item = list_item
if match is not None and match is not '' and show_hits is True:
# highlight the matches
hits = re.split('({match})'.format(match=re.escape(match)), self.list_item)
parts = []
for part in hits:
if part == match:
parts.append(('pattern', part))
else:
parts.append(part)
text = urwid.AttrMap(
urwid.Text(parts),
'line',
{'pattern': 'pattern_focus', None: 'line_focus'}
)
else:
text = urwid.AttrMap(urwid.Text(self.list_item), 'line', 'line_focus')
urwid.WidgetWrap.__init__(self, text)
def make_compile_error_view(self):
blank = urwid.Divider()
status_header = urwid.AttrWrap(urwid.Text('Run Code Status: '), 'body')
status = urwid.AttrWrap(urwid.Text('Compile Error'), 'hometag')
columns = urwid.Columns([(17, status_header), (20, status)])
column_wrap = urwid.WidgetWrap(columns)
result_header = urwid.Text('--- Run Code Result: ---', align='center')
your_input_header = urwid.Text('Your input:')
your_input = urwid.Text('')
your_answer_header = urwid.Text('Your answer:')
your_answer = urwid.Text(self.result['compile_error'])
expected_answer_header = urwid.Text('Expected answer:')
expected_answer = urwid.Text('Unkown Error')
list_items = [
result_header,
blank, column_wrap,
blank, your_input_header, your_input,
blank, your_answer_header, your_answer,
blank, expected_answer_header, expected_answer
]
self._append_stdout_if_non_empty(list_items)
return urwid.Padding(urwid.ListBox(urwid.SimpleListWalker(list_items)), left=2, right=2)
def make_runtime_error_view(self):
blank = urwid.Divider()
status_header = urwid.AttrWrap(urwid.Text('Run Code Status: '), 'body')
status = urwid.AttrWrap(urwid.Text('Runtime Error'), 'hometag')
columns = urwid.Columns([(17, status_header), (20, status)])
column_wrap = urwid.WidgetWrap(columns)
result_header = urwid.Text('--- Run Code Result: ---', align='center')
error_header = urwid.Text('Runtime Error Message:')
error_message = urwid.Text(self.result['runtime_error'])
your_input_header = urwid.Text('Last input:')
your_input = urwid.Text(self.result['last_testcase'])
list_items = [
result_header,
blank, column_wrap,
blank, error_header, error_message,
blank, your_input_header, your_input,
]
self._append_stdout_if_non_empty(list_items)
return urwid.Padding(urwid.ListBox(urwid.SimpleListWalker(list_items)), left=2, right=2)
def make_unified_error_view(self, error_title):
blank = urwid.Divider()
status_header = urwid.AttrWrap(urwid.Text('Run Code Status: '), 'body')
status = urwid.AttrWrap(urwid.Text(error_title), 'hometag')
columns = urwid.Columns([(17, status_header), (30, status)])
column_wrap = urwid.WidgetWrap(columns)
if 'last_testcase' in self.result:
result_header = urwid.Text('--- Run Code Result: ---', align='center')
your_input_header = urwid.Text('Last executed input:')
your_input = urwid.Text(self.result['last_testcase'])
list_items = [
result_header,
blank, column_wrap,
blank, your_input_header, your_input,
]
else:
list_items = [
result_header,
blank, column_wrap,
]
self._append_stdout_if_non_empty(list_items)
return urwid.Padding(urwid.ListBox(urwid.SimpleListWalker(list_items)), left=2, right=2)
def __init__(self, data, marks, sel=True):
self.sel = sel
self.id = data.id
self.data = data
lockbody = 'body' if not self.data.locked else 'lock'
pass_symbol = u''
if self.data.submission_status == 'ac':
pass_symbol = u'\u2714'
elif self.data.submission_status == 'notac':
pass_symbol = u'\u2718'
text = str(self.data.id)
mark = make_mark(marks, self.data.id)
self.item = [
(4, urwid.AttrWrap(urwid.Text(text), lockbody, 'focus')),
(2, urwid.AttrWrap(urwid.Text(pass_symbol), lockbody, 'focus')),
(10, urwid.AttrWrap(urwid.Text(mark), 'hometag', 'focus')),
urwid.AttrWrap(urwid.Text('%s' % data.title), lockbody, 'focus'),
(15, urwid.AttrWrap(urwid.Text('%s' % data.acceptance), lockbody, 'focus')),
(15, urwid.AttrWrap(urwid.Text('%s' % data.difficulty), lockbody, 'focus')),
]
w = urwid.Columns(self.item)
urwid.WidgetWrap.__init__(self, w)
def __init__(self, content, header=None, footer=None):
wlist = []
if header:
wlist.append(header)
wlist.extend([DIV, pad(content)])
if footer:
wlist.extend([HR, DIV, pad(footer)])
wlist.append(DIV)
card = urwid.AttrMap(urwid.Pile(wlist), 'card')
urwid.WidgetWrap.__init__(self, card)
def __init__(self, label="", label_width=15, next_callback=False):
self.label, self.next_callback = label, next_callback
self.edit = urwid.Padding(urwid.Edit(), left=1, right=1)
label = urwid.LineBox(
urwid.Text(label),
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' ',
bline=' ')
lbox = urwid.AttrMap(
urwid.LineBox(
self.edit,
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' '),
'input',
'input focus')
cols = urwid.Columns([(label_width, label), lbox])
urwid.WidgetWrap.__init__(self, cols)
def __init__(self, result):
self.result = result
self.total = len(result)
self.update_view('next_callback')
walker = urwid.SimpleListWalker([urwid.Padding(self.top_columns, left=3, right=3),
self.test_result])
adapter = urwid.BoxAdapter(urwid.ListBox(walker), height=14)
urwid.WidgetWrap.__init__(self, adapter)
def __init__(self, data):
"""
Construct the Question Page.
:param data: tuple of (answers, question_title, question_desc, question_stats, question_url)
"""
answer_frame = self.makeFrame(data)
urwid.WidgetWrap.__init__(self, answer_frame)
def keypress(self, size, key):
if key in {'down', 'n', 'N'}:
self.answer_text.next_ans()
elif key in {'up', 'b', 'B'}:
self.answer_text.prev_ans()
elif key in {'o', 'O'}:
import webbrowser
if sys.platform.startswith('darwin'):
browser = webbrowser.get('safari')
else:
browser = webbrowser.get()
print_warning("Opening in your browser...")
browser.open(self.url)
elif key == 'left':
global question_post
global question_page
question_post = None
if question_page is None:
sys.exit(0)
else:
LOOP.widget = question_page
elif key == 'window resize':
screenHeight, screenWidth = subprocess.check_output(['stty', 'size']).split()
if self.screenHeight != screenHeight:
self._invalidate()
answer_frame = self.makeFrame(self.data)
urwid.WidgetWrap.__init__(self, answer_frame)
def __init__(self, answers):
urwid.WidgetWrap.__init__(self, UnicodeText(''))
self._selectable = True # so that we receive keyboard input
self.answers = answers
self.index = 0
self.set_answer()
def __init__(self, description):
urwid.WidgetWrap.__init__(self, UnicodeText(''))
self.description = description
self.set_description()
def __init__(self, node):
self._node = node
self._innerwidget = None
self.is_leaf = False
self.expanded = False
widget = self.get_indented_widget()
urwid.WidgetWrap.__init__(self, widget)
def __init__(self, content, header=None, footer=None):
wlist = []
if header:
wlist.append(header)
wlist.extend([DIV, pad(content)])
if footer:
wlist.extend([HR, DIV, pad(footer)])
wlist.append(DIV)
card = urwid.AttrMap(urwid.Pile(wlist), 'card')
urwid.WidgetWrap.__init__(self, card)
def __init__(self, label="", label_width=15, next_callback=False):
self.label, self.next_callback = label, next_callback
self.edit = urwid.Padding(urwid.Edit(), left=1, right=1)
label = urwid.LineBox(
urwid.Text(label),
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' ',
bline=' ')
lbox = urwid.AttrMap(
urwid.LineBox(
self.edit,
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' '),
'input',
'input focus')
cols = urwid.Columns([(label_width, label), lbox])
urwid.WidgetWrap.__init__(self, cols)
def __init__(self, result):
self.result = result
self.total = len(result)
self.update_view('next_callback')
walker = urwid.SimpleListWalker([urwid.Padding(self.top_columns, left=3, right=3),
self.test_result])
adapter = urwid.BoxAdapter(urwid.ListBox(walker), height=14)
urwid.WidgetWrap.__init__(self, adapter)
def mksection(title, width, items):
# Setting class variable 'title = title' below produces "NameError: name
# 'title' is not defined"
title_, width_ = title, width
class Section(urwid.WidgetWrap):
title = title_
width = width_
def __init__(self):
value_widgets = {}
needed_keys = set()
rows = []
label_width = max(len(item.label) for item in items)
for item in items:
label_w = urwid.Text(item.label.rjust(label_width))
value_w = urwid.Text('')
value_widgets[item] = value_w
rows.append(urwid.Columns([('pack', label_w),
('pack', urwid.Text(': ')),
value_w]))
needed_keys.update(item.needed_keys)
self._value_widgets = value_widgets
self.needed_keys = needed_keys
super().__init__(urwid.Pile(rows))
def update(self, torrent):
for item,value_w in self._value_widgets.items():
value_w.set_text(item.human_readable(torrent))
return Section
def __init__(self, item, cells):
self._item = item # Info of torrent/tracker/file/peer/...
self._cells = cells # Group instance that combines widgets horizontally
# Create focusable or unfocusable item widget
if self.columns_focus_map is not NotImplemented:
itemw = urwid.AttrMap(urwid.AttrMap(cells, attr_map=None, focus_map=self.columns_focus_map),
self.palette_unfocused, self.palette_focused)
else:
itemw = urwid.AttrMap(cells, self.palette_unfocused)
urwid.WidgetWrap.__init__(self, itemw)
# Initialize cell widgets
self.update(item)
def __init__(self, movie):
self.data = movie
item = [
('pack', urwid.AttrWrap(urwid.Text(movie.title), 'body', 'focus')),
(5, urwid.AttrWrap(urwid.Text(' ' + str(movie.year)), 'gray', 'focus')),
]
w = urwid.Columns(item)
blank = urwid.Divider()
p = urwid.Pile([w, urwid.AttrWrap(urwid.Text(movie.sub_title), 'gray', 'focus'), blank])
urwid.WidgetWrap.__init__(self, p)
def __init__(self, controller):
self.controller = controller
self.started = True
self.start_time = None
self.offset = 0
self.last_offset = None
urwid.WidgetWrap.__init__(self, self.main_window())
def main_window(self):
self.graph = self.bar_graph()
self.graph_wrap = urwid.WidgetWrap( self.graph )
vline = urwid.AttrWrap( urwid.SolidFill(u'\u2502'), 'line')
c = self.graph_controls()
w = urwid.Columns([('weight',2,self.graph_wrap),
('fixed',1,vline), c],
dividechars=1, focus_column=2)
w = urwid.Padding(w,('fixed left',1),('fixed right',0))
w = urwid.AttrWrap(w,'body')
w = urwid.LineBox(w)
w = urwid.AttrWrap(w,'line')
w = self.main_shadow(w)
return w
def __init__(self, letter):
self.walker = CellWalker([Cell(None)])
self.content = self.walker.content
self.listbox = urwid.ListBox( self.walker )
self.set_letter( letter )
urwid.WidgetWrap.__init__(self, self.frame)
def main_window(self):
self.graph = self.bar_graph()
self.graph_wrap = urwid.WidgetWrap( self.graph )
vline = urwid.AttrWrap( urwid.SolidFill(u'\u2502'), 'line')
c = self.graph_controls()
w = urwid.Columns([('weight',2,self.graph_wrap),
('fixed',1,vline), c],
dividechars=1, focus_column=2)
w = urwid.Padding(w,('fixed left',1),('fixed right',0))
w = urwid.AttrWrap(w,'body')
w = urwid.LineBox(w)
w = urwid.AttrWrap(w,'line')
w = self.main_shadow(w)
return w
def __init__(self, txt):
self.t = urwid.Text(txt)
w = urwid.AttrMap(self.t, 'body', 'focus')
urwid.WidgetWrap.__init__(self, w)
def __init__(self, t):
self.t = t
w = urwid.AttrMap(self.t, 'body', 'focus')
urwid.WidgetWrap.__init__(self, w)
if not self.MENU:
self.MENU = [u'{instrument} Cmds: ',
('close button', u'C'), u') close position ',
('quit button', u'Q'), u') to quit.']