mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2026-08-09 05:43:56 +08:00
Compare commits
7
Commits
ae119a7d1a
..
3.9.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8683ee1730 | ||
|
|
f4bce0e99f | ||
|
|
380cf74bbf | ||
|
|
535232ac5f | ||
|
|
6509a89658 | ||
|
|
962fec1ca9 | ||
|
|
89c61eeef2 |
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
echo 网址:http://deb.wine.wine-runner.gfdgdxi.top/
|
|
||||||
if [[ ! -f /etc/apt/sources.list.d/gfdgdxi-list-winehq.list ]]; then
|
|
||||||
echo 未添加源,现在开始添加!
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install wget gpg
|
|
||||||
if [[ -f /tmp/github.sh ]]; then
|
|
||||||
rm -v /tmp/github.sh
|
|
||||||
fi
|
|
||||||
cd /tmp
|
|
||||||
wget http://deb.wine.wine-runner.gfdgdxi.top/sources/github.sh
|
|
||||||
bash github.sh
|
|
||||||
rm github.sh
|
|
||||||
echo 添加完成,现在安装 Wine!
|
|
||||||
else
|
|
||||||
echo 已添加源,忽略,现在安装 Wine!
|
|
||||||
sudo apt update
|
|
||||||
fi
|
|
||||||
sudo apt install winehq-devel -y
|
|
||||||
echo 安装完成,按回车键退出!
|
|
||||||
read
|
|
||||||
-391
@@ -40,400 +40,11 @@ urlSourcesList = [
|
|||||||
urlSources = urlSourcesList[0]
|
urlSources = urlSourcesList[0]
|
||||||
lists = []
|
lists = []
|
||||||
|
|
||||||
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(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("U", "如果这个程序和程序名确实是合法还是检测到敏感词,改为“NULL”即可"))
|
|
||||||
ProgramRunStatusUpload.fen.addItems(["0分", "1分", "2分", "3分", "4分", "5分"])
|
|
||||||
ProgramRunStatusUpload.fen.setCurrentIndex(4)
|
|
||||||
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
|
|
||||||
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
|
|
||||||
ProgramRunStatusUpload.msgWindow.show()
|
|
||||||
|
|
||||||
def Upload():
|
|
||||||
try:
|
|
||||||
#if ProgramRunStatusUpload.sha1Value == "":
|
|
||||||
#ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
|
|
||||||
QtWidgets.QMessageBox.information(None, QtCore.QCoreApplication.translate("U", "提示"), requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL2Jhc2g=").decode("utf-8"), {
|
|
||||||
"BashName": ProgramRunStatusUpload.sha1Value,
|
|
||||||
"Fen": ProgramRunStatusUpload.fen.currentIndex()
|
|
||||||
}).json()["Error"])
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
QtWidgets.QMessageBox.critical(None, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
|
|
||||||
|
|
||||||
class InformationWindow():
|
|
||||||
def ShowWindow():
|
|
||||||
#webeng = False
|
|
||||||
# 获取选中项
|
|
||||||
try:
|
|
||||||
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
|
|
||||||
except:
|
|
||||||
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
|
|
||||||
return
|
|
||||||
fileName = ""
|
|
||||||
for i in lists:
|
|
||||||
print(i)
|
|
||||||
if i[0] == choose:
|
|
||||||
fileName = i[1]
|
|
||||||
break
|
|
||||||
aboutHtml = ""
|
|
||||||
try:
|
|
||||||
get = requests.get(f"{urlSources}/information/{fileName}.txt")
|
|
||||||
if get.status_code / 100 != 2 and get.status_code / 100 != 3:
|
|
||||||
int("Bad")
|
|
||||||
about = get.text
|
|
||||||
aboutHtml = str(about)
|
|
||||||
if not "<" in about:
|
|
||||||
# 非 Html 标签
|
|
||||||
for i in about.splitlines():
|
|
||||||
about += f"<p>{i}</p>\n"
|
|
||||||
#about = f"<pre>{about}</pre>"
|
|
||||||
about = f"<h1>关于“{choose}”的介绍</h1>\n{about}"
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
|
|
||||||
try:
|
|
||||||
import requests as r
|
|
||||||
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
|
|
||||||
tipsInfo = ""
|
|
||||||
except:
|
|
||||||
fenlists = [0, 0, 0, 0, 0]
|
|
||||||
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
|
|
||||||
maxHead = fenlists.index(max(fenlists))
|
|
||||||
allNumber = 0
|
|
||||||
for i in fenlists:
|
|
||||||
allNumber += i
|
|
||||||
try:
|
|
||||||
maxNumber = max(fenlists) / allNumber * 100
|
|
||||||
if tipsInfo == "":
|
|
||||||
tipsInfo = f"有{maxNumber}%的用户选择了这个评分"
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
end = 5
|
|
||||||
starHtml = ""
|
|
||||||
if maxHead > 5:
|
|
||||||
for i in range(end):
|
|
||||||
if webeng:
|
|
||||||
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/BadStar.svg' width=50>\n"
|
|
||||||
else:
|
|
||||||
starHtml += f"<img src='{programPath}/Icon/BadStar.svg' width=50>\n"
|
|
||||||
else:
|
|
||||||
for i in range(maxHead):
|
|
||||||
if webeng:
|
|
||||||
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/Star.svg' width=50>\n"
|
|
||||||
else:
|
|
||||||
starHtml += f"<img src='{programPath}/Icon/Star.svg' width=50>\n"
|
|
||||||
head = maxHead
|
|
||||||
for i in range(head, end):
|
|
||||||
if webeng:
|
|
||||||
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/UnStar.svg' width=50>"
|
|
||||||
else:
|
|
||||||
starHtml += f"<img src='{programPath}/Icon/UnStar.svg' width=50>"
|
|
||||||
about += f"\n<hr/><h1>评分情况</h1>\n<p align='center'>{starHtml}</p>\n<p align='center'>{tipsInfo}</p>"
|
|
||||||
message = QtWidgets.QDialog()
|
|
||||||
messageLayout = QtWidgets.QVBoxLayout()
|
|
||||||
if webeng:
|
|
||||||
informationText = QtWebEngineWidgets.QWebEngineView()
|
|
||||||
print(aboutHtml)
|
|
||||||
if aboutHtml[:7] == "Visit: ":
|
|
||||||
url = aboutHtml[7:].splitlines()[0]
|
|
||||||
print(url)
|
|
||||||
informationText.setUrl(QtCore.QUrl(url.strip()))
|
|
||||||
else:
|
|
||||||
#informationText.linkClicked.connect(lambda: print("a"))
|
|
||||||
try:
|
|
||||||
with open("/tmp/deepin-wine-runner-information.html", "w") as file:
|
|
||||||
file.write(about)
|
|
||||||
informationText.setUrl(QtCore.QUrl("file:///tmp/deepin-wine-runner-information.html"))
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
informationText.setHtml(about)
|
|
||||||
#informationText.urlChanged.connect(lambda: informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io")))
|
|
||||||
else:
|
|
||||||
informationText = QtWidgets.QTextBrowser()
|
|
||||||
informationText.setHtml(about)
|
|
||||||
uploadFen = QtWidgets.QPushButton("提交评分")
|
|
||||||
uploadFen.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
|
|
||||||
|
|
||||||
#informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io"))
|
|
||||||
messageLayout.addWidget(informationText)
|
|
||||||
messageLayout.addWidget(uploadFen)
|
|
||||||
message.setWindowTitle(f"关于“{choose}”的介绍")
|
|
||||||
message.resize(int(message.frameSize().width() * 1.5), int(message.frameSize().height()))
|
|
||||||
message.setLayout(messageLayout)
|
|
||||||
#message.setWindowModality(ApplicationModal);
|
|
||||||
message.show()
|
|
||||||
message.exec_()
|
|
||||||
|
|
||||||
def Add(lists: list):
|
|
||||||
global pinLunLayout
|
|
||||||
pinLunLayout1 = QtWidgets.QVBoxLayout()
|
|
||||||
pinLunLayout = QtWidgets.QWidget()
|
|
||||||
pinLunLayout.setLayout(pinLunLayout1)
|
|
||||||
for i in range(pinLunLayout1.count()):
|
|
||||||
pinLunLayout1.removeItem(pinLunLayout1.itemAt(i))
|
|
||||||
for i in lists:
|
|
||||||
widget = QtWidgets.QWidget()
|
|
||||||
inLayout = QtWidgets.QGridLayout()
|
|
||||||
inLayout.addWidget(QtWidgets.QLabel("<hr>"), 0, 0, 1, 3)
|
|
||||||
inLayout.addWidget(QtWidgets.QLabel(f"<b>{i[0]}</b>"), 1, 0)
|
|
||||||
inLayout.addWidget(QtWidgets.QLabel(f"<p align='right'><b>第{i[1]}层</b></p>"), 1, 2)
|
|
||||||
inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3)
|
|
||||||
widget.setLayout(inLayout)
|
|
||||||
pinLunLayout1.addWidget(widget)
|
|
||||||
#pinLunLayout.addWidget(QtWidgets.QLabel("<hr/>"))
|
|
||||||
# pinLunLayout = widget
|
|
||||||
|
|
||||||
all = 0
|
all = 0
|
||||||
now = 0
|
now = 0
|
||||||
class ProgramRunStatusShow():
|
|
||||||
msgWindow = None
|
|
||||||
pingLunLayout = None
|
|
||||||
def ShowWindow():
|
|
||||||
global lists
|
|
||||||
global all
|
|
||||||
global now
|
|
||||||
global leftButton
|
|
||||||
global rightButton
|
|
||||||
# 获取选中项
|
|
||||||
try:
|
|
||||||
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
|
|
||||||
except:
|
|
||||||
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
|
|
||||||
return
|
|
||||||
fileName = ""
|
|
||||||
for i in lists:
|
|
||||||
print(i)
|
|
||||||
if i[0] == choose:
|
|
||||||
fileName = i[1]
|
|
||||||
break
|
|
||||||
try:
|
|
||||||
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
|
|
||||||
tipsInfo = ""
|
|
||||||
except:
|
|
||||||
#traceback.print_exc()
|
|
||||||
fenlists = [0, 0, 0, 0, 0]
|
|
||||||
tipsInfo = "暂时无人提交此脚本评分,是否立即提交?"
|
|
||||||
|
|
||||||
maxHead = fenlists.index(max(fenlists))
|
|
||||||
allNumber = 0
|
|
||||||
for i in fenlists:
|
|
||||||
allNumber += i
|
|
||||||
try:
|
|
||||||
maxNumber = max(fenlists) / allNumber * 100
|
|
||||||
if tipsInfo == "":
|
|
||||||
tipsInfo = f"有{maxNumber}%的用户选择了这个评分"
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
|
|
||||||
msgWidget = QtWidgets.QWidget()
|
|
||||||
msgWidgetLayout = QtWidgets.QGridLayout()
|
|
||||||
starLayout = QtWidgets.QHBoxLayout()
|
|
||||||
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此提交评分"))
|
|
||||||
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0, 2, 1)
|
|
||||||
msgWidgetLayout.addLayout(starLayout, 0, 1, 2, 1)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 0, 2)
|
|
||||||
#msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
|
|
||||||
msgWidgetLayout.addWidget(uploadButton, 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>"))
|
|
||||||
pingLun = QtWidgets.QWidget()
|
|
||||||
msgWidgetLayout.addWidget(pingLun, 4, 0, 1, 3)
|
|
||||||
pingLunLayout = QtWidgets.QGridLayout()
|
|
||||||
pingLunInfo = QtWidgets.QTextEdit()
|
|
||||||
#pingLunInfo.document().setMaximumBlockCount(5)
|
|
||||||
uploadButton = QtWidgets.QPushButton("评论")
|
|
||||||
pingLunLayout.addWidget(pingLunInfo, 0, 0, 1, 3)
|
|
||||||
pingLunLayout.addWidget(uploadButton, 1, 2)
|
|
||||||
pingLunInfo.setPlaceholderText("""在此输入评论,须知:
|
|
||||||
※1、不得含有色情、暴力、侮辱等违法内容以及不得有广告推广等内容
|
|
||||||
※2、字数至少 15 字,但不得超过 250 字,评论内容最多 5 行,且评论内容将会进行审核,意味着评论不会实时生效显示
|
|
||||||
※3、如果审核不通过将会被屏蔽并拉入黑名单,以及公开发布 IP 地址,评论前请三思!""")
|
|
||||||
leftButton = QtWidgets.QPushButton("上一页")
|
|
||||||
rightButton = QtWidgets.QPushButton("下一页")
|
|
||||||
if maxHead == 0:
|
|
||||||
#pingLun.setDisabled(True)
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
# 显示最新的3条评论
|
|
||||||
try:
|
|
||||||
all = int(requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/data.txt").text)
|
|
||||||
now = all - 3
|
|
||||||
print(all)
|
|
||||||
if all < 3:
|
|
||||||
start = 0
|
|
||||||
rightButton.setDisabled(True)
|
|
||||||
else:
|
|
||||||
start = all - 3
|
|
||||||
uploadList = []
|
|
||||||
for i in range(all - 1, start - 1, -1):
|
|
||||||
print(f"第 {i + 1} 条评论:")
|
|
||||||
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
|
|
||||||
print(info)
|
|
||||||
uploadList.append([f"用户{i + 1}", i + 1, info])
|
|
||||||
Add(uploadList)
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
try:
|
|
||||||
ProgramRunStatusShow.pingLunLayout = pingLunLayout
|
|
||||||
pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
|
|
||||||
except:
|
|
||||||
leftButton.setDisabled(True)
|
|
||||||
rightButton.setDisabled(True)
|
|
||||||
leftButton.clicked.connect(Left)
|
|
||||||
rightButton.clicked.connect(Right)
|
|
||||||
pingLunLayout.addWidget(leftButton, 3, 0)
|
|
||||||
pingLunLayout.addWidget(rightButton, 3, 2)
|
|
||||||
leftButton.setDisabled(True)
|
|
||||||
pingLun.setLayout(pingLunLayout)
|
|
||||||
msgWidget.setLayout(msgWidgetLayout)
|
|
||||||
uploadButton.clicked.connect(lambda: ProgramRunStatusShow.Upload(pingLunInfo.toPlainText(), fileName))
|
|
||||||
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
|
|
||||||
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
|
|
||||||
ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况")
|
|
||||||
ProgramRunStatusShow.msgWindow.show()
|
|
||||||
|
|
||||||
def Upload(info, name):
|
|
||||||
print(f"脚本:{name}")
|
|
||||||
print(f"评论:{info}")
|
|
||||||
try:
|
|
||||||
res = requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL1BpbmdMdW4=").decode("utf-8"), {"PinLun": info, "Version": name}).json()
|
|
||||||
print(res)
|
|
||||||
if res["ExitCode"]:
|
|
||||||
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", res["Error"])
|
|
||||||
return
|
|
||||||
QtWidgets.QMessageBox.information(ProgramRunStatusShow.msgWindow, "提示", res["Error"])
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", "提交失败")
|
|
||||||
|
|
||||||
|
|
||||||
def UpdateFen():
|
|
||||||
global now
|
|
||||||
fileName = ""
|
|
||||||
# 获取选中项
|
|
||||||
try:
|
|
||||||
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
|
|
||||||
except:
|
|
||||||
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
|
|
||||||
return
|
|
||||||
for i in lists:
|
|
||||||
print(i)
|
|
||||||
if i[0] == choose:
|
|
||||||
fileName = i[1]
|
|
||||||
break
|
|
||||||
uploadList = []
|
|
||||||
for i in range(now + 2, now - 1, -1):
|
|
||||||
print(f"第 {i + 1} 条评论:")
|
|
||||||
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
|
|
||||||
print(info)
|
|
||||||
uploadList.append([f"用户{i + 1}", i + 1, info])
|
|
||||||
#ProgramRunStatusShow.pingLunLayout.removeItem(ProgramRunStatusShow.pingLunLayout.itemAt(2))
|
|
||||||
ProgramRunStatusShow.pingLunLayout.removeWidget(pinLunLayout)
|
|
||||||
pinLunLayout.hide()
|
|
||||||
#pinLunLayout.
|
|
||||||
Add(uploadList)
|
|
||||||
#l = QtWidgets.QGridLayout()
|
|
||||||
#l.removeWidget(pinLunLayout)
|
|
||||||
ProgramRunStatusShow.pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
|
|
||||||
|
|
||||||
def Left():
|
|
||||||
global now
|
|
||||||
global all
|
|
||||||
|
|
||||||
if now + 6 >= all:
|
|
||||||
now = all - 3
|
|
||||||
leftButton.setDisabled(True)
|
|
||||||
rightButton.setEnabled(True)
|
|
||||||
else:
|
|
||||||
now += 3
|
|
||||||
leftButton.setEnabled(True)
|
|
||||||
rightButton.setEnabled(True)
|
|
||||||
UpdateFen()
|
|
||||||
print(all)
|
|
||||||
print(now)
|
|
||||||
|
|
||||||
def Right():
|
|
||||||
global now
|
|
||||||
if now - 3 < 0:
|
|
||||||
now = 0
|
|
||||||
rightButton.setDisabled(True)
|
|
||||||
leftButton.setEnabled(True)
|
|
||||||
else:
|
|
||||||
now -= 3
|
|
||||||
leftButton.setEnabled(True)
|
|
||||||
rightButton.setEnabled(True)
|
|
||||||
UpdateFen()
|
|
||||||
|
|
||||||
def UploadFen():
|
|
||||||
global lists
|
|
||||||
# 获取选中项
|
|
||||||
try:
|
|
||||||
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
|
|
||||||
except:
|
|
||||||
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
|
|
||||||
return
|
|
||||||
fileName = ""
|
|
||||||
for i in lists:
|
|
||||||
print(i)
|
|
||||||
if i[0] == choose:
|
|
||||||
fileName = i[1]
|
|
||||||
break
|
|
||||||
ProgramRunStatusUpload.ShowWindow(fileName, choose)
|
|
||||||
|
|
||||||
class Connect:
|
class Connect:
|
||||||
def SearchBotton_Clicked():
|
def SearchBotton_Clicked():
|
||||||
@@ -573,11 +184,9 @@ if __name__ == "__main__":
|
|||||||
# 连接信号和槽
|
# 连接信号和槽
|
||||||
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
|
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
|
||||||
#ui.uploadFen.clicked.connect(UploadFen)
|
#ui.uploadFen.clicked.connect(UploadFen)
|
||||||
ui.getInfoButton.clicked.connect(InformationWindow.ShowWindow)
|
|
||||||
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
|
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
|
||||||
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
|
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
|
||||||
ui.exitProgram.triggered.connect(window.close)
|
ui.exitProgram.triggered.connect(window.close)
|
||||||
ui.getFen.clicked.connect(ProgramRunStatusShow.ShowWindow)
|
|
||||||
# 解析云列表
|
# 解析云列表
|
||||||
try:
|
try:
|
||||||
# 获取列表
|
# 获取列表
|
||||||
|
|||||||
+6
-1
@@ -26,6 +26,11 @@ def readtxt(path):
|
|||||||
f.close() # 关闭文本对象
|
f.close() # 关闭文本对象
|
||||||
return str # 返回结果
|
return str # 返回结果
|
||||||
|
|
||||||
|
fontSize = 1
|
||||||
|
'''tempSys = QtWidgets.QApplication(sys.argv)
|
||||||
|
if tempSys.primaryScreen().availableGeometry().size().width() < 1366 or tempSys.primaryScreen().availableGeometry().size().height() < 768:
|
||||||
|
fontSize = 1.1'''
|
||||||
|
|
||||||
defultProgramList = {
|
defultProgramList = {
|
||||||
"Architecture": "Auto",
|
"Architecture": "Auto",
|
||||||
"Debug": True,
|
"Debug": True,
|
||||||
@@ -44,7 +49,7 @@ defultProgramList = {
|
|||||||
"AutoPath": False,
|
"AutoPath": False,
|
||||||
"QemuUnMountHome": False,
|
"QemuUnMountHome": False,
|
||||||
"Chinese": True,
|
"Chinese": True,
|
||||||
"FontSize": 1
|
"FontSize": fontSize
|
||||||
}
|
}
|
||||||
|
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
@@ -62,7 +62,6 @@ package-deb:
|
|||||||
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv AddWineDebMirrorForDeepin20.sh deb/opt/apps/deepin-wine-runner
|
|
||||||
cp -rv InstallNewWineHQOrg.sh deb/opt/apps/deepin-wine-runner
|
cp -rv InstallNewWineHQOrg.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallWineOnDeepin23Alpha.py deb/opt/apps/deepin-wine-runner
|
cp -rv InstallWineOnDeepin23Alpha.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv wrestool deb/opt/apps/deepin-wine-runner
|
cp -rv wrestool deb/opt/apps/deepin-wine-runner
|
||||||
@@ -100,7 +99,6 @@ package-deb:
|
|||||||
cp -rv geek.exe deb/opt/apps/deepin-wine-runner
|
cp -rv geek.exe deb/opt/apps/deepin-wine-runner
|
||||||
#cp -rv uengineapi deb/opt/apps/deepin-wine-runner
|
#cp -rv uengineapi deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv getxmlimg.py deb/opt/apps/deepin-wine-runner
|
cp -rv getxmlimg.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv ProgramFen.py deb/opt/apps/deepin-wine-runner
|
|
||||||
cp -rv information.json deb/opt/apps/deepin-wine-runner
|
cp -rv information.json deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallMono.py deb/opt/apps/deepin-wine-runner
|
cp -rv InstallMono.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallMsxml.py deb/opt/apps/deepin-wine-runner
|
cp -rv InstallMsxml.py deb/opt/apps/deepin-wine-runner
|
||||||
@@ -128,7 +126,6 @@ package-deb:
|
|||||||
cp -rv sparkstore.list deb/opt/apps/deepin-wine-runner
|
cp -rv sparkstore.list deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv arm-package.7z deb/opt/apps/deepin-wine-runner
|
cp -rv arm-package.7z deb/opt/apps/deepin-wine-runner
|
||||||
#cp -rv exa.7z deb/opt/apps/deepin-wine-runner
|
#cp -rv exa.7z deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv clean-unuse-program.py deb/opt/apps/deepin-wine-runner
|
|
||||||
cp -rv InstallNewWineHQ.sh deb/opt/apps/deepin-wine-runner
|
cp -rv InstallNewWineHQ.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv cleanbottle.sh deb/opt/apps/deepin-wine-runner
|
cp -rv cleanbottle.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv StartVM.sh deb/opt/apps/deepin-wine-runner
|
cp -rv StartVM.sh deb/opt/apps/deepin-wine-runner
|
||||||
|
|||||||
-122
@@ -1,122 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import base64
|
|
||||||
import traceback
|
|
||||||
import updatekiller
|
|
||||||
import req as requests
|
|
||||||
import PyQt5.QtGui as QtGui
|
|
||||||
import PyQt5.QtCore as QtCore
|
|
||||||
import PyQt5.QtWidgets as QtWidgets
|
|
||||||
|
|
||||||
class ProgramRunStatusShow():
|
|
||||||
msgWindow = None
|
|
||||||
def ShowWindow():
|
|
||||||
try:
|
|
||||||
fenlists = []
|
|
||||||
for i in range(6):
|
|
||||||
fenlists.append(int(requests.get("http://data.download.gfdgdxi.top/Fen/Fen" + f"{i}.txt").text))
|
|
||||||
tipsInfo = ""
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
fenlists = [0, 0, 0, 0, 0]
|
|
||||||
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
|
|
||||||
|
|
||||||
maxHead = fenlists.index(max(fenlists))
|
|
||||||
allNumber = 0
|
|
||||||
for i in fenlists:
|
|
||||||
allNumber += i
|
|
||||||
try:
|
|
||||||
tipsInfo = ""
|
|
||||||
for i in range(len(fenlists)):
|
|
||||||
tipsInfo += f"有 {fenlists[i] / allNumber * 100}% 的用户选择了 {i} 分({fenlists[i]}/{allNumber})\n"
|
|
||||||
maxNumber = max(fenlists) / allNumber * 100
|
|
||||||
#if tipsInfo == "":
|
|
||||||
# tipsInfo = f"有{maxNumber}%的用户选择了这个评分"
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
|
|
||||||
msgWidget = QtWidgets.QWidget()
|
|
||||||
msgWidgetLayout = QtWidgets.QGridLayout()
|
|
||||||
starLayout = QtWidgets.QHBoxLayout()
|
|
||||||
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此上传运行情况"))
|
|
||||||
uploadButton.clicked.connect(ProgramRunStatusUpload.ShowWindow)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0)
|
|
||||||
msgWidgetLayout.addLayout(starLayout, 0, 1)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 1, 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"程序运行情况")
|
|
||||||
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():
|
|
||||||
ProgramRunStatusUpload.starList = []
|
|
||||||
ProgramRunStatusUpload.msgWindow = QtWidgets.QMainWindow(ProgramRunStatusShow.msgWindow)
|
|
||||||
msgWidget = QtWidgets.QWidget()
|
|
||||||
msgWidgetLayout = QtWidgets.QGridLayout()
|
|
||||||
ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
|
|
||||||
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
|
|
||||||
upload = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "上传"))
|
|
||||||
upload.clicked.connect(ProgramRunStatusUpload.Upload)
|
|
||||||
# 生成星星列表
|
|
||||||
for i in [1, 1, 1, 1, 1]:
|
|
||||||
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.fen.addItems(["0分", "1分", "2分", "3分", "4分", "5分"])
|
|
||||||
ProgramRunStatusUpload.fen.setCurrentIndex(5)
|
|
||||||
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
|
|
||||||
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(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
|
|
||||||
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
|
|
||||||
ProgramRunStatusUpload.msgWindow.show()
|
|
||||||
|
|
||||||
def Upload():
|
|
||||||
try:
|
|
||||||
QtWidgets.QMessageBox.information(ProgramRunStatusUpload.msgWindow, QtCore.QCoreApplication.translate("U", "提示"), requests.get(f"http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=Fen{ProgramRunStatusUpload.fen.currentIndex()}").json()["Error"])
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
QtWidgets.QMessageBox.critical(ProgramRunStatusUpload.msgWindow, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
|
||||||
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
|
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
|
||||||
ProgramRunStatusShow.ShowWindow()
|
|
||||||
app.exec_()
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||||
<h1 align="center">Wine 运行器 3.9.1</h1>
|
<h1 align="center">Wine 运行器 3.9.2</h1>
|
||||||
<hr>
|
<hr>
|
||||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
|
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
|
||||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
||||||
@@ -157,6 +157,17 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
|||||||

|

|
||||||
|
|
||||||
## 更新日志
|
## 更新日志
|
||||||
|
### 3.9.2(2024/06/29)
|
||||||
|
**※1、移除冗余组件**
|
||||||
|
**※2、修复 Wine 安装器在文件下载失败后无法自动关闭进度条和解除控件禁用的问题**
|
||||||
|
**※3、Wine 打包器不允许版本号开头输入首字母以及版本号不允许出现空格**
|
||||||
|
**※4、Wine 打包器生成的 deb 同时支持使用 spark-dwine-helper 和 deepin-wine-helper**
|
||||||
|
**※5、支持调用拓展 Qemu**
|
||||||
|
**※6、新增滚动条,优化小屏幕使用体验**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
### 3.9.1(2024/06/07)
|
### 3.9.1(2024/06/07)
|
||||||
**※1、修复 Windows 虚拟机安装工具安装程序在 Mips 架构无法正确启动虚拟机的问题**
|
**※1、修复 Windows 虚拟机安装工具安装程序在 Mips 架构无法正确启动虚拟机的问题**
|
||||||
**※2、优化打包器依赖**
|
**※2、优化打包器依赖**
|
||||||
|
|||||||
@@ -35,12 +35,6 @@ class Ui_MainWindow(object):
|
|||||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
self.horizontalLayout_2.addItem(spacerItem)
|
self.horizontalLayout_2.addItem(spacerItem)
|
||||||
self.getInfoButton = QtWidgets.QPushButton(self.centralwidget)
|
|
||||||
self.getInfoButton.setObjectName("getInfoButton")
|
|
||||||
self.horizontalLayout_2.addWidget(self.getInfoButton)
|
|
||||||
self.getFen = QtWidgets.QPushButton(self.centralwidget)
|
|
||||||
self.getFen.setObjectName("getFen")
|
|
||||||
self.horizontalLayout_2.addWidget(self.getFen)
|
|
||||||
self.runBotton = QtWidgets.QPushButton(self.centralwidget)
|
self.runBotton = QtWidgets.QPushButton(self.centralwidget)
|
||||||
self.runBotton.setObjectName("runBotton")
|
self.runBotton.setObjectName("runBotton")
|
||||||
self.horizontalLayout_2.addWidget(self.runBotton)
|
self.horizontalLayout_2.addWidget(self.runBotton)
|
||||||
@@ -109,8 +103,6 @@ class Ui_MainWindow(object):
|
|||||||
MainWindow.setWindowTitle(_translate("MainWindow", "自动部署脚本"))
|
MainWindow.setWindowTitle(_translate("MainWindow", "自动部署脚本"))
|
||||||
self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
|
self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
|
||||||
self.saerchBotton.setText(_translate("MainWindow", "搜索"))
|
self.saerchBotton.setText(_translate("MainWindow", "搜索"))
|
||||||
self.getInfoButton.setText(_translate("MainWindow", "获取选中项介绍"))
|
|
||||||
self.getFen.setText(_translate("MainWindow", "获取/提交选中项的评分和评论"))
|
|
||||||
self.runBotton.setText(_translate("MainWindow", "部署此方案"))
|
self.runBotton.setText(_translate("MainWindow", "部署此方案"))
|
||||||
self.menu.setTitle(_translate("MainWindow", "程序"))
|
self.menu.setTitle(_translate("MainWindow", "程序"))
|
||||||
self.menu_2.setTitle(_translate("MainWindow", "切换源"))
|
self.menu_2.setTitle(_translate("MainWindow", "切换源"))
|
||||||
|
|||||||
@@ -154,6 +154,9 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
|
|
||||||
//vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
//vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
||||||
vm.MountMainDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
vm.MountMainDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
||||||
|
if(QFile::exists("/opt/apps/deepin-wine-runner-qemu-system-extra/files/resources/virtio-win.iso")) {
|
||||||
|
vm.MountISO("/opt/apps/deepin-wine-runner-qemu-system-extra/files/resources/virtio-win.iso", "storage_controller_2", 1, 3);
|
||||||
|
}
|
||||||
if(!setISOAlready){
|
if(!setISOAlready){
|
||||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||||
switch (id) {
|
switch (id) {
|
||||||
|
|||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Regular → Executable
Regular → Executable
Regular → Executable
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Regular → Executable
@@ -1,117 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
import os
|
|
||||||
import updatekiller
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
print('''
|
|
||||||
mmm ""#
|
|
||||||
m" " # mmm mmm m mm
|
|
||||||
# # #" # " # #" #
|
|
||||||
# # #"""" m"""# # #
|
|
||||||
"mmm" "mm "#mm" "mm"# # #
|
|
||||||
|
|
||||||
|
|
||||||
''')
|
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
|
||||||
print("此程序可以帮助您删除程序无需的组件以节约空间")
|
|
||||||
print("如果全部删除,将只会有核心功能")
|
|
||||||
print("如果删除后想要恢复这样组件需要重新安装该软件包")
|
|
||||||
delProgramList = []
|
|
||||||
delProramCommand = "#!/bin/bash\n"
|
|
||||||
for i in [
|
|
||||||
[
|
|
||||||
"含有商业软件的内容",
|
|
||||||
[
|
|
||||||
f"{programPath}/StartVM.sh",
|
|
||||||
f"{programPath}/RunVM.sh",
|
|
||||||
f"{programPath}/VM",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop",
|
|
||||||
f"{programPath}/BeCyIconGrabber.exe",
|
|
||||||
f"{programPath}/geek.exe",
|
|
||||||
f"{programPath}/窗体透明度设置工具.exe",
|
|
||||||
f"{programPath}/UpdateGeek.sh",
|
|
||||||
f"{programPath}/AppStore.py",
|
|
||||||
f"{programPath}/InstallFont.py",
|
|
||||||
f"{programPath}/InstallMsxml.py",
|
|
||||||
f"{programPath}/InstallNetFramework.py",
|
|
||||||
f"{programPath}/InstallOther.py",
|
|
||||||
f"{programPath}/InstallVisualCPlusPlus.py"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Wine 打包器(不基于生态打包脚本)",
|
|
||||||
[
|
|
||||||
f"{programPath}/deepin-wine-packager.py",
|
|
||||||
f"{programPath}/exagear",
|
|
||||||
f"{programPath}/exagear.7z",
|
|
||||||
f"{programPath}/exagear",
|
|
||||||
f"{programPath}/wined3d.dll.so.7z",
|
|
||||||
f"{programPath}/wined3d.dll.so",
|
|
||||||
"/usr/bin/deepin-wine-package-builder",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-package-builder.desktop"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Wine 打包器(基于生态打包脚本)",
|
|
||||||
[
|
|
||||||
f"{programPath}/deepin-wine-packager-with-script.py",
|
|
||||||
f"{programPath}/package-script.zip",
|
|
||||||
f"{programPath}/package-script",
|
|
||||||
"/usr/bin/deepin-wine-packager-with-script",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-packager-with-script.desktop"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Arm 64 box86 wine 运行 DLL",
|
|
||||||
[
|
|
||||||
f"{programPath}/dlls-arm.7z",
|
|
||||||
f"{programPath}/dlls-arm",
|
|
||||||
f"{programPath}/wined3d.dll.so.7z",
|
|
||||||
f"{programPath}/wined3d.dll.so"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Windows 虚拟机简易安装组件",
|
|
||||||
[
|
|
||||||
f"{programPath}/StartVM.sh",
|
|
||||||
f"{programPath}/RunVM.sh",
|
|
||||||
f"{programPath}/VM",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop",
|
|
||||||
"/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Wine 安装组件",
|
|
||||||
[
|
|
||||||
f"{programPath}/AllInstall.py",
|
|
||||||
f"{programPath}/wine install",
|
|
||||||
f"{programPath}/InstallWineOnDeepin23.py",
|
|
||||||
f"{programPath}/sparkstore.list",
|
|
||||||
f"{programPath}/InstallNewWineHQ.sh",
|
|
||||||
f"{programPath}/wine",
|
|
||||||
"/usr/bin/deepin-wine-runner-wine-installer",
|
|
||||||
"/usr/bin/deepin-wine-runner-wine-install-deepin23",
|
|
||||||
"/usr/bin/deepin-wine-runner-wine-install",
|
|
||||||
"/usr/bin/deepin-wine-runner-winehq-install"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]:
|
|
||||||
if not os.path.exists(i[1][0]):
|
|
||||||
continue
|
|
||||||
if input(f"是否删除组件“{i[0]}”?[Y/n]").upper() == "Y":
|
|
||||||
delProgramList.append(i)
|
|
||||||
for x in i[1]:
|
|
||||||
if x == "/*" or x == "/": # 为了防止个人疏忽,出现危险命令,所以如果有最危险的 /* 会直接跳过该命令的写入
|
|
||||||
continue
|
|
||||||
delProramCommand += f"rm -rfv \"{x}\"\n"
|
|
||||||
if len(delProgramList) == 0:
|
|
||||||
print("您已经删除了所有可删除的组件,如果需要使用被删除的组件,请重新安装该软件安装包")
|
|
||||||
input("按回车退出")
|
|
||||||
exit()
|
|
||||||
print("开始删除")
|
|
||||||
file = open("/tmp/deepin-wine-clean.sh", "w")
|
|
||||||
file.write(delProramCommand)
|
|
||||||
file.close()
|
|
||||||
os.system("pkexec bash /tmp/deepin-wine-clean.sh")
|
|
||||||
input("按回车键退出程序")
|
|
||||||
@@ -220,7 +220,7 @@ BOTTLENAME="@@@Package@@@"
|
|||||||
APPVER="@@@Version@@@"
|
APPVER="@@@Version@@@"
|
||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
##### 软件在wine中的启动路径
|
##### 软件在wine中的启动路径
|
||||||
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh"] ;then
|
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh" ] ;then
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
else
|
else
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||||
|
|||||||
+14
-3
@@ -537,7 +537,7 @@ BOTTLENAME="@@@BOTTLENAME@@@"
|
|||||||
APPVER="@@@APPVER@@@"
|
APPVER="@@@APPVER@@@"
|
||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
##### 软件在wine中的启动路径
|
##### 软件在wine中的启动路径
|
||||||
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh"] ;then
|
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh" ] ;then
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
else
|
else
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||||
@@ -1054,7 +1054,7 @@ BOTTLENAME="@@@BOTTLENAME@@@"
|
|||||||
APPVER="@@@APPVER@@@"
|
APPVER="@@@APPVER@@@"
|
||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
##### 软件在wine中的启动路径
|
##### 软件在wine中的启动路径
|
||||||
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh"] ;then
|
if [ -e "/opt/deepinwine/tools/spark_run_v4.sh" ] ;then
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
else
|
else
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||||
@@ -2348,6 +2348,7 @@ tips = transla.transe("U", """提示:
|
|||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
window = QtWidgets.QMainWindow()
|
window = QtWidgets.QMainWindow()
|
||||||
widget = QtWidgets.QWidget()
|
widget = QtWidgets.QWidget()
|
||||||
|
|
||||||
defaultFont = window.font()
|
defaultFont = window.font()
|
||||||
#hScroll = QtWidgets.QScrollArea()
|
#hScroll = QtWidgets.QScrollArea()
|
||||||
#hScroll.setWidget(widget)
|
#hScroll.setWidget(widget)
|
||||||
@@ -2394,6 +2395,7 @@ option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office"
|
|||||||
option1_text.setCurrentText("Network")
|
option1_text.setCurrentText("Network")
|
||||||
wineFrame = QtWidgets.QHBoxLayout()
|
wineFrame = QtWidgets.QHBoxLayout()
|
||||||
chooseWineHelperValue = QtWidgets.QCheckBox(transla.transe("U", "使用星火wine helper\n(如不勾选默认为deepin-wine-helper)"))
|
chooseWineHelperValue = QtWidgets.QCheckBox(transla.transe("U", "使用星火wine helper\n(如不勾选默认为deepin-wine-helper)"))
|
||||||
|
chooseWineHelperValue.setVisible(False)
|
||||||
helperConfigPathLayout = QtWidgets.QHBoxLayout()
|
helperConfigPathLayout = QtWidgets.QHBoxLayout()
|
||||||
helperConfigPathButton = QtWidgets.QPushButton("浏览")
|
helperConfigPathButton = QtWidgets.QPushButton("浏览")
|
||||||
helperConfigPathText = QtWidgets.QLabel("点击浏览按钮指定软件包适配脚本")
|
helperConfigPathText = QtWidgets.QLabel("点击浏览按钮指定软件包适配脚本")
|
||||||
@@ -2605,7 +2607,6 @@ cleanBottonByUOS.setChecked(True)
|
|||||||
chooseWineHelperValue.setChecked(True)
|
chooseWineHelperValue.setChecked(True)
|
||||||
e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_all.deb")
|
e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_all.deb")
|
||||||
widget.setLayout(widgetLayout)
|
widget.setLayout(widgetLayout)
|
||||||
window.setCentralWidget(widget)
|
|
||||||
window.setWindowTitle(f"wine 应用打包器 {version}")
|
window.setWindowTitle(f"wine 应用打包器 {version}")
|
||||||
window.setWindowIcon(QtGui.QIcon(iconPath))
|
window.setWindowIcon(QtGui.QIcon(iconPath))
|
||||||
window.resize(int(window.frameSize().width() * 2.1), int(window.frameSize().height()))
|
window.resize(int(window.frameSize().width() * 2.1), int(window.frameSize().height()))
|
||||||
@@ -2678,6 +2679,16 @@ allInfoList = {
|
|||||||
# 设置字体
|
# 设置字体
|
||||||
SetFont(app)
|
SetFont(app)
|
||||||
#window.setWindowFlag(QtGui.Qt)
|
#window.setWindowFlag(QtGui.Qt)
|
||||||
|
|
||||||
|
# 设置滚动条
|
||||||
|
areaScroll = QtWidgets.QScrollArea(window)
|
||||||
|
areaScroll.setWidgetResizable(True)
|
||||||
|
areaScroll.setWidget(widget)
|
||||||
|
areaScroll.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
|
|
||||||
|
window.setCentralWidget(areaScroll)
|
||||||
|
window.resize(int(app.primaryScreen().availableGeometry().size().width() * 0.9), int(app.primaryScreen().availableGeometry().size().height() * 0.9))
|
||||||
|
|
||||||
window.show()
|
window.show()
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
# Flag:解包只读control和解包全部读取
|
# Flag:解包只读control和解包全部读取
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.9.1",
|
"Version": "3.9.2",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
|
"感谢 @り哥拽的冇气质° 和 @杨 提供了 3a5000(新世界的测试机器)",
|
||||||
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||||
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
|
|||||||
+31
-233
@@ -270,7 +270,6 @@ def DisableButton(things):
|
|||||||
e1.setDisabled(things)
|
e1.setDisabled(things)
|
||||||
e2.setDisabled(things)
|
e2.setDisabled(things)
|
||||||
o1.setDisabled(things)
|
o1.setDisabled(things)
|
||||||
miniAppStore.setDisabled(things)
|
|
||||||
#winetricksOpen.configure(state=a[things])
|
#winetricksOpen.configure(state=a[things])
|
||||||
getProgramIcon.setDisabled(things)
|
getProgramIcon.setDisabled(things)
|
||||||
uninstallProgram.setDisabled(things)
|
uninstallProgram.setDisabled(things)
|
||||||
@@ -1074,13 +1073,6 @@ def UninstallDXVK():
|
|||||||
#"env", f"WINE={wine[o1.currentText()]}", f"WINE64={wine[o1.currentText()]}", f"WINEPREFIX={wineBottonPath}",
|
#"env", f"WINE={wine[o1.currentText()]}", f"WINE64={wine[o1.currentText()]}", f"WINEPREFIX={wineBottonPath}",
|
||||||
#f"{programPath}/dxvk/setup_dxvk.sh", "uninstall"])
|
#f"{programPath}/dxvk/setup_dxvk.sh", "uninstall"])
|
||||||
|
|
||||||
def MiniAppStore():
|
|
||||||
if e1.currentText()== "":
|
|
||||||
wineBottonPath = setting["DefultBotton"]
|
|
||||||
else:
|
|
||||||
wineBottonPath = e1.currentText()
|
|
||||||
OpenTerminal(f"'{programPath}/AppStore.py' '{wineBottonPath}' '{wine[o1.currentText()]}'")
|
|
||||||
|
|
||||||
def InstallOther():
|
def InstallOther():
|
||||||
if e1.currentText()== "":
|
if e1.currentText()== "":
|
||||||
wineBottonPath = setting["DefultBotton"]
|
wineBottonPath = setting["DefultBotton"]
|
||||||
@@ -1217,8 +1209,7 @@ def UOSPackageScript():
|
|||||||
def RunVM():
|
def RunVM():
|
||||||
threading.Thread(target=os.system, args=[f"bash '{programPath}/RunVM.sh'"]).start()
|
threading.Thread(target=os.system, args=[f"bash '{programPath}/RunVM.sh'"]).start()
|
||||||
|
|
||||||
def CleanProgram():
|
|
||||||
OpenTerminal(f"{programPath}/clean-unuse-program.py")
|
|
||||||
|
|
||||||
class UpdateWindow():
|
class UpdateWindow():
|
||||||
data = {}
|
data = {}
|
||||||
@@ -1647,184 +1638,6 @@ class GetDllFromWindowsISO:
|
|||||||
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", traceback.format_exc())
|
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", traceback.format_exc())
|
||||||
|
|
||||||
choose = None
|
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(QtCore.QCoreApplication.translate("U", "点此上传运行情况"))
|
|
||||||
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(sha, title))
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
|
|
||||||
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("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(QtCore.QCoreApplication.translate("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, QtCore.QCoreApplication.translate("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, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("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():
|
class ProgramSetting():
|
||||||
wineBottonA = None
|
wineBottonA = None
|
||||||
@@ -2656,20 +2469,15 @@ exe路径\' 参数 \'
|
|||||||
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
||||||
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
||||||
7、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;''')
|
7、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;''')
|
||||||
updateThingsString = QtCore.QCoreApplication.translate("U", '''※1、UOS Mips64(如 3a4000)用户无需手动降级 Qemu 即可正常开启使用虚拟机
|
updateThingsString = QtCore.QCoreApplication.translate("U", '''※1、移除冗余组件
|
||||||
※2、修复开启部分 exe 提示参数有误的问题
|
※2、修复 Wine 安装器在文件下载失败后无法自动关闭进度条和解除控件禁用的问题
|
||||||
※3、Qemu 在启动时可以按 ESC 键打开启动菜单
|
※3、Wine 打包器不允许版本号开头输入首字母以及版本号不允许出现空格
|
||||||
※4、虚拟机工具 Windows 7 自动安装镜像文件选项内置 Virtio 驱动安装包
|
※4、Wine 打包器生成的 deb 同时支持使用 spark-dwine-helper 和 deepin-wine-helper
|
||||||
※5、Qemu 虚拟机参数调整若干
|
※5、支持调用拓展 Qemu
|
||||||
※6、修复虚拟机安装工具系统安装选项会自动跳回第一项的问题
|
※6、新增滚动条,优化小屏幕使用体验''')
|
||||||
※7、优化简易打包器包名识别机制
|
|
||||||
※8、减少不必要的压缩以减少打包器打包 deb 所需时间
|
|
||||||
※9、修复简易打包器生成的 deb 包无法运行的问题
|
|
||||||
10、优化 lat 安装脚本
|
|
||||||
11、调整星火 Wine 助手路径''')
|
|
||||||
for i in information["Thank"]:
|
for i in information["Thank"]:
|
||||||
thankText += f"{i}\n"
|
thankText += f"{i}\n"
|
||||||
updateTime = "2024年06月01日"
|
updateTime = "2024年06月29日"
|
||||||
aboutProgram = QtCore.QCoreApplication.translate("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。</p>
|
aboutProgram = QtCore.QCoreApplication.translate("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。</p>
|
||||||
<p>它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。</p>
|
<p>它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。</p>
|
||||||
<p>而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。</p>
|
<p>而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。</p>
|
||||||
@@ -2857,7 +2665,7 @@ createDesktopLink.addWidget(combobox1)
|
|||||||
button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到桌面"))
|
button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到桌面"))
|
||||||
button5.clicked.connect(make_desktop_on_desktop)
|
button5.clicked.connect(make_desktop_on_desktop)
|
||||||
createDesktopLink.addWidget(button5)
|
createDesktopLink.addWidget(button5)
|
||||||
saveDesktopFileOnLauncher = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到开始菜单"))
|
saveDesktopFileOnLauncher = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到启动器"))
|
||||||
saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher)
|
saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher)
|
||||||
createDesktopLink.addWidget(saveDesktopFileOnLauncher)
|
createDesktopLink.addWidget(saveDesktopFileOnLauncher)
|
||||||
leftDownLayout.addLayout(createDesktopLink)
|
leftDownLayout.addLayout(createDesktopLink)
|
||||||
@@ -2875,18 +2683,15 @@ uninstallProgram = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U",
|
|||||||
uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe"))
|
uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe"))
|
||||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 3, 1, 1)
|
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 3, 1, 1)
|
||||||
programManager.addWidget(uninstallProgram, 1, 4, 1, 1)
|
programManager.addWidget(uninstallProgram, 1, 4, 1, 1)
|
||||||
miniAppStore = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "微型应用商店"))
|
getLoseDll = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "简易dll检测工具"))
|
||||||
miniAppStore.clicked.connect(lambda: threading.Thread(target=MiniAppStore).start())
|
|
||||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 5, 1, 1)
|
|
||||||
programManager.addWidget(miniAppStore, 1, 6, 1, 1)
|
|
||||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 7, 1, 1)
|
|
||||||
getProgramStatus = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "获取该程序运行情况"))
|
|
||||||
getProgramStatus.clicked.connect(ProgramRunStatusShow.ShowWindow)
|
|
||||||
programManager.addWidget(getProgramStatus, 1, 8, 1, 1)
|
|
||||||
getLoseDll = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "检测静态下程序缺少DLL"))
|
|
||||||
getLoseDll.clicked.connect(GetLoseDll)
|
getLoseDll.clicked.connect(GetLoseDll)
|
||||||
|
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 5, 1, 1)
|
||||||
|
programManager.addWidget(getLoseDll, 1, 6, 1, 1)
|
||||||
|
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 7, 1, 1)
|
||||||
|
wineBottleReboot = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "重启指定Wine容器"))
|
||||||
|
wineBottleReboot.clicked.connect(lambda: RunWineProgram(f"wineboot' '-k"))
|
||||||
|
programManager.addWidget(wineBottleReboot, 1, 8, 1, 1)
|
||||||
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 9, 1, 1)
|
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 9, 1, 1)
|
||||||
programManager.addWidget(getLoseDll, 1, 10, 1, 1)
|
|
||||||
programManager.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum), 1, 11, 1, 1)
|
programManager.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum), 1, 11, 1, 1)
|
||||||
programManager.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "WINE配置:")), 2, 0, 1, 1)
|
programManager.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "WINE配置:")), 2, 0, 1, 1)
|
||||||
wineConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "配置容器"))
|
wineConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "配置容器"))
|
||||||
@@ -2901,12 +2706,10 @@ programManager.addWidget(button_r_6, 3, 4, 1, 1)
|
|||||||
sparkWineSetting = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "星火wine配置"))
|
sparkWineSetting = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "星火wine配置"))
|
||||||
sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["bash /opt/apps/store.spark-app.spark-dwine-helper/files/deepinwine/tools/spark-dwine-helper/wine-app-launcher/wine-app-launcher.sh"]).start())
|
sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["bash /opt/apps/store.spark-app.spark-dwine-helper/files/deepinwine/tools/spark-dwine-helper/wine-app-launcher/wine-app-launcher.sh"]).start())
|
||||||
programManager.addWidget(sparkWineSetting, 3, 6, 1, 1)
|
programManager.addWidget(sparkWineSetting, 3, 6, 1, 1)
|
||||||
wineAutoConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "自动/手动配置 Wine 容器"))
|
wineAutoConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "Wine容器自动配置工具"))
|
||||||
wineAutoConfig.clicked.connect(WineBottonAutoConfig)
|
wineAutoConfig.clicked.connect(WineBottonAutoConfig)
|
||||||
programManager.addWidget(wineAutoConfig, 3, 8, 1, 1)
|
programManager.addWidget(wineAutoConfig, 3, 8, 1, 1)
|
||||||
wineBottleReboot = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "重启指定Wine容器"))
|
|
||||||
wineBottleReboot.clicked.connect(lambda: RunWineProgram(f"wineboot' '-k"))
|
|
||||||
programManager.addWidget(wineBottleReboot, 3, 10, 1, 1)
|
|
||||||
# 权重
|
# 权重
|
||||||
button5.setSizePolicy(size)
|
button5.setSizePolicy(size)
|
||||||
saveDesktopFileOnLauncher.setSizePolicy(size)
|
saveDesktopFileOnLauncher.setSizePolicy(size)
|
||||||
@@ -2954,6 +2757,7 @@ else:
|
|||||||
<b>注:部分二进制兼容层会自动注册 binfmt(如原版的 Box86/64、Qemu User Static),则意味着无需在 Wine 版本那里特别指定兼容层,直接指定 Wine 即可</b><br/>
|
<b>注:部分二进制兼容层会自动注册 binfmt(如原版的 Box86/64、Qemu User Static),则意味着无需在 Wine 版本那里特别指定兼容层,直接指定 Wine 即可</b><br/>
|
||||||
{offLineInformation}<br/>
|
{offLineInformation}<br/>
|
||||||
©2020~{time.strftime("%Y")} gfdgd xi""")
|
©2020~{time.strftime("%Y")} gfdgd xi""")
|
||||||
|
copy.setWordWrap(True)
|
||||||
mainLayout.addWidget(copy, 2, 0, 1, 1)
|
mainLayout.addWidget(copy, 2, 0, 1, 1)
|
||||||
|
|
||||||
# 程序运行
|
# 程序运行
|
||||||
@@ -2986,7 +2790,6 @@ installBox86CN = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApp
|
|||||||
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApplication.translate("U", "安装 Box86/Box64 日构建(国外 Github 源)"))
|
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApplication.translate("U", "安装 Box86/Box64 日构建(国外 Github 源)"))
|
||||||
installBox86Own = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApplication.translate("U", "安装 Box86/Box64(使用自建源,支持 riscv64)"))
|
installBox86Own = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApplication.translate("U", "安装 Box86/Box64(使用自建源,支持 riscv64)"))
|
||||||
installLat = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 lat(只限 Loongarch64 架构)"))
|
installLat = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 lat(只限 Loongarch64 架构)"))
|
||||||
addWineDebMirrorForDeepin20 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), QtCore.QCoreApplication.translate("U", "添加 Wine 运行器源以安装较新版本的 WineHQ(支持 Deepin20/Debian10)"))
|
|
||||||
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), QtCore.QCoreApplication.translate("U", "设置程序(&S)"))
|
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), QtCore.QCoreApplication.translate("U", "设置程序(&S)"))
|
||||||
enabledAll = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "强制启用所有被禁用的组件(不推荐)"))
|
enabledAll = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "强制启用所有被禁用的组件(不推荐)"))
|
||||||
setMiniFont = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "临时设置小字体"))
|
setMiniFont = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "临时设置小字体"))
|
||||||
@@ -2994,31 +2797,22 @@ setTinyFont = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "临时
|
|||||||
setDefaultFont = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "临时设置默认字体"))
|
setDefaultFont = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "临时设置默认字体"))
|
||||||
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "清空软件历史记录(&C)"))
|
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "清空软件历史记录(&C)"))
|
||||||
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "清空软件缓存"))
|
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "清空软件缓存"))
|
||||||
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "删除程序组件"))
|
|
||||||
p4 = QtWidgets.QAction(QtGui.QIcon.fromTheme("exit"), QtCore.QCoreApplication.translate("U", "退出程序(&E)"))
|
p4 = QtWidgets.QAction(QtGui.QIcon.fromTheme("exit"), QtCore.QCoreApplication.translate("U", "退出程序(&E)"))
|
||||||
programmenu.addAction(p1)
|
programmenu.addAction(p1)
|
||||||
#programmenu.addAction(installWineOnDeepin23)
|
|
||||||
#programmenu.addAction(installWineOnDeepin23Alpha)
|
|
||||||
programmenu.addAction(installWineHQ)
|
programmenu.addAction(installWineHQ)
|
||||||
programmenu.addAction(installWineHQOrg)
|
programmenu.addAction(installWineHQOrg)
|
||||||
programmenu.addAction(addWineDebMirrorForDeepin20)
|
|
||||||
programmenu.addAction(installMoreWine)
|
programmenu.addAction(installMoreWine)
|
||||||
programmenu.addAction(downloadChrootBottle)
|
programmenu.addAction(downloadChrootBottle)
|
||||||
programmenu.addAction(installBox86CN)
|
programmenu.addAction(installBox86CN)
|
||||||
programmenu.addAction(installBox86)
|
programmenu.addAction(installBox86)
|
||||||
programmenu.addAction(installBox86Own)
|
programmenu.addAction(installBox86Own)
|
||||||
programmenu.addAction(installLat)
|
programmenu.addAction(installLat)
|
||||||
#programmenu.addSeparator()
|
|
||||||
#programmenu.addAction(setMiniFont)
|
|
||||||
#programmenu.addAction(setTinyFont)
|
|
||||||
#programmenu.addAction(setDefaultFont)
|
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p2)
|
programmenu.addAction(p2)
|
||||||
programmenu.addAction(enabledAll)
|
programmenu.addAction(enabledAll)
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p3)
|
programmenu.addAction(p3)
|
||||||
programmenu.addAction(cleanCache)
|
programmenu.addAction(cleanCache)
|
||||||
programmenu.addAction(cleanProgramUnuse)
|
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p4)
|
programmenu.addAction(p4)
|
||||||
setDefaultFont.triggered.connect(lambda: SetFont(1))
|
setDefaultFont.triggered.connect(lambda: SetFont(1))
|
||||||
@@ -3030,7 +2824,6 @@ p1.triggered.connect(InstallWine)
|
|||||||
installWineHQ.triggered.connect(InstallWineHQ)
|
installWineHQ.triggered.connect(InstallWineHQ)
|
||||||
installWineHQOrg.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallNewWineHQOrg.sh"]).start())
|
installWineHQOrg.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallNewWineHQOrg.sh"]).start())
|
||||||
installLat.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallLat.sh"]).start())
|
installLat.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallLat.sh"]).start())
|
||||||
addWineDebMirrorForDeepin20.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/AddWineDebMirrorForDeepin20.sh'"]).start())
|
|
||||||
def InstallMoreWine():
|
def InstallMoreWine():
|
||||||
os.system(f"'{programPath}/wine/installwine'")
|
os.system(f"'{programPath}/wine/installwine'")
|
||||||
# 更新 Wine 列表
|
# 更新 Wine 列表
|
||||||
@@ -3050,7 +2843,6 @@ installBox86.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/I
|
|||||||
installBox86Own.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86-own.sh'"))
|
installBox86Own.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86-own.sh'"))
|
||||||
p3.triggered.connect(CleanProgramHistory)
|
p3.triggered.connect(CleanProgramHistory)
|
||||||
cleanCache.triggered.connect(CleanProgramCache)
|
cleanCache.triggered.connect(CleanProgramCache)
|
||||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
|
||||||
p4.triggered.connect(window.close)
|
p4.triggered.connect(window.close)
|
||||||
|
|
||||||
wineOption = menu.addMenu(QtCore.QCoreApplication.translate("U", "Wine(&W)"))
|
wineOption = menu.addMenu(QtCore.QCoreApplication.translate("U", "Wine(&W)"))
|
||||||
@@ -3418,9 +3210,8 @@ h3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新内容"))
|
|||||||
h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "鸣谢名单"))
|
h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "鸣谢名单"))
|
||||||
h5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新这个程序"))
|
h5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新这个程序"))
|
||||||
appreciate = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "赞赏作者/请作者喝杯茶"))
|
appreciate = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "赞赏作者/请作者喝杯茶"))
|
||||||
programInformation = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "获取程序公告(也可以在这里看程序安装/打开量)"))
|
programInformation = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "获取程序公告"))
|
||||||
h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题"))
|
h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题"))
|
||||||
fenUpload = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "程序评分"))
|
|
||||||
h7 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), QtCore.QCoreApplication.translate("U", "关于这个程序"))
|
h7 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), QtCore.QCoreApplication.translate("U", "关于这个程序"))
|
||||||
h8 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), QtCore.QCoreApplication.translate("U", "关于 Qt"))
|
h8 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), QtCore.QCoreApplication.translate("U", "关于 Qt"))
|
||||||
gfdgdxiio = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), QtCore.QCoreApplication.translate("U", "作者个人站"))
|
gfdgdxiio = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), QtCore.QCoreApplication.translate("U", "作者个人站"))
|
||||||
@@ -3449,7 +3240,6 @@ videoHelp.addAction(videoHelpAction)
|
|||||||
help.addSeparator()
|
help.addSeparator()
|
||||||
help.addAction(h5)
|
help.addAction(h5)
|
||||||
help.addAction(h6)
|
help.addAction(h6)
|
||||||
help.addAction(fenUpload)
|
|
||||||
help.addAction(programInformation)
|
help.addAction(programInformation)
|
||||||
help.addAction(appreciate)
|
help.addAction(appreciate)
|
||||||
help.addAction(h7)
|
help.addAction(h7)
|
||||||
@@ -3472,7 +3262,6 @@ h4.triggered.connect(ThankWindow)
|
|||||||
wikiHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io/wine-runner-wiki"))
|
wikiHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io/wine-runner-wiki"))
|
||||||
h5.triggered.connect(UpdateWindow.ShowWindow)
|
h5.triggered.connect(UpdateWindow.ShowWindow)
|
||||||
h6.triggered.connect(WineRunnerBugUpload)
|
h6.triggered.connect(WineRunnerBugUpload)
|
||||||
fenUpload.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"python3 '{programPath}/ProgramFen.py'"]).start())
|
|
||||||
h7.triggered.connect(about_this_program)
|
h7.triggered.connect(about_this_program)
|
||||||
h8.triggered.connect(lambda: QtWidgets.QMessageBox.aboutQt(widget))
|
h8.triggered.connect(lambda: QtWidgets.QMessageBox.aboutQt(widget))
|
||||||
hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd-xi/uengine-runner"))
|
hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd-xi/uengine-runner"))
|
||||||
@@ -3502,7 +3291,7 @@ for i in [
|
|||||||
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
||||||
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
||||||
[[p1, v1], f"{programPath}/RunVM.sh"],
|
[[p1, v1], f"{programPath}/RunVM.sh"],
|
||||||
[[getProgramIcon, uninstallProgram, updateGeek, trasButton, miniAppStore, fontAppStore, wm1_1, wm1_2, wm1_3, wm1_6, w7, w2], f"{programPath}/geek.exe"],
|
[[getProgramIcon, uninstallProgram, updateGeek, trasButton, fontAppStore, wm1_1, wm1_2, wm1_3, wm1_6, w7, w2], f"{programPath}/geek.exe"],
|
||||||
]:
|
]:
|
||||||
if not os.path.exists(i[1]):
|
if not os.path.exists(i[1]):
|
||||||
for x in i[0]:
|
for x in i[0]:
|
||||||
@@ -3513,7 +3302,7 @@ if os.path.exists("/etc/arch-release") or os.path.exists("/etc/fedora-release"):
|
|||||||
for i in [p1]:
|
for i in [p1]:
|
||||||
i.setDisabled(True)
|
i.setDisabled(True)
|
||||||
for i in [installLat, installWineHQ, installWineHQOrg,
|
for i in [installLat, installWineHQ, installWineHQOrg,
|
||||||
installBox86CN, installBox86, installBox86Own, addWineDebMirrorForDeepin20]:
|
installBox86CN, installBox86, installBox86Own]:
|
||||||
i.setDisabled(True)
|
i.setDisabled(True)
|
||||||
for i in actionList:
|
for i in actionList:
|
||||||
i.setDisabled(True)
|
i.setDisabled(True)
|
||||||
@@ -3543,6 +3332,15 @@ if o1.currentText() == "":
|
|||||||
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||||
SetFont(setting["FontSize"])
|
SetFont(setting["FontSize"])
|
||||||
|
|
||||||
|
# 设置滚动条
|
||||||
|
areaScroll = QtWidgets.QScrollArea(window)
|
||||||
|
areaScroll.setWidgetResizable(True)
|
||||||
|
areaScroll.setWidget(widget)
|
||||||
|
areaScroll.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
|
|
||||||
|
window.setCentralWidget(areaScroll)
|
||||||
|
window.resize(int(app.primaryScreen().availableGeometry().size().width() * 0.9), int(app.primaryScreen().availableGeometry().size().height() * 0.9))
|
||||||
|
|
||||||
# Mini 模式
|
# Mini 模式
|
||||||
# MiniMode(True)
|
# MiniMode(True)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.9.1",
|
"Version": "3.9.2",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
|
"感谢 @り哥拽的冇气质° 和 @杨 提供了 3a5000(新世界的测试机器)",
|
||||||
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||||
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
|
|||||||
Reference in New Issue
Block a user