feat(gui): 优化与修复

- 添加用户仪表盘子界面
- 更新逻辑修复
- 获取关卡号,用户密码解密逻辑优化
This commit is contained in:
DLmaster
2025-04-12 06:18:20 +08:00
parent 9c946ef6dc
commit d19dd3496d
7 changed files with 388 additions and 175 deletions

View File

@@ -599,9 +599,11 @@ class MaaUserConfig(QConfig):
class AppConfig(GlobalConfig):
VERSION = "4.2.5.9"
VERSION = "4.2.5.10"
gameid_refreshed = Signal()
PASSWORD_refreshed = Signal()
user_info_changed = Signal()
def __init__(self) -> None:
super().__init__()
@@ -620,7 +622,10 @@ class AppConfig(GlobalConfig):
self.PASSWORD = ""
self.running_list = []
self.silence_list = []
self.gameid_dict = {"value": [], "text": []}
self.gameid_dict = {
"ALL": {"value": [], "text": []},
"Today": {"value": [], "text": []},
}
self.if_ignore_silence = False
self.if_database_opened = False
@@ -635,21 +640,12 @@ class AppConfig(GlobalConfig):
(self.app_path / "debug").mkdir(parents=True, exist_ok=True)
(self.app_path / "history").mkdir(parents=True, exist_ok=True)
# 生成版本信息文件
if not self.version_path.exists():
version = {
"main_version": "0.0.0.0",
"updater_version": "0.0.0.0",
}
with self.version_path.open(mode="w", encoding="utf-8") as f:
json.dump(version, f, ensure_ascii=False, indent=4)
self.load(self.config_path, self)
self.save()
self.init_logger()
self.check_data()
self.get_gameid("ALL")
self.get_gameid()
logger.info("程序初始化完成")
def init_logger(self) -> None:
@@ -676,7 +672,7 @@ class AppConfig(GlobalConfig):
logger.info("日志记录器初始化完成")
def get_gameid(self, mode: str) -> list:
def get_gameid(self) -> None:
# 从MAA服务器获取活动关卡信息
for _ in range(3):
@@ -711,82 +707,81 @@ class AppConfig(GlobalConfig):
gameid_dict["value"].append(gameid_info["Value"])
gameid_dict["text"].append(gameid_info["Value"])
if mode == "ALL":
self.gameid_dict["value"] = gameid_dict["value"] + [
"-",
"1-7",
"R8-11",
"12-17-HARD",
"CE-6",
"AP-5",
"CA-5",
"LS-6",
"SK-5",
"PR-A-1",
"PR-A-2",
"PR-B-1",
"PR-B-2",
"PR-C-1",
"PR-C-2",
"PR-D-1",
"PR-D-2",
]
self.gameid_dict["text"] = gameid_dict["text"] + [
"当前/上次",
"1-7",
"R8-11",
"12-17-HARD",
"龙门币-6/5",
"红票-5",
"技能-5",
"经验-6/5",
"碳-5",
"奶/盾芯片",
"奶/盾芯片组",
"术/狙芯片",
"术/狙芯片组",
"先/辅芯片",
"先/辅芯片组",
"近/特芯片",
"近/特芯片组",
]
# 生成全部关卡信息
self.gameid_dict["ALL"]["value"] = gameid_dict["value"] + [
"-",
"1-7",
"R8-11",
"12-17-HARD",
"CE-6",
"AP-5",
"CA-5",
"LS-6",
"SK-5",
"PR-A-1",
"PR-A-2",
"PR-B-1",
"PR-B-2",
"PR-C-1",
"PR-C-2",
"PR-D-1",
"PR-D-2",
]
self.gameid_dict["ALL"]["text"] = gameid_dict["text"] + [
"当前/上次",
"1-7",
"R8-11",
"12-17-HARD",
"龙门币-6/5",
"红票-5",
"技能-5",
"经验-6/5",
"碳-5",
"奶/盾芯片",
"奶/盾芯片组",
"术/狙芯片",
"术/狙芯片组",
"先/辅芯片",
"先/辅芯片组",
"近/特芯片",
"近/特芯片组",
]
self.gameid_refreshed.emit()
# 生成本日关卡信息
days = datetime.strptime(self.server_date(), "%Y-%m-%d").isoweekday()
elif mode == "Week":
gameid_list = [
{"value": "-", "text": "当前/上次", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "1-7", "text": "1-7", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "R8-11", "text": "R8-11", "days": [1, 2, 3, 4, 5, 6, 7]},
{
"value": "12-17-HARD",
"text": "12-17-HARD",
"days": [1, 2, 3, 4, 5, 6, 7],
},
{"value": "CE-6", "text": "龙门币-6/5", "days": [2, 4, 6, 7]},
{"value": "AP-5", "text": "红票-5", "days": [1, 4, 6, 7]},
{"value": "CA-5", "text": "技能-5", "days": [2, 3, 5, 7]},
{"value": "LS-6", "text": "经验-6/5", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "SK-5", "text": "碳-5", "days": [1, 3, 5, 6]},
{"value": "PR-A-1", "text": "奶/盾芯片", "days": [1, 4, 5, 7]},
{"value": "PR-A-2", "text": "奶/盾芯片组", "days": [1, 4, 5, 7]},
{"value": "PR-B-1", "text": "术/狙芯片", "days": [1, 2, 5, 6]},
{"value": "PR-B-2", "text": "术/狙芯片组", "days": [1, 2, 5, 6]},
{"value": "PR-C-1", "text": "先/辅芯片", "days": [3, 4, 6, 7]},
{"value": "PR-C-2", "text": "先/辅芯片组", "days": [3, 4, 6, 7]},
{"value": "PR-D-1", "text": "近/特芯片", "days": [2, 3, 6, 7]},
{"value": "PR-D-2", "text": "近/特芯片组", "days": [2, 3, 6, 7]},
]
days = datetime.strptime(self.server_date(), "%Y-%m-%d").isoweekday()
for gameid_info in gameid_list:
if days in gameid_info["days"]:
gameid_dict["value"].append(gameid_info["value"])
gameid_dict["text"].append(gameid_info["text"])
gameid_list = [
{"value": "-", "text": "当前/上次", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "1-7", "text": "1-7", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "R8-11", "text": "R8-11", "days": [1, 2, 3, 4, 5, 6, 7]},
{
"value": "12-17-HARD",
"text": "12-17-HARD",
"days": [1, 2, 3, 4, 5, 6, 7],
},
{"value": "CE-6", "text": "龙门币-6/5", "days": [2, 4, 6, 7]},
{"value": "AP-5", "text": "红票-5", "days": [1, 4, 6, 7]},
{"value": "CA-5", "text": "技能-5", "days": [2, 3, 5, 7]},
{"value": "LS-6", "text": "经验-6/5", "days": [1, 2, 3, 4, 5, 6, 7]},
{"value": "SK-5", "text": "碳-5", "days": [1, 3, 5, 6]},
{"value": "PR-A-1", "text": "奶/盾芯片", "days": [1, 4, 5, 7]},
{"value": "PR-A-2", "text": "奶/盾芯片组", "days": [1, 4, 5, 7]},
{"value": "PR-B-1", "text": "术/狙芯片", "days": [1, 2, 5, 6]},
{"value": "PR-B-2", "text": "术/狙芯片组", "days": [1, 2, 5, 6]},
{"value": "PR-C-1", "text": "先/辅芯片", "days": [3, 4, 6, 7]},
{"value": "PR-C-2", "text": "先/辅芯片组", "days": [3, 4, 6, 7]},
{"value": "PR-D-1", "text": "近/特芯片", "days": [2, 3, 6, 7]},
{"value": "PR-D-2", "text": "近/特芯片组", "days": [2, 3, 6, 7]},
]
self.gameid_dict["Today"] = gameid_dict
for gameid_info in gameid_list:
if days in gameid_info["days"]:
gameid_dict["value"].append(gameid_info["value"])
gameid_dict["text"].append(gameid_info["text"])
return gameid_dict
self.gameid_refreshed.emit()
def server_date(self) -> str:
"""获取当前的服务器日期"""
@@ -1185,19 +1180,6 @@ class AppConfig(GlobalConfig):
maa_config.load(maa_dir / "config.json", maa_config)
maa_config.save()
# user_dict: Dict[str, Dict[str, Union[Path, MaaUserConfig]]] = {}
# for user_dir in (maa_dir / "UserData").iterdir():
# if user_dir.is_dir():
# # user_config = MaaUserConfig()
# # user_config.load(user_dir / "config.json", user_config)
# # user_config.save()
# user_dict[user_dir.stem] = {
# "Path": user_dir,
# "Config": None,
# }
self.member_dict[maa_dir.name] = {
"Type": "Maa",
"Path": maa_dir,
@@ -1301,6 +1283,8 @@ class AppConfig(GlobalConfig):
user_config.Data_IfPassCheck, info["Config"]["Data"]["IfPassCheck"]
)
self.user_info_changed.emit()
def save_maa_log(self, log_path: Path, logs: list, maa_result: str) -> bool:
"""保存MAA日志"""

View File

@@ -54,7 +54,7 @@ class _MainTimer(QWidget):
def long_timed_task(self):
"""长时间定期检定任务"""
Config.get_gameid("ALL")
Config.get_gameid()
def timed_start(self):
"""定时启动代理任务"""

View File

@@ -512,8 +512,6 @@ class PasswordLineEditSettingCard(SettingCard):
class UserLableSettingCard(SettingCard):
"""Setting card with User's Lable"""
textChanged = Signal(str)
def __init__(
self,
icon: Union[str, QIcon, FluentIconBase],

View File

@@ -183,7 +183,7 @@ class AUTO_MAA(MSFluentWindow):
self.tray.setContextMenu(self.tray_menu)
self.tray.activated.connect(self.on_tray_activated)
Config.gameid_refreshed.connect(self.member_manager.refresh_gameid)
Config.user_info_changed.connect(self.member_manager.refresh_dashboard)
TaskManager.create_gui.connect(self.dispatch_center.add_board)
TaskManager.connect_gui.connect(self.dispatch_center.connect_main_board)
Notify.push_info_bar.connect(MainInfoBar.push_info_bar)

View File

@@ -32,6 +32,8 @@ from PySide6.QtWidgets import (
QHBoxLayout,
QVBoxLayout,
QStackedWidget,
QTableWidgetItem,
QHeaderView,
)
from qfluentwidgets import (
Action,
@@ -43,15 +45,20 @@ from qfluentwidgets import (
CommandBar,
ExpandGroupSettingCard,
PushSettingCard,
TableWidget,
PrimaryToolButton,
)
from PySide6.QtCore import Qt
from PySide6.QtCore import Qt, Signal
import requests
import time
from datetime import datetime
from functools import partial
from pathlib import Path
from typing import List
import shutil
from app.core import Config, MainInfoBar, TaskManager, MaaConfig, MaaUserConfig
from app.services import Crypto
from app.utils import DownloadManager
from .Widget import (
LineEditMessageBox,
@@ -381,28 +388,25 @@ class MemberManager(QWidget):
)
if choice.exec() and choice.input.text() != "":
Config.PASSWORD = choice.input.text()
for script in self.member_manager.script_list:
script.user_setting.refresh_password()
Config.PASSWORD_refreshed.emit()
self.key.setIcon(FluentIcon.VIEW)
self.key.setChecked(True)
else:
Config.PASSWORD = ""
for script in self.member_manager.script_list:
script.user_setting.refresh_password()
Config.PASSWORD_refreshed.emit()
self.key.setIcon(FluentIcon.HIDE)
self.key.setChecked(False)
else:
Config.PASSWORD = ""
for script in self.member_manager.script_list:
script.user_setting.refresh_password()
Config.PASSWORD_refreshed.emit()
self.key.setIcon(FluentIcon.HIDE)
self.key.setChecked(False)
def refresh_gameid(self):
"""刷新所有脚本实例的游戏ID列表"""
def refresh_dashboard(self):
"""刷新所有脚本实例的用户仪表盘"""
for script in self.member_manager.script_list:
script.user_setting.refresh_gameid()
script.user_setting.user_manager.user_dashboard.load_info()
class MemberSettingBox(QWidget):
"""脚本管理子页面组"""
@@ -453,6 +457,9 @@ class MemberManager(QWidget):
if if_chang_pivot:
self.pivot.setCurrentItem(self.script_list[index - 1].objectName())
self.stackedWidget.setCurrentWidget(self.script_list[index - 1])
self.script_list[index - 1].user_setting.user_manager.switch_SettingBox(
"用户仪表盘"
)
def clear_SettingBox(self) -> None:
"""清空所有子界面"""
@@ -746,7 +753,7 @@ class MemberManager(QWidget):
}
self.user_manager.add_userSettingBox(index)
self.user_manager.switch_SettingBox(index)
self.user_manager.switch_SettingBox(f"用户_{index}")
logger.success(f"{self.name} 用户_{index} 添加成功")
MainInfoBar.push_info_bar(
@@ -764,6 +771,12 @@ class MemberManager(QWidget):
"warning", "未选择用户", "请先选择一个用户", 5000
)
return None
if name == "用户仪表盘":
logger.warning("试图删除用户仪表盘")
MainInfoBar.push_info_bar(
"warning", "未选择用户", "请勿尝试删除用户仪表盘", 5000
)
return None
if self.name in Config.running_list:
logger.warning("所属脚本正在运行")
@@ -799,7 +812,9 @@ class MemberManager(QWidget):
]["Path"].with_name(f"用户_{i-1}")
)
self.user_manager.show_SettingBox(max(int(name[3:]) - 1, 1))
self.user_manager.show_SettingBox(
f"用户_{max(int(name[3:]) - 1, 1)}"
)
logger.success(f"{self.name} {name} 删除成功")
MainInfoBar.push_info_bar(
@@ -817,6 +832,12 @@ class MemberManager(QWidget):
"warning", "未选择用户", "请先选择一个用户", 5000
)
return None
if name == "用户仪表盘":
logger.warning("试图移动用户仪表盘")
MainInfoBar.push_info_bar(
"warning", "未选择用户", "请勿尝试移动用户仪表盘", 5000
)
return None
index = int(name[3:])
@@ -852,7 +873,7 @@ class MemberManager(QWidget):
]
)
self.user_manager.show_SettingBox(index - 1)
self.user_manager.show_SettingBox(f"用户_{index - 1}")
logger.success(f"{self.name} {name} 前移成功")
MainInfoBar.push_info_bar(
@@ -870,6 +891,12 @@ class MemberManager(QWidget):
"warning", "未选择用户", "请先选择一个用户", 5000
)
return None
if name == "用户仪表盘":
logger.warning("试图删除用户仪表盘")
MainInfoBar.push_info_bar(
"warning", "未选择用户", "请勿尝试移动用户仪表盘", 5000
)
return None
index = int(name[3:])
@@ -905,47 +932,17 @@ class MemberManager(QWidget):
]
)
self.user_manager.show_SettingBox(index + 1)
self.user_manager.show_SettingBox(f"用户_{index + 1}")
logger.success(f"{self.name} {name} 后移成功")
MainInfoBar.push_info_bar(
"success", "操作成功", f"{self.name} 后移 {name}", 3000
)
def refresh_password(self):
"""刷新用户密码栏"""
for script in self.user_manager.script_list:
script.card_Password.setValue(
script.card_Password.qconfig.get(
script.card_Password.configItem
)
)
def refresh_gameid(self):
"""刷新用户密码栏"""
for script in self.user_manager.script_list:
script.card_GameId.reLoadOptions(
Config.gameid_dict["value"], Config.gameid_dict["text"]
)
script.card_GameId_1.reLoadOptions(
Config.gameid_dict["value"], Config.gameid_dict["text"]
)
script.card_GameId_2.reLoadOptions(
Config.gameid_dict["value"], Config.gameid_dict["text"]
)
class UserSettingBox(QWidget):
"""用户管理子页面组"""
def __init__(
self,
name: str,
parent=None,
):
def __init__(self, name: str, parent=None):
super().__init__(parent)
self.setObjectName("用户管理")
@@ -959,53 +956,74 @@ class MemberManager(QWidget):
MemberManager.MemberSettingBox.MaaSettingBox.UserManager.UserSettingBox.UserMemberSettingBox
] = []
self.user_dashboard = self.UserDashboard(self.name, self)
self.user_dashboard.switch_to.connect(self.switch_SettingBox)
self.stackedWidget.addWidget(self.user_dashboard)
self.pivot.addItem(routeKey="用户仪表盘", text="用户仪表盘")
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
self.pivot.currentItemChanged.connect(
lambda index: self.switch_SettingBox(
int(index[3:]), if_change_pivot=False
index, if_change_pivot=False
)
)
self.show_SettingBox(1)
self.show_SettingBox("用户仪表盘")
def show_SettingBox(self, index) -> None:
def show_SettingBox(self, index: str) -> None:
"""加载所有子界面"""
Config.search_maa_user(self.name)
for name in Config.member_dict[self.name]["UserData"].keys():
self.add_userSettingBox(int(name[3:]))
self.add_userSettingBox(name[3:])
self.switch_SettingBox(index)
def switch_SettingBox(
self, index: int, if_change_pivot: bool = True
self, index: str, if_change_pivot: bool = True
) -> None:
"""切换到指定的子界面"""
if len(Config.member_dict[self.name]["UserData"]) == 0:
index = "用户仪表盘"
if index != "用户仪表盘" and int(index[3:]) > len(
Config.member_dict[self.name]["UserData"]
):
return None
if index > len(Config.member_dict[self.name]["UserData"]):
return None
if index == "用户仪表盘":
self.user_dashboard.load_info()
if if_change_pivot:
self.pivot.setCurrentItem(
self.script_list[index - 1].objectName()
)
self.stackedWidget.setCurrentWidget(self.script_list[index - 1])
self.pivot.setCurrentItem(index)
self.stackedWidget.setCurrentWidget(
self.user_dashboard
if index == "用户仪表盘"
else self.script_list[int(index[3:]) - 1]
)
def clear_SettingBox(self) -> None:
"""清空所有子界面"""
for sub_interface in self.script_list:
Config.gameid_refreshed.disconnect(
sub_interface.refresh_gameid
)
Config.PASSWORD_refreshed.disconnect(
sub_interface.refresh_password
)
self.stackedWidget.removeWidget(sub_interface)
sub_interface.deleteLater()
self.script_list.clear()
self.pivot.clear()
self.user_dashboard.dashboard.setRowCount(0)
self.stackedWidget.addWidget(self.user_dashboard)
self.pivot.addItem(routeKey="用户仪表盘", text="用户仪表盘")
def add_userSettingBox(self, uid: int) -> None:
"""添加一个用户设置界面"""
@@ -1020,6 +1038,182 @@ class MemberManager(QWidget):
self.pivot.addItem(routeKey=f"用户_{uid}", text=f"用户 {uid}")
class UserDashboard(HeaderCardWidget):
"""用户仪表盘页面"""
switch_to = Signal(str)
def __init__(self, name: str, parent=None):
super().__init__(parent)
self.setObjectName("用户仪表盘")
self.setTitle("用户仪表盘")
self.name = name
self.dashboard = TableWidget(self)
self.dashboard.setColumnCount(10)
self.dashboard.setHorizontalHeaderLabels(
[
"用户名",
"账号ID",
"密码",
"状态",
"代理情况",
"给药量",
"关卡选择",
"备选关卡-1",
"备选关卡-2",
"",
]
)
self.dashboard.setEditTriggers(TableWidget.NoEditTriggers)
self.dashboard.verticalHeader().setVisible(False)
for col in range(6):
self.dashboard.horizontalHeader().setSectionResizeMode(
col, QHeaderView.ResizeMode.ResizeToContents
)
for col in range(6, 9):
self.dashboard.horizontalHeader().setSectionResizeMode(
col, QHeaderView.ResizeMode.Stretch
)
self.dashboard.horizontalHeader().setSectionResizeMode(
9, QHeaderView.ResizeMode.Fixed
)
self.dashboard.setColumnWidth(9, 32)
self.viewLayout.addWidget(self.dashboard)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
Config.PASSWORD_refreshed.connect(self.load_info)
def load_info(self):
self.user_data = Config.member_dict[self.name]["UserData"]
self.dashboard.setRowCount(len(self.user_data))
for name, info in self.user_data.items():
config = info["Config"]
text_list = []
if not config.get(config.Data_IfPassCheck):
text_list.append("未通过人工排查")
text_list.append(
f"今日已代理{config.get(config.Data_ProxyTimes)}"
if Config.server_date()
== config.get(config.Data_LastProxyDate)
else "今日未进行代理"
)
text_list.append(
"本周剿灭已完成"
if datetime.strptime(
config.get(config.Data_LastAnnihilationDate),
"%Y-%m-%d",
).isocalendar()[:2]
== datetime.strptime(
Config.server_date(), "%Y-%m-%d"
).isocalendar()[:2]
else "本周剿灭未完成"
)
button = PrimaryToolButton(
FluentIcon.CHEVRON_RIGHT, self
)
button.setFixedSize(32, 32)
button.clicked.connect(
partial(self.switch_to.emit, name)
)
self.dashboard.setItem(
int(name[3:]) - 1,
0,
QTableWidgetItem(config.get(config.Info_Name)),
)
self.dashboard.setItem(
int(name[3:]) - 1,
1,
QTableWidgetItem(config.get(config.Info_Id)),
)
self.dashboard.setItem(
int(name[3:]) - 1,
2,
QTableWidgetItem(
Crypto.AUTO_decryptor(
config.get(config.Info_Password),
Config.PASSWORD,
)
if Config.PASSWORD
else "******"
),
)
self.dashboard.setItem(
int(name[3:]) - 1,
3,
QTableWidgetItem(
"启用"
if config.get(config.Info_Status)
and config.get(config.Info_RemainedDay) != 0
else "禁用"
),
)
self.dashboard.setItem(
int(name[3:]) - 1,
4,
QTableWidgetItem(" | ".join(text_list)),
)
self.dashboard.setItem(
int(name[3:]) - 1,
5,
QTableWidgetItem(
str(config.get(config.Info_MedicineNumb))
),
)
self.dashboard.setItem(
int(name[3:]) - 1,
6,
QTableWidgetItem(
Config.gameid_dict["ALL"]["text"][
Config.gameid_dict["ALL"]["value"].index(
config.get(config.Info_GameId)
)
]
if config.get(config.Info_GameId)
in Config.gameid_dict["ALL"]["value"]
else config.get(config.Info_GameId)
),
)
self.dashboard.setItem(
int(name[3:]) - 1,
7,
QTableWidgetItem(
Config.gameid_dict["ALL"]["text"][
Config.gameid_dict["ALL"]["value"].index(
config.get(config.Info_GameId_1)
)
]
if config.get(config.Info_GameId_1)
in Config.gameid_dict["ALL"]["value"]
else config.get(config.Info_GameId_1)
),
)
self.dashboard.setItem(
int(name[3:]) - 1,
8,
QTableWidgetItem(
Config.gameid_dict["ALL"]["text"][
Config.gameid_dict["ALL"]["value"].index(
config.get(config.Info_GameId_2)
)
]
if config.get(config.Info_GameId_2)
in Config.gameid_dict["ALL"]["value"]
else config.get(config.Info_GameId_2)
),
)
self.dashboard.setCellWidget(
int(name[3:]) - 1, 9, button
)
class UserMemberSettingBox(HeaderCardWidget):
"""用户管理子页面"""
@@ -1157,8 +1351,8 @@ class MemberManager(QWidget):
icon=FluentIcon.GAME,
title="关卡选择",
content="按下回车以添加自定义关卡号",
value=Config.gameid_dict["value"],
texts=Config.gameid_dict["text"],
value=Config.gameid_dict["ALL"]["value"],
texts=Config.gameid_dict["ALL"]["text"],
qconfig=self.config,
configItem=self.config.Info_GameId,
parent=self,
@@ -1167,8 +1361,8 @@ class MemberManager(QWidget):
icon=FluentIcon.GAME,
title="备选关卡-1",
content="按下回车以添加自定义关卡号",
value=Config.gameid_dict["value"],
texts=Config.gameid_dict["text"],
value=Config.gameid_dict["ALL"]["value"],
texts=Config.gameid_dict["ALL"]["text"],
qconfig=self.config,
configItem=self.config.Info_GameId_1,
parent=self,
@@ -1177,8 +1371,8 @@ class MemberManager(QWidget):
icon=FluentIcon.GAME,
title="备选关卡-2",
content="按下回车以添加自定义关卡号",
value=Config.gameid_dict["value"],
texts=Config.gameid_dict["text"],
value=Config.gameid_dict["ALL"]["value"],
texts=Config.gameid_dict["ALL"]["text"],
qconfig=self.config,
configItem=self.config.Info_GameId_2,
parent=self,
@@ -1233,6 +1427,7 @@ class MemberManager(QWidget):
Layout.addLayout(h7_layout)
self.viewLayout.addLayout(Layout)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
self.card_Mode.comboBox.currentIndexChanged.connect(
self.switch_mode
@@ -1246,6 +1441,8 @@ class MemberManager(QWidget):
self.card_Infrastructure.clicked.connect(
self.set_infrastructure
)
Config.gameid_refreshed.connect(self.refresh_gameid)
Config.PASSWORD_refreshed.connect(self.refresh_password)
self.switch_mode()
@@ -1265,6 +1462,29 @@ class MemberManager(QWidget):
self.card_Annihilation.button.setVisible(True)
self.card_Routine.setVisible(True)
def refresh_gameid(self):
self.card_GameId.reLoadOptions(
Config.gameid_dict["ALL"]["value"],
Config.gameid_dict["ALL"]["text"],
)
self.card_GameId_1.reLoadOptions(
Config.gameid_dict["ALL"]["value"],
Config.gameid_dict["ALL"]["text"],
)
self.card_GameId_2.reLoadOptions(
Config.gameid_dict["ALL"]["value"],
Config.gameid_dict["ALL"]["text"],
)
def refresh_password(self):
self.card_Password.setValue(
self.card_Password.qconfig.get(
self.card_Password.configItem
)
)
def set_infrastructure(self) -> None:
"""配置自定义基建"""

View File

@@ -335,17 +335,17 @@ class Setting(QWidget):
)
)
version_info_json: Dict[str, Dict[str, str]] = json.loads(
re.sub(
r"^<!--\s*(.*?)\s*-->$",
r"\1",
version_info["data"]["release_note"].splitlines()[0],
)
)
# 有版本更新
if remote_version > current_version:
version_info_json: Dict[str, Dict[str, str]] = json.loads(
re.sub(
r"^<!--\s*(.*?)\s*-->$",
r"\1",
version_info["data"]["release_note"].splitlines()[0],
)
)
# 生成版本更新信息
main_version_info = f"## 主程序:{version_text(current_version)} --> {version_text(remote_version)}"
@@ -361,7 +361,7 @@ class Setting(QWidget):
update_version_info[key] += value.copy()
else:
update_version_info[key] = value.copy()
for v_i in update_version_info.values():
for v_i in version_info_json.values():
for key, value in v_i.items():
if key in all_version_info:
all_version_info[key] += value.copy()
@@ -373,7 +373,7 @@ class Setting(QWidget):
"ALL~版本信息": version_info_markdown(all_version_info),
**{
version_text(list(map(int, k.split(".")))): version_info_markdown(v)
for k, v in update_version_info.items()
for k, v in version_info_json.items()
},
}