mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-21 22:38:35 +00:00
feat(core): 增强配置管理和日志文件处理功能
- 在ConfigManager中添加切换禁用安装前哈希预检查的功能,支持通过主窗口更新配置并保存。 - 在DebugManager中实现打开日志文件的功能,增加对日志文件存在性和大小的检查,提供用户友好的提示。 - 在UIManager中更新信号连接,确保调试管理器的正确初始化,并优化哈希预检查的状态切换逻辑,提升代码可读性和用户体验。
This commit is contained in:
@@ -144,4 +144,133 @@ class DebugManager:
|
||||
# 关闭日志文件
|
||||
if hasattr(self.logger, 'close'):
|
||||
self.logger.close()
|
||||
self.logger = None
|
||||
self.logger = None
|
||||
|
||||
def open_log_file(self):
|
||||
"""打开当前日志文件"""
|
||||
try:
|
||||
# 检查日志文件是否存在
|
||||
if os.path.exists(LOG_FILE):
|
||||
# 获取日志文件大小
|
||||
file_size = os.path.getsize(LOG_FILE)
|
||||
if file_size == 0:
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"提示 - {APP_NAME}",
|
||||
f"\n当前日志文件 {os.path.basename(LOG_FILE)} 存在但为空。\n\n日志文件位置:{os.path.abspath(LOG_FILE)}",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
return
|
||||
|
||||
# 根据文件大小决定是使用文本查看器还是直接打开
|
||||
if file_size > 1024 * 1024: # 大于1MB
|
||||
# 文件较大,显示警告
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"警告 - {APP_NAME}",
|
||||
f"\n日志文件较大 ({file_size / 1024 / 1024:.2f} MB),是否仍要打开?\n\n日志文件位置:{os.path.abspath(LOG_FILE)}",
|
||||
QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No
|
||||
)
|
||||
if msg_box.exec() != QtWidgets.QMessageBox.StandardButton.Yes:
|
||||
return
|
||||
|
||||
# 使用操作系统默认程序打开日志文件
|
||||
if os.name == 'nt': # Windows
|
||||
os.startfile(LOG_FILE)
|
||||
else: # macOS 和 Linux
|
||||
import subprocess
|
||||
subprocess.call(['xdg-open', LOG_FILE])
|
||||
else:
|
||||
# 文件不存在,显示信息和搜索其他日志文件
|
||||
root_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
||||
log_dir = os.path.join(root_dir, "log")
|
||||
|
||||
# 如果log文件夹不存在,尝试创建它
|
||||
if not os.path.exists(log_dir):
|
||||
try:
|
||||
os.makedirs(log_dir, exist_ok=True)
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"信息 - {APP_NAME}",
|
||||
f"\n日志文件夹不存在,已创建新的日志文件夹:\n{log_dir}\n\n请在启用调试模式后重试。",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
return
|
||||
except Exception as e:
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"错误 - {APP_NAME}",
|
||||
f"\n创建日志文件夹失败:\n\n{str(e)}",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
return
|
||||
|
||||
# 搜索log文件夹中的日志文件
|
||||
try:
|
||||
log_files = [f for f in os.listdir(log_dir) if f.startswith("log-") and f.endswith(".txt")]
|
||||
except Exception as e:
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"错误 - {APP_NAME}",
|
||||
f"\n无法读取日志文件夹:\n\n{str(e)}",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
return
|
||||
|
||||
if log_files:
|
||||
# 按照修改时间排序,获取最新的日志文件
|
||||
log_files.sort(key=lambda x: os.path.getmtime(os.path.join(log_dir, x)), reverse=True)
|
||||
latest_log = os.path.join(log_dir, log_files[0])
|
||||
|
||||
# 获取最新日志文件的创建时间信息
|
||||
try:
|
||||
log_datetime = "-".join(os.path.basename(latest_log)[4:-4].split("-")[:2])
|
||||
log_date = log_datetime.split("-")[0]
|
||||
log_time = log_datetime.split("-")[1] if "-" in log_datetime else "未知时间"
|
||||
date_info = f"日期: {log_date[:4]}-{log_date[4:6]}-{log_date[6:]}"
|
||||
time_info = f"时间: {log_time[:2]}:{log_time[2:4]}:{log_time[4:]}"
|
||||
except:
|
||||
date_info = "日期未知"
|
||||
time_info = "时间未知"
|
||||
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"信息 - {APP_NAME}",
|
||||
f"\n当前日志文件 {os.path.basename(LOG_FILE)} 不存在。\n\n"
|
||||
f"发现最新的日志文件: {os.path.basename(latest_log)}\n"
|
||||
f"({date_info} {time_info})\n\n"
|
||||
f"是否打开此文件?",
|
||||
QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No
|
||||
)
|
||||
|
||||
if msg_box.exec() == QtWidgets.QMessageBox.StandardButton.Yes:
|
||||
if os.name == 'nt': # Windows
|
||||
os.startfile(latest_log)
|
||||
else: # macOS 和 Linux
|
||||
import subprocess
|
||||
subprocess.call(['xdg-open', latest_log])
|
||||
return
|
||||
|
||||
# 如果没有找到任何日志文件
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"信息 - {APP_NAME}",
|
||||
f"\n没有找到有效的日志文件。\n\n"
|
||||
f"预期的日志文件夹:{log_dir}\n\n"
|
||||
f"请确认调试模式已启用,并执行一些操作后再查看日志。",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
|
||||
except Exception as e:
|
||||
from utils import msgbox_frame
|
||||
msg_box = msgbox_frame(
|
||||
f"错误 - {APP_NAME}",
|
||||
f"\n处理日志文件时出错:\n\n{str(e)}\n\n文件位置:{os.path.abspath(LOG_FILE)}",
|
||||
QtWidgets.QMessageBox.StandardButton.Ok
|
||||
)
|
||||
msg_box.exec()
|
||||
Reference in New Issue
Block a user