def main(self):
self.loop = urwid.MainLoop(self.view, self.palette,
unhandled_input=self.unhandled_keypress)
self.loop.run()
python类MainLoop()的实例源码
def main(self):
self.loop = urwid.MainLoop(self.view, self.palette,
unhandled_input=self.unhandled_keypress)
self.loop.run()
def main(self):
self.loop = urwid.MainLoop(self.view, self.palette, screen=Screen(),
input_filter=self.input_filter)
self.loop.run()
# on exit write the formula and the result to the console
expression, result = self.get_expression_result()
print "Paste this expression into a new Column Calculator session to continue editing:"
print expression
print "Result:", result
def create_urwid_mainloop(self):
evl = urwid.TwistedEventLoop(manage_reactor=False)
loop = urwid.MainLoop(self.toplevel, screen=self.screen,
event_loop=evl,
unhandled_input=self.mind.unhandled_key,
palette=self.palette)
self.screen.loop = loop
loop.run()
return loop
def main(self):
self.view, self.exit_view = self.setup_view()
self.loop = urwid.MainLoop(self.view, self.palette,
unhandled_input=self.unhandled_input)
self.loop.run()
def main(self):
"""Run the program."""
self.loop = urwid.MainLoop(self.view, self.palette,
unhandled_input=self.unhandled_input)
self.loop.run()
# on exit, write the flagged filenames to the console
names = [escape_filename_sh(x) for x in get_flagged_names()]
print " ".join(names)
def main(self):
self.loop = urwid.MainLoop(self.view, self.view.palette)
self.loop.run()
def main(self):
"""Run the program."""
self.loop = urwid.MainLoop(self.view, self.palette,
unhandled_input=self.unhandled_input)
self.loop.run()
def _setup_ui(self):
email = input('???? (Email??): ')
password = getpass.getpass('????: ')
api = DoubanFMApi()
api.login(email, password)
songs = api.get_redheart_songs()
# ??
self.title = urwid.Text('')
self._update_title()
divider = urwid.Divider()
header = urwid.Padding(urwid.Pile([divider, self.title, divider]), left=4, right=4)
# ????
index = 0
for song in songs:
self.btns.append(SongButton(song, self._on_item_pressed, index))
index += 1
self.song_listbox = SongListBox(self.btns)
# ??
self.main = urwid.Padding(
urwid.Frame(self.song_listbox, header=header, footer=divider),
left=4, right=4)
# ??????
urwid.register_signal(
SongListBox, ['exit', 'stop', 'next_song', 'change_mode'])
urwid.connect_signal(self.song_listbox, 'exit', self._on_exit)
urwid.connect_signal(self.song_listbox, 'stop', self.stop_song)
urwid.connect_signal(self.song_listbox, 'next_song', self.next_song)
urwid.connect_signal(self.song_listbox, 'change_mode', self.change_mode)
self.loop = urwid.MainLoop(self.main, palette=self.palette)
self.loop.screen.set_terminal_properties(colors=256)
def run(self):
self.loop = urwid.MainLoop(None, palette, unhandled_input=self.keystroke)
self.show_loading('Log In', 12)
self.t = Thread(target=self.run_retrieve_home)
self.t.start()
try:
self.loop.run()
except KeyboardInterrupt:
self.logger.info('Keyboard interrupt')
except Exception,e:
self.logger.exception("Fatal error in main loop")
finally:
self.clear_thread()
sys.exit()
def loop(self, handle_mouse=False):
self.eloop = urwid.MainLoop(
self, self.PALLETE, handle_mouse=handle_mouse)
self._eloop_thread = threading.current_thread()
self.eloop.run()
def main(self):
self.loop = MainLoop(self.view, DEFAULT_PALETTE, handle_mouse = self.handle_mouse)
self.animate_graph()
try:
self.loop.run()
except (ZeroDivisionError):
logging.debug("Some stat caused divide by zero exception. Exiting")
self.exit_program()
def select_project(project_list, path_callback):
max_width = len(max(project_list, key=len))
f = ProjectSelector(project_list, 'normal', 'highlighted', 'selected')
def refresh_list(key=''):
if key:
if key in ('delete', 'backspace'):
f.remove_key()
else:
if key in 'abcdefghijklmnopqrstuvwxyz- .0123456789':
f.add_key(key)
s = f.render()
txt.set_text(s)
def exit_on_q(key):
if key.__class__ is not str:
return
if key in ('Q',):
raise urwid.ExitMainLoop()
if key == 'up':
f.up()
if key == 'down':
f.down()
if key == 'enter':
path_callback(f.select())
raise urwid.ExitMainLoop()
key = key.lower()
refresh_list(key)
palette = [
('normal', 'light gray', ''),
('selected', 'yellow, bold', ''),
('highlighted', 'black, bold', 'yellow'),
('quit button', 'light red, bold', ''),
('enter button', 'light green, bold', '')
]
txt = urwid.Text('', align='left')
fill = urwid.Filler(txt)
pad = urwid.Padding(fill, align='center', width=max_width+4)
box = urwid.LineBox(pad, title="Projects")
footer = urwid.Text(['Start typing to search. Use arrow keys to navigate. Press (', ('enter button', 'Enter'), ') to select project. ', 'Press (', ('quit button', 'Q'), ') to exit.'])
frame = urwid.Frame(body=box, footer=footer)
loop = urwid.MainLoop(frame, palette, unhandled_input=exit_on_q)
refresh_list()
loop.run()
def __init__(self, discord_client):
self.discord = discord_client
self.tabs = {}
self.w_tabs = TabSelector(self)
self.frame = urwid.Frame(
urwid.Filler(
urwid.Text(
"????????????????????????????????????\n"
"????????????????????????????????????\n"
"????????????????????????????????????\n"
" v0.2.4\n"
" \n"
" \n"
" < Logging in... Hang tight! > \n"
" --------------------------- \n"
" \ ^__^ \n"
" \ (oo)\_______ \n"
" (__)\ )\/\ \n"
" ||----w | \n"
" || || \n"
" \n"
" \n"
" \n",
align=urwid.CENTER)),
header=self.w_tabs)
HasModal.__init__(self, self.frame)
self.urwid_loop = urwid.MainLoop(
self.w_placeholder,
palette=MainUI.palette,
unhandled_input=lambda key: self._keypress(None, key),
event_loop=urwid.AsyncioEventLoop(loop=self.discord.loop),
pop_ups=True)
def refresh(_loop, _data):
_loop.draw_screen()
_loop.set_alarm_in(2, refresh)
self.urwid_loop.set_alarm_in(0.2, refresh)
self.urwid_loop.start()
def summon():
"""summons the classic bsod"""
sys_info = " {} {} ".format(platform.system(), platform.release())
error2 = "{:02x}".format(random.randint(0, 17)).upper()
error4 = "{:04x}".format(random.randint(0, 4095)).upper()
error8 = "{:08x}".format(random.randint(0, 68719476736)).upper()
message = """
An error has occurred. To continue:
Press Enter to return to {}, or
Press CTRL+ALT+DEL to restart your computer. If you do this,
you will lose any unsaved information in all open applications.
Error: {} : {} : {}
""".format(platform.system(), error2, error4, error8)
end = "Press any key to continue "
bg_map = urwid.AttrMap(urwid.SolidFill(' '), 'bg')
body = urwid.Filler(
urwid.AttrMap(
urwid.Text(message, align='left'),
'text'))
body_text = urwid.Overlay(
body, bg_map,
'center', 63,
'middle', 10,
63, 10)
continue_ln = urwid.AttrMap(
urwid.Edit(end, align='center'),
'text')
title_txt = urwid.AttrMap(
urwid.Text(sys_info, align='center'),
'title')
fill_scrn = urwid.Overlay(
urwid.Filler(title_txt), bg_map,
'center', len(sys_info),
'middle', 1,
len(sys_info), 1)
text_stack = urwid.Filler(urwid.Pile([(1, fill_scrn),
(10, body_text),
('pack', continue_ln)]))
bg_fill = urwid.AttrMap(text_stack, 'bg')
loop = urwid.MainLoop(bg_fill, PALETTE, input_filter=exitscreen)
loop.screen.set_terminal_properties(colors=256)
loop.run()
rosbag-record-param-generator.py 文件源码
项目:my_ros_tools
作者: groundmelon
项目源码
文件源码
阅读 27
收藏 0
点赞 0
评论 0
def __init__(self, output_prefix=None):
self.exit_message = None
self.output_prefix = output_prefix
text_header = (u"Command Generation for 'rosbag record' ")
buttons = OrderedDict()
buttons['quit'] = urwid.Button(u"Quit(ESC/q)", self.on_quit)
buttons['save'] = dialog.PopUpButton(u"Save(F2)",
self.on_save,
prompt_text=u"Input file name:",
default_text=u"record.sh")
buttons['mark'] = urwid.Button(u"Mark all(F3)", self.on_mark_all)
buttons['unmark'] = urwid.Button(u"Unmark all(F4)", self.on_unmark_all)
buttons['refresh'] = urwid.Button(u"Refresh(F5)", self.on_refresh)
self.buttons = buttons
# blank = urwid.Divider()
header = urwid.AttrWrap(urwid.Text(text_header, align='center'), 'header')
button_bar = urwid.GridFlow(
[urwid.AttrWrap(btn, 'buttn', 'buttnf')
for (key, btn) in buttons.iteritems()], 18, 3, 1, 'left')
status_bar = urwid.AttrWrap(urwid.Text(u""), 'footer')
footer = urwid.Pile([button_bar, status_bar])
self.listwalker = urwid.SimpleListWalker(self.create_listbox_from_ros())
listbox = urwid.ListBox(self.listwalker)
body = urwid.AttrWrap(listbox, 'body')
self.frame = urwid.Frame(body=body, header=header, footer=footer)
self.frame_focus_table = dict()
self.frame_focus_table[body] = 'footer'
self.frame_focus_table[footer] = 'body'
palette = [
('body', 'white', 'black', 'standout'),
('reverse', 'light gray', 'black'),
('header', 'white', 'dark blue', 'bold'),
('footer', 'black', 'light gray'),
('important', 'dark blue', 'light gray', ('standout', 'underline')),
('editfc', 'white', 'dark blue', 'bold'),
('editbx', 'light gray', 'dark blue'),
('editcp', 'black', 'light gray', 'standout'),
('bright', 'dark gray', 'light gray', ('bold', 'standout')),
('buttn', 'black', 'light cyan'),
('buttnf', 'white', 'dark blue', 'bold'),
('popbg', 'white', 'dark gray'),
]
self.show_msg = status_bar.set_text
screen = urwid.raw_display.Screen()
self.mainloop = urwid.MainLoop(self.frame, palette, screen,
unhandled_input=self.unhandled, pop_ups=True)
# UI functions
def key_test():
screen = Screen()
header = urwid.Text("Values from get_input(). Q exits.")
header = urwid.AttrWrap(header,'header')
lw = urwid.SimpleListWalker([])
listbox = urwid.ListBox(lw)
listbox = urwid.AttrWrap(listbox, 'listbox')
top = urwid.Frame(listbox, header)
def input_filter(keys, raw):
if 'q' in keys or 'Q' in keys:
raise urwid.ExitMainLoop
t = []
a = []
for k in keys:
if type(k) == tuple:
out = []
for v in k:
if out:
out += [', ']
out += [('key',repr(v))]
t += ["("] + out + [")"]
else:
t += ["'",('key',k),"' "]
rawt = urwid.Text(", ".join(["%d"%r for r in raw]))
if t:
lw.append(
urwid.Columns([
('weight',2,urwid.Text(t)),
rawt])
)
listbox.set_focus(len(lw)-1,'above')
return keys
loop = urwid.MainLoop(top, [
('header', 'black', 'dark cyan', 'standout'),
('key', 'yellow', 'dark blue', 'bold'),
('listbox', 'light gray', 'black' ),
], screen, input_filter=input_filter)
try:
old = screen.tty_signal_keys('undefined','undefined',
'undefined','undefined','undefined')
loop.run()
finally:
screen.tty_signal_keys(*old)
def __init__(self, revert_order, remove_bash_prefix, remove_zsh_prefix, regexp, case_sensitive,
remove_duplicates, show_hits, infile):
self.show_hits = show_hits
self.regexp_modifier = regexp
self.case_modifier = case_sensitive
self.remove_bash_prefix = remove_bash_prefix
self.list_items = []
if revert_order:
lines = reversed(infile.readlines())
else:
lines = infile
for line in lines:
if remove_bash_prefix:
line = line.split(None, 1)[1].strip()
if remove_zsh_prefix:
line = re.split('\s+', line, maxsplit=4)[-1]
if 'selecta <(history)' not in line:
if not remove_duplicates or line not in self.list_items:
self.list_items.append(line)
self.list_item_widgets = []
self.line_count_display = LineCountWidget('')
self.search_edit = SearchEdit(edit_text='')
self.modifier_display = urwid.Text('')
urwid.connect_signal(self.search_edit, 'done', self.edit_done)
urwid.connect_signal(self.search_edit, 'toggle_case_modifier', self.toggle_case_modifier)
urwid.connect_signal(self.search_edit, 'toggle_regexp_modifier', self.toggle_regexp_modifier)
urwid.connect_signal(self.search_edit, 'change', self.edit_change)
header = urwid.AttrMap(urwid.Columns([
urwid.AttrMap(self.search_edit, 'input', 'input'),
self.modifier_display,
('pack', self.line_count_display),
], dividechars=1, focus_column=0), 'head', 'head')
self.item_list = urwid.SimpleListWalker(self.list_item_widgets)
self.listbox = ResultList(self.item_list)
urwid.connect_signal(self.listbox, 'resize', self.list_resize)
self.view = urwid.Frame(body=self.listbox, header=header)
self.loop = urwid.MainLoop(self.view, palette, unhandled_input=self.on_unhandled_input)
self.loop.screen.set_terminal_properties(colors=256)
self.line_count_display.update(self.listbox.last_size, len(self.item_list))
# TODO workaround, when update_list is called directly, the linecount widget gets not updated
self.loop.set_alarm_in(0.01, lambda *loop: self.update_list(''))
self.loop.run()
def setTrace(self, trace, contexts):
self.operations = trace
self.contexts = contexts
ops_view = urwid.Text(self.getOp())
mem_view = urwid.Text(self.getMem())
stack_view = urwid.Text(self.getStack())
trace_view = urwid.Text(self.getTrace())
source_view = urwid.Text(self.getSource())
help_view = urwid.Text(self.getHelp())
# palettes are currently not used
palette = [
('banner', 'black', 'light gray'),
('streak', 'black', 'dark red'),
('bg', 'black', 'dark blue'),]
palette=[
('headings', 'white,underline', 'black', 'bold,underline'), # bold text in monochrome mode
('body_text', 'dark cyan', 'light gray'),
('buttons', 'yellow', 'dark green', 'standout'),
('section_text', 'body_text'), # alias to body_text
]
self.ops_view = ops_view
self.mem_view = mem_view
self.stack_view = stack_view
self.trace_view = trace_view
self.source_view = source_view
self.help_view = help_view
top = wrap(urwid.Columns([
urwid.Pile([
wrap(ops_view,"Op"),
wrap(trace_view, "Trace")]
),
urwid.Pile([
wrap(mem_view,"Memory"),
wrap(stack_view, "Stack"),
wrap(source_view, "Source"),
])
]),"Retromix")
horiz = urwid.Pile([top, wrap(help_view,"Help")])
fill = urwid.Filler(horiz, 'top')
#self.dbg("Loaded %d operations" % len(self.operations) )
loop = urwid.MainLoop(fill, palette, unhandled_input=lambda input: self.show_or_exit(input))
loop.run()