scene-item transform added

minor bump
This commit is contained in:
onyx-and-iris 2025-04-24 14:14:30 +01:00
parent 6a8e7afc1d
commit 756bbbe331
3 changed files with 81 additions and 1 deletions

View File

@ -141,6 +141,19 @@ obsws-cli scene-item toggle --parent=test_group START "Colour Source 3"
obsws-cli scene-item visible --parent=test_group START "Colour Source 4"
```
- transform: Set the transform of an item in a scene.
- flags:
*optional*
- --position-x: X position of the item in the scene
- --position-y: Y position of the item in the scene
- --scale-x: X scale of the item in the scene
- --scale-y: Y scale of the item in the scene
```console
obsws-cli scene-item transform --position-x=556.0 --scale-x=0.7946954965591431 --scale-y=0.7948529124259949 LIVE "Window Capture"
```
#### Scene Collections
- list: List all scene collections.

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2025-present onyx-and-iris <code@onyxandiris.online>
#
# SPDX-License-Identifier: MIT
__version__ = "0.7.0"
__version__ = "0.8.0"

View File

@ -203,3 +203,70 @@ def visible(
typer.echo(
f"Item '{item_name}' in scene '{scene_name}' is currently {'visible' if enabled.scene_item_enabled else 'hidden'}."
)
@_validate_scene_name_and_item_name
@app.command()
def transform(
ctx: typer.Context,
scene_name: str,
item_name: str,
parent: Annotated[str, typer.Option(help='Parent group name')] = None,
position_x: Annotated[
float, typer.Option(help='X position of the item in the scene')
] = None,
position_y: Annotated[
float, typer.Option(help='Y position of the item in the scene')
] = None,
scale_x: Annotated[
float, typer.Option(help='X scale of the item in the scene')
] = None,
scale_y: Annotated[
float, typer.Option(help='Y scale of the item in the scene')
] = None,
):
"""Set the transform of an item in a scene."""
if parent:
if not validate.item_in_scene_item_list(ctx, scene_name, parent):
typer.echo(f"Parent group '{parent}' not found in scene '{scene_name}'.")
raise typer.Exit(code=1)
else:
if not validate.item_in_scene_item_list(ctx, scene_name, item_name):
typer.echo(f"Item '{item_name}' not found in scene '{scene_name}'.")
raise typer.Exit(code=1)
old_scene_name = scene_name
scene_name, scene_item_id = _get_scene_name_and_item_id(
ctx, scene_name, item_name, parent
)
transform = {}
if position_x is not None:
transform['positionX'] = position_x
if position_y is not None:
transform['positionY'] = position_y
if scale_x is not None:
transform['scaleX'] = scale_x
if scale_y is not None:
transform['scaleY'] = scale_y
if not transform:
typer.echo('No transform options provided.')
raise typer.Exit(code=1)
transform = ctx.obj.set_scene_item_transform(
scene_name=scene_name,
item_id=int(scene_item_id),
transform=transform,
)
if parent:
typer.echo(
f"Item '{item_name}' in group '{parent}' in scene '{old_scene_name}' has been transformed."
)
else:
# If not in a parent group, just show the scene name
# This is to avoid confusion with the parent group name
# which is not the same as the scene name
# and is not needed in this case
typer.echo(f"Item '{item_name}' in scene '{scene_name}' has been transformed.")