File size: 4,301 Bytes
6fef025
89c5f18
f5b8400
53b0019
 
0318f31
6e1f6c4
15a21d3
 
53b0019
 
0318f31
c469318
0318f31
b21c027
 
f5b8400
 
 
 
 
 
 
 
d6c665c
f5b8400
6fef025
81987e1
6fef025
19aac56
f5b8400
6fef025
f5b8400
 
6fef025
f5b8400
 
0318f31
6fef025
f5b8400
 
 
25a1729
6177a01
6fef025
c03394e
 
 
 
 
 
 
 
bdcf524
0a4458d
3394932
4424a6b
e367d1b
88264b8
 
8eff0b6
132d5bb
781fec0
 
 
 
 
 
0a4458d
88264b8
0b760cf
44a8e9d
 
 
0a4458d
9318515
cd443b7
8f8f343
 
3ed6f90
 
0a4458d
0318f31
 
 
 
 
 
2944f54
 
 
8eff0b6
8831d66
2944f54
 
 
8eff0b6
 
6723828
88264b8
 
8eff0b6
 
bb307df
e5beca8
8fc64ff
8eff0b6
b5fa7e7
8eff0b6
 
 
26b4194
88264b8
8eff0b6
 
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import gradio as gr
from random import randint
from all_models import models
from datetime import datetime

now2 = 0
kii=" needs async iterative function for all models selected to go to appropriate output boxes, because gradio update lost multiselect?  OR not. where am i, how did i find myself here, what is this strange language";


def get_current_time():
    now = datetime.now()
    now2 = now
    current_time = now2.strftime("%Y-%m-%d %H:%M:%S")
    ki = f'{kii} {current_time}'
    return ki

def load_fn(models):
    global models_load
    models_load = {}
    for model in models:
        if model not in models_load.keys():
            try:
                m = gr.load(f'models/{model}')
            except Exception as error:
                m = gr.Interface(lambda txt: None, ['text'], ['image'])
            models_load.update({model: m})

load_fn(models)

num_models = len(models)
default_models = models[:num_models]

def extend_choices(choices):
    return choices + (num_models - len(choices)) * ['NA']

def update_imgbox(choices):
    choices_plus = extend_choices(choices)
    return [gr.Image(None, label=m, visible=(m != 'NA')) for m in choices_plus]

def gen_fn(model_str, prompt):
    if model_str == 'NA':
        return None
    noise = str(randint(0, 9999))
    return models_load[model_str](f'{prompt} {noise}')

def process_choices(selected_choices):
    results = []
    for choice in selected_choices:
        results.append(f"Processed data for {choice}")  # Example output for each model
    return results  # Return a separate output for each choice

    

def make_me():
    with gr.Row():
            txt_input = gr.Textbox(lines=2, value=kii)
            #txt_input = gr.Textbox(label='Your prompt:', lines=2, value=kii)
        
            gen_button = gr.Button('Generate images')
            stop_button = gr.Button('Stop', variant='secondary', interactive=False)

            gen_button.click(lambda s: gr.update(interactive=True), None, stop_button)
            gr.HTML("""
            <div style="text-align: center; max-width: 100%; margin: 0 auto;">
                <body>
                </body>
            </div>
            """)
    with gr.Row():
            output = [gr.Image(label=m) for m in default_models]
            current_models = [gr.Textbox(m, visible=False) for m in default_models]
    for m, o in zip(current_models, output):
            gen_event = gen_button.click(gen_fn, [m, txt_input], o)
            stop_button.click(lambda s: gr.update(interactive=False), None, stop_button, cancels=[gen_event])
    with gr.Accordion('Model selection'):
           #  model_choice = gr.CheckboxGroup(models, label=f' {num_models} different models selected', value=default_models,  multiselect=True,  interactive=True, filterable=False)
            model_choice = gr.CheckboxGroup(models, label=f' {num_models} different models selected', value=default_models,  interactive=True )
            model_choice.change(update_imgbox, model_choice, output)
            model_choice.change(extend_choices, model_choice, current_models)
        

    with gr.Row():
            gr.HTML("""
                <div class="footer">
                <p> Based on the <a href="https://huggingface.co/spaces/derwahnsinn/TestGen">TestGen</a> Space by derwahnsinn, the <a href="https://huggingface.co/spaces/RdnUser77/SpacIO_v1">SpacIO</a> Space by RdnUser77 and Omnibus's Maximum Multiplier!
                </p>
            """)



js_code = """
    console.log('testing js_code');

"""



with gr.Blocks(css="""
     label.float.svelte-i3tvor {  top:auto!important;  bottom: 0;    position: absolute;    background: rgba(0,0,0,0.0);    left: var(--block-label-margin);    color: rgba(200,200,200,.7);}
    .genbut { max-width: 50px; max-height: 30px; width:150px; height:30px}
    .stopbut { max-width: 50px; max-height: 30px; width:150px; height:30px}
    .float.svelte-1mwvhlq {    position: absolute;    top: var(--block-label-margin);    left: var(--block-label-margin);    background: none;    border: none;}
""") as demo:
    gr.Markdown("<script>" + js_code + "</script>")
    make_me()

demo.queue()
demo.launch(max_threads=200 )




# output = [gr.Image(label=m,  height=170) for m in default_models]
#demo.queue(concurrency_count=200)
#demo.launch()