semvec/pypi-packages huggingface dataset:
visiongraph-ui 0.4.0a3
User interface library for visiongraph projects.
License: MIT License

# Visiongraph UI

User interface library for visiongraph projects. The idea behind this project is to create a structure for computer vision applications. The idea is to have a **configuration**, **app** and **graph**. And if needed a **window**.

### Example

#### Configuration

```python
class DemoConfig:
    def __init__(self):
        container = ContainerHelper(self)

        # non-ui bound settings
        with container.section("Test"):
            self.enable_input = DataField(False) | ui.Boolean("Enable") | Argument(help="Enable input.")
```

#### Application

```python
class DemoApp(VisiongraphApp[vg.VisionGraph, DemoConfig]):
    def __init__(self, config: DemoConfig):
        super().__init__(config)

    def create_graph(self) -> vg.Visiongraph:
        graph = DemoGraph().create_graph(vg.VideoCaptureInput())
        graph.multi_threaded = True
        return graph
```

#### Graph

```python
class DemoGraph:
    def __init__(self):
        self.on_frame_ready: Event[np.ndarray] = Event()
        self.graph: Optional[vg.VisionGraph] = None

    def _on_frame_ready(self, frame: np.ndarray) -> np.ndarray:
        self.on_frame_ready(frame)
        return frame

    def create_graph(self, input_device: vg.BaseInput) -> vg.VisionGraph:
        self.graph = (
            vg.create_graph(name="Demo Graph", input_node=input_device, multi_threaded=True)
            .then(vg.custom(self._on_frame_ready))
            .build()
        )
        return self.graph
```

#### Window

```python
class DemoWindow(VisiongraphUserInterface[DemoApp, DemoConfig]):
    def __init__(self, app: DemoApp):
        super().__init__(app)
```

#### Usage

```python
def main():
    config = DemoConfig()
    app = DemoApp(config)

    with UIContext():
        window = DemoWindow(app)
```

### About

This is a first draft of the library and the api will change in future release.