示例#1
0
 def render(self):
     self.render_count += 1
     if self.render_count == 1:
         return base_components.Label("Test").register_ref(
             self.ref1)
     else:
         return base_components.Label("Test").register_ref(
             self.ref2)
示例#2
0
 def render(self):
     if not hasattr(self, "render_called_count"):
         self.render_called_count = 0
     self.value = state_manager.subscribe(self, "key2").value
     self.render_called_count += 1
     assert self.value == 2
     return base_components.Label(self.value)
示例#3
0
 def render(self):
     self.render_count += 1
     if self.render_count == 3:
         # We do this to force the dismount of TestComp
         return base_components.Label("Test")
     else:
         return TestComp()
示例#4
0
    def test_integration(self):
        my_app = app.App(base_components.Label("Hello World!"),
                         create_application=False)

        class MockQtApp(object):
            def exec_(self):
                pass

        my_app.app = MockQtApp()
        my_app.start()
示例#5
0
    def test_components(self):
        context_menu = {
            "play": lambda: None,
            "sep": None,
            "options": {
                "faster": lambda: None,
                "sloer": lambda: None,
            }
        }

        completer1 = base_components.Completer(["option1", "option2"])
        completer2 = base_components.Completer(["option1", "option2"], "inline")
        self._test_comp(base_components.Window(
            title="title",
            menu={"Playback": context_menu},
        )(base_components.View()))
        self._test_comp(base_components.IconButton("play", on_click=lambda e: None))
        self._test_comp(base_components.View(context_menu=context_menu))
        self._test_comp(base_components.Label(text="Hello", selectable=True))
        self._test_comp(base_components.Image(src="tests/example.png", scale_to_fit=True))
        self._test_comp(base_components.Image(src=np.zeros((100, 100, 3)), scale_to_fit=False))
        self._test_comp(base_components.Button("play", on_click=lambda e: None))
        self._test_comp(base_components.TextInput("initial_text", on_change=lambda text: None))
        self._test_comp(base_components.Button("play", on_click=lambda e: None))
        self._test_comp(base_components.Dropdown(selection="Option1", options=["Option1, Option2"], on_select=lambda text: None))
        self._test_comp(base_components.Dropdown(editable=True, selection="Option1", options=["Option1, Option2"], on_change=lambda text: None))
        self._test_comp(base_components.Dropdown(
            editable=True, selection="Option1", options=["Option1, Option2"],
            completer=completer2, on_change=lambda text: None))
        self._test_comp(base_components.TextInput("initial_text", on_change=lambda text: None))
        self._test_comp(base_components.TextInput("initial_text", completer=completer1, on_change=lambda text: None))
        self._test_comp(base_components.CheckBox(checked=True, text="Test", on_change=lambda checked: None))
        self._test_comp(base_components.RadioButton(checked=True, text="Test", on_change=lambda checked: None))
        self._test_comp(base_components.Slider(value=1, min_value=0, max_value=3, on_change=lambda value: None))
        self._test_comp(base_components.ScrollView(layout="row"))
        self._test_comp(base_components.GridView(layout=""))
        self._test_comp(base_components.List())
        self._test_comp(base_components.GroupBox(title="Group")(base_components.View()))
        self._test_comp(base_components.TabView(labels=["Tab 1", "Tab 2"])(base_components.Label(), base_components.Label()))
示例#6
0
    def test_view_change(self):
        label1 = base_components.Label(text="A")
        label2 = base_components.Label(text="B")
        view = base_components.View()(label1)

        def label_tree(label):
            tree = engine._WidgetTree(label, [])
            with engine._storage_manager() as manager:
                return tree, tree.gen_qt_commands(MockRenderContext(manager))

        label1_tree, label1_commands = label_tree(label1)
        label2_tree, label2_commands = label_tree(label2)
        view_tree = engine._WidgetTree(view, [label1_tree])
        with engine._storage_manager() as manager:
            commands = view_tree.gen_qt_commands(MockRenderContext(manager))

        font_size = label1.underlying.font().pointSize()

        self.assertCountEqual(commands, label1_commands + [
            (view.underlying.setStyleSheet, "QWidget#%s{}" % id(view)),
            (view.underlying.setProperty, "css_class", []),
            (view.underlying.style().unpolish, view.underlying),
            (view.underlying.style().polish, view.underlying),
            (view.underlying.setContextMenuPolicy, QtCore.Qt.DefaultContextMenu),
            (view.underlying.setCursor, QtCore.Qt.ArrowCursor),
            (view._set_on_key_down, view.underlying, None),
            (view._set_on_key_up, view.underlying, None),
            (view._set_on_mouse_enter, view.underlying, None),
            (view._set_on_mouse_leave, view.underlying, None),
            (view._set_on_mouse_down, view.underlying, None),
            (view._set_on_mouse_up, view.underlying, None),
            (view._set_on_mouse_move, view.underlying, None),
            (view._set_on_click, view.underlying, None),
            (view._add_child, 0, label1.underlying)])

        view_tree = engine._WidgetTree(view, [label1_tree, label2_tree])
        with engine._storage_manager() as manager:
            commands = view_tree.gen_qt_commands(MockRenderContext(manager))
        self.assertCountEqual(commands, label1_commands + label2_commands + [
            (view.underlying.setStyleSheet, "QWidget#%s{}" % id(view)),
            (view.underlying.setProperty, "css_class", []),
            (view.underlying.style().unpolish, view.underlying),
            (view.underlying.style().polish, view.underlying),
            (view.underlying.setContextMenuPolicy, QtCore.Qt.DefaultContextMenu),
            (view.underlying.setCursor, QtCore.Qt.ArrowCursor),
            (view._set_on_key_down, view.underlying, None),
            (view._set_on_key_up, view.underlying, None),
            (view._set_on_mouse_enter, view.underlying, None),
            (view._set_on_mouse_leave, view.underlying, None),
            (view._set_on_mouse_down, view.underlying, None),
            (view._set_on_mouse_up, view.underlying, None),
            (view._set_on_mouse_move, view.underlying, None),
            (view._set_on_click, view.underlying, None),
            (view._add_child, 1, label2.underlying)])

        inner_view = base_components.View()
        old_child = view_tree.children[0].component

        view_tree = engine._WidgetTree(view, [label2_tree, engine._WidgetTree(inner_view, [])])
        with engine._storage_manager() as manager:
            commands = view_tree.gen_qt_commands(MockRenderContext(manager))
        self.assertCountEqual(
            commands, 
            label2_commands + [
                (view.underlying.setStyleSheet, "QWidget#%s{}" % id(view)),
                (view.underlying.setProperty, "css_class", []),
                (view.underlying.style().unpolish, view.underlying),
                (view.underlying.style().polish, view.underlying),
                (view.underlying.setContextMenuPolicy, QtCore.Qt.DefaultContextMenu),
                (view.underlying.setCursor, QtCore.Qt.ArrowCursor),
                (view._set_on_key_down, view.underlying, None),
                (view._set_on_key_up, view.underlying, None),
                (view._set_on_mouse_enter, view.underlying, None),
                (view._set_on_mouse_leave, view.underlying, None),
                (view._set_on_mouse_down, view.underlying, None),
                (view._set_on_mouse_up, view.underlying, None),
                (view._set_on_mouse_move, view.underlying, None),
                (view._set_on_click, view.underlying, None),
                (inner_view.underlying.setStyleSheet, "QWidget#%s{}" % id(inner_view)),
                (inner_view.underlying.setProperty, "css_class", []),
                (inner_view.underlying.style().unpolish, inner_view.underlying),
                (inner_view.underlying.style().polish, inner_view.underlying),
                (inner_view.underlying.setContextMenuPolicy, QtCore.Qt.DefaultContextMenu),
                (inner_view.underlying.setCursor, QtCore.Qt.ArrowCursor),
                (inner_view._set_on_key_down, inner_view.underlying, None),
                (inner_view._set_on_key_up, inner_view.underlying, None),
                (inner_view._set_on_mouse_enter, inner_view.underlying, None),
                (inner_view._set_on_mouse_leave, inner_view.underlying, None),
                (inner_view._set_on_mouse_down, inner_view.underlying, None),
                (inner_view._set_on_mouse_up, inner_view.underlying, None),
                (inner_view._set_on_mouse_move, inner_view.underlying, None),
                (inner_view._set_on_click, inner_view.underlying, None),
                (view._delete_child, 0, old_child),
                (view._add_child, 1, inner_view.underlying)
            ])
示例#7
0
 def render(self):
     return base_components.List()(
         base_components.Label(f"Hello World: {self.text}"),
         base_components.TextInput(
             self.text, on_change=lambda text: self.set_state(text=text)))
示例#8
0
 def render(self):
     if self.props.recursion_level == 1:
         return base_components.Label("Test")
     else:
         return base_components.View()(
             MockComponent(self.props.recursion_level + 1))
示例#9
0
 def render(self):
     if not hasattr(self, "render_called_count"):
         self.render_called_count = 0
     self.value = state_value.subscribe(self)
     self.render_called_count += 1
     return base_components.Label(self.value)
示例#10
0
 def render(self):
     assert self.props.val == 2
     return base_components.Label(self.props.val)
示例#11
0
 def render(self):
     return base_components.View()(
         base_components.Label(self.props.prop_a),
         base_components.Label(self.state_a),
     )
示例#12
0
 def render(self):
     self.count += 1
     assert False
     return base_components.Label(self.props.val * 2)
示例#13
0
 def render(self):
     self.count += 1
     return base_components.Label(self.props.val)
示例#14
0
 def render(self):
     self.count += 1
     assert self.props.val == 8
     self.success_count += 1
     return base_components.Label(self.props.val)
示例#15
0
 def render(self):
     return base_components.View()(
         _TestComponentInner(self.state_a),
         _TestComponentInner(self.state_b),
         base_components.Label(self.state_c),
     )