mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-06-13 02:16:01 +08:00
移除两个窗口
This commit is contained in:
parent
6549d1ec8c
commit
2230fc95ff
466
mainwindow.py
466
mainwindow.py
@ -660,466 +660,7 @@ def GetScreenSize():
|
||||
])
|
||||
return screenInformation # 返回结果
|
||||
|
||||
class GetDllFromWindowsISO:
|
||||
wineBottonPath = get_home() + "/.wine"
|
||||
isoPath = None
|
||||
dllList = None
|
||||
message = None
|
||||
dllFound = None
|
||||
dllControl = None
|
||||
foundButton = None
|
||||
saveDll = None
|
||||
setWineBotton = None
|
||||
browser = None
|
||||
mount = False
|
||||
mountButton = None
|
||||
dllListModel = None
|
||||
arch = 0
|
||||
def ShowWindow():
|
||||
#DisableButton(True)
|
||||
GetDllFromWindowsISO.message = QtWidgets.QMainWindow()
|
||||
widget = QtWidgets.QWidget()
|
||||
widgetLayout = QtWidgets.QGridLayout()
|
||||
if not e1.currentText() == "":
|
||||
GetDllFromWindowsISO.wineBottonPath = e1.currentText()
|
||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", f"""提示:
|
||||
目前本提取功能暂只支持 NT 内核系统的官方安装镜像,不支持读取 ghost 等第三方封装方式的安装镜像
|
||||
以及不要拷贝/替换太多的 dll,否则可能会导致 wine 容器异常,以及不要替换 Wine 的核心 dll
|
||||
最后,拷贝/替换 dll 后,建议点击下面“设置 wine 容器”按钮==》函数库 进行设置
|
||||
当前选择的 Wine 容器:{GetDllFromWindowsISO.wineBottonPath}""")), 0, 0, 1, 5)
|
||||
isoLabel = QtWidgets.QLabel(transla.transe("U", "ISO镜像:"))
|
||||
GetDllFromWindowsISO.isoPath = QtWidgets.QComboBox()
|
||||
GetDllFromWindowsISO.browser = QtWidgets.QPushButton(transla.transe("U", "浏览"))
|
||||
isoControl = QtWidgets.QWidget()
|
||||
isoControlLayout = QtWidgets.QHBoxLayout()
|
||||
isoControl.setLayout(isoControlLayout)
|
||||
dllControl = QtWidgets.QWidget()
|
||||
dllControlLayout = QtWidgets.QHBoxLayout()
|
||||
dllControl.setLayout(dllControlLayout)
|
||||
GetDllFromWindowsISO.mountButton = QtWidgets.QPushButton(transla.transe("U", "读取/挂载ISO镜像"))
|
||||
umountButton = QtWidgets.QPushButton(transla.transe("U", "关闭/卸载ISO镜像"))
|
||||
GetDllFromWindowsISO.dllFound = QtWidgets.QComboBox()
|
||||
GetDllFromWindowsISO.foundButton = QtWidgets.QPushButton(transla.transe("U", "查找"))
|
||||
GetDllFromWindowsISO.dllList = QtWidgets.QListView()
|
||||
GetDllFromWindowsISO.saveDll = QtWidgets.QPushButton(transla.transe("U", "保存到 wine 容器中"))
|
||||
GetDllFromWindowsISO.setWineBotton = QtWidgets.QPushButton(transla.transe("U", "设置 wine 容器"))
|
||||
isoLabel.setSizePolicy(size)
|
||||
GetDllFromWindowsISO.isoPath.setEditable(True)
|
||||
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
||||
GetDllFromWindowsISO.isoPath.setEditText("")
|
||||
GetDllFromWindowsISO.browser.setSizePolicy(size)
|
||||
GetDllFromWindowsISO.mountButton.setSizePolicy(size)
|
||||
isoControlLayout.addWidget(GetDllFromWindowsISO.mountButton)
|
||||
umountButton.setSizePolicy(size)
|
||||
isoControlLayout.addWidget(umountButton)
|
||||
GetDllFromWindowsISO.dllFound.setEditable(True)
|
||||
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
||||
GetDllFromWindowsISO.dllFound.setEditText("")
|
||||
GetDllFromWindowsISO.saveDll.setSizePolicy(size)
|
||||
dllControlLayout.addWidget(GetDllFromWindowsISO.saveDll)
|
||||
GetDllFromWindowsISO.setWineBotton.setSizePolicy(size)
|
||||
GetDllFromWindowsISO.DisbledDown(True)
|
||||
dllControlLayout.addWidget(GetDllFromWindowsISO.setWineBotton)
|
||||
widgetLayout.addWidget(isoLabel, 1, 0, 1, 1)
|
||||
widgetLayout.addWidget(GetDllFromWindowsISO.isoPath, 1, 1, 1, 1)
|
||||
widgetLayout.addWidget(GetDllFromWindowsISO.browser, 1, 2, 1, 1)
|
||||
widgetLayout.addWidget(isoControl, 2, 1, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "查找DLL\n(为空则代表不查找,\n将显示全部内容):")), 3, 0, 1, 1)
|
||||
widgetLayout.addWidget(GetDllFromWindowsISO.dllFound, 3, 1, 1, 1)
|
||||
widgetLayout.addWidget(GetDllFromWindowsISO.foundButton, 3, 2, 1, 1)
|
||||
widgetLayout.addWidget(GetDllFromWindowsISO.dllList, 4, 1, 1, 1)
|
||||
widgetLayout.addWidget(dllControl, 5, 1, 1, 1)
|
||||
widget.setLayout(widgetLayout)
|
||||
GetDllFromWindowsISO.browser.clicked.connect(GetDllFromWindowsISO.Browser)
|
||||
GetDllFromWindowsISO.mountButton.clicked.connect(GetDllFromWindowsISO.MountDisk)
|
||||
umountButton.clicked.connect(GetDllFromWindowsISO.UmountDisk)
|
||||
GetDllFromWindowsISO.foundButton.clicked.connect(GetDllFromWindowsISO.Found)
|
||||
GetDllFromWindowsISO.saveDll.clicked.connect(GetDllFromWindowsISO.CopyDll)
|
||||
GetDllFromWindowsISO.setWineBotton.clicked.connect(lambda: RunWineProgram("winecfg", Disbled=False))
|
||||
GetDllFromWindowsISO.message.setCentralWidget(widget)
|
||||
GetDllFromWindowsISO.dllListModel = QtCore.QStringListModel()
|
||||
GetDllFromWindowsISO.dllListModel.setStringList([])
|
||||
GetDllFromWindowsISO.dllList.setModel(GetDllFromWindowsISO.dllListModel)
|
||||
GetDllFromWindowsISO.isoPath.currentText()
|
||||
GetDllFromWindowsISO.message.setWindowTitle(f"Wine 运行器 {version}——从 ISO 提取 DLL")
|
||||
GetDllFromWindowsISO.message.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
GetDllFromWindowsISO.message.show()
|
||||
|
||||
def DisbledUp(state):
|
||||
GetDllFromWindowsISO.isoPath.setDisabled(state)
|
||||
GetDllFromWindowsISO.browser.setDisabled(state)
|
||||
GetDllFromWindowsISO.mountButton.setDisabled(state)
|
||||
|
||||
|
||||
def DisbledDown(state):
|
||||
GetDllFromWindowsISO.dllList.setDisabled(state)
|
||||
GetDllFromWindowsISO.dllFound.setDisabled(state)
|
||||
GetDllFromWindowsISO.saveDll.setDisabled(state)
|
||||
GetDllFromWindowsISO.setWineBotton.setDisabled(state)
|
||||
GetDllFromWindowsISO.foundButton.setDisabled(state)
|
||||
|
||||
def Browser():
|
||||
path = QtWidgets.QFileDialog.getOpenFileName(GetDllFromWindowsISO.message, "选择 ISO 镜像文件", json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindISO.json"))["path"], "iso 镜像文件(*.iso);;ISO 镜像文件(*.ISO);;所有文件(*.*)")[0]
|
||||
if path == None or path == "":
|
||||
return
|
||||
GetDllFromWindowsISO.isoPath.setEditText(path)
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindISO.json", json.dumps({"path": os.path.dirname(path)})) # 写入配置文件
|
||||
|
||||
def Found():
|
||||
found = GetDllFromWindowsISO.dllFound.currentText()
|
||||
findList = []
|
||||
try:
|
||||
if found == "":
|
||||
# 显示所有内容
|
||||
# 下面内容需要分类讨论
|
||||
if GetDllFromWindowsISO.arch == 0:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
||||
if i[-3:] == "dl_":
|
||||
findList.append(i[:-1] + "l")
|
||||
elif GetDllFromWindowsISO.arch == 32:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/SysWOW64"):
|
||||
if i[-3:] == "dll":
|
||||
findList.append(i[:-1] + "l")
|
||||
elif GetDllFromWindowsISO.arch == 64:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/System32"):
|
||||
if i[-3:] == "dll":
|
||||
findList.append(i[:-1] + "l")
|
||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||
return
|
||||
if GetDllFromWindowsISO.arch == 0:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
||||
if found in i[:-1] + "l":
|
||||
findList.append(i[:-1] + "l")
|
||||
elif GetDllFromWindowsISO.arch == 32:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/SysWOW64"):
|
||||
if found in i[:-1] + "l":
|
||||
findList.append(i[:-1] + "l")
|
||||
elif GetDllFromWindowsISO.arch == 64:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/System32"):
|
||||
if found in i[:-1] + "l":
|
||||
findList.append(i[:-1] + "l")
|
||||
if len(isoPath) == 0:
|
||||
if isoPathFound[-1] != found:
|
||||
isoPathFound.append(found) # 将记录写进数组
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json", str(json.dumps(ListToDictionary(isoPathFound)))) # 将历史记录的数组转换为字典并写入
|
||||
GetDllFromWindowsISO.dllFound.clear()
|
||||
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, transla.trans("错误"), traceback.format_exc())
|
||||
|
||||
|
||||
def MountDisk():
|
||||
if not os.path.exists(GetDllFromWindowsISO.isoPath.currentText()):
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, transla.trans("错误"), transla.trans("您选择的 ISO 镜像文件不存在"))
|
||||
return
|
||||
if os.path.exists("/tmp/wine-runner-getdll"):
|
||||
try:
|
||||
os.rmdir("/tmp/wine-runner-getdll")
|
||||
os.system("rm -rf /tmp/wine-runner-getdll-wim")
|
||||
except:
|
||||
# 如果无法删除可能是挂载了文件
|
||||
os.system("wimunmount /tmp/wine-runner-getdll-wim")
|
||||
os.system("pkexec umount /tmp/wine-runner-getdll")
|
||||
|
||||
try:
|
||||
os.rmdir("/tmp/wine-runner-getdll")
|
||||
os.rmdir("/tmp/wine-runner-getdll-wim")
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", traceback.format_exc())
|
||||
return
|
||||
os.makedirs("/tmp/wine-runner-getdll")
|
||||
os.system(f"pkexec mount '{GetDllFromWindowsISO.isoPath.currentText()}' /tmp/wine-runner-getdll")
|
||||
findList = []
|
||||
# 判断是新版的 Windows ISO(Windows Vista 及以上版本)
|
||||
if os.path.exists("/tmp/wine-runner-getdll/sources/install.wim"):
|
||||
# 如果没有安装 wimtools 的话
|
||||
if os.system("which wimmount") != 0:
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", f"镜像内容读取/挂载失败,因为没有安装 wimtools 以至无法读取")
|
||||
return
|
||||
# 是新版,挂载 wim
|
||||
# 需要让用户选择挂载内容
|
||||
QtWidgets.QInputDialog.getMultiLineText(GetDllFromWindowsISO.message, "提示", "挂载文件需要用户记住并在下一个对话框输入 Index 以挂载正确的镜像,按下下方任意按钮即可继续", subprocess.getoutput("wiminfo '/tmp/wine-runner-getdll/sources/install.wim'"))
|
||||
choose = QtWidgets.QInputDialog.getInt(GetDllFromWindowsISO.message, "提示", "请输入 Index")
|
||||
if not choose[1]:
|
||||
return
|
||||
os.makedirs("/tmp/wine-runner-getdll-wim")
|
||||
os.system(f"wimmount /tmp/wine-runner-getdll/sources/install.wim {choose[0]} /tmp/wine-runner-getdll-wim")
|
||||
if os.path.exists("/tmp/wine-runner-getdll-wim/Windows/SysWOW64"):
|
||||
# 如果是 64 位镜像
|
||||
if QtWidgets.QInputDialog.getItem(GetDllFromWindowsISO.message, "选择位数", "选择位数(如果没有选择,默认为 64 位)", ["32", "64"], 1, False) == "32":
|
||||
# 64 位镜像的 32 位是存在 SysWOW64 的
|
||||
try:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/SysWOW64"):
|
||||
if i[-3:] == "dll":
|
||||
findList.append(i[:-1] + "l")
|
||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||
GetDllFromWindowsISO.arch = 32
|
||||
GetDllFromWindowsISO.DisbledDown(False)
|
||||
GetDllFromWindowsISO.DisbledUp(True)
|
||||
GetDllFromWindowsISO.mount = True
|
||||
if len(isoPath) == 0 or isoPath[-1] != GetDllFromWindowsISO.isoPath.currentText():
|
||||
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
||||
GetDllFromWindowsISO.isoPath.clear()
|
||||
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
||||
return
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", f"镜像内容读取/挂载失败,报错如下:\n{traceback.format_exc()}")
|
||||
return
|
||||
try:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll-wim/Windows/System32"):
|
||||
if i[-3:] == "dll":
|
||||
findList.append(i[:-1] + "l")
|
||||
GetDllFromWindowsISO.arch = 64
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", f"镜像内容读取/挂载失败,报错如下:\n{traceback.format_exc()}")
|
||||
return
|
||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||
else:
|
||||
try:
|
||||
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
||||
if i[-3:] == "dl_":
|
||||
findList.append(i[:-1] + "l")
|
||||
GetDllFromWindowsISO.arch = 0
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", f"镜像内容读取/挂载失败,报错如下:\n{traceback.format_exc()}")
|
||||
return
|
||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||
GetDllFromWindowsISO.DisbledDown(False)
|
||||
GetDllFromWindowsISO.DisbledUp(True)
|
||||
GetDllFromWindowsISO.mount = True
|
||||
if len(isoPath) == 0 or isoPath[-1] != GetDllFromWindowsISO.isoPath.currentText():
|
||||
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
||||
GetDllFromWindowsISO.isoPath.clear()
|
||||
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
||||
#GetDllFromWindowsISO.isoPath['value'] = isoPath
|
||||
|
||||
def UmountDisk():
|
||||
os.system("wimunmount /tmp/wine-runner-getdll-wim")
|
||||
os.system("pkexec umount /tmp/wine-runner-getdll")
|
||||
try:
|
||||
shutil.rmtree("/tmp/wine-runner-getdll")
|
||||
os.system("rm -rf /tmp/wine-runner-getdll-wim")
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, transla.transe("U", "错误"), f"关闭/卸载镜像失败,报错如下:\n{traceback.format_exc()}")
|
||||
return
|
||||
GetDllFromWindowsISO.DisbledDown(True)
|
||||
GetDllFromWindowsISO.DisbledUp(False)
|
||||
GetDllFromWindowsISO.mount = False
|
||||
QtWidgets.QMessageBox.information(GetDllFromWindowsISO.message, transla.transe("U", "提示"), transla.transe("U", "关闭/卸载成功!"))
|
||||
|
||||
def CopyDll():
|
||||
choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data()
|
||||
if os.path.exists(f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}"):
|
||||
if QtWidgets.QMessageBox.question(GetDllFromWindowsISO.message, "提示", f"DLL {choose} 已经存在,是否覆盖?") == QtWidgets.QMessageBox.No:
|
||||
return
|
||||
try:
|
||||
# 要分类讨论
|
||||
if GetDllFromWindowsISO.arch == 0:
|
||||
shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
|
||||
elif GetDllFromWindowsISO.arch == 32:
|
||||
shutil.copy(f"/tmp/wine-runner-getdll-wim/Windows/SysWOW64/{choose[:-1]}l", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
|
||||
elif GetDllFromWindowsISO.arch == 64:
|
||||
shutil.copy(f"/tmp/wine-runner-getdll-wim/Windows/System32/{choose[:-1]}l", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
|
||||
# 选择原装或优于内建
|
||||
if QtWidgets.QInputDialog.getItem(GetDllFromWindowsISO.message, "选择", "选择模式", ["原装先于内建", "原装"], 0, False) == "原装先于内建":
|
||||
# 原装先于内建
|
||||
os.system(f"WINEPREFIX='{GetDllFromWindowsISO.wineBottonPath}' '{wine[o1.currentText()]}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(choose)[0]} /d native,builtin /f")
|
||||
else:
|
||||
# 原装
|
||||
os.system(f"WINEPREFIX='{GetDllFromWindowsISO.wineBottonPath}' '{wine[o1.currentText()]}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(choose)[0]} /d native /f")
|
||||
QtWidgets.QMessageBox.information(GetDllFromWindowsISO.message, "提示", "提取成功!")
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", traceback.format_exc())
|
||||
|
||||
choose = None
|
||||
class ProgramRunStatusShow():
|
||||
msgWindow = None
|
||||
def ShowWindow():
|
||||
global choose
|
||||
choose = None
|
||||
dateVersion = ""
|
||||
if not os.path.exists(e2.currentText()):
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "您输入的 exe 不存在")
|
||||
return
|
||||
try:
|
||||
sha = ProgramRunStatusUpload.GetSHA1(e2.currentText())
|
||||
lists = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).text)
|
||||
r = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L3RpdGxlLnR4dA==").decode("utf-8"))
|
||||
r.encoding = "utf-8"
|
||||
title = r.text
|
||||
except:
|
||||
choosemsg = QtWidgets.QMessageBox()
|
||||
choosemsg.setText("""暂时还没有该软件的运行情况信息,请问需要?""")
|
||||
choosemsg.setWindowTitle("提示")
|
||||
def Choose(choices):
|
||||
global choose
|
||||
choose = choices
|
||||
choosemsg.addButton("取消", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(0))
|
||||
choosemsg.addButton("提交评分", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(1))
|
||||
choosemsg.addButton("预测评分(不准确)", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(2))
|
||||
choosemsg.exec_()
|
||||
if choose == None or choose == 0:
|
||||
return
|
||||
if choose == 1:
|
||||
ProgramRunStatusUpload.ShowWindow(sha)
|
||||
return
|
||||
if choose == 2:
|
||||
try:
|
||||
lists = [0, 0, 0, 0, 0, 0, 0, 0]
|
||||
info = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL0FJP1NIQTE9").decode("utf-8") + sha).text)
|
||||
lists[int(info["Fen"])] = 1
|
||||
dateVersion = info["Version"]
|
||||
title = "null"
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(window, "错误", "无法获取预测数值")
|
||||
return
|
||||
|
||||
|
||||
informationList = [
|
||||
"0分:无法运行并且也没有报错,自己无法解决",
|
||||
"1分:无法运行但有报错,自己无法解决",
|
||||
"2分:可以运行但是效果很差,几乎无法使用",
|
||||
"3分:可以运行且勉强可以使用",
|
||||
"4分:可以运行,体验大差不差,还是有点小问题",
|
||||
"5分:可以运行且完全没有bug和问题,和在 Windows 上一样",
|
||||
"含有不良内容,不宜安装",
|
||||
"含有病毒、木马等对计算机有害的软件"
|
||||
]
|
||||
try:
|
||||
if title.lower() == "null":
|
||||
title = "未知应用"
|
||||
except:
|
||||
title = "未知应用"
|
||||
maxHead = lists.index(max(lists))
|
||||
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
|
||||
msgWidget = QtWidgets.QWidget()
|
||||
msgWidgetLayout = QtWidgets.QGridLayout()
|
||||
starLayout = QtWidgets.QHBoxLayout()
|
||||
uploadButton = QtWidgets.QPushButton(transla.transe("U", "点此上传运行情况"))
|
||||
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(sha, title))
|
||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "综合评价:")), 0, 0)
|
||||
msgWidgetLayout.addLayout(starLayout, 0, 1)
|
||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(informationList[maxHead]), 1, 0, 1, 2)
|
||||
msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
|
||||
msgWidgetLayout.addWidget(uploadButton, 3, 0, 1, 2)
|
||||
end = 5
|
||||
if maxHead > 5:
|
||||
for i in range(end):
|
||||
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/BadStar.svg' width=50>"))
|
||||
else:
|
||||
for i in range(maxHead):
|
||||
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/Star.svg' width=50>"))
|
||||
head = maxHead
|
||||
for i in range(head, end):
|
||||
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>"))
|
||||
msgWidget.setLayout(msgWidgetLayout)
|
||||
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
|
||||
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
ProgramRunStatusShow.msgWindow.setWindowTitle(f"应用“{title}”的运行情况")
|
||||
ProgramRunStatusShow.msgWindow.show()
|
||||
|
||||
class ProgramRunStatusUpload():
|
||||
msgWindow = None
|
||||
starLayout = None
|
||||
fen = None
|
||||
starList = []
|
||||
sha1Value = ""
|
||||
programName = None
|
||||
def ChangeStar():
|
||||
if ProgramRunStatusUpload.fen.currentIndex() > 5:
|
||||
for i in ProgramRunStatusUpload.starList:
|
||||
i.setText(f"<img src='{programPath}/Icon/BadStar.svg' width=25>")
|
||||
return
|
||||
for i in range(ProgramRunStatusUpload.fen.currentIndex()):
|
||||
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/Star.svg' width=25>")
|
||||
head = ProgramRunStatusUpload.fen.currentIndex()
|
||||
end = len(ProgramRunStatusUpload.starList)
|
||||
for i in range(head, end):
|
||||
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/UnStar.svg' width=25>")
|
||||
|
||||
def ShowWindow(sha="", title=""):
|
||||
ProgramRunStatusUpload.starList = []
|
||||
ProgramRunStatusUpload.sha1Value = sha
|
||||
ProgramRunStatusUpload.msgWindow = QtWidgets.QMainWindow()
|
||||
msgWidget = QtWidgets.QWidget()
|
||||
msgWidgetLayout = QtWidgets.QGridLayout()
|
||||
ProgramRunStatusUpload.programName = QtWidgets.QLineEdit()
|
||||
ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
|
||||
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
|
||||
upload = QtWidgets.QPushButton(transla.transe("U", "上传"))
|
||||
upload.clicked.connect(ProgramRunStatusUpload.Upload)
|
||||
if title != "":
|
||||
ProgramRunStatusUpload.programName.setText(title)
|
||||
ProgramRunStatusUpload.programName.setDisabled(True)
|
||||
# 生成星星列表
|
||||
for i in [1, 1, 1, 1, 0]:
|
||||
ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>"))
|
||||
ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1])
|
||||
ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
|
||||
ProgramRunStatusUpload.programName.setPlaceholderText(transla.transe("U", "如果这个程序和程序名确实是合法还是检测到敏感词,改为“NULL”即可"))
|
||||
ProgramRunStatusUpload.fen.addItems(["0分:无法运行并且也没有报错,自己无法解决",
|
||||
"1分:无法运行但有报错,自己无法解决",
|
||||
"2分:可以运行但是效果很差,几乎无法使用",
|
||||
"3分:可以运行且勉强可以使用",
|
||||
"4分:可以运行,体验大差不差,还是有点小问题",
|
||||
"5分:可以运行且完全没有bug和问题,和在 Windows 上一样",
|
||||
"含有不良内容,不宜安装",
|
||||
"含有病毒、木马等对计算机有害的软件"])
|
||||
ProgramRunStatusUpload.fen.setCurrentIndex(4)
|
||||
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
|
||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "程序名:")), 0, 0)
|
||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "评分:")), 1, 0)
|
||||
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
|
||||
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
|
||||
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
|
||||
msgWidgetLayout.addWidget(upload, 3, 1)
|
||||
msgWidget.setLayout(msgWidgetLayout)
|
||||
ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget)
|
||||
ProgramRunStatusUpload.msgWindow.setWindowTitle(transla.transe("U", "上传程序运行情况"))
|
||||
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
ProgramRunStatusUpload.msgWindow.show()
|
||||
|
||||
def Upload():
|
||||
if not os.path.exists(e2.currentText()):
|
||||
QtWidgets.QMessageBox.critical(None, "错误", "exe 文件不存在!")
|
||||
return
|
||||
if ProgramRunStatusUpload.programName.text() == "":
|
||||
QtWidgets.QMessageBox.critical(None, "错误", "程序名称不能为空!")
|
||||
return
|
||||
try:
|
||||
if ProgramRunStatusUpload.sha1Value == "":
|
||||
ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
|
||||
QtWidgets.QMessageBox.information(None, transla.transe("U", "提示"), json.loads(requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUw").decode("utf-8"), {
|
||||
"SHA1": ProgramRunStatusUpload.sha1Value,
|
||||
"Name": ProgramRunStatusUpload.programName.text(),
|
||||
"Fen": ProgramRunStatusUpload.fen.currentIndex(),
|
||||
"Wine": o1.currentText()
|
||||
}).text)["Error"])
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(None, transla.transe("U", "错误"), transla.transe("U", "数据上传失败!"))
|
||||
|
||||
def GetSHA1(filePath):
|
||||
sha1 = hashlib.sha1()
|
||||
file = open(filePath, "rb")
|
||||
while True:
|
||||
readByte = file.read(1024 * 1024)
|
||||
sha1.update(readByte)
|
||||
if not readByte:
|
||||
break
|
||||
file.close()
|
||||
return sha1.hexdigest()
|
||||
|
||||
class ProgramSetting():
|
||||
wineBottonA = None
|
||||
@ -1806,10 +1347,6 @@ uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe
|
||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 3, 1, 1)
|
||||
programManager.addWidget(uninstallProgram, 1, 4, 1, 1)
|
||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 5, 1, 1)
|
||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 7, 1, 1)
|
||||
getProgramStatus = QtWidgets.QPushButton(transla.transe("U", "获取该程序运行情况"))
|
||||
getProgramStatus.clicked.connect(ProgramRunStatusShow.ShowWindow)
|
||||
programManager.addWidget(getProgramStatus, 1, 8, 1, 1)
|
||||
programManager.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum), 1, 11, 1, 1)
|
||||
programManager.addWidget(QtWidgets.QLabel(transla.transe("U", "WINE配置:")), 2, 0, 1, 1)
|
||||
wineConfig = QtWidgets.QPushButton(transla.transe("U", "配置容器"))
|
||||
@ -1898,7 +1435,6 @@ cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基
|
||||
wineKeyboardLnk = QtWidgets.QAction(transla.transe("U", "Wine 快捷键映射"))
|
||||
easyPackager = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "使用简易打包器进行打包(小白且无特殊需求建议使用这个)"))
|
||||
getDllOnInternet = QtWidgets.QAction(QtGui.QIcon.fromTheme("1CD8_rundll32.0"), transla.transe("U", "从互联网获取DLL"))
|
||||
w7 = QtWidgets.QAction(transla.transe("U", "从镜像获取DLL(只支持官方安装镜像,DOS内核如 Windows 95 暂不支持)"))
|
||||
updateGeek = QtWidgets.QAction(transla.transe("U", "从 Geek Uninstaller 官网升级程序"))
|
||||
deletePartIcon = QtWidgets.QAction(transla.transe("U", "快捷方式管理工具"))
|
||||
deleteDesktopIcon = QtWidgets.QAction(transla.transe("U", "删除所有 Wine 程序在启动器的快捷方式"))
|
||||
@ -1912,7 +1448,6 @@ wineOption.addSeparator()
|
||||
wineOption.addAction(wineKeyboardLnk)
|
||||
wineOption.addSeparator()
|
||||
wineOption.addAction(getDllOnInternet)
|
||||
wineOption.addAction(w7)
|
||||
wineOption.addSeparator()
|
||||
wineOption.addAction(updateGeek)
|
||||
wineOption.addSeparator()
|
||||
@ -1936,7 +1471,6 @@ cleanBottonUOS.triggered.connect(CleanWineBottonByUOS)
|
||||
easyPackager.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/deepin-wine-easy-packager.py' '{e2.currentText()}'"]).start())
|
||||
wineKeyboardLnk.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/key/key-add-gui.py'"]).start())
|
||||
getDllOnInternet.triggered.connect(GetDllFromInternet)
|
||||
w7.triggered.connect(GetDllFromWindowsISO.ShowWindow)
|
||||
updateGeek.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-terminal -C '\"{programPath}/UpdateGeek.sh\"' --keep-open"))
|
||||
wm2_1.triggered.connect(lambda: RunWineProgram("control"))
|
||||
wm2_2.triggered.connect(lambda: RunWineProgram("iexplore' 'https://gfdgd-xi.github.io"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user