Exemplo n.º 1
0
    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')
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
 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'
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 def disable(self):
     self._original = self._w
     self._w = urwid.WidgetDisable(self._w)