Ejemplo n.º 1
0
    def __init__(self, init_values):
        super().__init__()
        self.widget_list = []
        box_layout = BoxLayout(orientation='vertical')
        box_layout.size_hint_y = None
        box_layout.height = 0
        all_params = self.filter_params

        # set the initial values as specified by the pipeline
        for key, init_value in init_values.items():
            all_params[key]['init_val'] = init_value

        # create all the widgets
        for name, params in all_params.items():
            # Add slider to widgets
            slider_widget = Slider(min=params['min_val'],
                                   max=params['max_val'],
                                   value=params['init_val'],
                                   step=params['step_val'])
            slider_widget.label_name = name
            slider_widget.bind(value=self._on_value_changed)
            slider_widget.size_hint_y = None
            slider_widget.height = '32sp'
            self.widget_list.append(slider_widget)

            # create label and value with widgets underneath
            widget_box_layout = BoxLayout(orientation='vertical')
            widget_box_layout.size_hint_y = None
            widget_box_layout.height = 0
            widget_label = Label(size_hint=(1, None))
            widget_label.label_name = name
            widget_label.display_callback = self.get_display_callback(name)
            widget_label.text = self.get_widget_display_text(
                widget_label, str(int(params['init_val'])))
            widget_label.texture_update()
            widget_label.height = widget_label.texture_size[1]
            slider_widget.label_widget = widget_label

            # put it all together
            widget_box_layout.add_widget(widget_label)
            widget_box_layout.add_widget(slider_widget)
            widget_box_layout.padding = (5, -5)

            box_layout.add_widget(widget_box_layout)

            widget_box_layout.height = widget_label.height + slider_widget.height + 5
            box_layout.height += widget_box_layout.height

        self.size_hint_y = None
        self.height = box_layout.height
        self.add_filter_widget(box_layout)