def get_columns(self): return [Column('branch.description', title=_('Branch Name'), data_type=str, expand=True), ]
def get_columns(self): return [Column('name', _('Role'), str, sorted=True, expand=True)]
def get_columns(self): self._status_col = SearchColumn('status_name', title=_('Status'), data_type=str, width=80, visible=True, search_attribute='status', valid_values=self._get_status_values()) cols = [ IdentifierColumn('identifier', title=_('Sale #'), sorted=True), SearchColumn('coupon_id', title=_('Coupon #'), width=100, data_type=int, visible=False), SearchColumn('paid', title=_('Paid'), width=120, data_type=bool, visible=False), SearchColumn('open_date', title=_('Open date'), width=120, data_type=date, justify=Gtk.Justification.RIGHT, visible=False), SearchColumn('close_date', title=_('Close date'), width=120, data_type=date, justify=Gtk.Justification.RIGHT, visible=False), SearchColumn('confirm_date', title=_('Confirm date'), data_type=date, justify=Gtk.Justification.RIGHT, visible=False, width=120), SearchColumn('cancel_date', title=_('Cancel date'), width=120, data_type=date, justify=Gtk.Justification.RIGHT, visible=False), SearchColumn('return_date', title=_('Return date'), width=120, data_type=date, justify=Gtk.Justification.RIGHT, visible=False), SearchColumn('expire_date', title=_('Expire date'), width=120, data_type=date, justify=Gtk.Justification.RIGHT, visible=False), self._status_col ] if api.sysparam.get_bool('USE_SALE_TOKEN'): cols.append( Column('token_str', title=_(u'Sale token'), data_type=str, visible=True)) cols.extend([ SearchColumn('client_name', title=_('Client'), data_type=str, width=140, expand=True, ellipsize=Pango.EllipsizeMode.END), SearchColumn('client_fancy_name', title=_('Client fancy name'), data_type=str, width=140, expand=True, visible=False, ellipsize=Pango.EllipsizeMode.END), SearchColumn('salesperson_name', title=_('Salesperson'), data_type=str, width=130, ellipsize=Pango.EllipsizeMode.END), SearchColumn('total_quantity', title=_('Items'), data_type=decimal.Decimal, width=60, format_func=format_quantity), SearchColumn('total', title=_('Gross total'), data_type=currency, width=120, search_attribute='_total'), SearchColumn('net_total', title=_('Net total'), data_type=currency, width=120, search_attribute='_net_total') ]) return cols
def _setup_widgets(self): adjustment = Gtk.Adjustment(lower=0, upper=MAX_INT, step_increment=1) self.purchase_items.set_columns([ Column('code', title=_('Code'), data_type=str, searchable=True, visible=False), Column('barcode', title=_('Barcode'), data_type=str, searchable=True, visible=False), Column('description', title=_('Description'), data_type=str, expand=True, searchable=True, sorted=True), Column('category_description', title=_('Category'), data_type=str, width=120), Column('remaining_quantity', title=_('Qty'), data_type=int, format_func=format_quantity, expand=True), Column('quantity', title=_('Qty to receive'), data_type=int, editable=True, spin_adjustment=adjustment, format_func=format_quantity), Column('unit_description', title=_('Unit'), data_type=str, width=50), Column('cost', title=_('Cost'), data_type=currency, format_func=get_formatted_cost, width=90), Column('ipi_value', title=_('IPI'), data_type=currency, visible=False, format_func=get_formatted_price, editable=True, width=90), Column('icms_st_value', title=_('ICMS ST'), data_type=currency, visible=False, format_func=get_formatted_price, editable=True, width=90), Column('total', title=_('Total'), data_type=currency, width=100) ]) # We must clear the ObjectTree before self.purchase_items.clear() for item in self._get_pending_items(with_children=False): self.purchase_items.append(None, item) for child in item.children_items: self.purchase_items.append(item, child) self.purchase_items.set_cell_data_func( self._on_purchase_items__cell_data_func)
def _get_columns(self): return [Column('description', title=_('Description'), data_type=str, width=300, sorted=True), ColoredColumn('value', title=_('Amount'), data_type=currency, color='red', data_func=lambda x: x < 0)]
def testAttribute(self): column = Column('foo') self.assertEqual(column.attribute, "foo")
def construct(self, name, gtype, properties): return Column(name)
from kiwi.python import enum from kiwi.ui.objectlist import Column, ObjectList class FruitStatus(enum): (AVAILABLE, SOLD_OUT, ROTTEN) = range(3) class Fruit: def __init__(self, name, status): self.name = name self.status = status fruits = ObjectList([ Column('name', data_type=str), Column('status', title="Current status", data_type=FruitStatus, editable=True) ]) for name, status in [('Apple', FruitStatus.AVAILABLE), ('Pineapple', FruitStatus.SOLD_OUT), ('Kiwi', FruitStatus.AVAILABLE), ('Banana', FruitStatus.ROTTEN), ('Melon', FruitStatus.AVAILABLE)]: fruits.append(Fruit(name, status)) window = Gtk.Window() window.connect('delete-event', Gtk.main_quit)
class QuoteSupplierStep(WizardEditorStep): gladefile = 'QuoteSupplierStep' model_type = PurchaseOrder # Class attribute so we can test it easier product_columns = [ Column('description', title=_(u'Product'), data_type=str, expand=True)] def __init__(self, wizard, previous, store, model): WizardEditorStep.__init__(self, store, wizard, model, previous) self._setup_widgets() def _setup_widgets(self): self.quoting_list.set_columns(self._get_columns()) self._populate_quoting_list() if not len(self.quoting_list) > 0: info(_(u'No supplier have been found for any of the selected ' 'items.\nThis quote will be cancelled.')) self.wizard.finish() def _get_columns(self): return [Column('selected', title=" ", data_type=bool, editable=True), Column('supplier.person.name', title=_('Supplier'), data_type=str, sorted=True, expand=True), Column('products_per_supplier', title=_('Supplied/Total'), data_type=str)] def _update_widgets(self): selected = self.quoting_list.get_selected() self.print_button.set_sensitive(selected is not None) self.view_products_button.set_sensitive(selected is not None) def _populate_quoting_list(self): # populate the quoting list by finding the suppliers based on the # products list quotes = {} total_items = 0 # O(n*n) for item in self.model.get_items(): total_items += 1 sellable = item.sellable product = sellable.product for supplier_info in product.suppliers: supplier = supplier_info.supplier if supplier is None: continue if supplier not in quotes.keys(): quotes[supplier] = [sellable] else: quotes[supplier].append(sellable) for supplier, items in quotes.items(): total_supplier_items = len(items) per_supplier = _(u"%s/%s") % (total_supplier_items, total_items) self.quoting_list.append(Settable(supplier=supplier, items=items, products_per_supplier=per_supplier, selected=True)) def _print_quote(self): selected = self.quoting_list.get_selected() self.model.supplier = selected.supplier print_report(PurchaseQuoteReport, self.model) def _generate_quote(self, selected): # we use our model as a template to create new quotes quote = self.model.clone() # we need to overwrite some values: quote.group = PaymentGroup(store=self.store) include_all = self.include_all_products.get_active() for item in self.model.get_items(): if item.sellable in selected.items or include_all: quote_item = item.clone() quote_item.order = quote quote.supplier = selected.supplier self.wizard.quote_group.add_item(quote) self.wizard.quote = quote self.store.commit() def _show_products(self): selected = self.quoting_list.get_selected() title = _(u'Products supplied by %s') % selected.supplier.person.name run_dialog(SimpleListDialog, self.wizard, self.product_columns, selected.items, title=title) def _show_missing_products(self): missing_products = set([i.sellable for i in self.model.get_items()]) for quote in self.quoting_list: if quote.selected: missing_products = missing_products.difference(quote.items) if len(missing_products) == 0: break run_dialog(SimpleListDialog, self.wizard, self.product_columns, missing_products, title=_(u'Missing Products')) def _update_wizard(self): # we need at least one supplier to finish this wizard can_finish = any([i.selected for i in self.quoting_list]) self.wizard.refresh_next(can_finish) # # WizardStep hooks # def validate_step(self): # I am using validate_step as a callback for the finish button for item in self.quoting_list: if item.selected: self._generate_quote(item) return True def has_next_step(self): return False def post_init(self): self.register_validate_function(self.wizard.refresh_next) self.force_validation() # # Kiwi Callbacks # def on_print_button__clicked(self, widget): self._print_quote() def on_missing_products_button__clicked(self, widget): self._show_missing_products() def on_view_products_button__clicked(self, widget): self._show_products() def on_quoting_list__selection_changed(self, widget, item): self._update_widgets() def on_quoting_list__cell_edited(self, widget, item, cell): self._update_wizard() def on_quoting_list__row_activated(self, widget, item): self._show_products()
def get_columns(self): cols = [SearchColumn('brand', title=_('Brand'), data_type=str, sorted=True, expand=True), Column('quantity', title=_('Quantity'), data_type=Decimal)] return cols
def get_columns(self): return [Column('branch_name', title=_('Branch'), data_type=str, expand=True), Column('stock', title=_('In Stock'), data_type=Decimal, format_func=format_data)]
def get_columns(self): if sysparam.get_bool('SHOW_FULL_DATETIME_ON_RECEIVABLE'): get_date = datetime.datetime else: get_date = datetime.date return [ IdentifierColumn('identifier', title=_('Payment #')), SearchColumn('description', title=_('Description'), data_type=str, ellipsize=Pango.EllipsizeMode.END, expand=True, pack_end=True), SearchColumn('sale_open_date', title=_('Sale date'), data_type=get_date, width=100), Column('color', title=_('Description'), width=20, data_type=GdkPixbuf.Pixbuf, format_func=render_pixbuf, column='description'), SearchColumn('method_description', title=_('Payment Method'), data_type=str, search_attribute='method_id', valid_values=self._get_payment_methods(), width=100, visible=False), SearchColumn('card_type', title=_('Card Type'), format_func=self._format_card_type, data_type=str, valid_values=self._get_card_types(), width=100, visible=False), Column('comments_number', title=_(u'Comments'), visible=False), SearchColumn('drawee', title=_('Drawee'), data_type=str, ellipsize=Pango.EllipsizeMode.END, width=140), SearchColumn('drawee_fancy_name', title=_('Drawee fancy name'), visible=False, data_type=str, ellipsize=Pango.EllipsizeMode.END, width=140), SearchColumn('open_date', title=_('Open date'), data_type=datetime.date, width=100, visible=False), SearchColumn('due_date', title=_('Due date'), data_type=datetime.date, width=100, sorted=True), SearchColumn('paid_date', title=_('Paid date'), data_type=datetime.date, width=100), SearchColumn('status_str', title=_('Status'), width=100, data_type=str, search_attribute='status', valid_values=self._get_status_values(), visible=False), SearchColumn('value', title=_('Value'), data_type=currency, width=90), SearchColumn('paid_value', title=_('Paid'), long_title=_('Paid value'), data_type=currency, width=90), SearchColumn('category', title=_('Category'), data_type=str, long_title=_('Payment category'), width=110, visible=False) ]
from gi.repository import Gtk from kiwi.ui.objectlist import Column, ObjectList class Fruit: def __init__(self, name, price): self.name = name self.price = price fruits = ObjectList( [Column('name', data_type=str), Column('price', data_type=int)]) for name, price in [('Apple', 4), ('Pineapple', 2), ('Kiwi', 8), ('Banana', 3), ('Melon', 5)]: fruits.append(Fruit(name, price)) window = Gtk.Window() window.connect('delete-event', Gtk.main_quit) window.set_title('Fruits') window.set_size_request(150, 180) window.add(fruits) window.show_all() Gtk.main()
import gtk from kiwi.ui.objectlist import Column, ObjectList class Fruit: def __init__(self, name, cost): self.name = name self.cost = cost fruits = ObjectList([ Column('name', data_type=str, editable=True, expand=True), Column('cost', data_type=int, editable=True) ]) for name, cost in [('Apple', 4), ('Pineapple', 2), ('Kiwi', 8), ('Banana', 3), ('Melon', 5)]: fruits.append(Fruit(name, cost)) window = gtk.Window() window.connect('delete-event', gtk.main_quit) window.set_title('Editable Fruit List') window.set_size_request(230, 150) window.add(fruits) window.show_all() gtk.main()
def setUp(self): self.klist = ObjectList([Column('name', sorted=True)], [Settable(name='first')])
def _get_columns(self): return [Column('selected', title=" ", data_type=bool, editable=True), Column('supplier.person.name', title=_('Supplier'), data_type=str, sorted=True, expand=True), Column('products_per_supplier', title=_('Supplied/Total'), data_type=str)]
def setUp(self): self.list = ObjectList( [Column('value', data_type=bool, radio=True, editable=True)]) self.list.append(Settable(value=True)) self.list.append(Settable(value=False))
def get_columns(self): cols = [ SearchColumn('code', title=_('Code'), data_type=str, sort_func=sort_sellable_code, sorted=True), SearchColumn('barcode', title=_('Barcode'), data_type=str), SearchColumn('category_description', title=_(u'Category'), data_type=str, width=120), SearchColumn('description', title=_(u'Description'), expand=True, data_type=str), SearchColumn('manufacturer', title=_('Manufacturer'), data_type=str, visible=False), SearchColumn('model', title=_('Model'), data_type=str, visible=False), SearchColumn('ncm', title=_('NCM'), data_type=str, visible=False), Column('unit', title=_('Unit'), data_type=str, visible=False), SearchColumn('location', title=_('Location'), data_type=str, visible=False), SearchColumn('status', title=_('Status'), data_type=str, valid_values=self._get_status_values(), visible=False), SearchColumn('brand', title=_('Brand'), data_type=str, visible=False), SearchColumn('family', title=_('Family'), data_type=str, visible=False), SearchColumn('internal_use', title=_('Is internal'), data_type=bool, visible=False) ] # The price/cost columns must be controlled by hide_cost_column and # hide_price_column. Since the product search will be available across # the applications, it's important to restrict such columns depending # of the context. if not self.hide_cost_column: cols.append( SearchColumn('cost', _('Cost'), data_type=currency, format_func=get_formatted_cost, width=90)) if not self.hide_price_column: cols.append( SearchColumn('price', title=_('Price'), data_type=currency, width=90)) cols.append(QuantityColumn('stock', title=_('Stock'), use_having=True)) return cols
def setUp(self): self.win = Gtk.Window() self.win.set_default_size(400, 400) self.list = ObjectList([Column('name'), Column('age')]) self.win.add(self.list) refresh_gui()
from kiwi.currency import currency from kiwi.ui.objectlist import Column, ObjectList class Product: def __init__(self, name, price): self.name = name self.price = price def __repr__(self): return '<Product %s>' % self.name columns = [ Column('name', data_type=str), Column('price', data_type=currency, sorted=True), ] data = (Product('Snacks', '3.50'), Product('Juice', '4.75'), Product('Apple', '0.35'), Product('Chocolate bar', '8.5'), Product('Bubble gum', '0.3'), Product('Tutti-frutti', '1.50')) win = gtk.Window() win.connect('destroy', gtk.main_quit) win.set_border_width(6) win.set_size_request(650, 300) vbox = gtk.VBox() win.add(vbox)
def get_extra_columns(self): return [Column('_patient', title=_(u'Owner'), data_type=str)]
def __init__(self, visualizer, node_index): InformationWindow.__init__(self) self.win = gtk.Dialog(parent=visualizer.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR, buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.win.connect("response", self._response_cb) self.win.set_title("Last packets for node %i" % node_index) self.visualizer = visualizer self.viz_node = visualizer.get_node(node_index) self.node = ns.network.NodeList.GetNode(node_index) def smart_expand(expander, vbox): if expander.get_expanded(): vbox.set_child_packing(expander, expand=True, fill=True, padding=0, pack_type=gtk.PACK_START) else: vbox.set_child_packing(expander, expand=False, fill=False, padding=0, pack_type=gtk.PACK_START) main_hbox = gtk.HBox(False, 4) main_hbox.show() main_vbox = gtk.VBox(False, 4) main_vbox.show() self.win.vbox.add(main_hbox) main_hbox.add(main_vbox) self.tx_list = self.PacketList() self.tx_list.show() group = gtk.Expander("Last transmitted packets") group.show() group.add(self.tx_list) main_vbox.pack_start(group, expand=False, fill=False) group.connect_after("activate", smart_expand, main_vbox) self.rx_list = self.PacketList() self.rx_list.show() group = gtk.Expander("Last received packets") group.show() group.add(self.rx_list) main_vbox.pack_start(group, expand=False, fill=False) group.connect_after("activate", smart_expand, main_vbox) self.drop_list = self.PacketList() self.drop_list.show() group = gtk.Expander("Last dropped packets") group.show() group.add(self.drop_list) main_vbox.pack_start(group, expand=False, fill=False) group.connect_after("activate", smart_expand, main_vbox) # Packet Filter # - options self.packet_capture_options = ns.visualizer.PyViz.PacketCaptureOptions( ) self.packet_capture_options.numLastPackets = 100 packet_filter_vbox = gtk.VBox(False, 4) packet_filter_vbox.show() main_hbox.add(packet_filter_vbox) sel_buttons_box = gtk.HButtonBox() sel_buttons_box.show() packet_filter_vbox.pack_start(sel_buttons_box, False, False, 4) select_all_button = gobject.new(gtk.Button, label="Sel. All", visible=True) select_none_button = gobject.new(gtk.Button, label="Sel. None", visible=True) sel_buttons_box.add(select_all_button) sel_buttons_box.add(select_none_button) self.packet_filter_widget = ObjectList([ Column('selected', title="Sel.", data_type=bool, editable=True), Column('name', title="Header"), ], sortable=True) self.packet_filter_widget.show() packet_filter_vbox.pack_start(self.packet_filter_widget, True, True, 4) class TypeIdConfig(object): __slots__ = ['name', 'selected', 'typeid'] self.packet_filter_list = [] # list of TypeIdConfig instances Header = ns.core.TypeId.LookupByName("ns3::Header") Trailer = ns.core.TypeId.LookupByName("ns3::Trailer") for typeid_i in range(ns.core.TypeId.GetRegisteredN()): typeid = ns.core.TypeId.GetRegistered(typeid_i) # check if this is a header or trailer subtype typeid_tmp = typeid type_is_good = False while 1: if typeid_tmp == Header or typeid_tmp == Trailer: type_is_good = True break if typeid_tmp.HasParent(): typeid_tmp = typeid_tmp.GetParent() else: break if not type_is_good: continue if typeid in [Header, Trailer]: continue c = TypeIdConfig() c.selected = True c.name = typeid.GetName() c.typeid = typeid self.packet_filter_list.append(c) self.packet_filter_widget.add_list(self.packet_filter_list) def update_capture_options(): if self.op_AND_button.props.active: self.packet_capture_options.mode = ns.visualizer.PyViz.PACKET_CAPTURE_FILTER_HEADERS_AND else: self.packet_capture_options.mode = ns.visualizer.PyViz.PACKET_CAPTURE_FILTER_HEADERS_OR self.packet_capture_options.numLastPackets = 100 self.packet_capture_options.headers = [ c.typeid for c in self.packet_filter_list if c.selected ] self.visualizer.simulation.lock.acquire() try: self.visualizer.simulation.sim_helper.SetPacketCaptureOptions( self.node.GetId(), self.packet_capture_options) finally: self.visualizer.simulation.lock.release() def sel_all_cb(bt): for c in self.packet_filter_list: c.selected = True self.packet_filter_widget.refresh() update_capture_options() def sel_none_cb(bt): for c in self.packet_filter_list: c.selected = False self.packet_filter_widget.refresh() update_capture_options() select_all_button.connect("clicked", sel_all_cb) select_none_button.connect("clicked", sel_none_cb) op_buttons_box = gtk.HButtonBox() op_buttons_box.show() packet_filter_vbox.pack_start(op_buttons_box, False, False, 4) self.op_AND_button = gobject.new(gtk.RadioButton, label="AND", visible=True) self.op_OR_button = gobject.new(gtk.RadioButton, label="OR", visible=True, group=self.op_AND_button) op_buttons_box.add(self.op_AND_button) op_buttons_box.add(self.op_OR_button) self.op_OR_button.props.active = True self.op_AND_button.connect("toggled", lambda b: update_capture_options()) def cell_edited(l, obj, attribute): update_capture_options() self.packet_filter_widget.connect("cell-edited", cell_edited) update_capture_options() self.visualizer.add_information_window(self) self.win.set_default_size(600, 300) self.win.show()
def get_columns(self): columns = [ Column('sellable.code', title=_('Code'), data_type=str, visible=False), Column('sellable.barcode', title=_('Barcode'), data_type=str, visible=False), Column('sellable.description', title=_('Description'), data_type=str, expand=True, searchable=True, format_func=self._format_description, format_func_data=True), Column('manufacturer', title=_('Manufacturer'), data_type=str, visible=False), Column('model', title=_('Model'), data_type=str, visible=False), Column('sellable.category_description', title=_('Category'), data_type=str, expand=True, searchable=True), Column('quantity', title=_('Quantity'), data_type=Decimal, format_func=format_quantity), Column('sellable.unit_description', title=_('Unit'), data_type=str) ] if sysparam.get_bool('SHOW_COST_COLUMN_IN_SALES'): columns.append( Column('sellable.cost', title=_('Cost'), data_type=currency, width=80)) manager = get_plugin_manager() show_invoice_columns = (manager.is_any_active(['nfe', 'nfce']) and not manager.is_active('ecf')) columns.extend([ Column('cfop_code', title=_('CFOP'), data_type=str, visible=show_invoice_columns), Column('icms_info.v_bc', title=_('ICMS BC'), data_type=currency, visible=show_invoice_columns), Column('icms_info.v_icms', title=_('ICMS'), data_type=currency, visible=show_invoice_columns), Column('ipi_info.v_ipi', title=_('IPI'), data_type=currency, visible=show_invoice_columns), Column('base_price', title=_('Original Price'), data_type=currency), Column('price', title=_('Sale Price'), data_type=currency), Column('sale_discount', title=_('Discount'), data_type=Decimal, format_func=get_formatted_percentage), Column('total', title=_('Total'), data_type=currency) ]) return columns
def get_columns(self): return [ IdentifierColumn('identifier', title=_('WO #'), sorted=True), IdentifierColumn('sale_identifier', title=_("Sale #"), visible=False), SearchColumn('status_str', title=_(u'Status'), search_attribute='status', data_type=str, valid_values=self._get_status_values(), visible=False), SearchColumn('category_name', title=_(u'Category'), data_type=str, visible=False, multiple_selection=True, search_attribute='category_id', valid_values=self._get_category_values()), Column('equipment', title=_(u'Equipment (Description)'), data_type=str, expand=True, pack_end=True), Column('category_color', title=_(u'Equipment (Description)'), column='equipment', data_type=gtk.gdk.Pixbuf, format_func=render_pixbuf), Column('flag_icon', title=_(u'Equipment (Description)'), column='equipment', data_type=gtk.gdk.Pixbuf, format_func=self._format_state_icon, format_func_data=True), SearchColumn('client_name', title=_(u'Client'), data_type=str), SearchColumn('branch_name', title=_(u'Branch'), data_type=str, visible=False), SearchColumn('current_branch_name', title=_(u'Current branch'), data_type=str, visible=False), SearchColumn('execution_branch_name', title=_(u'Execution branch'), data_type=str, visible=False), SearchColumn('supplier_order', title=_("Supplier Order #"), visible=False, data_type=str), SearchColumn('open_date', title=_(u'Open date'), data_type=datetime.date), SearchColumn('approve_date', title=_(u'Approval date'), data_type=datetime.date, visible=False), SearchColumn('estimated_start', title=_(u'Estimated start'), data_type=datetime.date, visible=False), SearchColumn('estimated_finish', title=_(u'Estimated finish'), data_type=datetime.date, visible=False), SearchColumn('finish_date', title=_(u'Finish date'), data_type=datetime.date, visible=False), SearchColumn('total', title=_(u'Total'), data_type=currency), ]
def _get_items_columns(self): return [Column('description', _("Description"), sorted=True, data_type=unicode, expand=True), Column('open_date', _("Open date"), data_type=datetime.date, width=90), Column('total_amount', _("Total"), data_type=currency, width=100)]
def testInstanceObjectList(self): klist = ObjectList([Column('name', sorted=True)], [Settable(name='first')]) columns = klist.get_columns() self.assertEqual(len(columns), 1) self.assertEqual(columns[0].attribute, 'name')
class _ModelListSlave(ModelListSlave): model_type = _TestModel columns = [Column('unicode_var', title='Unicode var', data_type=str, expand=True, sorted=True)]
def testInstanceObjectListWithNoneData(self): klist = ObjectList([Column('name', sorted=True)], [Settable(name=None)]) columns = klist.get_columns() self.assertEqual(len(columns), 1)
from kiwi.ui.views import BaseView, SlaveView from kiwi.ui.objectlist import Column from kiwi.ui.gadgets import quit_if_last # Main window addressbook = BaseView(gladefile="addressbook", widgets=("add", "del"), delete_handler=quit_if_last) ## Slave Components: # Entry editor GUI component entry_editor = SlaveView(toplevel=addressbook, widgets=("name", "address", "phone"), gladefile="entry_editor") # Entries list GUI component list_entries = SlaveView(toplevel=addressbook, widgets=("table",), gladefile="list_entries") list_entries.table.set_columns([Column("name", title="Name"), Column("address", title="Address"), Column("phone", title="Phone")]) ## Attach slaves to main window addressbook.attach_slave("entry_editor", entry_editor) addressbook.attach_slave("list", list_entries) addressbook.show_all() addressbook.focus_topmost() gtk.main()
def _get_columns(self): return [Column('description', title=_('Description'), data_type=str, expand=True, sorted=True), Column('sellable.code', title=_('Code'), data_type=str)]