def __init__(self, view, address_book_ui): super(AddressBookPanel, self).__init__(view) self.rows = self.initialise_rows() self.add_child(H(view, 1, text='Addresses')) form = self.add_child(Form(view, 'address_table_form')) self.define_event_handler(self.events.delete_selected) def make_link_widget(view, row): return A.from_bookmark( view, address_book_ui.get_edit_bookmark(row.address, description='Edit')) def make_checkbox_widget(view, row): return PrimitiveCheckboxInput(form, row.fields.selected_by_user) def make_delete_selected_button(view): return Button(form, self.events.delete_selected) columns = [ StaticColumn(Field(label='Name'), 'name'), StaticColumn(EmailField(label='Email'), 'email_address'), DynamicColumn('', make_link_widget), DynamicColumn(make_delete_selected_button, make_checkbox_widget) ] table = Table(view, caption_text='All my friends', summary='Summary for screen reader') table.use_layout(TableLayout(striped=True)) table.with_data(columns, self.rows) form.add_child(table)
def test_table_layout_header_options(web_fixture, layout_scenarios): """TableLayout can style a table header row.""" data = [DataItem(1, 'T'), DataItem(2, 'H'), DataItem(3, 'E')] column_definitions = [ StaticColumn(Field(label='Row Number'), 'row'), StaticColumn(Field(label='Alpha'), 'alpha') ] layout = TableLayout(heading_theme=layout_scenarios.theme) table = Table(web_fixture.view).with_data(column_definitions, data) table.use_layout(layout) if layout_scenarios.theme is not None: assert layout.widget.thead.get_attribute( 'class') == '%s' % layout_scenarios.expected_css_class else: assert not layout.widget.thead.has_attribute('class')