<SlavedSlider>:
    orientation: 'horizontal'
    min: 1
    step: 1

<SlavedTextInput>:
    padding: [5, ( self.height - self.line_height ) / 2]
    multiline: False

<TenraRoller>:
    dice_slider: dice_slider
    dice_text: dice_text
    skill_slider: skill_slider
    skill_text: skill_text

    roll_button: roll_button
    result_label: result_label
    previous_results: previous_results

    BoxLayout:
        orientation: 'vertical'
        spacing: 10

        BoxLayout:
            orientation: 'horizontal'
            spacing: 10
            center_x: root.center_x
            width: root.width
            Label:
                text: "Dice"
            SlavedSlider:
                id: dice_slider
                max: root.max_dice
                value: root.dice_value
                on_value: root.slider_value_change(dice_slider)
            SlavedTextInput:
                id: dice_text
                text: str(root.dice_value)
                on_text: root.text_value_change(dice_text)


        BoxLayout:
            orientation: 'horizontal'
            spacing: 10
            width: root.width
            Label:
                text: "Skill"
            SlavedSlider:
                id: skill_slider
                max: root.max_skill
                value: root.skill_value
                on_value: root.slider_value_change(skill_slider)
            SlavedTextInput:
                id: skill_text
                on_text: root.text_value_change(skill_text)
                text: str(root.skill_value)

        
        Button:
            id: roll_button
            text: "Roll"
            on_press: root.roll_dice()

        Label:
            id: result_label
            bold: True
            text: root.initial_result_label_text

        ListView:
            id: previous_results
            adapter: root.previous_results_la