def build(self): #header self.g_servers = urwid.Columns([]) self.g_users = urwid.Columns([]) g_head = urwid.AttrMap(urwid.Columns((('weight', 3, self.g_servers), self.g_users)), 'head') #main self.g_output = urwid.ListBox(self.g_output_list) self.g_output_wrap = urwid.LineBox(urwid.AttrMap(self.g_output, 'output')) self.g_stats = urwid.Text("") #player menu def escape(): self.g_frame.focus_position='footer' self.g_pmenu = PMenuWrap(self.pmenu_actions, self.pmenu_reasons, self.run_command, escape) g_sidebar = urwid.Pile(( ('pack', urwid.AttrMap(urwid.LineBox(self.g_stats, title='stats'), 'stats')), urwid.AttrMap(urwid.LineBox(self.g_pmenu, title="players"), 'menu'))) g_main = urwid.Columns(( urwid.WidgetDisable(urwid.AttrMap(self.g_output_wrap, 'console')), ('fixed', 31, g_sidebar))) #foot self.g_prompt = Prompt(self.get_players, self.run_command, ' > ') g_prompt = urwid.AttrMap(self.g_prompt, 'prompt', 'prompt_focus') self.g_frame = urwid.Frame(g_main, g_head, g_prompt, focus_part='footer')
def TextField(keyword, label, width, default_value=None, tooltip=None, toolbar=None, disabled=False, ispassword=False): """Returns an Urwid Edit object.""" if ispassword: mask = "*" else: mask = None if not tooltip: edit_obj = urwid.Edit(('important', label.ljust(width)), default_value, mask=mask, wrap='clip') else: edit_obj = TextWithTip(('important', label.ljust(width)), default_value, tooltip, toolbar, mask=mask, wrap='clip') wrapped_obj = urwid.AttrWrap(edit_obj, 'editbx', 'editfc') if disabled: wrapped_obj = urwid.WidgetDisable( urwid.AttrWrap(edit_obj, 'important', 'editfc')) # Add get_edit_text and set_edit_text to # wrapped_obj so we can use later wrapped_obj.set_edit_text = edit_obj.set_edit_text wrapped_obj.get_edit_text = edit_obj.get_edit_text return wrapped_obj
def generate_table(self, title, binds, headers): rows = [] for row in binds: cells = [] for idx, cell in enumerate(row): if headers: cells.append({ 'value': cell, 'weight': headers[idx].get('weight'), 'align': headers[idx].get('align') }) else: cells.append(TableCell(cell)) rows.append(TableRow(cells)) table = DeadTable() if headers: table.set_header( urwid.Pile([ TableRow(headers), urwid.BoxAdapter( urwid.SolidFill('-'), 1, ) ])) table.set_rows(rows) return urwid.WidgetDisable(table)
def update_place(self, place): if self.log: # disable interaction with previous place self.log[-1] = urwid.WidgetDisable(self.log[-1]) self.log.append(urwid.Pile([place.heading])) if len(place.interactions) > 0: for i in place.interactions: self.log.append(i) self.top.focus_position = len(self.log) - 1 self.place = place self.place.initialize()
def input(self, prompt, callback, default=''): def wrapped_callback(*args, **kwargs): self.contents['body'] = ( self._expl_pane, *self.contents['body'][1:]) self.focus_position = 'body' return callback(*args, **kwargs) self._expl_footer.input(prompt, wrapped_callback, default=default) self.contents['body'] = ( urwid.WidgetDisable(self._expl_pane), *self.contents['body'][1:] ) self.focus_position = 'footer'
def create_new_rant_button(self): enabled_btn = urwid.AttrMap( urwid.Button( "New Rant", self.parent_widget.get_trigger_show_new_rant_widget()), 'button normal', 'button select') disabled_btn = urwid.WidgetDisable( urwid.AttrMap(urwid.Button("New Rant", None), 'button disabled', 'button disabled')) self.new_rant_button = urwid.Pile([enabled_btn]) def action(is_logged): if is_logged: self.new_rant_button.contents[0] = ( enabled_btn, self.new_rant_button.contents[0][1]) else: self.new_rant_button.contents[0] = ( disabled_btn, self.new_rant_button.contents[0][1]) self._is_logged_subscription = dev_rant_service.is_logged.subscribe( action)
def update_place(self, place): if self.log: # disable interaction with previous place self.log[-1] = urwid.WidgetDisable(self.log[-1]) self.log.append(urwid.Pile([place.heading] + place.choices)) self.top.focus_position = len(self.log) - 1 self.place = place
def disable(self): self._original = self._w self._w = urwid.WidgetDisable(self._w)