File size: 3,814 Bytes
6fef025
f5b8400
 
7f74da5
6fef025
 
f5b8400
 
 
 
 
 
 
7f74da5
f5b8400
 
 
6fef025
 
f5b8400
6fef025
 
f5b8400
 
6fef025
 
 
f5b8400
7f74da5
6fef025
 
f5b8400
7f74da5
fc42fea
6fef025
 
f5b8400
 
 
d2777ff
1485f13
6fef025
 
 
f5b8400
7f74da5
 
 
 
 
 
 
 
6b70d61
7f74da5
 
8f8f343
 
3977ac5
 
 
 
 
8f8f343
3977ac5
 
 
 
 
 
8f8f343
 
 
 
 
 
 
 
7f74da5
 
 
 
 
8f8f343
 
654d3d1
 
 
 
6ce4171
654d3d1
 
 
f5b8400
7f74da5
f5b8400
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
import gradio as gr
from random import randint
from all_models import models
from externalmod import gr_Interface_load


def load_fn(models):
    global models_load
    models_load = {}
    
    for model in models:
        if model not in models_load.keys():
            try:
                m = gr_Interface_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 = 6
default_models = models[:num_models]



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


def update_imgbox(choices):
    choices_plus = extend_choices(choices[0:num_models])
    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('') #str(randint(0, 99999999999))
    return models_load[model_str](f'{prompt} {noise}')



with gr.Blocks() as demo:
    gr.HTML(
    """
        <div>
        <p> <center>For simultaneous generations without queue check out <a href="https://huggingface.co/spaces/Yntec/ToyWorld">Toy World</a>!</center>
        </p></div>
    """
)  
    
    with gr.Tab('The Dream'): 
        txt_input = gr.Textbox(label = 'Your prompt:', lines=4) #.style(container=False,min_width=1200)
        gen_button = gr.Button('Generate up to 6 images from 1 minute to 18 minutes total wait time')
        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: 1200px; margin: 0 auto;">
              <div>
                <body>
                <div class="center"><p style="margin-bottom: 10px; color: #000000;">Scroll down to see more images and select models.</p>
                </div>
                </body>
              </div>
            </div>
        """
               )
        with gr.Row():
            output = [gr.Image(label = m, min_width=480) 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'Choose up to {num_models} different models from the 866 available!', value = default_models, multiselect = True, max_choices = num_models, interactive = True, filterable = False)
            #model_choice.change(update_imgbox, model_choice, output)
            #model_choice.change(extend_choices, model_choice, current_models)
            model_choice = gr.CheckboxGroup(models, label = f'Choose up to {num_models} different models from the 874 available!', value = default_models, interactive = True)
            #model_choice.change(lambda x: x[0:num_models], [model_choice], [model_choice])
            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>
    """
)

demo.queue()                        
demo.launch()