File size: 1,869 Bytes
87fe461
 
a467828
 
87fe461
bcb8af1
87fe461
6e61d26
 
 
87fe461
 
bcb8af1
6e61d26
 
 
87fe461
 
 
 
6e61d26
87fe461
6e61d26
 
 
 
 
bcb8af1
 
6e61d26
a467828
 
a99d36a
a467828
 
52a0611
6e61d26
 
 
 
 
 
87fe461
 
 
bcb8af1
 
6e61d26
ab818d6
 
 
 
 
 
bcb8af1
 
 
87fe461
 
6e61d26
 
 
52a0611
6e61d26
a467828
6e61d26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import streamlit as st

# TODO: rename everything


def select_int_interval(param_name, limits_list, defaults, **kwargs):
    st.sidebar.subheader(param_name)
    min_max_interval = st.sidebar.slider(
        "", limits_list[0], limits_list[1], defaults, key=hash(param_name)
    )
    return min_max_interval


def select_several_ints(
    param_name, subparam_names, limits_list, defaults_list, **kwargs
):
    st.sidebar.subheader(param_name)
    result = []
    assert len(limits_list) == len(defaults_list)
    assert len(subparam_names) == len(defaults_list)

    for name, limits, defaults in zip(subparam_names, limits_list, defaults_list):
        result.append(
            st.sidebar.slider(
                name, limits[0], limits[1], defaults, key=hash(param_name + name)
            )
        )
    return tuple(result)


def select_min_max(param_name, limits_list, defaults_list, **kwargs):
    assert len(param_name) == 2
    return select_int_interval(' & '.join(param_name), limits_list, defaults_list)


def select_RGB(param_name, **kwargs):
    result = select_several_ints(
        param_name,
        subparam_names=["Red", "Green", "Blue"],
        limits_list=[[0, 255], [0, 255], [0, 255]],
        defaults_list=[0, 0, 0],
    )
    return tuple(result)


def select_radio(param_name, options_list, **kwargs):
    st.sidebar.subheader(param_name)
    result = st.sidebar.radio("", options_list)
    return result


def select_checkbox(param_name, defaults, **kwargs):
    st.sidebar.subheader(param_name)
    result = st.sidebar.checkbox("True", defaults)
    return result


# dict from param name to function showing this param
param2func = {
    "int_interval": select_int_interval,
    "several_ints": select_several_ints,
    "radio": select_radio,
    "rgb": select_RGB,
    "checkbox": select_checkbox,
    "min_max": select_min_max,
}