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
python类LineBox()的实例源码
def __init__(self, text, width, host_view, loop = None):
self.running = False
self.lock = EasyLock()
self.loop = loop
self.overlay = urwid.Overlay(
urwid.LineBox(urwid.Text(text)), host_view, #urwid.SolidFill(),
'center', width, 'middle', None)
urwid.Frame.__init__(self, self.overlay)
def __init__(self, text, width, host_view, loop = None):
self.loop = loop
self.host_view = host_view
self.overlay = urwid.Overlay(
urwid.LineBox(urwid.Text(text)), host_view, #urwid.SolidFill(),
'center', width, 'middle', None)
urwid.Frame.__init__(self, self.overlay)
def __init__(self, websocket_url, **kwargs):
# Configuration stuff
self.frame = None
self.websocket_url = urllib.parse.urlparse(websocket_url)
self.total_connections = kwargs.get('total_connections', 250)
self._exiting = False
self.extra_headers = None
# Asyncio stuff
self.loop = asyncio.get_event_loop()
self.loop.set_exception_handler(self.handle_exceptions)
self.connection_semaphore = asyncio.Semaphore(kwargs.get('max_connecting_sockets', 15))
# Counts and buffers
self.global_message_counter = itertools.count()
self.socket_count = itertools.count(1)
self.sockets = OrderedDict()
self.ring_buffer = deque(maxlen=10)
if kwargs.get('header'):
self.extra_headers = dict([map(lambda x: x.strip(), kwargs['header'].split(':'))])
if kwargs.get('setup_tasks', True):
self.setup_tasks()
self.blinkboard = BlinkBoardWidget()
self.logger = LoggerWidget()
self.default_view = urwid.Pile([
self.blinkboard.default_widget,
(10, self.logger.default_widget)
])
self.logger_view = urwid.Pile([
self.logger.logger_widget,
])
self.graph_view = urwid.Pile([
self.logger.graph_widget,
])
self.small_blink_and_graph_view = urwid.Pile([
self.logger.graph_widget,
(10, urwid.LineBox(self.blinkboard.small_blinks)),
])
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, pubpen):
self.pubpen = pubpen
self.display_stack = []
self.blank = LineBox(urwid.SolidFill(' '), lline=None,
blcorner='?', tlcorner='?',
trcorner='\u252c', brcorner='\u2524')
self.background = urwid.WidgetPlaceholder(self.blank)
super().__init__(self.background)
# Widgets traded in and out of the main display area
self.market_display = MarketDisplay(self.pubpen)
self.cargo_order_dialog = CargoOrderDialog(self.pubpen)
self.travel_menu = TravelDisplay(self.pubpen)
self.game_menu = GameMenuDialog(self.pubpen)
self.port_display = PortDisplay(self.pubpen)
self.equip_order_dialog = EquipOrderDialog(self.pubpen)
self.financial_display = FinancialDisplay(self.pubpen)
self.display_map = {
'MarketDisplay': self.market_display,
'CargoOrderDialog': self.cargo_order_dialog,
'PortDisplay': self.port_display,
'EquipOrderDialog': self.equip_order_dialog,
'FinancialDisplay': self.financial_display,
'TravelDisplay': self.travel_menu,
'GameMenuDialog': self.game_menu,
'Blank': self.blank
}
self.dialogs = frozenset(n for n in self.display_map if n.endswith('Dialog'))
self.push_display('Blank')
urwid.connect_signal(self.market_display, 'close_market_display', self.pop_display)
urwid.connect_signal(self.market_display, 'open_cargo_order_dialog',
partial(self.push_display, 'CargoOrderDialog'))
urwid.connect_signal(self.cargo_order_dialog, 'close_cargo_order_dialog', self.pop_display)
urwid.connect_signal(self.port_display, 'open_equip_order_dialog',
partial(self.push_display, 'EquipOrderDialog'))
urwid.connect_signal(self.equip_order_dialog, 'close_equip_order_dialog', self.pop_display)
urwid.connect_signal(self.travel_menu, 'close_travel_menu', self.pop_display)
urwid.connect_signal(self.game_menu, 'close_game_menu', self.pop_display)
def graph_controls(self):
modes = self.controller.get_modes()
# setup mode radio buttons
self.mode_buttons = []
group = []
for m in modes:
rb = self.radio_button( group, m, self.on_mode_button )
self.mode_buttons.append( rb )
# setup animate button
self.animate_button = self.button( "", self.on_animate_button)
self.on_animate_button( self.animate_button )
self.offset = 0
self.animate_progress = self.progress_bar()
animate_controls = urwid.GridFlow( [
self.animate_button,
self.button("Reset", self.on_reset_button),
], 9, 2, 0, 'center')
if urwid.get_encoding_mode() == "utf8":
unicode_checkbox = urwid.CheckBox(
"Enable Unicode Graphics",
on_state_change=self.on_unicode_checkbox)
else:
unicode_checkbox = urwid.Text(
"UTF-8 encoding not detected")
self.animate_progress_wrap = urwid.WidgetWrap(
self.animate_progress)
l = [ urwid.Text("Mode",align="center"),
] + self.mode_buttons + [
urwid.Divider(),
urwid.Text("Animation",align="center"),
animate_controls,
self.animate_progress_wrap,
urwid.Divider(),
urwid.LineBox( unicode_checkbox ),
urwid.Divider(),
self.button("Quit", self.exit_program ),
]
w = urwid.ListBox(urwid.SimpleListWalker(l))
return w
def graph_controls(self):
modes = self.controller.get_modes()
# setup mode radio buttons
self.mode_buttons = []
group = []
for m in modes:
rb = self.radio_button( group, m, self.on_mode_button )
self.mode_buttons.append( rb )
# setup animate button
self.animate_button = self.button( "", self.on_animate_button)
self.on_animate_button( self.animate_button )
self.offset = 0
self.animate_progress = self.progress_bar()
animate_controls = urwid.GridFlow( [
self.animate_button,
self.button("Reset", self.on_reset_button),
], 9, 2, 0, 'center')
if urwid.get_encoding_mode() == "utf8":
unicode_checkbox = urwid.CheckBox(
"Enable Unicode Graphics",
on_state_change=self.on_unicode_checkbox)
else:
unicode_checkbox = urwid.Text(
"UTF-8 encoding not detected")
self.animate_progress_wrap = urwid.WidgetWrap(
self.animate_progress)
l = [ urwid.Text("Mode",align="center"),
] + self.mode_buttons + [
urwid.Divider(),
urwid.Text("Animation",align="center"),
animate_controls,
self.animate_progress_wrap,
urwid.Divider(),
urwid.LineBox( unicode_checkbox ),
urwid.Divider(),
self.button("Quit", self.exit_program ),
]
w = urwid.ListBox(urwid.SimpleListWalker(l))
return w
def __init__(self, return_fn):
# What is shown in menu
self.current_mode = None
# Sensor Applied
self.current_active_mode = None
self.no_malloc = False
title = urwid.Text(('bold text', u" Available Temperature Sensors \n"), 'center')
self.available_sensors = []
sensors_dict = dict()
try:
sensors_dict = psutil.sensors_temperatures()
except (AttributeError, IOError):
logging.debug("Unable to create sensors dict")
for key,value in sensors_dict.items():
sensor_name = key
for itr in range(len(value)):
sensor_label = ""
try:
sensor_label = value[itr].label
logging.debug("Sensor Label")
logging.debug(sensor_label)
except (IndexError):
pass
self.available_sensors.append(sensor_name +\
"," +str(itr) +\
"," + sensor_label)
group = []
self.sensor_buttons = []
for sensor in self.available_sensors:
rb = radio_button(group, sensor, self.on_mode_button)
self.sensor_buttons.append(rb)
#rb = radio_button(group, "INVALID", self.on_mode_button)
#self.sensor_buttons.append(rb)
self.return_fn = return_fn
cancel_button = urwid.Button('Cancel', on_press=self.on_cancel)
cancel_button._label.align = 'center'
apply_button = urwid.Button('Apply', on_press=self.on_apply)
apply_button._label.align = 'center'
if_buttons = urwid.Columns([apply_button,cancel_button])
self.titles = [title] + self.sensor_buttons + [if_buttons]
self.main_window = urwid.LineBox(ViListBox(self.titles))
def graph_controls(self):
""" Dislplay sidebar controls. i.e. buttons, and controls"""
modes = self.controller.get_modes()
# setup mode radio buttons
group = []
for m in modes:
rb = radio_button(group, m, self.on_mode_button)
self.mode_buttons.append(rb)
# Create list of buttons
control_options = [button("Reset", self.on_reset_button)]
if stress_installed:
control_options.append(button('Stress Options', self.on_stress_menu_open))
control_options.append(button('Temp Sensors', self.on_temp_sensors_menu_open))
control_options.append(button('Help', self.on_help_menu_open))
control_options.append(button('About', self.on_about_menu_open))
# Create the menu
animate_controls = urwid.GridFlow(control_options, 18, 2, 0, 'center')
if urwid.get_encoding_mode() == "utf8":
unicode_checkbox = urwid.CheckBox(
"Smooth Graph", state=False,
on_state_change=self.on_unicode_checkbox)
else:
unicode_checkbox = urwid.Text(
"UTF-8 encoding not detected")
install_stress_message = urwid.Text("")
if not stress_installed:
install_stress_message = urwid.Text(('button normal', u"(N/A) install stress"))
graph_checkboxes = [urwid.CheckBox(x.get_graph_name(), state=True,
on_state_change=lambda w, state, x=x: self.change_checkbox_state(x, state))
for x in self.available_graphs.values()]
unavalable_graphs = [urwid.Text(( "[N/A] " + x.get_graph_name()) ) for x in self.graphs.values() if x.source.get_is_available() == False]
graph_checkboxes += unavalable_graphs
buttons = [urwid.Text(('bold text', u"Modes"), align="center"),
] + self.mode_buttons + [
install_stress_message,
urwid.Divider(),
urwid.Text(('bold text', u"Control Options"), align="center"),
animate_controls,
urwid.Divider(),
self.refresh_rate_ctrl,
urwid.Divider(),
urwid.LineBox(urwid.Pile(graph_checkboxes)),
urwid.LineBox(unicode_checkbox),
urwid.Divider(),
button("Quit", self.exit_program),
]
return buttons