mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2026-08-09 05:13:57 +08:00
Compare commits
7
Commits
| 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]
|
||||
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
|
||||
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:
|
||||
def SearchBotton_Clicked():
|
||||
@@ -573,11 +184,9 @@ if __name__ == "__main__":
|
||||
# 连接信号和槽
|
||||
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
|
||||
#ui.uploadFen.clicked.connect(UploadFen)
|
||||
ui.getInfoButton.clicked.connect(InformationWindow.ShowWindow)
|
||||
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
|
||||
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
|
||||
ui.exitProgram.triggered.connect(window.close)
|
||||
ui.getFen.clicked.connect(ProgramRunStatusShow.ShowWindow)
|
||||
# 解析云列表
|
||||
try:
|
||||
# 获取列表
|
||||
|
||||
+6
-1
@@ -26,6 +26,11 @@ def readtxt(path):
|
||||
f.close() # 关闭文本对象
|
||||
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 = {
|
||||
"Architecture": "Auto",
|
||||
"Debug": True,
|
||||
@@ -44,7 +49,7 @@ defultProgramList = {
|
||||
"AutoPath": False,
|
||||
"QemuUnMountHome": False,
|
||||
"Chinese": True,
|
||||
"FontSize": 1
|
||||
"FontSize": fontSize
|
||||
}
|
||||
|
||||
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 kill.sh 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 InstallWineOnDeepin23Alpha.py 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 uengineapi 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 InstallMono.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 arm-package.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 cleanbottle.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>
|
||||
<h1 align="center">Wine 运行器 3.9.1</h1>
|
||||
<h1 align="center">Wine 运行器 3.9.2</h1>
|
||||
<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/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)
|
||||
**※1、修复 Windows 虚拟机安装工具安装程序在 Mips 架构无法正确启动虚拟机的问题**
|
||||
**※2、优化打包器依赖**
|
||||
|
||||
@@ -35,12 +35,6 @@ class Ui_MainWindow(object):
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
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.setObjectName("runBotton")
|
||||
self.horizontalLayout_2.addWidget(self.runBotton)
|
||||
@@ -109,8 +103,6 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "自动部署脚本"))
|
||||
self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
|
||||
self.saerchBotton.setText(_translate("MainWindow", "搜索"))
|
||||
self.getInfoButton.setText(_translate("MainWindow", "获取选中项介绍"))
|
||||
self.getFen.setText(_translate("MainWindow", "获取/提交选中项的评分和评论"))
|
||||
self.runBotton.setText(_translate("MainWindow", "部署此方案"))
|
||||
self.menu.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.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){
|
||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
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@@@"
|
||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||
##### 软件在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"
|
||||
else
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||
|
||||
+14
-3
@@ -537,7 +537,7 @@ BOTTLENAME="@@@BOTTLENAME@@@"
|
||||
APPVER="@@@APPVER@@@"
|
||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||
##### 软件在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"
|
||||
else
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||
@@ -1054,7 +1054,7 @@ BOTTLENAME="@@@BOTTLENAME@@@"
|
||||
APPVER="@@@APPVER@@@"
|
||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||
##### 软件在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"
|
||||
else
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||
@@ -2348,6 +2348,7 @@ tips = transla.transe("U", """提示:
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
window = QtWidgets.QMainWindow()
|
||||
widget = QtWidgets.QWidget()
|
||||
|
||||
defaultFont = window.font()
|
||||
#hScroll = QtWidgets.QScrollArea()
|
||||
#hScroll.setWidget(widget)
|
||||
@@ -2394,6 +2395,7 @@ option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office"
|
||||
option1_text.setCurrentText("Network")
|
||||
wineFrame = QtWidgets.QHBoxLayout()
|
||||
chooseWineHelperValue = QtWidgets.QCheckBox(transla.transe("U", "使用星火wine helper\n(如不勾选默认为deepin-wine-helper)"))
|
||||
chooseWineHelperValue.setVisible(False)
|
||||
helperConfigPathLayout = QtWidgets.QHBoxLayout()
|
||||
helperConfigPathButton = QtWidgets.QPushButton("浏览")
|
||||
helperConfigPathText = QtWidgets.QLabel("点击浏览按钮指定软件包适配脚本")
|
||||
@@ -2605,7 +2607,6 @@ cleanBottonByUOS.setChecked(True)
|
||||
chooseWineHelperValue.setChecked(True)
|
||||
e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_all.deb")
|
||||
widget.setLayout(widgetLayout)
|
||||
window.setCentralWidget(widget)
|
||||
window.setWindowTitle(f"wine 应用打包器 {version}")
|
||||
window.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
window.resize(int(window.frameSize().width() * 2.1), int(window.frameSize().height()))
|
||||
@@ -2678,6 +2679,16 @@ allInfoList = {
|
||||
# 设置字体
|
||||
SetFont(app)
|
||||
#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()
|
||||
sys.exit(app.exec_())
|
||||
# Flag:解包只读control和解包全部读取
|
||||
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"Version": "3.9.1",
|
||||
"Version": "3.9.2",
|
||||
"Time": "未知",
|
||||
"Thank": [
|
||||
"感谢 @り哥拽的冇气质° 和 @杨 提供了 3a5000(新世界的测试机器)",
|
||||
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||
"感谢 RacoonGX 的付出与贡献",
|
||||
|
||||
+31
-233
@@ -270,7 +270,6 @@ def DisableButton(things):
|
||||
e1.setDisabled(things)
|
||||
e2.setDisabled(things)
|
||||
o1.setDisabled(things)
|
||||
miniAppStore.setDisabled(things)
|
||||
#winetricksOpen.configure(state=a[things])
|
||||
getProgramIcon.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}",
|
||||
#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():
|
||||
if e1.currentText()== "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
@@ -1217,8 +1209,7 @@ def UOSPackageScript():
|
||||
def RunVM():
|
||||
threading.Thread(target=os.system, args=[f"bash '{programPath}/RunVM.sh'"]).start()
|
||||
|
||||
def CleanProgram():
|
||||
OpenTerminal(f"{programPath}/clean-unuse-program.py")
|
||||
|
||||
|
||||
class UpdateWindow():
|
||||
data = {}
|
||||
@@ -1647,184 +1638,6 @@ class GetDllFromWindowsISO:
|
||||
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(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():
|
||||
wineBottonA = None
|
||||
@@ -2656,20 +2469,15 @@ exe路径\' 参数 \'
|
||||
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
||||
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
||||
7、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;''')
|
||||
updateThingsString = QtCore.QCoreApplication.translate("U", '''※1、UOS Mips64(如 3a4000)用户无需手动降级 Qemu 即可正常开启使用虚拟机
|
||||
※2、修复开启部分 exe 提示参数有误的问题
|
||||
※3、Qemu 在启动时可以按 ESC 键打开启动菜单
|
||||
※4、虚拟机工具 Windows 7 自动安装镜像文件选项内置 Virtio 驱动安装包
|
||||
※5、Qemu 虚拟机参数调整若干
|
||||
※6、修复虚拟机安装工具系统安装选项会自动跳回第一项的问题
|
||||
※7、优化简易打包器包名识别机制
|
||||
※8、减少不必要的压缩以减少打包器打包 deb 所需时间
|
||||
※9、修复简易打包器生成的 deb 包无法运行的问题
|
||||
10、优化 lat 安装脚本
|
||||
11、调整星火 Wine 助手路径''')
|
||||
updateThingsString = QtCore.QCoreApplication.translate("U", '''※1、移除冗余组件
|
||||
※2、修复 Wine 安装器在文件下载失败后无法自动关闭进度条和解除控件禁用的问题
|
||||
※3、Wine 打包器不允许版本号开头输入首字母以及版本号不允许出现空格
|
||||
※4、Wine 打包器生成的 deb 同时支持使用 spark-dwine-helper 和 deepin-wine-helper
|
||||
※5、支持调用拓展 Qemu
|
||||
※6、新增滚动条,优化小屏幕使用体验''')
|
||||
for i in information["Thank"]:
|
||||
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>
|
||||
<p>它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。</p>
|
||||
<p>而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。</p>
|
||||
@@ -2857,7 +2665,7 @@ createDesktopLink.addWidget(combobox1)
|
||||
button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到桌面"))
|
||||
button5.clicked.connect(make_desktop_on_desktop)
|
||||
createDesktopLink.addWidget(button5)
|
||||
saveDesktopFileOnLauncher = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到开始菜单"))
|
||||
saveDesktopFileOnLauncher = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到启动器"))
|
||||
saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher)
|
||||
createDesktopLink.addWidget(saveDesktopFileOnLauncher)
|
||||
leftDownLayout.addLayout(createDesktopLink)
|
||||
@@ -2875,18 +2683,15 @@ uninstallProgram = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U",
|
||||
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)
|
||||
miniAppStore = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "微型应用商店"))
|
||||
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 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "简易dll检测工具"))
|
||||
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(getLoseDll, 1, 10, 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)
|
||||
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.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)
|
||||
wineAutoConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "自动/手动配置 Wine 容器"))
|
||||
wineAutoConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "Wine容器自动配置工具"))
|
||||
wineAutoConfig.clicked.connect(WineBottonAutoConfig)
|
||||
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)
|
||||
saveDesktopFileOnLauncher.setSizePolicy(size)
|
||||
@@ -2954,6 +2757,7 @@ else:
|
||||
<b>注:部分二进制兼容层会自动注册 binfmt(如原版的 Box86/64、Qemu User Static),则意味着无需在 Wine 版本那里特别指定兼容层,直接指定 Wine 即可</b><br/>
|
||||
{offLineInformation}<br/>
|
||||
©2020~{time.strftime("%Y")} gfdgd xi""")
|
||||
copy.setWordWrap(True)
|
||||
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 源)"))
|
||||
installBox86Own = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), QtCore.QCoreApplication.translate("U", "安装 Box86/Box64(使用自建源,支持 riscv64)"))
|
||||
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)"))
|
||||
enabledAll = 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", "临时设置默认字体"))
|
||||
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", "清空软件缓存"))
|
||||
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), QtCore.QCoreApplication.translate("U", "删除程序组件"))
|
||||
p4 = QtWidgets.QAction(QtGui.QIcon.fromTheme("exit"), QtCore.QCoreApplication.translate("U", "退出程序(&E)"))
|
||||
programmenu.addAction(p1)
|
||||
#programmenu.addAction(installWineOnDeepin23)
|
||||
#programmenu.addAction(installWineOnDeepin23Alpha)
|
||||
programmenu.addAction(installWineHQ)
|
||||
programmenu.addAction(installWineHQOrg)
|
||||
programmenu.addAction(addWineDebMirrorForDeepin20)
|
||||
programmenu.addAction(installMoreWine)
|
||||
programmenu.addAction(downloadChrootBottle)
|
||||
programmenu.addAction(installBox86CN)
|
||||
programmenu.addAction(installBox86)
|
||||
programmenu.addAction(installBox86Own)
|
||||
programmenu.addAction(installLat)
|
||||
#programmenu.addSeparator()
|
||||
#programmenu.addAction(setMiniFont)
|
||||
#programmenu.addAction(setTinyFont)
|
||||
#programmenu.addAction(setDefaultFont)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p2)
|
||||
programmenu.addAction(enabledAll)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p3)
|
||||
programmenu.addAction(cleanCache)
|
||||
programmenu.addAction(cleanProgramUnuse)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p4)
|
||||
setDefaultFont.triggered.connect(lambda: SetFont(1))
|
||||
@@ -3030,7 +2824,6 @@ p1.triggered.connect(InstallWine)
|
||||
installWineHQ.triggered.connect(InstallWineHQ)
|
||||
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())
|
||||
addWineDebMirrorForDeepin20.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/AddWineDebMirrorForDeepin20.sh'"]).start())
|
||||
def InstallMoreWine():
|
||||
os.system(f"'{programPath}/wine/installwine'")
|
||||
# 更新 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'"))
|
||||
p3.triggered.connect(CleanProgramHistory)
|
||||
cleanCache.triggered.connect(CleanProgramCache)
|
||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
||||
p4.triggered.connect(window.close)
|
||||
|
||||
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", "鸣谢名单"))
|
||||
h5 = 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", "反馈这个程序的建议和问题"))
|
||||
fenUpload = QtWidgets.QAction(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"))
|
||||
gfdgdxiio = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), QtCore.QCoreApplication.translate("U", "作者个人站"))
|
||||
@@ -3449,7 +3240,6 @@ videoHelp.addAction(videoHelpAction)
|
||||
help.addSeparator()
|
||||
help.addAction(h5)
|
||||
help.addAction(h6)
|
||||
help.addAction(fenUpload)
|
||||
help.addAction(programInformation)
|
||||
help.addAction(appreciate)
|
||||
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"))
|
||||
h5.triggered.connect(UpdateWindow.ShowWindow)
|
||||
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)
|
||||
h8.triggered.connect(lambda: QtWidgets.QMessageBox.aboutQt(widget))
|
||||
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"],
|
||||
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
||||
[[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]):
|
||||
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]:
|
||||
i.setDisabled(True)
|
||||
for i in [installLat, installWineHQ, installWineHQOrg,
|
||||
installBox86CN, installBox86, installBox86Own, addWineDebMirrorForDeepin20]:
|
||||
installBox86CN, installBox86, installBox86Own]:
|
||||
i.setDisabled(True)
|
||||
for i in actionList:
|
||||
i.setDisabled(True)
|
||||
@@ -3543,6 +3332,15 @@ if o1.currentText() == "":
|
||||
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||
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 模式
|
||||
# MiniMode(True)
|
||||
sys.exit(app.exec_())
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"Version": "3.9.1",
|
||||
"Version": "3.9.2",
|
||||
"Time": "未知",
|
||||
"Thank": [
|
||||
"感谢 @り哥拽的冇气质° 和 @杨 提供了 3a5000(新世界的测试机器)",
|
||||
"感谢 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||
"感谢 RacoonGX 的付出与贡献",
|
||||
|
||||
Reference in New Issue
Block a user