haujetzhao--capswriter-offline
53 行
1.4 KiB
Python
53 行
1.4 KiB
Python
"""UI 工具模块
|
|
|
|
提供 Toast 浮动消息通知和系统托盘功能。
|
|
该模块设计为 Client 和 Server 共用,日志记录器通过注入方式加载。
|
|
"""
|
|
import logging
|
|
from typing import Any
|
|
|
|
# ============================================================
|
|
# Logger 代理机制
|
|
# ============================================================
|
|
|
|
class _LoggerProxy:
|
|
"""
|
|
日志代理类(利用 __getattr__ 动态转发)
|
|
允许先导入 logger 对象,稍后再注入真正的实现。
|
|
"""
|
|
def __init__(self):
|
|
self._target = logging.getLogger('core.ui') # 默认 logger
|
|
|
|
def set_target(self, logger):
|
|
"""注入真正的 logger 实现"""
|
|
self._target = logger
|
|
|
|
def __getattr__(self, name):
|
|
"""将所有属性访问转发给真正的 logger"""
|
|
return getattr(self._target, name)
|
|
|
|
# 1. 创建代理实例
|
|
logger = _LoggerProxy()
|
|
|
|
def set_ui_logger(real_logger):
|
|
"""设置 UI 模块使用的日志记录器"""
|
|
logger.set_target(real_logger)
|
|
|
|
# ============================================================
|
|
# 导出组件
|
|
# ============================================================
|
|
|
|
from .toast import toast, toast_stream, ToastMessage, ToastMessageManager
|
|
from .tray import enable_min_to_tray, stop_tray
|
|
|
|
__all__ = [
|
|
'logger',
|
|
'set_ui_logger',
|
|
'toast',
|
|
'toast_stream',
|
|
'ToastMessage',
|
|
'ToastMessageManager',
|
|
'enable_min_to_tray',
|
|
'stop_tray',
|
|
]
|