Source code for scitex_capture.session

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Timestamp: "2025-10-18 09:55:53 (ywatanabe)"
# File: /home/ywatanabe/proj/scitex-code/src/scitex/capture/session.py
# ----------------------------------------
from __future__ import annotations

import os

__FILE__ = "./src/scitex/capture/session.py"
__DIR__ = os.path.dirname(__FILE__)
# ----------------------------------------


class Session:
    """Context manager for CAM session with automatic start/stop."""

    def __init__(
        self,
        output_dir: str | None = None,
        interval: float = 1.0,
        jpeg: bool = True,
        quality: int = 60,
        on_capture=None,
        on_error=None,
        verbose: bool = True,
        monitor_id: int = 0,
        capture_all: bool = False,
    ):
        """Initialize session parameters.

        ``output_dir`` defaults to ``None``, meaning ``start_monitor``
        will route screenshots through the package's canonical
        runtime layout (``$SCITEX_DIR/capture/runtime/screenshots/``).
        Pass an explicit path to override.
        """
        self.output_dir = output_dir
        self.interval = interval
        self.jpeg = jpeg
        self.quality = quality
        self.on_capture = on_capture
        self.on_error = on_error
        self.verbose = verbose
        self.monitor_id = monitor_id
        self.capture_all = capture_all
        self.worker = None

    def __enter__(self):
        """Start monitoring when entering context."""
        from .utils import start_monitor

        self.worker = start_monitor(
            output_dir=self.output_dir,
            interval=self.interval,
            jpeg=self.jpeg,
            quality=self.quality,
            on_capture=self.on_capture,
            on_error=self.on_error,
            verbose=self.verbose,
            monitor_id=self.monitor_id,
            capture_all=self.capture_all,
        )
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        """Stop monitoring when exiting context."""
        from .utils import stop_monitor

        stop_monitor()
        return False


[docs] def session(**kwargs): """Create a new session context manager.""" return Session(**kwargs)
# EOF