Example #1
0
 def test_should_be_able_to_get_items_from_list_binding(self):
     list_model = ListModel.ListModel("items")
     list_model.insert_item(0, "zero")
     list_model.insert_item(1, "one")
     list_model.insert_item(2, "two")
     binding = Binding.ListBinding(list_model, "items")
     items = binding.items
     self.assertEqual(len(items), 3)
     self.assertEqual(items[2], "two")
     list_model.insert_item(0, "negative")
     self.assertEqual(len(items), 4)
     self.assertEqual(items[3], "two")
Example #2
0
    def test_table_widget_handles_pending_updates_in_close(self):
        from nion.ui import Widgets
        ui = TestUI.UserInterface()

        def create_item(item):
            return ui.create_label_widget(item)

        widget = Widgets.TableWidget(ui, create_item)
        list_model = ListModel.ListModel()
        widget.bind_items(Binding.ListBinding(list_model, "items"))
        with contextlib.closing(widget):
            list_model.insert_item(0, "abc")
            list_model.insert_item(1, "abc")
            list_model.remove_item(0)
            self.assertEqual(3, len(widget.pending_queued_tasks))
        self.assertEqual(0, len(widget.pending_queued_tasks))
        widget.run_pending_keyed_tasks()
Example #3
0
    def test_inserting_and_removing_item_into_binding_notifies_target(self):
        list_model = ListModel.ListModel("items")
        binding = Binding.ListBinding(list_model, "items")
        list_copy = list()

        def inserter(value: str, index: int) -> None:
            list_copy.insert(index, value)

        def remover(index: int) -> None:
            del list_copy[index]

        binding.inserter = inserter
        binding.remover = remover
        list_model.insert_item(0, "zero")
        list_model.insert_item(1, "one")
        self.assertEqual(len(list_copy), 2)
        self.assertEqual(list_copy[1], "one")
        list_model.remove_item(0)
        self.assertEqual(len(list_copy), 1)
        self.assertEqual(list_copy[0], "one")