From bfc5213d78b654fe398fbb84dd945a5a60bd7aee Mon Sep 17 00:00:00 2001 From: LAOGOU-666 <441059767@qq.com> Date: Wed, 28 May 2025 11:09:18 +0800 Subject: [PATCH] update --- py/inspyrenet/__init__.py | 1 - py/inspyrenet/gui.py | 315 -------------------------------------- 2 files changed, 316 deletions(-) delete mode 100644 py/inspyrenet/gui.py diff --git a/py/inspyrenet/__init__.py b/py/inspyrenet/__init__.py index 5353701..608efc1 100644 --- a/py/inspyrenet/__init__.py +++ b/py/inspyrenet/__init__.py @@ -1,2 +1 @@ from .Remover import Remover, console -from .gui import gui \ No newline at end of file diff --git a/py/inspyrenet/gui.py b/py/inspyrenet/gui.py deleted file mode 100644 index d92d016..0000000 --- a/py/inspyrenet/gui.py +++ /dev/null @@ -1,315 +0,0 @@ -import flet as ft -from flet import ( - ElevatedButton, - FilePicker, - FilePickerResultEvent, - Page, - Row, - Text, - icons, -) -import os -import torch -import logging - -from .utils import * -from .Remover import * - -logging.basicConfig(level=logging.WARN) -logging.getLogger("flet_runtime").setLevel(logging.WARN) - -options = { - 'output_type':'rgba', - 'mode':'base', - 'device':get_backend(), - 'r' : 0, - 'g' : 0, - 'b' : 0, - 'color' : "[0, 0, 0]", - 'ckpt':None, - 'threshold':None, - 'source':None, - 'dest':None, - 'use_custom':False, - 'jit':False, - 'abort':False, -} - -def is_float(str): - try: - tmp = float(str) - return True - except ValueError: - return False - -def main(page): - def theme_changed(e): - page.theme_mode = ( - ft.ThemeMode.DARK - if page.theme_mode == ft.ThemeMode.LIGHT - else ft.ThemeMode.LIGHT - ) - page.update() - - def checkbox_changed(e): - options['jit'] = jit_check.value - page.update() - - def dropdown_changed(e): - options['output_type'] = type_dropdown.value - options['mode'] = mode_dropdown.value - options['device'] = device_dropdown.value - - if options['output_type'] == 'custom' and not options['use_custom']: - page.insert(1, ft.Row([r_field, g_field, b_field])) - options['use_custom']=True - - elif options['output_type'] != 'custom' and options['use_custom']: - options['use_custom']=False - page.remove_at(1) - - output_text.value = 'Type: {}, Mode: {}, Device: {}, Threshold: {}'.format(options['output_type'], options['mode'], options['device'], options['threshold']) - page.update() - - def color_changed(e): - options['r'] = int(r_field.value) if len(r_field.value) > 0 and r_field.value.isdigit() else 0 - options['g'] = int(g_field.value) if len(g_field.value) > 0 and g_field.value.isdigit() else 0 - options['b'] = int(b_field.value) if len(b_field.value) > 0 and b_field.value.isdigit() else 0 - options['color'] = str([options['r'], options['g'], options['b']]) - output_text.value = 'Type: {}, Mode: {}, Device: {}, Threshold: {}'.format(options['output_type'], options['color'], options['device'], options['threshold']) - page.update() - - def threshold_changed(e): - options['threshold'] = float(threshold_field.value) if len(threshold_field.value) > 0 and is_float(threshold_field.value) else None - options['threshold'] = None if is_float(options['threshold']) and (options['threshold'] < 0 or options['threshold'] > 1) else options['threshold'] - output_text.value = 'Type: {}, Mode: {}, Device: {}, Threshold: {}'.format(options['output_type'], options['mode'], options['device'], options['threshold']) - page.update() - - def pick_files_result(e: FilePickerResultEvent): - file_path.update() - options['source'] = e.files[0].path if e.files else 'Not Selected' - file_path.value = options['source'] - file_path.update() - if options['dest'] is None: - options['dest'] = os.path.split(options['source'])[0] - dest_path.value = options['dest'] - dest_path.update() - - # Open directory dialog - def get_directory_result(e: FilePickerResultEvent): - options['source'] = e.path if e.path else 'Not Selected' - file_path.value = options['source'] - file_path.update() - if options['dest'] is None: - options['dest'] = os.path.split(options['source'])[0] - dest_path.value = options['dest'] - dest_path.update() - - def get_dest_result(e: FilePickerResultEvent): - options['dest'] = e.path if e.path else 'Not Selected' - dest_path.value = options['dest'] - dest_path.update() - - def process(e): - output_type = options['output_type'] - output_type = options['color'] if output_type == 'custom' else output_type - options['abort'] = False - entry_point(output_type, options['mode'], options['device'], options['ckpt'], options['source'], options['dest'], options['jit'], options['threshold'], progress_ring, page, preview, preview_out, options) - - def click_abort(e): - options['abort'] = True - page.update() - - page.window_width = 1000 - page.window_height = 650 - page.window_resizable = False - - page.theme_mode = ft.ThemeMode.LIGHT - c = ft.Switch(label="Dark mode", on_change=theme_changed) - - output_text = ft.Text(color=ft.colors.BLACK) - output_text.value = 'Type: {}, Mode: {}, Device: {}, Threshold: {}'.format(options['output_type'], options['mode'], options['device'], options['threshold']) - output_text_container = ft.Container( - content=output_text, - margin=10, - padding=10, - bgcolor=ft.colors.GREEN_100, - border_radius=10, - ) - - jit_check = ft.Checkbox(label="use torchscript", value=False, on_change=checkbox_changed) - - type_dropdown = ft.Dropdown( - label='type', - width=200, - hint_text='output type', - on_change=dropdown_changed, - options=[ - ft.dropdown.Option("rgba"), - ft.dropdown.Option("map"), - ft.dropdown.Option("green"), - ft.dropdown.Option("white"), - ft.dropdown.Option("blur"), - ft.dropdown.Option("overlay"), - ft.dropdown.Option("custom"), - ], - ) - type_dropdown.value = options['output_type'] - - Remover() # init once - - cfg_path = os.environ.get('_FILE_PATH', os.path.abspath(os.path.expanduser('~'))) - home_dir = os.path.join(cfg_path, ".transparent-background") - configs = load_config(os.path.join(home_dir, "config.yaml")) - - mode_dropdown = ft.Dropdown( - label='mode', - width=150, - hint_text='mode', - on_change=dropdown_changed, - options=[ft.dropdown.Option(key) for key in configs.keys()], - ) - mode_dropdown.value = options['mode'] - - device_options = [ft.dropdown.Option("cpu")] - device_options += [ft.dropdown.Option("cuda:{}".format(i)) for i in range(torch.cuda.device_count())] - device_options += ['mps:0'] if torch.backends.mps.is_available() else [] - - device_dropdown = ft.Dropdown( - label='device', - width=150, - hint_text='device', - on_change=dropdown_changed, - options=device_options - ) - device_dropdown.value=options['device'] - - r_field = ft.TextField(width=60, label='R', on_change=color_changed) - g_field = ft.TextField(width=60, label='G', on_change=color_changed) - b_field = ft.TextField(width=60, label='B', on_change=color_changed) - - r_field.value=str(options['r']) - g_field.value=str(options['g']) - b_field.value=str(options['b']) - - threshold_field = ft.TextField(width=100, label='threshold', on_change=threshold_changed) - threshold_field.value = 'None' - - page.add( - ft.Row( - [ - ft.Image(src='https://raw.githubusercontent.com/plemeri/transparent-background/main/figures/logo.png', width=100, height=100), - ft.Column( - [ - ft.Row([c, output_text_container]), - ft.Row([type_dropdown, mode_dropdown, device_dropdown, threshold_field, jit_check]) - ] - ) - ] - ) - ) - - pick_files_dialog = FilePicker(on_result=pick_files_result) - - get_directory_dialog = FilePicker(on_result=get_directory_result) - file_path = Text(color=ft.colors.BLACK) - file_path.value = 'Input file or directory will be displayed' - file_path_container = ft.Container( - content=file_path, - margin=10, - padding=10, - bgcolor=ft.colors.AMBER, - border_radius=10, - ) - - get_dest_dialog = FilePicker(on_result=get_dest_result) - dest_path = Text(color=ft.colors.BLACK) - dest_path.value = 'Output file or directory will be displayed' - dest_path_container = ft.Container( - content=dest_path, - margin=10, - padding=10, - bgcolor=ft.colors.CYAN_200, - border_radius=10, - ) - - # hide all dialogs in overlay - page.overlay.extend([pick_files_dialog, get_directory_dialog, get_dest_dialog]) - #progress_ring = ft.ProgressRing(width=16, height=16, stroke_width = 2) - progress_ring = ft.ProgressBar(width=200, color='amber', bgcolor='#eeeeee') - progress_ring.value = 0 - - preview = ft.Image(src=".preview.png", ) - preview_out = ft.Image(src=".preview_out.png") - - page.add( - Row( - [ - ElevatedButton( - "Open File", - icon=icons.UPLOAD_FILE, - on_click=lambda _: pick_files_dialog.pick_files( - allow_multiple=False - ), - ), - ElevatedButton( - "Open Directory", - icon=icons.FOLDER_OPEN, - on_click=lambda _: get_directory_dialog.get_directory_path(), - disabled=page.web, - ), - file_path_container, - ] - ), - Row( - [ - ElevatedButton( - "Open Destination", - icon=icons.FOLDER_OPEN, - on_click=lambda _: get_dest_dialog.get_directory_path(), - disabled=page.web, - ), - dest_path_container - ] - ), - Row( - [ - ElevatedButton( - "Process", - icon=icons.SEND, - on_click=process, - disabled=page.web, - ), - ElevatedButton( - "Stop", - icon=icons.STOP, - on_click=click_abort, - disabled=page.web, - ), - progress_ring - ] - ), - ) - - page.add( - Row( - [ - preview, - preview_out - ] - ) - ) - - -def gui(): - ft.app(target=main) - - if os.path.isfile('.preview.png'): - os.remove('.preview.png') - - if os.path.isfile('.preview_out.png'): - os.remove('.preview_out.png') - - -if __name__ == "__main__": - gui()