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)
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)
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)
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)
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)
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)