Skip to content

callback__wrapper_8py

Josef Jehlička edited this page Mar 18, 2026 · 2 revisions

title: C:/Users/JehlickaJo/Downloads/TOPAS-framework-feat-0706-zaklady-fwt (2)/TOPAS-framework-feat-0706-zaklady-fwt/fwt/threading/callback_wrapper.py


C:/Users/JehlickaJo/Downloads/TOPAS-framework-feat-0706-zaklady-fwt (2)/TOPAS-framework-feat-0706-zaklady-fwt/fwt/threading/callback_wrapper.py

Namespaces

Name
TOPAS-framework-feat-0706-zaklady-fwt
TOPAS-framework-feat-0706-zaklady-fwt::fwt
TOPAS-framework-feat-0706-zaklady-fwt::fwt::threading
TOPAS-framework-feat-0706-zaklady-fwt::fwt::threading::callback_wrapper

Classes

Name
class TOPAS-framework-feat-0706-zaklady-fwt::fwt::threading::callback_wrapper::CallbackWrapper

Source code

from __future__ import annotations

import functools
from typing import Any, Callable, Optional, TypeVar, cast

from ..threading.qt_dispatcher import QtDispatcher

T = TypeVar("T", bound=Callable[..., Any])


class CallbackWrapper:

    def __init__(self, dispatcher: QtDispatcher):
        self._dispatcher: QtDispatcher = dispatcher

    # ----------------------------------------------------------------------

    def wrap(self, callback: Optional[T]) -> Optional[T]:
        """
        Zabalí callback tak, aby byl vždy volán v GUI threadu.

        Args:
            callback (Optional[T]): Callback, který má být zabalen.
        """
        if callback is None:
            return None

        @functools.wraps(callback)
        def wrapped(*args: Any, **kwargs: Any) -> Any:
            # Callbacky směrujeme do GUI threadu přes QtDispatcher
            # (queued signal).
            # Návratová hodnota se nepřenáší (zavolání je asynchronní
            # vůči worker threadu).
            return self._dispatcher.zavolejVGui(callback, *args, **kwargs)

        return cast(T, wrapped)

    # ----------------------------------------------------------------------

Updated on 2026-03-18 at 11:00:24 +0100

Clone this wiki locally