def test_abort_chain_with_mapped_key(self):
self.km.bind('alt-1 alt-2 alt-3', 'foo')
self.km.bind('alt-x', 'bar')
self.widget.keypress((80,), 'alt-1')
self.assert_status(keys_given=('alt-1',),
widget_text='Original Text',
active_keychains=((('alt-1', 'alt-2', 'alt-3'), 'foo'),))
# Abort the started chain
self.widget.keypress((80,), 'alt-x')
self.assert_status(keys_given=(),
widget_text='Original Text',
active_keychains=())
# Mapped single-key evaluation works again
self.widget.keypress((80,), 'alt-x')
self.assert_status(keys_given=(),
widget_text='bar1',
active_keychains=())
python类Text()的实例源码
def test_abort_chain_with_builtin_key(self):
self.km.bind('alt-1 alt-2 alt-3', 'foo')
self.widget.keypress((80,), 'alt-1')
self.assert_status(keys_given=('alt-1',),
widget_text='Original Text',
active_keychains=((('alt-1', 'alt-2', 'alt-3'), 'foo'),))
# This would usually append 'x' to the Edit widget text, but we want it
# to abort the started chain instead.
self.widget.keypress((80,), 'x')
self.assert_status(keys_given=(),
widget_text='Original Text',
active_keychains=())
# Now we can change the text again
self.widget.keypress((80,), 'x')
self.assert_status(keys_given=(),
widget_text='Original Textx',
active_keychains=())
def __init__(self):
self._text_up = urwid.Text('', align='right')
self._text_up_limit = urwid.Text('')
self._text_dn = urwid.Text('', align='right')
self._text_dn_limit = urwid.Text('')
spacer = urwid.AttrMap(urwid.SolidFill(' '), 'bottombar')
self._spacer_canvas = spacer.render((self._SPACER_WIDTH, 1))
def mkattr(text, attrsname):
return urwid.AttrMap(urwid.Padding(text), attrsname)
self._attr_up = mkattr(self._text_up, 'bottombar.bandwidth.up')
self._attr_up_limit = mkattr(self._text_up_limit, 'bottombar.bandwidth.up')
self._attr_dn = mkattr(self._text_dn, 'bottombar.bandwidth.down')
self._attr_dn_limit = mkattr(self._text_dn_limit, 'bottombar.bandwidth.down')
self._up_limit_width = 0
self._dn_limit_width = 0
self._connected = False
srvapi.status.on_update(self._update_current_rates)
srvapi.settings.on_update(self._update_rate_limits)
def display_help(self, topics, lines):
import urwid
from ...tui.scroll import (Scrollable, ScrollBar)
if hasattr(self, 'title'):
titlew = make_tab_title_widget(str(self.title),
attr_unfocused='tabs.help.unfocused',
attr_focused='tabs.help.focused')
else:
titlew = make_tab_title_widget(','.join(topics),
attr_unfocused='tabs.help.unfocused',
attr_focused='tabs.help.focused')
textw = urwid.AttrMap(Scrollable(urwid.Text('\n'.join(lines))), 'helptext')
contentw = urwid.AttrMap(ScrollBar(textw), 'scrollbar')
self.tui.tabs.load(titlew, contentw)
def console(self, comp):
helpmessage = 'Control console output. `console quiet` to suppress console output and `console reset` to turn it back on.'
userInput = comp.edit
user_text = userInput.get_edit_text()
user_command_split = user_text.split(' ')
if len(user_command_split) < 2:
comp.listwalker.append(urwid.Text(('logged_response', helpmessage)))
return False
command = user_command_split[1]
if command == 'quiet':
comp.consolemonitor.quiet = True
comp.listwalker.append(urwid.Text(('logged_response', 'Limiting display to user interactions only.')))
elif command == 'reset' or command == 'verbose':
comp.consolemonitor.quiet = False
comp.listwalker.append(urwid.Text(('logged_response', 'Displaying all console output.')))
else:
comp.listwalker.append(urwid.Text(('logged_response', helpmessage)))
def list(self, comp):
command_list = ''
aliases = list(comp.aliases)
builtin_list = [method for method in dir(self) if callable(getattr(self, method))]
commands = builtin_list
for alias in aliases:
alias_real = comp.aliases[alias]
if alias_real not in builtin_list:
commands.append(alias)
commands.sort()
commands.reverse()
for builtin_command in commands:
if builtin_command != 'turtle' and not builtin_command.startswith('__'):
command_list = builtin_command + ' ' + command_list
comp.listwalker.append(urwid.Text(('logged_response', command_list)))
return
def __init__(self, title, command_caption='Command: (Tab to switch focus to upper frame, where you can scroll text)', cmd_cb=None, max_size=1000):
self.header=urwid.Text(title)
self.model=urwid.SimpleListWalker([])
self.body=ListView(self.model, lambda: self._update_focus(False), max_size=max_size )
self.input=Input(lambda: self._update_focus(True))
foot=urwid.Pile([urwid.AttrMap(urwid.Text(command_caption), 'reversed'),
urwid.AttrMap(self.input,'normal')])
urwid.Frame.__init__(self,
urwid.AttrWrap(self.body, 'normal'),
urwid.AttrWrap(self.header, 'reversed'),
foot)
self.set_focus_path(['footer',1])
self._focus=True
urwid.connect_signal(self.input,'line_entered',self.on_line_entered)
self._cmd=cmd_cb
self._output_styles=[s[0] for s in self.PALLETE]
self.eloop=None
def __init__(self, title, command_caption='Command: (Tab to switch focus to upper frame, where you can scroll text)', cmd_cb=None, max_size=1000):
self.header=urwid.Text(title)
self.model=urwid.SimpleListWalker([])
self.body=ListView(self.model, lambda: self._update_focus(False), max_size=max_size )
self.input=Input(lambda: self._update_focus(True))
foot=urwid.Pile([urwid.AttrMap(urwid.Text(command_caption), 'reversed'),
urwid.AttrMap(self.input,'normal')])
urwid.Frame.__init__(self,
urwid.AttrWrap(self.body, 'normal'),
urwid.AttrWrap(self.header, 'reversed'),
foot)
self.set_focus_path(['footer',1])
self._focus=True
urwid.connect_signal(self.input,'line_entered',self.on_line_entered)
self._cmd=cmd_cb
self._output_styles=[s[0] for s in self.PALLETE]
self.eloop=None
def __init__(self, column_meta):
self.column_meta = column_meta
self.columns = OrderedDict()
columns = []
for name, meta in self.column_meta.columns.items():
contents = name
if meta.sort_key:
contents = [name, ' ', ('head_key', "(%s)" % meta.sort_key.upper())]
contents = urwid.Text(contents, wrap="clip")
contents = SortableColumn(contents, 'head')
self.columns[name] = contents
if meta.fixed_width:
assert (contents.original_widget.pack()[0] <=
meta.display_width())
columns.append((meta.display_width(), contents))
else:
columns.append(("weight", meta.display_weight(), contents))
self.sort_column = column_meta.default_sort_key
self.columns[self.sort_column].update_sort_column(True)
super(ColumnHeadings, self).__init__(columns, dividechars=1)
def __init__(self, num_cores, max_mem):
self.cpu_utilbar = urwid.ProgressBar('resource_bar_empty',
'resource_bar', done=num_cores)
self.mem_utilbar = urwid.ProgressBar('resource_bar_empty',
'resource_bar', done=max_mem)
super(ResourceMonitor, self).__init__(urwid.Pile([
urwid.Columns([
urwid.Text("CPU Util", align="right"),
self.cpu_utilbar,
urwid.Divider(),
urwid.Text("Memory Capacity", align="right"),
self.mem_utilbar
]),
# urwid.Columns([
# urwid.Text("CPU Sched Latency"),
# urwid.ProgressBar('resource_bar_empty', 'resource_bar'),
# urwid.Divider(),
# urwid.Text("Memory Paging"),
# urwid.ProgressBar('resource_bar_empty', 'resource_bar'),
# ])
]))
def set_escape_key(self, button, args):
mode = args[0]
widget = OptionsMenu(
urwid.ListBox(urwid.SimpleFocusListWalker([
urwid.Text("Press Enter when done"),
urwid.AttrMap(KeyPrompt(
self.prefs["edit_escapes"][mode],
self.save_escape_key,
[mode]
), "opt_prompt")])),
title="Set key for " + mode,
**frame_theme()
)
app.loop.widget = urwid.Overlay(
urwid.AttrMap(widget, "30"),
app.loop.widget,
align=("relative", 50),
valign=("relative", 50),
width=25, height=5
)
def menu(title, SSID):
body = [urwid.Text(title), urwid.Divider()]
options = []
for c in SSID:
button = urwid.Button("[ ] " + c)
options.append(button)
#if SSID_DICT[c] == True:
# button.set_label(u"DH")
urwid.connect_signal(button, 'click', item_chosen, c)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
swarmify_button = urwid.Button("Swarmify")
options.append(swarmify_button)
urwid.connect_signal(swarmify_button, 'click', swarm_chosen, c)
body.append(urwid.AttrMap(swarmify_button, None, focus_map='reversed'))
return urwid.ListBox(urwid.SimpleFocusListWalker(body))
def item_chosen(button, choice):
if SSID_DICT[choice]:
button.set_label(u"[ ] " + button.get_label()[4:])
SSID_DICT[choice] = False
else:
button.set_label(u"[*] " + button.get_label()[4:])
SSID_DICT[choice] = True
##response = urwid.Text([u'You chose ', str(SSID_DICT[choice]), u'\n'])
##done = urwid.Button(u'Ok')
##urwid.connect_signal(done, 'click', exit_program)
##main.original_widget = urwid.Filler(urwid.Pile([response,
##urwid.AttrMap(done, None, focus_map='reversed')]))
def toggle_detail(self, item):
if not self.detail_view:
self.before_detail = self.body
detail_text = json.dumps(
item.detail, indent=4, sort_keys=True, cls=DateTimeEncoder)
lines = detail_text.split('\n')
text_lines = [urwid.Text(l) for l in lines]
list_box = DetailListBox(
urwid.SimpleFocusListWalker(text_lines), self)
self.body = list_box
LAYOUT.contents['body'] = (self.body, None)
self.detail_view = True
else:
self.body = self.before_detail
LAYOUT.contents['body'] = (self.body, None)
del self.before_detail
self.detail_view = False
def convert_details_to_columns(details):
labels = []
data = []
for detail in details:
if type(detail[0]) is list:
labels.extend(detail[0])
else:
labels.append(detail[0])
labels.append('\n')
data.append(str(detail[1]))
text2 = '\n'.join(data)
if len(labels) == 0:
labels = ''
text2 = ''
filler1 = urwid.Filler(urwid.Text(labels, 'left'), valign='top')
filler2 = urwid.Filler(urwid.Text(text2, 'left'), valign='top')
return [filler1, filler2]
def docfield(self, field):
attr_map = field
return urwid.Columns(
[
(
'fixed',
self.c1width,
urwid.AttrMap(
urwid.Text(field + ':'),
'field',
'field_focus'
)
),
urwid.AttrMap(
self.fields[field],
attr_map
)
]
)
def display(self, f):
def handle_input(key):
if key in ('q', 'Q'):
raise urwid.ExitMainLoop()
elif key in ('right', 'j', ' '):
if self.slide_id < len(self.sd) - 1:
self.slide_id += 1
elif key in ('left', 'k'):
if self.slide_id > 0:
self.slide_id -= 1
self.update_display()
self.load_charset()
self.sd = list(yaml.load_all(f))
self.slide_id = 0
self.update_display()
txt = urwid.Text(u"Presenting...")
fill = urwid.Filler(txt, 'bottom')
urwid.MainLoop(fill, unhandled_input=handle_input).run()
def __init__(self, title,
command_caption='Command: (Tab to switch focus to upper frame, where you can scroll text)',
cmd_cb=None, max_size=1000):
self.header = urwid.Text(title)
self.model = urwid.SimpleListWalker([])
self.body = ListView(self.model, lambda: self._update_focus(False), max_size=max_size)
self.input = Input(lambda: self._update_focus(True))
foot = urwid.Pile([urwid.AttrMap(urwid.Text(command_caption), 'reversed'),
urwid.AttrMap(self.input, 'normal')])
urwid.Frame.__init__(self,
urwid.AttrWrap(self.body, 'normal'),
urwid.AttrWrap(self.header, 'reversed'),
foot)
self.set_focus_path(['footer', 1])
self._focus = True
urwid.connect_signal(self.input, 'line_entered', self.on_line_entered)
self._cmd = cmd_cb
self._output_styles = [s[0] for s in self.PALLETE]
self.eloop = None
def menuAV(title, avail_stream_both): ###menu displaying formats with both audio and video ######### 2nd loop
body = [urwid.Text(title), urwid.Divider()]
for c in avail_stream_both:
button = urwid.Button(str(c) + " ----->" + str(c.resolution) + "----->" + str((float(c.get_filesize())/1024)/1024))
urwid.connect_signal(button, 'click', chosen_URL, c)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
button = urwid.Button("Only Video/Audio Formats")
urwid.connect_signal(button, 'click', menuVAOnly)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
button = urwid.Button("EXIT")
urwid.connect_signal(button, 'click', exit_program)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
return urwid.ListBox(urwid.SimpleFocusListWalker(body))
##########################################################################333
def menuVAOnlyMenu(title, avail_stream_VideoO,avail_stream_audioO): ###menu displaying formats with only audio or video ## must handle cases with audio and video alone ## for 3rd loop
body = [urwid.Text(title), urwid.Divider()]
for x in avail_stream_VideoO:
button = urwid.Button(str(x).split('@',1)[0] + "---->" +x.resolution + "----->" + str((float(x.get_filesize())/1024)/1024))
urwid.connect_signal(button, 'click', chosen_URL, x)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
for x1 in avail_stream_audioO:
button = urwid.Button(str(x1))
urwid.connect_signal(button, 'click', chosen_URL, x1)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
button = urwid.Button("EXIT")
urwid.connect_signal(button, 'click', exit_program)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
return urwid.ListBox(urwid.SimpleFocusListWalker(body))
#################3333##################################################