Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from typing import Dict, Any, List, Optional | |
| from abc import ABC, abstractmethod | |
| class BaseUI(ABC): | |
| """Base class for UI components with shared functionality""" | |
| def __init__(self): | |
| self.state_vars = {} | |
| def create_state_var(self, name: str, default_value: Any = None) -> gr.State: | |
| """Create and track a Gradio state variable""" | |
| state_var = gr.State(default_value) | |
| self.state_vars[name] = state_var | |
| return state_var | |
| def get_state_var(self, name: str) -> gr.State: | |
| """Get a tracked state variable""" | |
| return self.state_vars.get(name) | |
| def handle_error(self, error: Exception, context: str = "") -> str: | |
| """Common error handling pattern""" | |
| error_msg = f"Error {context}: {str(error)}" if context else f"Error: {str(error)}" | |
| print(error_msg) # For now, keeping print for consistency | |
| return error_msg | |
| def create_file_upload(self, label: str, file_types: List[str], file_count: str = "single") -> gr.File: | |
| """Create a standardized file upload component""" | |
| return gr.File( | |
| label=label, | |
| file_types=file_types, | |
| file_count=file_count | |
| ) | |
| def create_button(self, text: str, variant: str = "secondary", size: str = "md") -> gr.Button: | |
| """Create a standardized button component""" | |
| return gr.Button(text, variant=variant, size=size) | |
| def create_interface(self) -> gr.TabItem: | |
| """Create the main interface for this UI component""" | |
| pass | |
| def setup_event_handlers(self): | |
| """Setup event handlers for this UI component""" | |
| pass |