# Copyright (C) 2025 AIDC-AI # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Pipeline UI Base & Registry Defines the PipelineUI protocol and the registration mechanism. """ from typing import Dict, Any, List, Type class PipelineUI: """ Base class for Pipeline UI plugins. Each pipeline should implement a subclass to define its own full-page UI. """ name: str = "base" display_name: str = "Base Pipeline" icon: str = "🔌" description: str = "" def render(self, pixelle_video: Any): """ Render the full page content for this pipeline (below settings). Args: pixelle_video: The initialized PixelleVideoCore instance. """ raise NotImplementedError # ==================== Registry ==================== _pipeline_uis: Dict[str, PipelineUI] = {} def register_pipeline_ui(ui_class: Type[PipelineUI]): """Register a pipeline UI class""" instance = ui_class() _pipeline_uis[instance.name] = instance def get_pipeline_ui(name: str) -> PipelineUI: """Get a pipeline UI instance by name""" return _pipeline_uis.get(name) def get_all_pipeline_uis() -> List[PipelineUI]: """Get all registered pipeline UI instances""" return list(_pipeline_uis.values())