2023-01-23 14:24:43 +08:00
import gradio as gr
2023-05-10 13:43:42 +08:00
from modules import scripts , shared , ui_common , postprocessing , call_queue
2023-01-23 14:24:43 +08:00
import modules . generation_parameters_copypaste as parameters_copypaste
def create_ui ( ) :
tab_index = gr . State ( value = 0 )
with gr . Row ( ) . style ( equal_height = False , variant = ' compact ' ) :
with gr . Column ( variant = ' compact ' ) :
with gr . Tabs ( elem_id = " mode_extras " ) :
2023-03-30 02:04:02 +08:00
with gr . TabItem ( ' Single Image ' , id = " single_image " , elem_id = " extras_single_tab " ) as tab_single :
2023-01-23 14:24:43 +08:00
extras_image = gr . Image ( label = " Source " , source = " upload " , interactive = True , type = " pil " , elem_id = " extras_image " )
2023-03-30 02:04:02 +08:00
with gr . TabItem ( ' Batch Process ' , id = " batch_process " , elem_id = " extras_batch_process_tab " ) as tab_batch :
2023-04-10 03:33:09 +08:00
image_batch = gr . Files ( label = " Batch Process " , interactive = True , elem_id = " extras_image_batch " )
2023-01-23 14:24:43 +08:00
2023-03-30 02:04:02 +08:00
with gr . TabItem ( ' Batch from Directory ' , id = " batch_from_directory " , elem_id = " extras_batch_directory_tab " ) as tab_batch_dir :
2023-01-23 14:24:43 +08:00
extras_batch_input_dir = gr . Textbox ( label = " Input directory " , * * shared . hide_dirs , placeholder = " A directory on the same machine where the server is running. " , elem_id = " extras_batch_input_dir " )
extras_batch_output_dir = gr . Textbox ( label = " Output directory " , * * shared . hide_dirs , placeholder = " Leave blank to save images to the default path. " , elem_id = " extras_batch_output_dir " )
show_extras_results = gr . Checkbox ( label = ' Show result images ' , value = True , elem_id = " extras_show_extras_results " )
submit = gr . Button ( ' Generate ' , elem_id = " extras_generate " , variant = ' primary ' )
script_inputs = scripts . scripts_postproc . setup_ui ( )
with gr . Column ( ) :
result_images , html_info_x , html_info , html_log = ui_common . create_output_panel ( " extras " , shared . opts . outdir_extras_samples )
tab_single . select ( fn = lambda : 0 , inputs = [ ] , outputs = [ tab_index ] )
tab_batch . select ( fn = lambda : 1 , inputs = [ ] , outputs = [ tab_index ] )
tab_batch_dir . select ( fn = lambda : 2 , inputs = [ ] , outputs = [ tab_index ] )
submit . click (
fn = call_queue . wrap_gradio_gpu_call ( postprocessing . run_postprocessing , extra_outputs = [ None , ' ' ] ) ,
inputs = [
tab_index ,
extras_image ,
image_batch ,
extras_batch_input_dir ,
extras_batch_output_dir ,
show_extras_results ,
* script_inputs
] ,
outputs = [
result_images ,
html_info_x ,
html_info ,
]
)
parameters_copypaste . add_paste_fields ( " extras " , extras_image , None )
extras_image . change (
fn = scripts . scripts_postproc . image_changed ,
inputs = [ ] , outputs = [ ]
)