Skip to content
This repository was archived by the owner on Oct 4, 2023. It is now read-only.

Commit 93deaa9

Browse files
committed
彻底完成 “点击游戏目录中某一目录时,加载当前目录下的版本” 功能+优化代码
1 parent 3574ac5 commit 93deaa9

File tree

1 file changed

+126
-28
lines changed

1 file changed

+126
-28
lines changed

UI/MOS_UI.py

Lines changed: 126 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2122,22 +2122,42 @@ def click_pushButton_qhqqi_blog(self):
21222122
def click_pushButton_youximululeibiao(self):
21232123
self.stackedWidget_mos_right.setCurrentIndex(1)
21242124

2125-
def game_first_initialize_add(self, name):
2126-
'''将游戏添加到 主页上“选择要启动的游戏”下拉框中'''
2127-
name1 = [name]
2128-
self.comboBox_gonggao_right.addItems(name1)
2129-
self.listWidget_2.addItem(name)
2130-
2131-
def game_dir_add(self, name, back= None):
2132-
'''在版本文件夹类表中添加(多个)“文本”和图标
2133-
参数back为是否返回到“版本文件夹下的游戏类表”页
2125+
def game_first_initialize_add(self, name, back= None):
2126+
'''将游戏添加到 主页上“选择要启动的游戏”下拉框 和“游戏目录”列表中 所选的目录下的游戏列表中
2127+
如果要 将 “游戏目录列表” 右边的页面 切换为 “当前选择的游戏目录 中的游戏 列表” back='Yes'
2128+
如果不,请写No
21342129
'''
2130+
# 先清空列表
2131+
self.listWidget_2.clear()
2132+
self.listWidget_2.addItems(name)
2133+
if back != 'No':
2134+
self.stackedWidget_5.setCurrentIndex(0)
2135+
elif back == 'No':
2136+
pass
2137+
def game_first_initialize_add_DropDownBox(self, name):
2138+
'''在刚开始运行时,将所有的游戏添加到“选择要启动的游戏”下拉框中'''
2139+
self.comboBox_gonggao_right.clear()
2140+
self.comboBox_gonggao_right.addItems(name)
2141+
2142+
def game_first_initialize_add_error(self, error):
2143+
'''当点击 “游戏文件夹列表” 中的 文件夹后,检测目录下的游戏后 发生的错误'''
2144+
if error == '该版本文件夹下无游戏':
2145+
# 先清空列表
2146+
self.listWidget_2.clear()
2147+
self.listWidget_2.addItem("该版本文件夹下无游戏")
2148+
self.stackedWidget_5.setCurrentIndex(0)
2149+
elif error == '该版本文件夹下无游戏目录':
2150+
# 先清空列表
2151+
self.listWidget_2.clear()
2152+
self.listWidget_2.addItem("该版本文件夹下无游戏目录")
2153+
self.stackedWidget_5.setCurrentIndex(0)
2154+
2155+
def game_dir_add(self, name):
2156+
'''在游戏文件夹类表中添加(多个)“文本”和图标'''
21352157
for name_1 in name:
21362158
icon2 = os.path.join("picture","folder.png")
21372159
item = QListWidgetItem(QIcon(icon2),name_1)
21382160
self.listWidget.addItem(item)
2139-
if back != None:
2140-
self.stackedWidget_mos_right.setCurrentIndex(0)
21412161

21422162
def click_pushButton_youximululeibiao_back(self):
21432163
'''当点击版本列表页面上方的“返回”按钮后……'''
@@ -2178,7 +2198,6 @@ def click_pushButton_youximululeibiao_add_back(self):
21782198

21792199
def click_lineEdit_youximululeibiao_check(self):
21802200
'''当“添加版本文件夹”页面中的“名称输入框”中的文字改变时,检查是否设置了要添加的文件夹路径。如果没有就不激活按钮,如果有,则激活'''
2181-
MOS_print("error","jjjjjjjj")
21822201
a = self.lineEdit_4.text()
21832202
if self.label_46.text() == "请先选择一个目录":
21842203
self.pushButton_18.setEnabled(False)
@@ -2201,8 +2220,10 @@ def click_lineEdit_youximululeibiao_check_leibiao(self, item):
22012220
self.game = game_first_initialize(file_versinons=name)
22022221
self.game.sinOut_game_add.connect(self.game_first_initialize_add)
22032222
self.game.sinOut_game_dir_add.connect(self.game_dir_add)
2223+
self.game.sinOut_game_error.connect(self.game_first_initialize_add_error)
22042224
self.game.start()
2205-
2225+
2226+
22062227

22072228

22082229

@@ -2563,9 +2584,11 @@ def MOS_file_return_font(self, a):
25632584
def MOS_file_return(self, str):
25642585
'''文件处理后……(如果成功那么启动2进程 如果失败……)'''
25652586
if str == "OK!":
2566-
self.game = game_first_initialize()
2587+
self.game = game_first_initialize(all='Yes')
25672588
self.game.sinOut_game_add.connect(self.game_first_initialize_add)
2589+
self.game.sinOut_game_add_DropDownBox.connect(self.game_first_initialize_add_DropDownBox)
25682590
self.game.sinOut_game_dir_add.connect(self.game_dir_add)
2591+
self.game.sinOut_game_error.connect(self.game_first_initialize_add_error)
25692592
self.game.start()
25702593

25712594
self.g = gonggao()
@@ -3013,14 +3036,18 @@ def run(self):
30133036
MOS_print("error",error)
30143037

30153038
class game_first_initialize(QThread):
3016-
'''遍历versions文件+缓存, 默认
3039+
'''遍历versions文件+缓存
30173040
如果要遍历特定的文件夹,请把file_versinons附上路径
3041+
是程序刚开始运行时初始化的 all="Yes" (会检测Json中所有路径下的游戏,并添加到“选择要启动的游戏”下拉框中 然后单独检测默认目录,将其添加到 “目录下的游戏”列表)
30183042
'''
3019-
sinOut_game_add = pyqtSignal(str)
3043+
sinOut_game_add = pyqtSignal(list,str)
30203044
sinOut_game_dir_add = pyqtSignal(list)
3045+
sinOut_game_add_DropDownBox = pyqtSignal(list)
3046+
sinOut_game_error = pyqtSignal(str)
30213047

3022-
def __init__(self,file_versinons=None):
3048+
def __init__(self, file_versinons= None, all= None):
30233049
self.file_versinons = file_versinons
3050+
self.all = all
30243051
super(game_first_initialize, self).__init__()
30253052

30263053
def run(self):
@@ -3035,9 +3062,13 @@ def run(self):
30353062
file = user_home + '/Documents'
30363063
else:
30373064
file = ''
3065+
3066+
3067+
# file_ 这个是为了在后面判断,这个指定的文件夹下,有没有游戏文件夹(在后面的代码中,如果报:找不到文件夹(就是游戏文件夹)这个变量的值会改变
3068+
file_ = "Yes"
30383069

30393070
if self.file_versinons == None:
3040-
# 在程序刚刚开始运行的时候,在Json中获取所有的名称,并传给主窗口的game_dir_add函数,将名称和图标添加到列表中
3071+
# 在程序刚刚开始运行的时候,在Json中获取所有的名称,并传给主窗口的game_dir_add函数,将名称和图标添加到游戏文件夹列表中
30413072
MOS_json_read_geme_dir_Game = MOS_json_read(MOS_game_dir='Yes',MOS_game_dir_name_or_dir='name')
30423073
self.sinOut_game_dir_add.emit(MOS_json_read_geme_dir_Game)
30433074

@@ -3080,7 +3111,8 @@ def run(self):
30803111
MOS_versions_not_found_jar.append(f_3)
30813112
MOS_versions_not_found_jar_name.append(f_2_yuan)
30823113
except FileNotFoundError:
3083-
MOS_print("error",str("找不到"+file_1))
3114+
# 在上面说了file_是做什么的
3115+
file_ = "NO"
30843116

30853117
if self.file_versinons == None:
30863118
b = "默认目录"
@@ -3092,6 +3124,44 @@ def run(self):
30923124
b = b_1
30933125
else:
30943126
MOS_print("error", b_1)
3127+
3128+
# 开始处理all
3129+
if self.all != None:
3130+
# 获取所有路径
3131+
all_1 = MOS_json_read(MOS_game_dir='Yes',MOS_game_dir_name_or_dir='dir')
3132+
# 准备列表
3133+
all_name = []
3134+
# 准备遍历
3135+
for all_2 in all_1:
3136+
all_file = os.path.join (all_2, "versions")
3137+
# 开始遍历
3138+
# all_file_2是versions文件夹的路径
3139+
all_file_2 = os.listdir(all_file)
3140+
for all_file_3 in all_file_2:
3141+
# 开始一个一个进行分析
3142+
# 注意:all_file_3 里面存的是名字 而不是 路径
3143+
all_file_4 = os.path.join(all_file, all_file_3)
3144+
if os.path.isdir(all_file_4):
3145+
# 如果是文件夹
3146+
jar = (all_file_3+ ".jar")
3147+
json = (all_file_3+ ".json")
3148+
jar_2 = os.path.join(all_file_4, jar)
3149+
json_2 = os.path.join(all_file_4, json)
3150+
if os.path.exists(jar_2):
3151+
# 如果有jar文件
3152+
if os.path.exists(json_2):
3153+
# 如果也有Json
3154+
all_name.append(all_file_3)
3155+
else:
3156+
# 如果没Json
3157+
all_name_2 = str(all_file_3) + "找不到Json文件"
3158+
all_name.append(all_name_2)
3159+
else:
3160+
# 如果连Jar都没有,直接判断,不是游戏文件夹
3161+
pass
3162+
self.sinOut_game_add_DropDownBox.emit(all_name)
3163+
3164+
30953165

30963166
MOS_print("info","——————————————————————————————————————————————————————")
30973167
MOS_print("info",str("'" + b + "'中" + "正常的游戏:"+ str(MOS_versions_zhengchang_name)))
@@ -3104,15 +3174,43 @@ def run(self):
31043174
MOS_print("info",str("所对应的路径" + str(MOS_versions_not_found_json)))
31053175
MOS_print("info","——————————————————————————————————————————————————————")
31063176
MOS_print("info","检测完毕")
3107-
for a in MOS_versions_zhengchang_name:
3108-
#正常的
3109-
self.sinOut_game_add.emit(a)
3110-
for a in MOS_versions_not_found_jar_name:
3111-
#少jar的
3112-
self.sinOut_game_add.emit(a)
3113-
for a in MOS_versions_not_found_json_name:
3114-
#少json的
3115-
self.sinOut_game_add.emit(a)
3177+
3178+
if file_ == 'Yes':
3179+
'''判断 有没有游戏文件夹 file_的注释在上面'''
3180+
if len(MOS_versions_zhengchang_name) ==0 and len(MOS_versions_not_found_jar_name) == 0 and len(MOS_versions_not_found_json_name) == 0 :
3181+
'''单独判断是不是一个游戏都没有'''
3182+
MOS_print("info", str("'" + b + "'中没有游戏"))
3183+
self.sinOut_game_error.emit("该版本文件夹下无游戏")
3184+
else:
3185+
if len(MOS_versions_zhengchang_name) != 0:
3186+
if self.file_versinons == None:
3187+
#正常的
3188+
self.sinOut_game_add.emit(MOS_versions_zhengchang_name,'No')
3189+
else:
3190+
self.sinOut_game_add.emit(MOS_versions_zhengchang_name,'Yes')
3191+
else:
3192+
MOS_print("info", str("'" + b + "'中没有正常的游戏"))
3193+
3194+
if len(MOS_versions_not_found_jar_name) != 0:
3195+
if self.file_versinons == None:
3196+
#少jar的
3197+
self.sinOut_game_add.emit(MOS_versions_not_found_json_name,'No')
3198+
else:
3199+
self.sinOut_game_add.emit(MOS_versions_not_found_json_name,'Yes')
3200+
else:
3201+
MOS_print("info", str("'" + b + "'中没有少Jar的游戏"))
3202+
3203+
if len(MOS_versions_not_found_json_name) != 0:
3204+
if self.file_versinons == None:
3205+
#少json的
3206+
self.sinOut_game_add.emit(MOS_versions_not_found_json_name,'NO')
3207+
else:
3208+
self.sinOut_game_add.emit(MOS_versions_not_found_json_name,'Yes')
3209+
else:
3210+
MOS_print("info", str("'" + b + "'中没有少Json的游戏"))
3211+
else:
3212+
self.sinOut_game_error.emit("该版本文件夹下无游戏目录")
3213+
MOS_print("error",str("找不到" + file_1 + "没有游戏目录"))
31163214

31173215

31183216
def MOS_json_read(All = None, MOS_game_dir = None, MOS_game_dir_name_or_dir = None, MOS_game_name_dir = None, MOS_game_dir_to_name = None,file = None):

0 commit comments

Comments
 (0)