| from typing import Tuple, Optional |
| import gradio |
|
|
| import DeepFakeAI.globals |
| from DeepFakeAI import wording |
| from DeepFakeAI.core import conditional_process |
| from DeepFakeAI.uis.typing import Update |
| from DeepFakeAI.utilities import is_image, is_video, normalize_output_path, clear_temp |
|
|
| OUTPUT_START_BUTTON : Optional[gradio.Button] = None |
| OUTPUT_CLEAR_BUTTON : Optional[gradio.Button] = None |
| OUTPUT_IMAGE : Optional[gradio.Image] = None |
| OUTPUT_VIDEO : Optional[gradio.Video] = None |
|
|
|
|
| def render() -> None: |
| global OUTPUT_START_BUTTON |
| global OUTPUT_CLEAR_BUTTON |
| global OUTPUT_IMAGE |
| global OUTPUT_VIDEO |
|
|
| with gradio.Row(): |
| with gradio.Box(): |
| OUTPUT_IMAGE = gradio.Image( |
| label = wording.get('output_image_or_video_label'), |
| visible = False |
| ) |
| OUTPUT_VIDEO = gradio.Video( |
| label = wording.get('output_image_or_video_label') |
| ) |
| with gradio.Row(): |
| OUTPUT_START_BUTTON = gradio.Button(wording.get('start_button_label')) |
| OUTPUT_CLEAR_BUTTON = gradio.Button(wording.get('clear_button_label')) |
|
|
|
|
| def listen() -> None: |
| OUTPUT_START_BUTTON.click(update, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO ]) |
| OUTPUT_CLEAR_BUTTON.click(clear, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO ]) |
|
|
|
|
| def update() -> Tuple[Update, Update]: |
| DeepFakeAI.globals.output_path = normalize_output_path(DeepFakeAI.globals.source_path, DeepFakeAI.globals.target_path, '.') |
| if DeepFakeAI.globals.output_path: |
| conditional_process() |
| if is_image(DeepFakeAI.globals.output_path): |
| return gradio.update(value = DeepFakeAI.globals.output_path, visible = True), gradio.update(value = None, visible = False) |
| if is_video(DeepFakeAI.globals.output_path): |
| return gradio.update(value = None, visible = False), gradio.update(value = DeepFakeAI.globals.output_path, visible = True) |
| return gradio.update(value = None, visible = False), gradio.update(value = None, visible = False) |
|
|
|
|
| def clear() -> Tuple[Update, Update]: |
| if DeepFakeAI.globals.target_path: |
| clear_temp(DeepFakeAI.globals.target_path) |
| return gradio.update(value = None), gradio.update(value = None) |
|
|