Markit_v2 / src /ui /utils /threading_utils.py
AnseMin's picture
Refactor UI components for modular architecture and enhance functionality
6ea41ec
Raw History Blame Contribute Delete
1.03 kB
"""Threading utilities for UI components."""
import threading
import time
import logging
from src.core.converter import is_conversion_in_progress
from src.core.logging_config import get_logger
logger = get_logger(__name__)
# Global variable to track cancellation state
conversion_cancelled = threading.Event()
def monitor_cancellation():
"""Background thread to monitor cancellation and update UI if needed"""
logger.info("Starting cancellation monitor thread")
while is_conversion_in_progress():
if conversion_cancelled.is_set():
logger.info("Cancellation detected by monitor thread")
time.sleep(0.1) # Check every 100ms
logger.info("Cancellation monitor thread ending")
def get_cancellation_event():
"""Get the global cancellation event."""
return conversion_cancelled
def reset_cancellation():
"""Reset the cancellation event."""
conversion_cancelled.clear()
def set_cancellation():
"""Set the cancellation event."""
conversion_cancelled.set()