# utils/excluded_colors.py import gradio as gr from utils.color_utils import ( hex_to_rgb, ) from utils.image_utils import ( convert_str_to_int_or_zero, ) excluded_color_list = gr.State([(0,0,0,0),(255,255,255,0)]) def add_color(color, excluded_colors_var): excluded_colors = excluded_colors_var.value # Convert the color from hex to RGBA color = hex_to_rgb(color) + (255,) if color not in [tuple(lst) for lst in excluded_colors]: excluded_colors.append(color) excluded_color_lst = [tuple(lst) for lst in excluded_colors] else: excluded_color_lst = [tuple(lst) for lst in excluded_colors] return excluded_color_lst, excluded_color_lst def delete_color(row, excluded_colors_var): global excluded_color_list excluded_colors = list(excluded_colors_var) row_index = convert_str_to_int_or_zero(row) print(f"Delete Excluded Color {row_index} of {len(excluded_colors) - 1}") if row_index <= len(excluded_colors) - 1: del excluded_colors[row_index] excluded_color_lst = [tuple(lst) for lst in excluded_colors] excluded_color_list = excluded_color_lst return excluded_color_lst else: excluded_color_lst = [tuple(lst) for lst in excluded_color_list] print(f"Row index {row_index} not found in the list:{excluded_color_lst}") excluded_color_list = excluded_color_lst return excluded_color_lst def build_dataframe(excluded_colors_var): excluded_colors = [tuple(lst) for lst in excluded_colors_var.value] #print(f"input: {excluded_colors}") return excluded_colors def on_input(excluded_colors): print(f"input: {excluded_colors}") excluded_color_lst = [tuple(lst) for lst in excluded_colors] print(f"output: {excluded_color_lst}") return excluded_color_lst, excluded_color_lst # Event listener for when the user selects a row def on_color_display_select(selected_rows, event: gr.SelectData): # Get the selected row selected_index = event.index[0] print(f"Selected row index:{selected_rows[selected_index]}, index: {selected_index}") return selected_index