Skip to content

feat: 重命名配置项并添加advanced字段,优化任务处理逻辑 #125

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/common/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class Config(QConfig):
)
auto_update_MFW = ConfigItem("Maa", "auto_update_MFW", False, BoolValidator())
force_github = ConfigItem("Maa", "force_github", False, BoolValidator())
click_update = ConfigItem("Maa", "click_update", False, BoolValidator())
start_complete = ConfigItem("Maa", "start_complete", False, BoolValidator())
# 外部通知
Notice_DingTalk_status = ConfigItem("Notice", "DingTalk_status", False)
Notice_DingTalk_url = ConfigItem("Notice", "DingTalk_url", "")
Expand Down
1 change: 1 addition & 0 deletions app/common/typeddict.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class TaskItem(TypedDict, total=False):
option: List[Dict]
speedrun: SpeedrunConfig
disabled : bool
advanced : bool



Expand Down
4 changes: 2 additions & 2 deletions app/utils/check_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ def check(resource: str, config: str, directly: bool, DEV: bool):
if DEV:
logger.info("检查到 -DEV 参数,使用DEV模式")
cfg.set(cfg.run_after_startup_arg, False)
cfg.set(cfg.click_update, False)
cfg.set(cfg.start_complete, False)

logger.info("资源文件存在")
cfg.set(cfg.click_update, False)
cfg.set(cfg.start_complete, False)
cfg.set(cfg.resource_exist, True)

signalBus.resource_exist.emit(True)
Expand Down
48 changes: 48 additions & 0 deletions app/utils/tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,54 @@ def Get_Task_List(path: str, target: str) -> List:
lists.reverse()
return lists

def Get_Task_advanced_List(path: str, target: str) -> List[List[Any]]|None:
"""根据选项名称获取所有advanced的default列表,并处理不同数据类型格式。

Args:
path (str): 配置文件路径。
target (str): 选项名称。

Returns:
List[List[Any]]: 格式化后的选项列表,结构为二维列表:
- 字符串 → [[value]](单选项单字段)
- 列表 → [[value1], [value2], ...](多选项单字段)
- 列表的列表 → [[v1, v2], [v3, v4], ...](多选项多字段)
"""
advanced_option = Read_Config(path)["advanced"].get(target, {})
if not advanced_option:
return None

advanced_Config = advanced_option.get("default")

if not advanced_Config:
return None
elif isinstance(advanced_Config, str):
# "str"
return [[advanced_Config]]
elif isinstance(advanced_Config, list):
advanced_field = advanced_option.get("field")
if not advanced_field:
return None
elif isinstance(advanced_field, str) or isinstance(advanced_field, list) and len(advanced_field)==1:
# ["str", "str", "str"]
return_list = []
for item in advanced_Config:
return_list.append([item])
return return_list

elif isinstance(advanced_field, list):
if isinstance(advanced_Config[0], list):
# [["str1", "str2"], ["str3", "str4"]]
return advanced_Config # 直接返回多字段的列表
else:
# ["str1", "str2", "str3"]
return [advanced_Config] # 处理单字段的列表




return None


def find_process_by_name(process_name: str) -> Optional[str]:
"""查找指定名称的进程,并返回其可执行文件的路径。
Expand Down
9 changes: 5 additions & 4 deletions app/view/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ def __init__(self):

self.stara_finish()

QTimer.singleShot(5000, lambda: cfg.set(cfg.start_complete, True))

logger.info(" 主界面初始化完成。")

def stara_finish(self):
Expand All @@ -119,16 +121,15 @@ def stara_finish(self):
signalBus.update_download_finished.connect(
self.taskInterface.Auto_update_Start_up
)
QTimer.singleShot(1000, lambda: signalBus.auto_update.emit())
signalBus.auto_update.emit()

elif cfg.get(cfg.auto_update_resource):
logger.info("启动GUI后自动更新")
QTimer.singleShot(1000, lambda: signalBus.auto_update.emit())
signalBus.auto_update.emit()

elif cfg.get(cfg.run_after_startup) or cfg.get(cfg.run_after_startup_arg):
logger.info("启动GUI后运行任务")
# Qtimer 延迟1秒启动signalBus.start_task_inmediately.emit()
QTimer.singleShot(1000, lambda: signalBus.start_task_inmediately.emit())
signalBus.start_task_inmediately.emit()

def initShortcuts(self):
"""初始化快捷键"""
Expand Down
2 changes: 2 additions & 0 deletions app/view/resource_setting_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@ def switch_config(self, data_dict: dict = {}) -> None:
self.cfg_setting.combox.setCurrentText(data_dict.get("config_name"))
if data_dict.get("start_task_inmediately", False):
signalBus.start_task_inmediately.emit()
logger.debug("主动切换配置发送信号")

def lock_cfg(self):
self.res_setting.combox.setDisabled(True)
Expand Down Expand Up @@ -578,6 +579,7 @@ def refresh_combobox(self):
self.cfg_setting.combox.clear()
self.cfg_setting.combox.currentIndexChanged.connect(self.cfg_changed)
self.cfg_setting.combox.addItems(maa_config_data.config_name_list)


def initialize_res_cfg_setting(self):
"""资源配置设置"""
Expand Down
2 changes: 1 addition & 1 deletion app/view/setting_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@ def __connectSignalToSlot(self):

# 连接关于信号
self.updateCard.clicked2.connect(self.update_check)
self.updateCard.clicked2.connect(lambda: cfg.set(cfg.click_update, True))
self.updateCard.clicked2.connect(lambda: cfg.set(cfg.start_complete, True))
resource_issue_link = for_config_get_url(self.project_url, "issue")
if resource_issue_link is None:
resource_issue_link = self.project_url
Expand Down
Loading