diff --git a/modules/ui.py b/modules/ui.py index 47ecf9b..494d85a 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -116,6 +116,9 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C source_button = ctk.CTkButton(root, text='Select a face', cursor='hand2', command=select_source_path) source_button.place(relx=0.1, rely=0.35, relwidth=0.3, relheight=0.1) + swap_faces_button = ctk.CTkButton(root, text='↔', cursor='hand2', command=lambda: swap_faces_paths()) + swap_faces_button.place(relx=0.45, rely=0.4, relwidth=0.1, relheight=0.1) + target_button = ctk.CTkButton(root, text='Select a target', cursor='hand2', command=select_target_path) target_button.place(relx=0.6, rely=0.35, relwidth=0.3, relheight=0.1) @@ -221,6 +224,30 @@ def select_source_path() -> None: source_label.configure(image=None) +def swap_faces_paths() -> None: + global RECENT_DIRECTORY_SOURCE, RECENT_DIRECTORY_TARGET + + source_path = modules.globals.source_path + target_path = modules.globals.target_path + + if not is_image(source_path) or not is_image(target_path): + return + + modules.globals.source_path = target_path + modules.globals.target_path = source_path + + RECENT_DIRECTORY_SOURCE = os.path.dirname(modules.globals.source_path) + RECENT_DIRECTORY_TARGET = os.path.dirname(modules.globals.target_path) + + PREVIEW.withdraw() + + source_image = render_image_preview(modules.globals.source_path, (200, 200)) + source_label.configure(image=source_image) + + target_image = render_image_preview(modules.globals.target_path, (200, 200)) + target_label.configure(image=target_image) + + def select_target_path() -> None: global RECENT_DIRECTORY_TARGET