示例#1
0
    def __init__(self, stack_widget, on_name_chosen_func):
        self._stack_widget = stack_widget
        self._on_name_chosen_func = on_name_chosen_func

        layout = widget.VStackedLayoutWidget()

        title = widget.TextWidget()
        title.text = "Save project as"
        title.size.value = points(20.0)
        title.horizontal_alignment = drawing.HorizontalAlignment.CENTER
        title.vertical_alignment = drawing.VerticalAlignment.MIDDLE
        layout.add_child(title)

        layout.add_padding(points(12.0))

        options_layout = widget.HStackedLayoutWidget()
        layout.add_child(options_layout)

        name_title = widget.TextWidget()
        options_layout.add_child(name_title, horizontal_placement = widget.HorizontalPlacement.RIGHT)
        name_title.text = "Name:"
        name_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        name_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        options_layout.add_padding(points(4.0))

        self._name = widget.InputWidget()
        options_layout.add_child(self._name)

        layout.add_padding(points(12.0))

        buttons_layout = widget.HStackedLayoutWidget()
        layout.add_child(buttons_layout)
        buttons_layout.add_padding(0.0, weight = 1.0)

        cancel_button = widget.TextButtonWidget()
        buttons_layout.add_child(cancel_button)
        cancel_button.text = "Cancel"
        cancel_button.action_func = self._cancel

        buttons_layout.add_padding(points(4.0))

        save_button = widget.TextButtonWidget()
        buttons_layout.add_child(save_button)
        save_button.text = "Save"
        save_button.action_func = self._save

        self._destroy_func = modal_dialog.show_modal_dialog(stack_widget, layout)
示例#2
0
    def __init__(self, stack_widget, on_project_selected_func):
        self._stack_widget = stack_widget
        self._on_project_selected_func = on_project_selected_func

        layout = widget.VStackedLayoutWidget()

        title = widget.TextWidget()
        title.text = "Load project"
        title.size.value = points(20.0)
        title.horizontal_alignment = drawing.HorizontalAlignment.CENTER
        title.vertical_alignment = drawing.VerticalAlignment.MIDDLE
        layout.add_child(title)

        layout.add_padding(points(12.0))

        # $TODO replace this with a list widget (which does not currently exist!)
        self._name = widget.InputWidget()
        layout.add_child(self._name)

        layout.add_padding(points(12.0))

        buttons_layout = widget.HStackedLayoutWidget()
        layout.add_child(buttons_layout)
        buttons_layout.add_padding(0.0, weight=1.0)

        cancel_button = widget.TextButtonWidget()
        buttons_layout.add_child(cancel_button)
        cancel_button.text = "Cancel"
        cancel_button.action_func = self._cancel

        buttons_layout.add_padding(points(4.0))

        load_button = widget.TextButtonWidget()
        buttons_layout.add_child(load_button)
        load_button.text = "Load"
        load_button.action_func = self._load

        self._destroy_func = modal_dialog.show_modal_dialog(
            stack_widget, layout)
示例#3
0
def show_simple_modal_dialog(stack_widget, title, text, buttons,
                             on_closed_func):
    layout = widget.VStackedLayoutWidget()

    title_widget = widget.TextWidget()
    layout.add_child(title_widget)
    title_widget.text = title
    title_widget.size.value = points(20.0)
    title_widget.horizontal_alignment = drawing.HorizontalAlignment.CENTER
    title_widget.vertical_alignment = drawing.VerticalAlignment.MIDDLE

    layout.add_padding(points(12.0))

    text_widget = widget.TextWidget()
    layout.add_child(text_widget)
    text_widget.text = text
    text_widget.horizontal_alignment = drawing.HorizontalAlignment.CENTER
    text_widget.vertical_alignment = drawing.VerticalAlignment.MIDDLE

    layout.add_padding(points(12.0))

    buttons_layout = widget.HStackedLayoutWidget()
    layout.add_child(buttons_layout)
    buttons_layout.add_padding(0.0, weight=1.0)

    class Context:
        def __init__(self):
            self.destroy_func = None

        def button_pressed(self, i):
            self.destroy_func()
            if on_closed_func is not None:
                on_closed_func(i)

    context = Context()
    for i, button_text in enumerate(buttons):
        button_widget = widget.TextButtonWidget()
        if i > 0:
            buttons_layout.add_padding(points(4.0))
        buttons_layout.add_child(button_widget)
        button_widget.text = button_text
        button_widget.action_func = lambda i=i: context.button_pressed(i)

    context.destroy_func = show_modal_dialog(stack_widget, layout)
示例#4
0
    def __init__(self, display_size):
        self._display_size = display_size

        root_h = widget.HStackedLayoutWidget()
        root_v = widget.VStackedLayoutWidget()
        scroll_area = widget.ScrollAreaWidget()
        scrollbar_h = widget.HScrollbarWidget()
        scrollbar_v_layout = widget.VStackedLayoutWidget()
        scrollbar_v = widget.VScrollbarWidget()
        scroll_area.horizontal_scrollbar = scrollbar_h
        scroll_area.vertical_scrollbar = scrollbar_v

        root_h.add_child(root_v, weight=1.0)
        root_h.add_child(scrollbar_v_layout)
        scrollbar_v_layout.add_child(scrollbar_v, weight=1.0)
        scrollbar_v_layout.add_padding(scrollbar_h.desired_height)
        root_v.add_child(scroll_area, weight=1.0)
        root_v.add_child(scrollbar_h)

        root_inner_background = widget.BackgroundWidget()
        root_inner_background.color.value = (0.25, 0.25, 0.5, 1.0)
        scroll_area.set_child(root_inner_background)

        root = widget.HStackedLayoutWidget()
        root.desired_width = display_size[0] * 1.5
        root.desired_height = display_size[1] * 2.0
        root.margin = inches(0.25)
        root_inner_background.set_child(root)

        a = widget.RectangleWidget()
        a.color.value = (1.0, 0.0, 0.0, 1.0)
        a.border_thickness.value = points(4)
        a.border_color.value = (1, 1, 1, 1)
        a.radius.value = inches(0.25)

        a.radius.transition().target(
            inches(1.25)).delay(2.0).duration(1.0).ease_in_ease_out()

        b = widget.VStackedLayoutWidget()

        c1 = widget.TextButtonWidget()
        c1.text = "Button"

        def show_dialog():
            layout = widget.HStackedLayoutWidget()
            btn = widget.IconButtonWidget()
            btn.icon_name = "metronome"
            layout.add_child(btn)
            btn.action_func = modal_dialog.show_modal_dialog(
                self._stack_widget, layout)

        c1.action_func = show_dialog

        c2 = widget.IconButtonWidget()
        c2.icon_name = "metronome"
        c2.action_func = lambda: print("Button!")

        c3 = widget.DropdownWidget()
        c3.set_options([(1, "Test option"),
                        (2, "A very long option that's cut off"),
                        (3, "Something else")])

        c4 = widget.SpinnerWidget()

        c5 = widget.InputWidget()

        d = widget.RectangleWidget()
        d.color.value = (0.0, 0.0, 1.0, 1.0)

        root.add_child(a, weight=1.0)
        root.add_padding(inches(0.25))
        root.add_child(b, weight=2.0)
        b.add_child(c1,
                    weight=0.0,
                    horizontal_placement=widget.HorizontalPlacement.CENTER,
                    vertical_placement=widget.VerticalPlacement.MIDDLE)
        b.add_child(c2,
                    weight=0.0,
                    horizontal_placement=widget.HorizontalPlacement.CENTER,
                    vertical_placement=widget.VerticalPlacement.MIDDLE)
        b.add_child(c3,
                    weight=0.0,
                    horizontal_placement=widget.HorizontalPlacement.CENTER,
                    vertical_placement=widget.VerticalPlacement.MIDDLE)
        b.add_padding(points(20.0))
        b.add_child(c4,
                    weight=0.0,
                    horizontal_placement=widget.HorizontalPlacement.CENTER,
                    vertical_placement=widget.VerticalPlacement.MIDDLE)
        b.add_padding(inches(0.25))
        b.add_child(c5,
                    weight=0.0,
                    horizontal_placement=widget.HorizontalPlacement.CENTER,
                    vertical_placement=widget.VerticalPlacement.MIDDLE)
        b.add_padding(inches(0.25))
        b.add_child(d, weight=2.0)

        root_h.layout_widget((0.0, 0.0), display_size,
                             widget.HorizontalPlacement.FILL,
                             widget.VerticalPlacement.FILL)

        self._stack_widget = widget.StackWidget()
        self._stack_widget.push_child(root_h)
        widget_manager.get().set_root_widget(self._stack_widget)
示例#5
0
    def __init__(self, stack_widget):
        self._stack_widget = stack_widget

        layout = widget.VStackedLayoutWidget()

        title = widget.TextWidget()
        title.text = "Settings"
        title.size.value = points(20.0)
        title.horizontal_alignment = drawing.HorizontalAlignment.CENTER
        title.vertical_alignment = drawing.VerticalAlignment.MIDDLE
        layout.add_child(title)

        layout.add_padding(points(12.0))

        options_layout = widget.GridLayoutWidget()
        layout.add_child(options_layout)

        options_layout.set_column_size(1, points(4.0))

        input_device_title = widget.TextWidget()
        options_layout.add_child(
            0,
            0,
            input_device_title,
            horizontal_placement=widget.HorizontalPlacement.RIGHT)
        input_device_title.text = "Input device:"
        input_device_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        input_device_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        input_device_count = engine.get_input_device_count()
        self._input_device = widget.DropdownWidget()
        options_layout.add_child(0, 2, self._input_device)
        self._input_device.set_options([(i, engine.get_input_device_name(i))
                                        for i in range(input_device_count)])
        self._input_device.selected_option_index = settings.get(
        ).input_device_index

        options_layout.set_row_size(1, points(12.0))

        output_device_title = widget.TextWidget()
        options_layout.add_child(
            2,
            0,
            output_device_title,
            horizontal_placement=widget.HorizontalPlacement.RIGHT)
        output_device_title.text = "Output device:"
        output_device_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        output_device_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        output_device_count = engine.get_output_device_count()
        self._output_device = widget.DropdownWidget()
        options_layout.add_child(2, 2, self._output_device)
        self._output_device.set_options([(i, engine.get_output_device_name(i))
                                         for i in range(output_device_count)])
        self._output_device.selected_option_index = settings.get(
        ).output_device_index

        layout.add_padding(points(12.0))

        buttons_layout = widget.HStackedLayoutWidget()
        layout.add_child(buttons_layout)
        buttons_layout.add_padding(0.0, weight=1.0)

        cancel_button = widget.TextButtonWidget()
        buttons_layout.add_child(cancel_button)
        cancel_button.text = "Cancel"
        cancel_button.action_func = self._cancel

        buttons_layout.add_padding(points(4.0))

        ok_button = widget.TextButtonWidget()
        buttons_layout.add_child(ok_button)
        ok_button.text = "OK"
        ok_button.action_func = self._accept

        self._destroy_func = modal_dialog.show_modal_dialog(
            stack_widget, layout)
示例#6
0
    def __init__(self, stack_widget, on_project_created_func):
        self._stack_widget = stack_widget
        self._on_project_created_func = on_project_created_func

        layout = widget.VStackedLayoutWidget()

        title = widget.TextWidget()
        title.text = "New project"
        title.size.value = points(20.0)
        title.horizontal_alignment = drawing.HorizontalAlignment.CENTER
        title.vertical_alignment = drawing.VerticalAlignment.MIDDLE
        layout.add_child(title)

        layout.add_padding(points(12.0))

        options_layout = widget.GridLayoutWidget()
        layout.add_child(options_layout)

        options_layout.set_column_size(1, points(4.0))

        name_title = widget.TextWidget()
        options_layout.add_child(0, 0, name_title, horizontal_placement = widget.HorizontalPlacement.RIGHT)
        name_title.text = "Name:"
        name_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        name_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        self._name = widget.InputWidget()
        options_layout.add_child(0, 2, self._name)

        options_layout.set_row_size(1, points(12.0))

        sample_rate_title = widget.TextWidget()
        options_layout.add_child(2, 0, sample_rate_title, horizontal_placement = widget.HorizontalPlacement.RIGHT)
        sample_rate_title.text = "Sample rate:"
        sample_rate_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        sample_rate_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        self._sample_rate = widget.DropdownWidget()
        self._sample_rate.set_options(_SAMPLE_RATES)
        self._sample_rate.selected_option_index = 0
        options_layout.add_child(2, 2, self._sample_rate)

        options_layout.set_row_size(3, points(12.0))

        beats_per_minute_title = widget.TextWidget()
        options_layout.add_child(4, 0, beats_per_minute_title, horizontal_placement = widget.HorizontalPlacement.RIGHT)
        beats_per_minute_title.text = "Beats per minute:"
        beats_per_minute_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        beats_per_minute_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        self._beats_per_minute = widget.SpinnerWidget()
        self._beats_per_minute.min_value = 40.0
        self._beats_per_minute.max_value = 160.0
        self._beats_per_minute.value = 60.0
        self._beats_per_minute.decimals = 1
        options_layout.add_child(4, 2, self._beats_per_minute)

        options_layout.set_row_size(5, points(12.0))

        beats_per_measure_title = widget.TextWidget()
        options_layout.add_child(6, 0, beats_per_measure_title, horizontal_placement = widget.HorizontalPlacement.RIGHT)
        beats_per_measure_title.text = "Beats per measure:"
        beats_per_measure_title.horizontal_alignment = drawing.HorizontalAlignment.RIGHT
        beats_per_measure_title.vertical_alignment = drawing.VerticalAlignment.MIDDLE

        self._beats_per_measure = widget.SpinnerWidget()
        self._beats_per_measure.min_value = 2.0
        self._beats_per_measure.max_value = 8.0
        self._beats_per_measure.value = 4.0
        self._beats_per_measure.decimals = 0
        options_layout.add_child(6, 2, self._beats_per_measure)

        layout.add_padding(points(12.0))

        buttons_layout = widget.HStackedLayoutWidget()
        layout.add_child(buttons_layout)
        buttons_layout.add_padding(0.0, weight = 1.0)

        cancel_button = widget.TextButtonWidget()
        buttons_layout.add_child(cancel_button)
        cancel_button.text = "Cancel"
        cancel_button.action_func = self._cancel

        buttons_layout.add_padding(points(4.0))

        create_button = widget.TextButtonWidget()
        buttons_layout.add_child(create_button)
        create_button.text = "Create"
        create_button.action_func = self._create

        self._destroy_func = modal_dialog.show_modal_dialog(stack_widget, layout)