Example #1
0
 def get_columns(self):
     return [Column('branch.description', title=_('Branch Name'),
                    data_type=str, expand=True), ]
Example #2
0
 def get_columns(self):
     return [Column('name', _('Role'), str, sorted=True, expand=True)]
Example #3
0
    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
Example #4
0
    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)
Example #5
0
 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)]
Example #6
0
 def testAttribute(self):
     column = Column('foo')
     self.assertEqual(column.attribute, "foo")
Example #7
0
 def construct(self, name, gtype, properties):
     return Column(name)
Example #8
0
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)
Example #9
0
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()
Example #10
0
 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
Example #11
0
 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)]
Example #12
0
 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)
     ]
Example #13
0
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()
Example #14
0
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()
Example #15
0
 def setUp(self):
     self.klist = ObjectList([Column('name', sorted=True)],
                             [Settable(name='first')])
Example #16
0
 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)]
Example #17
0
 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))
Example #18
0
    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
Example #19
0
 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()
Example #20
0
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)
Example #21
0
 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()
Example #23
0
    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
Example #24
0
 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),
     ]
Example #25
0
 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)]
Example #26
0
 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')
Example #27
0
class _ModelListSlave(ModelListSlave):
    model_type = _TestModel
    columns = [Column('unicode_var', title='Unicode var', data_type=str,
                      expand=True, sorted=True)]
Example #28
0
 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()
Example #30
0
 def _get_columns(self):
     return [Column('description', title=_('Description'), data_type=str,
                    expand=True, sorted=True),
             Column('sellable.code', title=_('Code'), data_type=str)]