Example #1
0
 def testSelectItemByData(self):
     entry = ProxyComboEntry()
     entry.prefill([('one', 1), ('two', 2)])
     entry.select_item_by_data(1)
     self.assertEqual(entry.get_text(), 'one')
     entry.select_item_by_data(2)
     self.assertEqual(entry.get_text(), 'two')
     self.assertRaises(KeyError, entry.select_item_by_data, 3)
Example #2
0
 def testSelectItemByLabelInDataMode(self):
     entry = ProxyComboEntry()
     entry.prefill([('one', 1), ('two', 2)])
     entry.select_item_by_label('one')
     self.assertEqual(entry.get_text(), 'one')
     entry.select_item_by_label('two')
     self.assertEqual(entry.get_text(), 'two')
     self.assertRaises(KeyError, entry.select_item_by_label, 'three')
Example #3
0
    def test_prefill_attr_none(self):
        model = Settable(attr=None)
        proxy = Proxy(FakeView(), model)
        combo = ProxyComboEntry()
        combo.data_type = int
        combo.model_attribute = 'attr'
        combo.prefill([('foo', 10), ('bar', 20)])
        proxy.add_widget('attr', combo)

        self.assertEqual(model.attr, None)
Example #4
0
 def __init__(self):
     win = Gtk.Window()
     win.set_title("Silly question")
     win.set_border_width(12)
     label = Gtk.Label(label="What is your favourite color?")
     box = Gtk.VBox(spacing=6)
     box.pack_start(label, False, True, 0)
     self.combo = ProxyComboEntry()
     self.combo.data_type = str
     self.combo.model_attribute = 'color'
     self.combo.prefill(load_colors(), sort=True)
     box.pack_start(self.combo, False, True, 0)
     win.add(box)
     BaseView.__init__(self, toplevel=win, delete_handler=self.quit_if_last)
Example #5
0
 def _setup_comboboxentry_slave(self, data=None):
     widget = ProxyComboEntry()
     widget.props.sensitive = self.sensitive
     widget.model_attribute = "field_value"
     widget.data_type = unicode
     widget.mandatory = True
     if not data:
         field_type = sysparam(self.store).get_parameter_type(self.model.field_name)
         result = self.store.find(field_type)
         data = [(res.get_description(), unicode(res.id)) for res in result]
     widget.prefill(data)
     self.proxy.add_widget("field_value", widget)
     self.container.add(widget)
     widget.show()
     widget.connect('validation-changed',
                    self._on_entry__validation_changed)
Example #6
0
 def build_widget(self):
     if self.use_entry:
         combo = ProxyComboEntry()
     else:
         combo = ProxyComboBox()
     self.fill(combo)
     return combo
Example #7
0
class FavouriteColor(BaseView):
    def __init__(self):
        win = gtk.Window()
        win.set_title("Silly question")
        win.set_border_width(12)
        label = gtk.Label("What is your favourite color?")
        box = gtk.VBox(spacing=6)
        box.pack_start(label, False)
        self.combo = ProxyComboEntry()
        self.combo.data_type = str
        self.combo.model_attribute = 'color'
        self.combo.prefill(load_colors(), sort=True)
        box.pack_start(self.combo, False)
        win.add(box)
        BaseView.__init__(self, toplevel=win,
                          delete_handler=self.quit_if_last)
Example #8
0
    def __init__(self):
        box = gtk.HBox(spacing=6)
        box.set_border_width(6)
        box.show()

        label = gtk.Label("Nummer:")
        label.show()
        box.pack_start(label, False, False)

        combo = ProxyComboEntry()
        combo.set_property('model-attribute', 'nummer')
        combo.set_property('data-type', 'str')
        combo.prefill(['Ett', u'Två', 'Tre'])
        combo.show()
        box.pack_start(combo)
        self.combo = combo

        SlaveDelegate.__init__(self, toplevel=box, widgets=['combo'])
Example #9
0
    def __init__(self):
        box = Gtk.HBox(spacing=6)
        box.set_border_width(6)
        box.show()

        label = Gtk.Label(label="Number:")
        label.show()
        box.pack_start(label, False, False, 0)

        combo = ProxyComboEntry()
        combo.set_property('model-attribute', 'number')
        combo.set_property('data-type', 'str')
        combo.prefill(['One', 'Two', 'Three'])
        combo.show()
        box.pack_start(combo, True, True, 0)
        self.combo = combo

        SlaveDelegate.__init__(self, toplevel=box, widgets=['combo'])
Example #10
0
    def __init__(self):
        box = gtk.HBox(spacing=6)
        box.set_border_width(6)
        box.show()

        label = gtk.Label("Nummer:")
        label.show()
        box.pack_start(label, False, False)

        combo = ProxyComboEntry()
        combo.set_property('model-attribute', 'nummer')
        combo.set_property('data-type', 'str')
        combo.prefill(['Ett', u'Två', 'Tre'])
        combo.show()
        box.pack_start(combo)
        self.combo = combo

        SlaveDelegate.__init__(self, toplevel=box, widgets=['combo'])
Example #11
0
 def _setup_comboboxentry_slave(self, data=None):
     widget = ProxyComboEntry()
     widget.props.sensitive = self.sensitive
     widget.model_attribute = "field_value"
     widget.data_type = unicode
     widget.mandatory = True
     if not data:
         detail = sysparam.get_detail_by_name(self.model.field_name)
         field_type = detail.get_parameter_type()
         # FIXME: DEFAULT_PAYMENT_METHOD needs to filter information from
         # domain because it cannot be any non-creatable method.
         # Find a way to implement this in a generic on ParameterDetails
         if self.model.field_name == "DEFAULT_PAYMENT_METHOD":
             result = PaymentMethod.get_creatable_methods(
                 self.store, Payment.TYPE_IN, False)
         else:
             result = self.store.find(field_type)
         data = [(res.get_description(), unicode(res.id)) for res in result]
     widget.prefill(data)
     self.proxy.add_widget("field_value", widget)
     self.container.add(widget)
     widget.show()
     widget.connect('validation-changed',
                    self._on_entry__validation_changed)
Example #12
0
    def test_prefill_attr_none(self):
        model = Settable(attr=None)
        proxy = Proxy(FakeView(), model)
        combo = ProxyComboEntry()
        combo.data_type = int
        combo.model_attribute = 'attr'
        combo.prefill([('foo', 10), ('bar', 20)])
        proxy.add_widget('attr', combo)

        self.assertEqual(model.attr, None)
Example #13
0
 def testGetSelectedInTextMode(self):
     entry = ProxyComboEntry()
     self.assertEqual(entry.get_selected(), None)
     entry.prefill(['one', 'two'])
     entry.select_item_by_label('two')
     self.assertEqual(entry.get_selected(), 'two')
Example #14
0
 def testDataMode(self):
     entry = ProxyComboEntry()
     self.assertEqual(entry.get_mode(), ComboMode.UNKNOWN)
     entry.prefill([('one', 1), ('two', 2)])
     self.assertEqual(entry.get_mode(), ComboMode.DATA)
Example #15
0
 def testSelectInDataMode(self):
     entry = ProxyComboEntry()
     entry.prefill([('one', 1), ('two', 2)])
     entry.select(2)
     self.assertEqual(entry.get_selected(), 2)
Example #16
0
 def testSelectItemByDataInTextMode(self):
     entry = ProxyComboEntry()
     entry.prefill(['one', 'two'])
     self.assertRaises(TypeError, entry.select_item_by_data, 1)
Example #17
0
 def testStringMode(self):
     entry = ProxyComboEntry()
     self.assertEqual(entry.get_mode(), ComboMode.UNKNOWN)
     entry.prefill(['one', 'two'])
     self.assertEqual(entry.get_mode(), ComboMode.STRING)
Example #18
0
 def testGetSelectedInDataMode(self):
     entry = ProxyComboEntry()
     self.assertEqual(entry.get_selected(), None)
     entry.prefill([('one', 1), ('two', 2)])
     entry.select_item_by_label('two')
     self.assertEqual(entry.get_selected(), 2)
Example #19
0
 def testSelectInTextMode(self):
     entry = ProxyComboEntry()
     entry.prefill(['one', 'two'])
     entry.select('two')
     self.assertEqual(entry.get_selected(), 'two')
Example #20
0
    def _setup_comboboxentry_slave(self, data=None):
        widget = ProxyComboEntry()
        widget.props.sensitive = self.sensitive
        widget.model_attribute = "field_value"
        widget.data_type = unicode

        detail = sysparam.get_detail_by_name(self.model.field_name)
        is_mandatory = not detail.allow_none
        self._block_none_value = is_mandatory
        widget.set_property('mandatory', is_mandatory)

        if not data:
            field_type = detail.get_parameter_type()
            # FIXME: DEFAULT_PAYMENT_METHOD needs to filter information from
            # domain because it cannot be any non-creatable method.
            # Find a way to implement this in a generic on ParameterDetails
            if self.model.field_name == "DEFAULT_PAYMENT_METHOD":
                result = PaymentMethod.get_creatable_methods(
                    self.store, Payment.TYPE_IN, False)
            else:
                result = self.store.find(field_type)
            data = [(res.get_description(), unicode(res.id)) for res in result]
        widget.prefill(data)
        self.proxy.add_widget("field_value", widget)
        self.container.add(widget)
        widget.show()
        widget.connect('validation-changed',
                       self._on_entry__validation_changed)
Example #21
0
 def _setup_comboboxentry_slave(self, data=None):
     widget = ProxyComboEntry()
     widget.props.sensitive = self.sensitive
     widget.model_attribute = "field_value"
     widget.data_type = unicode
     widget.mandatory = True
     if not data:
         field_type = sysparam(self.store).get_parameter_type(self.model.field_name)
         result = self.store.find(field_type)
         data = [(res.get_description(), unicode(res.id)) for res in result]
     widget.prefill(data)
     self.proxy.add_widget("field_value", widget)
     self.container.add(widget)
     widget.show()
     widget.connect('validation-changed',
                    self._on_entry__validation_changed)