2025-04-26 22:05:06 +03:00

36 lines
1.1 KiB
Python

from __future__ import annotations
from typing import Optional
from gnuradio.grc.core.FlowGraph import FlowGraph
from gnuradio_mcp.middlewares.block import BlockMiddleware
from gnuradio_mcp.models import BlockModel
from gnuradio_mcp.utils import get_unique_id
class FlowGraphMiddleware:
def __init__(self, flowgraph: FlowGraph):
self._flowgraph = flowgraph
@property
def blocks(self) -> list[BlockModel]:
return [
BlockModel(key=block.key, label=block.label)
for block in self._flowgraph.blocks
]
def add_block(self, block_type: str, block_name: Optional[str] = None) -> str:
block_name = block_name or get_unique_id(self._flowgraph.blocks)
block = self._flowgraph.new_block(block_type)
block.params["id"].set_value(block_name)
return block_name
def remove_block(self, block_name: str) -> None:
block = self._flowgraph.get_block(block_name)
self._flowgraph.remove_element(block)
def get_block(self, block_name: str) -> BlockMiddleware:
block = self._flowgraph.get_block(block_name)
return BlockMiddleware(block)