All pastes #1367514 Raw Edit

Untitled

public python v1 · immutable
#1367514 ·published 2009-03-21 21:33 UTC
rendered paste body
import urwidimport urwid.raw_displayclass BundleTableRow(urwid.Columns):    def __init__(self, controller):        self.controller = controller        self.name = urwid.Text("XXX" + str(id(controller)))        urwid.Columns.__init__(self, [                ('weight', 0.6, self.name),                ])        class BundleListWalker(urwid.ListWalker):    def __init__(self, model):        self.model = model        self.bundles = list()        self.focus = 0            def set_focus(self, focus):        if not self.bundles:            return None, None        if focus < 0 or focus >= len(self.bundles):            focus = len(self.bundles) - 1        self.focus = focus        return self.bundles[focus], focus            def get_focus(self):        if not self.bundles:            return None, None        return self.bundles[self.focus], self.focus    def get_next(self, pos):        pos = pos + 1        if pos >= len(self.bundles):            return None, None        return self.bundles[pos], pos    def get_prev(self, pos):        pos = pos - 1        if pos < 0:            return None, None        return self.bundles[pos], pos        def reloadTable(self):        """        Reload the table.        """        del self.bundles[:]        for bundle in ['a', 'b', 'c']:            self.bundles.append(                urwid.AttrWrap(                    BundleTableRow(bundle),                    'unfocused',                    'focused'                    )                )class X(urwid.Frame):    def __init__(self):        self.bundleTable = BundleListWalker(self)        self.listbox = urwid.ListBox(self.bundleTable)        self.detail = urwid.ListBox([])        self.pile = urwid.Pile([                self.listbox,                ('flow', urwid.AttrWrap(urwid.Divider('-'), 'header')),                self.detail,                ('flow', urwid.AttrWrap(urwid.Divider('-'), 'header')),            ])        urwid.Frame.__init__(self, urwid.AttrWrap(self.pile, 'body'))        palette = [    ('body',    'light gray','black', 'standout'),    ('reverse', 'light gray','black'),    ('header',  'white','dark red', 'bold'),    ('important','dark blue','light gray', ('standout','underline')),    ('unfocused',	'light gray', 'black'),    ('focused', 	'light gray', 'dark blue'),        ('editfc','white', 'dark blue', 'bold'),    ('editbx','light gray', 'dark blue'),    ('editcp','black','light gray', 'standout'),    ('bright','dark gray','light gray', ('bold','standout')),    ('buttn','black','dark cyan'),    ('buttnf','white','dark blue','bold'),    ]ui = urwid.raw_display.Screen()ui.register_palette(palette)def run():    size = ui.get_cols_rows()    view = X()    view.bundleTable.reloadTable()    while True:        canvas = view.render(size, focus=1)        ui.draw_screen( size, canvas )        keys = None        while not keys:             keys = ui.get_input()        for k in keys:            if k == 'window resize':                size = self.ui.get_cols_rows()            else:                view.keypress(size, k)ui.run_wrapper(run)