def __init__(self, pic, text):
content = self.get_content(text)
lbox = urwid.LineBox(urwid.Pile([DIV, urwid.Padding(
urwid.Columns([(8, pic), content], 4), left=3, right=3), DIV]))
self.__super.__init__(urwid.AttrMap(urwid.Pile(
[lbox]), 'image button', 'image button focus'))
python类Columns()的实例源码
def __init__(self, label="", label_width=15, next_callback=False):
self.label, self.next_callback = label, next_callback
self.edit = urwid.Padding(urwid.Edit(), left=1, right=1)
label = urwid.LineBox(
urwid.Text(label),
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' ',
bline=' ')
lbox = urwid.AttrMap(
urwid.LineBox(
self.edit,
tlcorner=' ',
tline=' ',
lline=' ',
trcorner=' ',
blcorner=' ',
rline=' ',
brcorner=' '),
'input',
'input focus')
cols = urwid.Columns([(label_width, label), lbox])
urwid.WidgetWrap.__init__(self, cols)
def __init__(self):
self.walker = urwid.SimpleFocusListWalker(contents=self.log_messages)
self.list_box = urwid.ListBox(self.walker)
self.graph = urwid.BarGraph(
attlist=['graph bg background', 'graph bg 1', 'graph bg 2'],
satt={
(1, 0): 'graph bg 1 smooth',
(2, 0): 'graph bg 2 smooth'
}
)
self.graph_widget = urwid.LineBox(self.graph, title=self.graph_title)
self.default_widget = urwid.Columns([
urwid.LineBox(
self.list_box,
title="Logger"
),
self.graph_widget
])
self.logger_widget = urwid.LineBox(
self.list_box,
title="Logger"
)
def print_thread(self, button, thread):
thr_no = self.board.thread_exists(int(thread))
thr_body = self.board.get_index()[thr_no]
replies = ur.SimpleFocusListWalker([])
subject = ("reverse_red", thr_body[1])
if subject[1] == "":
subject = (None, "")
op = self.parse_post(thr_body[2])
op_info = ur.Text([("reverse_green", op["name"]),
" " + op["stamp"] + " ", subject])
op_btn = CleanButton(
"No. " + op["id"], self.reply_box, op["id"])
op_widget = ur.AttrMap(ur.Columns(
[("pack", op_info), ("pack", op_btn)], 1), "reverse")
replies.extend([op_widget, op["text"], self.parent.div])
if len(thr_body) > 3:
for postno in range(3, len(thr_body)):
reply = self.parse_post(thr_body[postno])
reply_info = ur.Text(
[("green", reply["name"]), " " + reply["stamp"]])
reply_btn = CleanButton(
"No. " + reply["id"], self.reply_box, reply["id"])
reply_widget = ur.Columns(
[("pack", reply_info), ("pack", reply_btn)],
1)
replies.extend([reply_widget, reply["text"], self.parent.div])
contents = ur.ListBox(replies)
contents.set_focus(0)
self.loop.Widget = ur.Frame(
contents, self.parent.header, self.parent.footer, "body")
def add(self):
self.numbers.append(urwid.Text(str(len(self.numbers)+1) + '| ', align='right'))
if len(str(len(self.numbers)-1)) > self.width:
self.width += 1
new_col = urwid.Columns([(self.width+2, self.display.line_nums), self.display.listbox], focus_column=1)
self.display.top.contents['body'] = (new_col, None)
# this method simply deletes a line from the end of the line numbers
# note: we have to check that we didnt delete the last line or we get an index out of bounds!
def redraw_tabs(self):
# this is done to ensure that the bottom bar is re-drawn after opening files
foot_col = urwid.Columns(self.display.tabs)
foot = urwid.AttrMap(foot_col, 'footer')
if self.display.layout:
self.display.top.contents['header'] = (foot, None)
else:
self.display.top.contents['footer'] = (foot, None)
def toggle_line_numbers(self):
self.show_lnums = not self.show_lnums
if self.show_lnums:
self.line_nums.populate(self.listbox.lines)
self.body_col = urwid.Columns([(self.line_nums.width+2, self.line_nums), self.listbox], focus_column=1)
else:
self.body_col.contents.pop(0)
self.top.contents['body'] = (self.body_col, None)
self.update_line_numbers()
def __init__(self, pubpen):
self.pubpen = pubpen
username_label = urwid.Text('Username: ', align='right')
password_label = urwid.Text('Password: ', align='right')
self.username = urwid.Edit()
self.password = urwid.Edit()
login_button = urwid.Button('Login')
decorated_login_button = urwid.AttrMap(login_button, None, focus_map='reversed')
quit_button = urwid.Button('Quit')
decorated_quit_button = urwid.AttrMap(quit_button, None, focus_map='reversed')
buttons = urwid.Columns((
(len('Login') + 4, decorated_login_button),
(len('Quit') + 4, decorated_quit_button),
), focus_column=1)
labels = urwid.Pile([username_label, password_label])
self.fields = urwid.Pile([self.username, self.password, buttons],
focus_item=0)
entry_box = urwid.Columns([labels, self.fields])
self.status_message = urwid.Text(' ', align='center')
entry_with_status = urwid.Pile([entry_box, self.status_message])
padded_entry_with_status = urwid.Padding(entry_with_status, align='center')
self.display = urwid.Filler(padded_entry_with_status, valign='middle')
decorate = urwid.LineBox(self.display)
super().__init__(decorate)
self.focusable_widgets = (w for w in itertools.cycle((
((self.fields, 1),),
((self.fields, 2), (buttons, 0)),
((self.fields, 2), (buttons, 1)),
((self.fields, 0),)
)))
urwid.connect_signal(login_button, 'click', self.attempt_login)
urwid.connect_signal(quit_button, 'click', self.quit)
self.pubpen.subscribe('user.login_success', self.handle_login_success)
self.pubpen.subscribe('user.login_failure', self.handle_login_failure)
def __init__(self, pubpen):
self.pubpen = pubpen
#
# Always displayed widgets
#
self.menu_bar_window = MenuBarWindow(self.pubpen)
self.info_window = InfoWindow(self.pubpen)
self.main_window = MainWindow(self.pubpen)
self.msg_window = MessageWindow(self.pubpen)
pile = urwid.Pile((self.main_window,
(self.msg_window.height, self.msg_window),
))
cols = urwid.Columns((pile, (15, self.info_window)))
layout = urwid.Pile((
('pack', self.menu_bar_window),
('weight', 1, cols),
))
self.top = urwid.Frame(layout)
super().__init__(self.top)
tline = self.tline_widget[0]
self.status_bar = StatusBar(self.pubpen, spacer=tline.div_char)
self.tline_widget.contents.clear()
self.tline_widget.contents.extend((
(tline, self.tline_widget.options('given', 1, False)),
(self.status_bar, self.tline_widget.options('weight', 1, False)),
(tline, self.tline_widget.options('given', 1, False)),
))
def __init__(self, app):
super(StatusHeader, self).__init__(urwid.Columns([]))
self.app = app
self.title_widget = urwid.Text(u'Start')
self.error_widget = urwid.Text('')
self.offline_widget = urwid.Text('')
self.sync_widget = urwid.Text(u'Sync: 0')
self.held_widget = urwid.Text(u'')
self._w.contents.append((self.title_widget, ('pack', None, False)))
self._w.contents.append((urwid.Text(u''), ('weight', 1, False)))
self._w.contents.append((self.held_widget, ('pack', None, False)))
self._w.contents.append((self.error_widget, ('pack', None, False)))
self._w.contents.append((self.offline_widget, ('pack', None, False)))
self._w.contents.append((self.sync_widget, ('pack', None, False)))
self.error = None
self.offline = None
self.title = None
self.message = None
self.sync = None
self.held = None
self._error = False
self._offline = False
self._title = ''
self._message = ''
self._sync = 0
self._held = 0
self.held_key = self.app.config.keymap.formatKeys(keymap.LIST_HELD)
def __init__(self):
self.prefix_text = urwid.Text(u' \N{WATCH} ')
self.breadcrumbs = urwid.Columns([], dividechars=3)
self.display_widget = urwid.Columns(
[('pack', self.prefix_text), self.breadcrumbs])
super(BreadCrumbBar, self).__init__(self.display_widget)
def __init__(self, headers=[], columns=None):
if columns is None:
cols = [('pack', TableColumn([('pack', w)])) for w in headers]
else:
cols = [('pack', TableColumn([])) for x in range(columns)]
super(Table, self).__init__(
urwid.Columns(cols))
def __init__(self):
cols = [urwid.Text(u' Board'),
(ACTIVE_COL_WIDTH, urwid.Text(u'Active'))]
super(BoardListHeader, self).__init__(urwid.Columns(cols))
def __init__(self, app, project_key):
self.app = app
save_button = mywid.FixedButton(u'Save')
cancel_button = mywid.FixedButton(u'Cancel')
urwid.connect_signal(save_button, 'click',
lambda button:self._emit('save'))
urwid.connect_signal(cancel_button, 'click',
lambda button:self._emit('cancel'))
rows = []
buttons = [('pack', save_button),
('pack', cancel_button)]
buttons = urwid.Columns(buttons, dividechars=2)
if project_key:
with self.app.db.getSession() as session:
project = session.getProject(project_key)
project_name = project.name
else:
project_name = None
self.project_button = ProjectButton(self.app, project_key, project_name)
self.title_field = mywid.MyEdit(u'', edit_text=u'', ring=app.ring)
self.description_field = mywid.MyEdit(u'', edit_text='',
multiline=True, ring=app.ring)
for (label, w) in [
(u'Title:', self.title_field),
(u'Description:', self.description_field),
(u'Project:', ('pack', self.project_button)),
]:
row = urwid.Columns([(12, urwid.Text(label)), w])
rows.append(row)
rows.append(urwid.Divider())
rows.append(buttons)
pile = urwid.Pile(rows)
fill = urwid.Filler(pile, valign='top')
super(NewStoryDialog, self).__init__(urwid.LineBox(fill, 'New Story'))
def __init__(self, app):
self.app = app
save_button = mywid.FixedButton(u'Save')
cancel_button = mywid.FixedButton(u'Cancel')
urwid.connect_signal(save_button, 'click',
lambda button:self._emit('save'))
urwid.connect_signal(cancel_button, 'click',
lambda button:self._emit('cancel'))
rows = []
buttons = [('pack', save_button),
('pack', cancel_button)]
buttons = urwid.Columns(buttons, dividechars=2)
self.project_button = ProjectButton(self.app)
self.status_button = StatusButton(self.app)
self.assignee_button = AssigneeButton(self.app)
self.title_field = mywid.MyEdit(u'', edit_text=u'', ring=app.ring)
for (label, w) in [
(u'Project:', ('pack', self.project_button)),
(u'Title:', self.title_field),
(u'Status:', ('pack', self.status_button)),
(u'Assignee:', ('pack', self.assignee_button)),
]:
row = urwid.Columns([(12, urwid.Text(label)), w])
rows.append(row)
rows.append(urwid.Divider())
rows.append(buttons)
pile = urwid.Pile(rows)
fill = urwid.Filler(pile, valign='top')
super(NewTaskDialog, self).__init__(urwid.LineBox(fill, 'New Task'))
def __init__(self, app, board_key):
super(BoardView, self).__init__(urwid.Pile([]))
self.log = logging.getLogger('boartty.view.board')
self.searchInit()
self.app = app
self.board_key = board_key
self.worklist_keys = set()
self.title_label = urwid.Text(u'', wrap='clip')
self.description_label = urwid.Text(u'')
board_info = []
board_info_map={'story-data': 'focused-story-data'}
for l, v in [("Title", self.title_label),
("Description", self.description_label),
]:
row = urwid.Columns([(12, urwid.Text(('story-header', l), wrap='clip')), v])
board_info.append(row)
board_info = urwid.Pile(board_info)
self.listbox = urwid.ListBox(urwid.SimpleFocusListWalker([]))
self._w.contents.append((self.app.header, ('pack', 1)))
self._w.contents.append((urwid.Divider(), ('pack', 1)))
self._w.contents.append((self.listbox, ('weight', 1)))
self._w.set_focus(2)
self.listbox.body.append(board_info)
self.listbox.body.append(urwid.Divider())
self.listbox_board_start = len(self.listbox.body)
lane_columns = urwid.Columns([], dividechars=1)
self.listbox.body.append(lane_columns)
self.lane_manager = mywid.ListUpdateManager(lane_columns)
self.refresh()
self.listbox.set_focus(1)
def show_channel_selector(self):
self.pile.contents = [
(self.w_lb, self.pile.options()), (urwid.Columns(
[('pack', self.w_text), ('weight', 1, self.w_typing)]),
self.pile.options()),
(self.chat_widget.w_channel_cols, self.pile.options())
]
self.pile.focus_position = 2
def hide_channel_selector(self):
self.pile.contents = [
(self.w_lb, self.pile.options()),
(urwid.Columns(
[('pack', self.w_text), ('weight', 1, self.w_typing)]),
self.pile.options()),
]
self.pile.focus_position = 0
def __init__(self, chat_widget):
self.chat_widget = chat_widget
self.w_cols = urwid.Columns([])
self._selectable = True
self.update_columns()
self.__super.__init__(self.w_cols)
def __init__(self, ui):
self.ui = ui
self.w_cols = urwid.Columns([])
self._selectable = True
self.update_columns()
self.__super.__init__(self.w_cols)