From 8d4da8c4cfbb10cd3e19a305edebd607655a9280 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Wed, 18 Jan 2023 15:50:04 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0postrm?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Makefile | 1 +
information.json | 12 +-
new-deb-build/DEBIAN/postinst | 2 +-
new-deb-build/DEBIAN/postrm | 1 +
.../files/AutoConfig.py | 599 ++++++++++++++++++
.../files/Download.py | 6 +
.../files/Icon/BadStar.svg | 81 +++
.../files/Icon/Star.svg | 76 +++
.../files/Icon/UnStar.svg | 76 +++
.../files/Icon/doge.png | Bin 0 -> 11152 bytes
.../files/ProgramFen.py | 9 +
.../files/information.json | 18 +-
.../files/uengine-apk-builder | 11 +-
.../files/uengine-installer | 2 +-
.../files/uengine-keyboard | 6 +
.../files/uengine-runner | 241 +++++--
.../files/uengine-runner-applist-launch.sh | 10 +-
.../files/uengine-runner-update-bug | 7 +-
.../files/uengine-useadb | 10 +
uengine-apk-builder | 2 +-
20 files changed, 1098 insertions(+), 72 deletions(-)
create mode 100755 new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/AutoConfig.py
create mode 100755 new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Icon/BadStar.svg
create mode 100755 new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Icon/Star.svg
create mode 100755 new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Icon/UnStar.svg
create mode 100644 new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Icon/doge.png
diff --git a/Makefile b/Makefile
index 3bda443..50c601b 100755
--- a/Makefile
+++ b/Makefile
@@ -35,6 +35,7 @@ build:
cp -rv updatekiller.py new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
cp -rv pkexec/* new-deb-build/usr/share/polkit-1/actions
cp -rv AutoShell new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
+ cp -rv AutoConfig.py new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
cp -rv UI new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
cp -rv ConfigLanguareRunner-help.json new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
cp -rv ConfigLanguareRunner.py new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/
diff --git a/information.json b/information.json
index 52f0cd7..b6ce66f 100755
--- a/information.json
+++ b/information.json
@@ -36,12 +36,12 @@
"※10、修复 UEngine 打包器在部分系统无法打开的问题",
"※11、新增程序公告功能",
"※12、修复了程序更新功能从高版本降级到低版本的问题",
- "13、更改程序论坛网址;",
- "14、新增程序评分功能;",
- "15、修复 UEngine 打包器在打包时无法正确禁用所有选项",
- "16、UEngine 打包器打包的 deb 不再指定 deepin-elf-verify 依赖版本",
- "17、“更多帮助”功能支持访问云端的帮助内容",
- "18、……",
+ "※13、不强制依赖 Deepin 终端",
+ "14、更改程序论坛网址;",
+ "15、新增程序评分功能;",
+ "16、修复 UEngine 打包器在打包时无法正确禁用所有选项",
+ "17、UEngine 打包器打包的 deb 不再指定 deepin-elf-verify 依赖版本",
+ "18、“更多帮助”功能支持访问云端的帮助内容",
"",
"V1.8.3:",
"※1、修复安装/打包程序时出现找不到图标的问题;",
diff --git a/new-deb-build/DEBIAN/postinst b/new-deb-build/DEBIAN/postinst
index 9650244..0e988d2 100755
--- a/new-deb-build/DEBIAN/postinst
+++ b/new-deb-build/DEBIAN/postinst
@@ -24,4 +24,4 @@ ln -s /opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-applist-laun
# 因为 Ubuntu 的问题,省略
gtk-update-icon-cache /usr/share/icons/bloom > /dev/null | true
# 向服务器返回安装数加1(不显示内容且忽略错误)
-python3 /opt/apps/com.gitee.uengine.runner.spark/files/Download.py 1.8.3 > /dev/null | true
+python3 /opt/apps/com.gitee.uengine.runner.spark/files/Download.py 2.0.0 > /dev/null | true
diff --git a/new-deb-build/DEBIAN/postrm b/new-deb-build/DEBIAN/postrm
index 3738e06..00679ce 100755
--- a/new-deb-build/DEBIAN/postrm
+++ b/new-deb-build/DEBIAN/postrm
@@ -37,6 +37,7 @@ if [ "$1" = "purge" ]; then
echo /home/$username
if [ -d "/home/$username/.config/uengine-runner/" ]; then
rm -rf "/home/$username/.config/uengine-runner/"
+ rm -rf "/home/$username/.local/share/uengine-runner"
fi
done
# 清理 root 用户的配置文件
diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/AutoConfig.py b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/AutoConfig.py
new file mode 100755
index 0000000..406ceb8
--- /dev/null
+++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/AutoConfig.py
@@ -0,0 +1,599 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.4.0
+# 更新时间:2022年10月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
+import os
+import sys
+import base64
+import json
+import traceback
+import urllib.request
+import requests
+import PyQt5.QtWidgets as QtWidgets
+from UI.AutoConfig import *
+from Model import *
+try:
+ import PyQt5.QtWebEngineWidgets as QtWebEngineWidgets
+ webeng = True
+except:
+ print("未安装此依赖库")
+ webeng = False
+print("""太常引·建康中秋夜为吕叔潜赋
+一轮秋影转金波,飞镜又重磨。把酒问姮娥:被白发、欺人奈何?
+乘风好去,长空万里,直下看山河。斫去桂婆娑,人道是、清光更多。""")
+print("")
+print("""译文:一轮缓缓移动的秋月洒下万里金波,就像那刚磨亮的铜镜又飞上了天廓。我举起酒杯问那月中的嫦娥:怎么办呢?白发日增,好像故意欺负我。
+我要乘风飞上万里长空,俯视祖国的大好山河。还要砍去月中摇曳的桂树枝柯,人们说,这将使月亮洒下人间的光辉更多。""")
+print("================================")
+urlSourcesList = [
+ "https://code.gitlink.org.cn/gfdgd_xi/uengine-runner-list/raw/branch/master/auto", # Gitlink 源
+ "https://gitee.com/gfdgd-xi/uengine-wine-runner-auto-configuration-script/raw/master/", # Gitee 源
+ "https://gfdgd-xi.github.io/uengine-wine-runner-auto-configuration-script/", # Github 源
+ "http://gfdgdxi.msns.cn/uengine-runner-list/auto/", # 备用源1,纯 IPv6 源
+ "http://gfdgdxi.free.idcfengye.com/uengine-runner-auto-configuration-script/", # 备用源2
+ "http://gfdgdxi.free.idcfengye.com/uengine-runner-list/auto/", # 备用源 3
+ "http://127.0.0.1/uengine-runner-list/auto/" # 本地测试源
+]
+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"")
+ return
+ for i in range(ProgramRunStatusUpload.fen.currentIndex()):
+ ProgramRunStatusUpload.starList[i].setText(f"
")
+ head = ProgramRunStatusUpload.fen.currentIndex()
+ end = len(ProgramRunStatusUpload.starList)
+ for i in range(head, end):
+ ProgramRunStatusUpload.starList[i].setText(f"
")
+
+ 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"
"))
+ 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"
{i}
\n" + #about = f"{about}"
+ about = f"暂无此程序的介绍
" + try: + import requests as r + fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + 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"{starHtml}
\n{tipsInfo}
" + 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("第{i[1]}层
"), 1, 2) + inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3) + widget.setLayout(inLayout) + pinLunLayout1.addWidget(widget) + #pinLunLayout.addWidget(QtWidgets.QLabel("Ln|5Cn&y;1luja@+BkEB(eD{kbHz)ksQf zNK%7PA|fD-F%i<(87qzXw@8bhcCdW-F^Sq+AuHkh%Se|xZMtMGSb!X-9R>isKOB;> zRc}ZjA}D$1Emd4ceZ7?a83P84u=AINcgR;zF)A1`03|Vrv5S`&66bsy zhyyRJl8&Yp8GFhs(B*+9B$Xd*m)c^zD7VMN%B1oCF6D-KWM_JCQ0NNC6zUN~4~R^N z=CCsWoWMGC4ec<3t8+wroMg_QCF!%KOZC>y5C|NyAIcfFHZgeF5Ck^ z@sFhto$d 97UH@q$ac!pze?k*>COl1a_>y$C>#=2NGQm%6=&I0~ZMTjgdT zzoQi+JUMp`$hPNhxgOW~CrB{ig1Hivk_e>`H+4MNbtG^^FqRw@IN)g-&{kC^M>o8W z>x8+1gneZoxT0`{e1KG;{6WcVZkDg1@L4!yrbT;60P>?#$4YcYjzp(rNkmM%1f$|4 z7{ddj5$%M#+9cGDqXV99sFwD+V@Rve{$Wg!#(ADVlW9eQ2_4R#FiEnOA`a?&j9PU% zBgcHFbT&4~{+C}jTsUVfnInn$W01oVaQ#+kC_T!$a@dpy5kqwk()NHM1Hh>u)Fx~t zI%8J8q)nfItaZ5OeCv3{ (UH>C-buEr(ctk90L_6qtC1{kt-_MCvlFYJ7~>S}IaHcdj3u2# z2N8gzF_tDFFJJO6yjTvsu^P+Q7S;xXk&%*AI9F0 UTrAQ|a z1=bPNVZJsE5_rwvq>L(udM8evjpJm?hw30~2`6E}gJmTH!S=Y4Ljc2=zM2jmae_3Z z*oFf~uq?&JI2e$G+zhGTht;3Rl~CzsuzM}{U>u+@ s6CFu811VQQKu>OAubFjr%C?h|3hlGexP%C^0Wo8ACFudopZJdv@+G{42pFm z& ?t@n{GH({jm{#D(-G@o zXasKSBXclxQzhe+^CWf7QsaEmlb6m{C($W5T+jC7m4tPqCml&Gtrt8+T7IQ4wB&X2 zU3)6q(SRU`OHp(_bj`p;y%npT-L|r4(o$KA(Sabrws_ndMc{6X0CV+zLJPw@4J!bA z-U0PCP-a^-<3OicpdZv1bU5)$>3HiPPEAo*x<#bI5kS*ub(W=dbmXODJg|bj9_;FY zryS>aEnE_hxYc>J=JpYnV%wVrLlB@yYkB VlX3gz~ zd{ES|0$?TR(y^_!*%qw 4>p()sI65y#bc+A*x9i6< zPw?S15GZR~7OzeRnQLF$bbL%{3#QBDbjiQ;21%GWmB>EOR%1INW`LMfEQbLw85ft4 z!AJt|Aw_q#cIYagyBTY^Ggb}62#8EW&(8*#4F(yMlolhS{?L 1&BH>ij_k{L(bVRFaOsY3h zat{1hVEFK1*a5%=UjsnVZ8aPPG^+Pur=BQW&?4-rh79UFCRSr=&b&2LQ^k>%G)%11 zOu<*Sd;{XiZ;u{5--p+FHcnDMUJ;5`8I~k-;Te*7$}-?B0=f43CY+6q(J5vG03lr+ z`lz1SVZpEiFlj2Dui)mEQcd*PxCPokU>Z42FJfLV^c?9YA}z|S^MYb=6ry+->u8)q zT^;M)K^*W!?KHwXaJb8Mz&Vg;CB6Qa%|In1b|CaDn{obafi|p?+(@(rF-;3 z=M0a|(mSVuty{)0>O47gxTSYN_u97s^JuMJ+LmiCBndfKAz2gc`H;lSu{j*n$!Wt%(zEIYk5K%@cE;gAX9nh+7i1%-jmW{v^_ z5i$0b3UAaLZaC?P0swV%VQhvU^y>`Ck@Y*Jv#kT2ARuE-TV~qScLG%2S>;(_jUt|4 z@!B(4CLV{^Q%T}*a0tmA%|NM&v`%H-@srib)?Vy%uy|MJrNDc1q{ZtEJd?^g>ms$4 zT!-H+#wg%*4+}m#l28Z;Zg_?dBMJbfISl}xeS~mSZrLxbHM|&!WG*}%cgVTMd8#;& zY9o6R9fE>7gjwX($<|SBx*|Pkozt|Z`uJ5Kc`Z)m*t~PRwgowq>8EqNj!t{N)q`@h zP4ZC*f^EkXa3&*Ogy)P`TbXaKYk?0+ne|@-y06GuGx%vl0f4AIPFzE2rPP%i)nd}* zlO$z2?m>F=7#cz+AaQu-5VeIB?qC+Q&hZZK1 37#-$-dEjjiQmh)qoOO&EX!%L!>U#&o(Rsa>a(S=~$L~u$epG8-Bk$t@uj)*^ z&1?Hsp7Nkd!SR~9F{dt-NbF4^RBSB4V{Yo9T6A9+6f^i~L;=A2)@pQSgd6MKb~E>J z-VgA? ag?^JvY@!8 zpj8`OJJgx{0LSkONH989#w}T<)txQvc gk;P+#TY|n zJ%xS7sX ( s&p!lvi;f_#hE?$=x@ faLv+p3bv<_TpiDpg?@m>#}?pi$U@wCkAZl; z)q=cEJR n=M0WXVUvBM=` zU$C>5+y3g_5NY0IZ3M3uG@I9+$2JHSm$F>K@!h@7)b%|FI;%ulv2bhMiJ+8&Kov8o zIv8c5JO?8XS|rjPiogkV%0peqM_QXg=c +uxq4ssDt?yp`umvy}IfK+j~H^8pC+MU}G zqi{6dM|~AFcT&<&z-~G`2+QY5$d~Jp2}#fqig>-idPmE+ASI! 7N!!yA17NI`o`sZF21^lhcQ4 z*}%|dkH)WOSdu1Aa!pO6&s<@!bXZdmhSb#*5)1~-BUx337$_5w0>__^$eaST(ECRV zQFwu)a?vN~d@s1B85J96*4zU%(b3u@M|W?Nik(}ezT%*?HP%aeQ-j{6MqwXNR9w8o zr)5f7{$xoXUnp6VJ|}_Nr_4gYvx!b8(7ALvKz(lU#3|lKr$qRq29K-hqY&?jI^{D! z7irZXr(p#E?O(#?;&XDakRb~-0wkV>o`l{W&|QAgQd=eUhs&g`sa|)WMaLycOj0ro zo`h}f(S~Qhv+ZHpyFlcP0Ly?ClxxQ?f?E%FzxAqYd*x{<+3=S4jGlXrqT|tiVhXM? z5!hVYAgztHxP!-P$wD-i(FKdokoo5%N#1n4Nb-6%31G3;3H;8sc{dV#dIq8*F%9KN zW7$Ev=t2ltK}mzbkO4UIfFxjZ>l_M+%gVwT3Q&iPt0kPcSPp);UW)$ojO<(grZgNa zCs|)WuSlOzAXCn~NM>Acm5iA(voB3MAM8;!0-?r{gbg9sOz<);fTd=bOIZu08`sL} z`)`x#1I3a!CR-L>dz0kNT`J?I&6AXzNsdf5KmVA#e&3Dg6kQUXkSvo=zes8imdKIq z8)etqugi`#T~aVFUp{s7`4XEHWB6R}SDlD*y16`+QpLLKkc%5PP6L3r%%ksm@5&~( zABGG-Q?sC(>$W$E9m8n?jbe_kYs{C|esHxqo*!!zp7|+R@Y&PQ+Y8a_Q{?dW_vM{O z|2N)|qQ_xKR`1^<@9}v25t(-0WpeJf?~{ZK_Bsn(iV`@uydY>n(Ryk}&x)C>*>`{Q zkgR?59yoe}T=Bq4nR52!So!vy0=KXFoxFC>*E|`Y|J7e*>`Ak=yz%KrWX%INX})B0 znLPfT=j03bUny}e2 Y=c8O zCJirpg7H#Wl_SsGc)qkZH_4KJyItm8^)>Xs?xkkM&P{Os9ndu(G&twv)1 cCC3{TI*|i;8)&ssp=JpuPP31{#%ba zwzq5jKB=#4l;li2W^vPywvS3iiHE9*R67U?q$8ey={6=U1sk`jh}M;(sp$Va Gx@b~}?ZeF!Ps>}Aul@I^1U*}iv-znuq8_1$_?5itokSWXlMMuCkOa~75Dbvy2 zMY8LUx5@O=^Q{3eMtc&C@vV?qR40gRdF}xi)+Nio|LCC3XFL1XuV&H( zlAN6{g=bybuUKB#{804D
$b`CC78Zwj9NfSpMhGWWhNjM`;O>!#($9| zNq^8>TiG9aa2(XAuf(o5*ZZAL+QYk@Y&rz>at9donO0b$6TPWz$N>1dSzo>Q9Tl*+ z^5Tk;h|hxYr0G~$txP@lDq!fazR*-%(HA)YhFd#o%K83+hS`G`9RD!ao< e3qn@m7-?;&m1D(QhiqotwE08Q^d?|a zV<*4{b*6JL^ 9EN-SB>lKcxSN1$EU{0@~@mO2e+(~ zCvRAc`wKj39snjG00m1g9-y`-I*9901UlIjx1Ejm9qepAov4G?!@<|14s>+B>W4h& zct`BO??Z?4r-P1waD-ZK=-DXRnLICBPPt@?eE8g>@`qb4m%8$OetDW-cJu$~gX<5m z P~UYN77jhlC)yhtzl!maY& z6A$*0ie<9uxb*6|viPdGD5xa{=`HKDJM}Qc6J%{XY4JqKnL0)`zFZ_*)~u4 +ybBJeGz;VUa+14U8SU$4}?&1q!0YJzq$d(0HTq4uYIS;$raPbVr zqFp)>(_0r-Lp=EH81KS6jsj1QfR`$2r(lM`A *se9w*TYE5t&wFrD&*jfBT~NmDDG&R zq_GO$4C@76g`n+#Bw`zRYBrvRj-MiV^Usk9r(GgRd~~2qU@^dtwAnr$Wh!Wyc$Qd) zpfCunB{+5=IK0UNGXtSANEpJGnB{W#o%hIuXG@a7?L1oO=R~#vA^faF7w<4z(#I{D zCrOhhq9HbjLpgcEp7rK-+5gcoDcO8jN{cF`3%?)1ANAmpF)0I|gXSg6*h%R!WnrGg zVk@^A O#CIIvelw zc+X+kG)0dN!MU1uj(5R;Ed8| QoA| zw5|z7_2xHZ{+M)olnj0VFJFtMUu9n2yI{EyL>1VUJ_bQT2ebDpj?V5C5R%gIA&aM9 zHFy{S%{y@5c@{=R&DQNwRkVw)sVQ6`gRaX5y#{D|=9_@i+Uq!#p&{=P0UbjM02O9l zgJBEKNY;};(VoR5)*4gi1Tf{{2a9tgta7X#S#KUx;Gv;pT#J_&b0E^ygOPdFlgt*+ zFZv1WJ36|7=QYB$qdX{UK;SZ^V-T=1boqE(==oZ;Z9f(RTPTf9VV)Wsh7167*oCG~ z>uA7*$Ww&M(HN^C6QERKrBSUcf^@FVpCXtJuU0U)0G&_C!%Bk9Ya766yN=POz3ceq zEb|8QwvLVH2&8-vI)3FL3K?ySvJeR3*{k_sA?@>~9Jq>gIzqT4M Iz6En zGZ8O;XusBc`~cvQ>MnNt_6E#xY5xMnk};fdgG{43Dp65xhMvxWrd98vq#DyOfEo!N z>odivLCpDsL8EOj96#xl-_|*&IlMN36VsG4p(o#<`a1!N#(T^ltBfY4TrE>J^9X{n zatb1?yQ}5YM8{JA^QdHyGzchDhQ4ENm-d>2B;w=fj~@W|Mz1CzyjW>(E0pML3~7~) zlPW{STk)*^9g*r6pb!G3H!Z}&kzVg3J(Q+VI&$b_6@b*2RUU&f#K`v^X)ZvN U`wX`8H(*oykDxb%AB{a*hUqI+_`lA=@i=O8e2hV1Yjf z)_11R|Cvn;3Q6(!0Sf*M8KAjzt)cY{LF1}8*3QZ2i{#&fIrn7HkiZ_!Su8WJW!3>0 z5cLi5mfrCxJ$Zci9{j`;kkUD0z69rAfHEE8^rCQWz~G#-$) -;*rO1 zuc?EbTy-|vv@+PXW)&gLhd#1p=}_O9(tu~nJz%}?ohDX78_?wGE&J9=>Y{I$#;G9N z^o#<6U&CkJf>%p_!f05DIy#oJdD3xhc+fRE@sOl+ONAUQuEtxkdc4qY#dXg-?c{se z__TQJTu71JSy_^t OF9WnWk zS2DQAjR38uyX ?pfYVe4B;KU8sG-!RnsU=j`)0F@S&H<6y+Qu;Tv*Mts%XLO$9 zmBO6Vcw|#A#z>fkFBcv&Yh`B~je>1Ot9Hw_*UKbt>D72S@)xNuJM0tEH=92vTb6$L zREbTAv5tZu%8J8uIOYrHVoU$|by8jEC5u-btO5q9XTw8>vyMPP0FDAKHysN{0-deZ zIJvU38Rc+$gR~qnD 8f>X4X8BID5Ov%YCY z9ozN%hk`oAB3)h`>?icKL$m`&qA7*?>~eHWU8f?S%{LYQ#hd?~&saSeIJF0((K`I* z+E%nXD}M6Xl5;KN(VNv*cD=%(I`NRK?$08P@5#zrp2GH(X4M(LQY-k-Ql}m~$ od7f zf<~e_HCVM$LJx0kl*km^6kVf7P0I^Xj~#4uJ_PVI1Q?oh?(@;*CCiqN37zabtz{sb zUQ9{r0zy*9t6A1D!xQo@7-X|3PZr6DWE}&c^^PAmz>WA=@4!Z-!sYG>lNtIvtSN|M zqGR-DC*ilS)Nc5Nkxat~YA7=(dpMSTKpOlXbMg{6U#;*}4xOEPE|!>Ty^q#5Z`yYS zSI;*310S8!wTE0^y<^v&Z*^w1lHla{QC0iFGmxTfcH(>P-#ONy(qRXHzl(|Xo}$3I zO~1x+zY00Okv6Zrh#Ioo7k9?jZkI@Y)Hec1&dS5%?QeC Br`ko@L9()CC3kP-~skee?&dq>o1O8=}Jw0HtFC+>fDKh! SRZMu68 zubzyoS4C8cIkD^q(2&RJ@87GWI6ME7Mgc)Vw)Vqk^x}(bh(7X594bGe08IM6?1YNX zQ)umbkK$d$A)m5T$~wWdN~L?DsBpm<7s++MdR@}gsl;V`ggk{Hc#0eze4-!+g&REzKk7#kZTktNxHqKUxLf&__x) z%+rVhK$&=5dIyy02;qL9^7ZeV9@E>)PFaW7vU3)ULpf{40{PN&8|8xUK8%l8@KVGF z855?+ryqP;KKGxiaTAtrYShtIh9@6Y+8h1&Fm~>J9&gBAMkVli7!jJM94g>sILDLD z;YdzL>k5bDs8GifPkxRB9s#NR%OfD;;}_{r-vB!j7;ymbcLH`morl>-!;TlFrQ}WI zs5ul<<(Q?C0Cf&hmR+8-wwn7*=Uw?_`TDCn O6OJBoe=x|o>Xl+?_Lte%4glR?Zevwz5(fc_H6qwp+ z2-Pk7-;svhYfM#G9-?ndVfg0}2Y{ln@90kGR>u6%RX0hftrj_0rp6HqpkcioWvpbS zp+&-c5Whl_Gv`$7wm2Y(nd5+iAbsvb0?M(|3FWIyL!#oep7KoN8=uD1h>fv1C!cC~ zarSsL&lA9}t5;?_a4_q%_glxSEer(eY@RkBed9iIvgtBB_qj_8BRq{N0DQ)Qm(4e_ zt&ZAKIr=K@N>wr2I`c51=+&oW?_Y5PrWVneHtU?mR2>(VsuJ_$mfOxD%;L%5@<{RD z(VGJ6NCQBSnyQY-h9`d}*)!(h#rzb5cl^{z^GukxDfzkL;bRBa({%&@N8$SR3wg`p zM#$0CcS}dzVM^hP_Zx@v+((IfokkS^%9wnIybRwx!hGY7m!$54|3uDbB=W^;SIP6Y zTqEy3{(rmc)OfX;tYAT}1MGZ5pLWRR7ynx}{r*3Irz}(FIgIlC&Lg8O^Mi}0{_R5D z{jmIdKVgNfvu$Z&aW2o)+rCIAyCB$91L4EjQBk*Lr8Mq&8_e1t9-%L^Fp5*eD0n=U zpMG85tf|!B-_L2;_qN34E|jR$iKZUW88>aVZ2$9fQjAehj(It2+FU&49OLoR`NxWj zWc_a*ln;K72X_`q*1fJ9uJ|2SLaz(7qcLe%j_oOuP0v0iuibl-G#ooDXWe**Og)b` zZ2;$JQ|dkwuS-k@nbQnXbvCCN1|3dUKw0r*U|ol_lx~oUKi{czz-}y |Xls?`s-x20+T2H`ACWvZN75!B5NTr(3 *-*3b3Fs0(-P%$NL$4YIrQxRL`-zmQ-wdY zbn1lfNr`E2bZ5V6qmuxxeRs=g`21=OOpcF;&yc+9S4mU`=3q)^C&N^-{k7+1Z-APti#up4bsulq#x7urxeA+BqmFI`WS4kDv)s}os4hOu$^$`d{4ge zY0x>RBjb8E6=2UM_ QFB@09r$Y;#{p>5aRa iN`;KyMs( z;2*<;Nw2~Q85Ev4^+FkY(S7(;8N3(Jx1cau4YnzX{J~KF*g*O7+FRLc`{7q-QjV#1 zy|| $`$Fheaha&*muSZb~%mNKi*RW3OmbG{MS zeg3-yfa1A2!YuN8*oaM;c!rdcCu5i2C2 0DnSk;$%( zPWP$EAaMEUg5l@ax=v}{kFPj4JuQv<-<9Mk%VgZS- os zsr>7INQ3M3My*Hi_abk@&o<+t@%I6rb$_1*D3yN<4u6pC=kQTJ%fV=D6JPLoNu7Tk z{=`5kQ8pM|Qu5ze$Kz%wsqifPVV{K(pEnn?Q>=A*KkA|fchnxjL$SA{Zs%(J)ujFS zvsbzJq3y3qV&PINo6`-Q&vx7>FwW=8l-dth;=pHDc0(0nUdG1@ALkC&G(7aVAB%=& z8Vv=1H=(gbR=^G4LeJ;igPk3*k}~@W1mjwah+JUs^1ZbYJ@{Fv+m63p*HD4gPbB`B zLKcp35|xONfv2H#lpbvj>hLc7Njw@7mopPTs(OK>%)|yQ?#T0RE9v3 TqN@#juXo48@T=guR-( z@dw 6I6BPizUG|5f@W;kvKKA%dML?!vx|oWYCe2URI}e%~(CmU?yX?0Oo48B) zA9Ydft OU8!ipfu(dO2glC%|4J$C-5gcaKZy8 iJaEDTCp<735Bxu_KIZ})^jBH{0000 V1.8.3:", "※1、修复安装/打包程序时出现找不到图标的问题;", diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder index a9c4d9f..a543fca 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder @@ -24,6 +24,14 @@ import PyQt5.QtCore as QtCore import PyQt5.QtWidgets as QtWidgets from getxmlimg import getsavexml +print("""渔家傲·秋思 +塞下秋来风景异,衡阳雁去无留意。四面边声连角起。千嶂里,长烟落日孤城闭。 +浊酒一杯家万里,燕然未勒归无计。羌管悠悠霜满地。人不寐,将军白发征夫泪。""") +print("") +print("""译文:眼看秋天到了,西北边塞的风光和江南风光自然大不相同。头顶的大雁又飞回南方衡阳去了,一点也没有停留意思。此情此景,不禁又勾起戍边人思乡的情绪。黄昏时分,军中号角催吹,周围的边声也随之而起。层峦叠嶂里,暮霭沉沉,山衔落日,孤零零的城门紧闭。 +饮一杯浊酒,我不由得想起万里之外的亲人。可是,眼下外患未平,功不成名不就,又怎能半途而废。远方传来羌笛的悠悠之声,天气寒冷,军营里早已结满寒霜。夜深了,我还不能安睡,为操持军计,我的须发都变白了。戍边人思念亲人,也久久难以成眠,多少次梦里流下眼泪。""") +print("================================") + def FindApk(): path = QtWidgets.QFileDialog.getOpenFileName(widget, "选择 APK", json.loads(readtxt(get_home() + "/.config/uengine-runner/FindApkBuild.json"))["path"], "APK 可执行文件(*.apk);;所有文件(*.*)") if path != "" and path != "()": @@ -107,7 +115,7 @@ class BuildApkDeb(QtCore.QThread): Version: {} Architecture: all Maintainer: {} -Depends: deepin-elf-verify (>= 0.0.16.7-1), uengine (>= 1.0.1) +Depends: deepin-elf-verify, uengine (>= 1.0.1) Section: utils Priority: optional Description: {}\n'''.format(apkPackageNameNew, apkPackageVersion, apkChineseLabel, apkChineseLabel) @@ -227,6 +235,7 @@ def DisabledAndEnbled(choose): check.setDisabled(choose) button2.setDisabled(choose) button3.setDisabled(choose) + sizes.setDisabled(choose) # 重启本应用程序 def ReStartProgram(): diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer index 4b68c3b..134a26e 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer @@ -9,7 +9,7 @@ rm -rf /tmp/uengine #read tar_path mkdir -p /tmp/uengine # 区分是下载 Root 镜像还是普通镜像 -if[[ $1 == "SuperSU" ]]; then +if [[ $1 == "SuperSU" ]]; then aria2c -x 16 -s 16 -d /tmp/uengine -o uenginetar.xz https://code.gitlink.org.cn/gfdgd_xi/uengine-installer/raw/branch/master/uengine2.1.2.2007-supersu.tar.xz else aria2c -x 16 -s 16 -d /tmp/uengine -o uenginetar.xz https://code.gitlink.org.cn/gfdgd_xi/uengine-installer/raw/branch/master/uengine2.1.2.2007.tar.xz diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-keyboard b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-keyboard index 9cb4d80..7e3612c 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-keyboard +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-keyboard @@ -19,6 +19,12 @@ import tkinter as tk import tkinter.ttk as ttk import tkinter.messagebox as messagebox import tkinter.filedialog as filedialog +print("山坡羊·潼关怀古") +print("""峰峦如聚,波涛如怒,山河表里潼关路。望西都,意踌躇。 +伤心秦汉经行处,宫阙万间都做了土。兴,百姓苦;亡,百姓苦。 + +译文:(华山的)山峰从四面八方汇聚,(黄河的)波涛像发怒似的汹涌。潼关外有黄河,内有华山,山河雄伟,地势险要。遥望古都长安,陷于思索之中。从秦汉宫遗址经过,引发无限伤感,万间宫殿早已化作了尘土,一朝兴盛,百姓受苦;一朝灭亡,百姓依旧受苦。""") + ######################## # ######################## diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner index 9e8b173..b7a923e 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner @@ -2,7 +2,7 @@ # 使用系统默认的 python3 运行 ########################################################################################### # 作者:gfdgd xi<3025613752@qq.com> -# 版本:1.8.0 +# 版本:2.0.0 # 更新时间:2022年07月25日 # 感谢:anbox、deepin 和 UOS # 基于 Python3 的 PyQt5 构建 @@ -18,7 +18,9 @@ import time import json import numpy import base64 +import socket import shutil +import datetime import zipfile import platform import requests @@ -37,6 +39,12 @@ import PyQt5.QtGui as QtGui import PyQt5.QtCore as QtCore import PyQt5.QtWidgets as QtWidgets from getxmlimg import getsavexml +try: + import PyQt5.QtWebEngineWidgets as QtWebEngineWidgets + bad = False +except: + bad = True +from Model import * def PythonLower(): app = QtWidgets.QApplication(sys.argv) @@ -50,6 +58,18 @@ if sys.version_info[0] < 3: if sys.version_info[1] < 6: PythonLower() +print("""观沧海 曹操 +东临碣石,以观沧海。水何澹澹,山岛竦峙。 +树木丛生,百草丰茂。秋风萧瑟,洪波涌起。 +日月之行,若出其中;星汉灿烂,若出其里。 +幸甚至哉,歌以咏志。""") +print("") +print("""译文:东行登上碣石山,来观赏那苍茫的海。海水多么宽阔浩荡,山岛高高地挺立在海边。 +树木和百草丛生,十分繁茂。秋风吹动树木发出悲凉的声音,海中涌着巨大的海浪。 +太阳和月亮的运行,好像是从这浩瀚的海洋中发出的。银河星光灿烂,好像是从这浩瀚的海洋中产生出来的。 +我很幸运,就用这首诗歌来表达自己内心的志向。""") +print("================================") + class UninstallProgram(QtCore.QThread): info = QtCore.pyqtSignal(str) error = QtCore.pyqtSignal(str) @@ -435,19 +455,25 @@ def InstallRootUengineImage(): if not os.path.exists: os.mkdir("/tmp/uengine-runner") write_txt("/tmp/uengine-runner/install.sh", "sudo dpkg -i /tmp/uengine-runner/u*.deb\nsudo apt install -f") - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"wget -P '/tmp/uengine-runner' 'https://hub.fastgit.xyz/gfdgd-xi/uengine-runner/releases/download/U1.2.15/uengine-android-image_1.2.15_amd64.deb' && pkexec bash '/tmp/uengine-runner/install.sh'\""]).start() + #threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"wget -P '/tmp/uengine-runner' 'https://hub.fastgit.xyz/gfdgd-xi/uengine-runner/releases/download/U1.2.15/uengine-android-image_1.2.15_amd64.deb' && pkexec bash '/tmp/uengine-runner/install.sh'\""]).start() + threading.Thread(target=OpenTerminal, args=[f"wget -P '/tmp/uengine-runner' 'https://hub.fastgit.xyz/gfdgd-xi/uengine-runner/releases/download/U1.2.15/uengine-android-image_1.2.15_amd64.deb' && pkexec bash '/tmp/uengine-runner/install.sh'"]).start() + def UengineUbuntuInstall(): - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e bash '{programPath + '/uengine-installer'}'"]).start() + threading.Thread(target=OpenTerminal, args=[f"bash '{programPath + '/uengine-installer'}'"]).start() + +def UengineUbuntuInstallRoot(): + # 加 SuperSU 参数 + threading.Thread(target=OpenTerminal, args=[f"bash '{programPath + '/uengine-installer'}' SuperSU"]).start() def UbuntuInstallUengine(): - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e bash '{programPath + '/uengine-installer'}'"]).start() + threading.Thread(target=OpenTerminal, args=[f"bash '{programPath + '/uengine-installer'}'"]).start() def BuildRootUengineImage(): - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e bash '{programPath}/root-uengine.sh'"]).start() + threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/root-uengine.sh'"]).start() def ReinstallUengineImage(): - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e pkexec apt reinstall uengine-android-image -y"]).start() + threading.Thread(target=OpenTerminal, args=[f"pkexec apt reinstall uengine-android-image -y"]).start() # 生成 uengine 启动文件到桌面 @@ -565,7 +591,7 @@ def BackUengineClean()->"清空 uengine 数据": except: traceback.print_exc() QtWidgets.QMessageBox.critical(widget, "错误", traceback.format_exc()) - os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"pkexec rm -rfv /data/uengine\"") + OpenTerminal(f"pkexec rm -rfv /data/uengine") return print("Choose False") @@ -628,7 +654,7 @@ def ScrcpyConnectUengine(): sudo apt install snapd -y sudo snap refresh sudo snap install scrcpy''') - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C \"chmod 777 /tmp/uengine-runner/InstallScrcpy.sh -Rv && pkexec /tmp/uengine-runner/InstallScrcpy.sh\""]).start() + threading.Thread(target=OpenTerminal, args=[f"chmod 777 /tmp/uengine-runner/InstallScrcpy.sh -Rv && pkexec /tmp/uengine-runner/InstallScrcpy.sh"]).start() return # 获取用户桌面目录 @@ -701,12 +727,12 @@ def OpenUengineUserData(): # 终端显示 adb 命令行 def AdbShellShowInTer(): os.system("adb connect 192.168.250.2:5555") - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -w ~ -e 'adb -s 192.168.250.2:5555 shell'"]).start() + threading.Thread(target=OpenTerminal, args=[f"adb -s 192.168.250.2:5555 shell"]).start() # 终端显示 adb top def AdbCPUAndRAWShowInTer(): os.system("adb connect 192.168.250.2:5555") - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -w ~ -e 'adb -s 192.168.250.2:5555 shell top'"]).start() + threading.Thread(target=OpenTerminal, args=[f"adb -s 192.168.250.2:5555 shell top"]).start() def UengineSettingShow(): threading.Thread(target=os.system, args=["/usr/bin/uengine launch --action=android.intent.action.MAIN --package=com.android.settings --component=com.android.settings.Settings"]).start() @@ -727,14 +753,14 @@ def AdbStartServer(): QtWidgets.QMessageBox.information(widget, "提示", "完成!") def ReinstallUengine(): - threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'pkexec apt reinstall uengine uengine-android-image uengine-modules-dkms -y && notify-send -i uengine \"安装完毕!\"'"]).start() + threading.Thread(target=OpenTerminal, args=[f"pkexec apt reinstall uengine uengine-android-image uengine-modules-dkms -y && notify-send -i uengine \"安装完毕!\""]).start() def DelUengineCheck(): if not os.path.exists("/usr/share/uengine/uengine-check-runnable.sh"): QtWidgets.QMessageBox.information(widget, "提示", "本功能已经被删除,无法重复删除!") return if QtWidgets.QMessageBox.warning(widget, "警告", "删除后将无法使用本软件恢复\n如果需要恢复本功能,请重新安装 UEngine!", QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Ok) == QtWidgets.QMessageBox.Ok: - threading.Thread(target=os.system, args=["'{programPath}/launch.sh' deepin-terminal -C 'pkexec rm -v /usr/share/uengine/uengine-check-runnable.sh'"]).start() + threading.Thread(target=OpenTerminal, args=[f"pkexec rm -v /usr/share/uengine/uengine-check-runnable.sh"]).start() # 使用 adb 连接 uengine def UengineConnectAdb(): @@ -789,7 +815,27 @@ def VersionCheck(version1, version2): return version1 == version2 def ShowHelp(): - webbrowser.open_new_tab(programPath + "/Help/index.html") + global webHelp + # 先判断是否能连接服务器,如果能则访问线上版本,否则访问本地的帮助文件 + sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) + sk.settimeout(1) + url = "file://" + programPath + "/Help/index.html" + try: + sk.connect(("uengine-runner.racoongx.cn", 80)) + url = f"http://uengine-runner.racoongx.cn" + except: + traceback.print_exc() + if bad: + # 如果没有安装 QWebEngine,则直接用浏览器打开 + webbrowser.open_new_tab(url) + return + # 否则用 QWebEngine 打开 + webHelp = QtWebEngineWidgets.QWebEngineView() + webHelp.setWindowTitle("获取程序帮助") + webHelp.setUrl(QtCore.QUrl(url)) + webHelp.setWindowIcon(QtGui.QIcon(iconPath)) + webHelp.resize(int(webHelp.frameGeometry().width() * 1.3), int(webHelp.frameGeometry().height() * 1.1)) + webHelp.show() def AllowOrDisallowUpdateAndroidApp(): if not os.path.exists("/data/uengine/data/data/misc/adb/adb_keys"): @@ -1104,14 +1150,36 @@ class UpdateWindow(): ok.clicked.connect(UpdateWindow.Update) cancel = QtWidgets.QPushButton("取消") cancel.clicked.connect(UpdateWindow.update.close) + ok.setDisabled(True) try: - UpdateWindow.data = json.loads(requests.get("https://304626p927.goho.co/uengine-runner/update.json").text) + UpdateWindow.data = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-update-information/raw/branch/master/uengine-runner/update.json").text) versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:{UpdateWindow.data['Version']}\n更新内容:") if UpdateWindow.data["Version"] == version: updateText.setText("此为最新版本,无需更新") ok.setDisabled(True) else: - updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n")) + # 版本号读取(防止出现高版本号提示要“升级”到低版本号的问题) + localVersionList = version.split(".") + webVersionList = UpdateWindow.data['Version'].split(".") + for i in range(len(localVersionList)): + local = int(localVersionList[i]) + web = int(webVersionList[i]) + if web < local: + updateText.setHtml(f""" 此为最新版本,无需更新,但似乎您当前使用的程序版本比云端版本还要高。
+出现这个问题可能会有如下几种情况:
+1、使用编译或者内测版本
+2、自己修改了程序版本
+3、作者忘记更新云端上的更新信息了
+如果是第三种情况,请反馈到此:https://gitee.com/gfdgd-xi-org/uengine-runner/issues/I6B091
+或者是这里:https://bbs.racoongx.cn/t/bugs
+""") + ok.setDisabled(True) + break + if web > local: + updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n")) + ok.setEnabled(True) + break + except: traceback.print_exc() QtWidgets.QMessageBox.critical(updateWidget, "错误", "无法连接服务器!") @@ -1121,7 +1189,7 @@ class UpdateWindow(): updateWidgetLayout.addWidget(cancel, 2, 1, 1, 1) updateWidget.setLayout(updateWidgetLayout) UpdateWindow.update.setCentralWidget(updateWidget) - UpdateWindow.update.setWindowTitle("检查更新") + UpdateWindow.update.setWindowTitle("检查 UEngine 运行器更新") UpdateWindow.update.setWindowIcon(QtGui.QIcon(iconPath)) UpdateWindow.update.resize(updateWidget.frameGeometry().width(), int(updateWidget.frameGeometry().height() * 1.5)) UpdateWindow.update.show() @@ -1149,7 +1217,7 @@ zenity --info --text=\"更新完毕!\" --ellipsize except: traceback.print_exc() QtWidgets.QMessageBox.critical(widget, "错误,无法继续更新", traceback.format_exc()) - os.system(f"'{programPath}/launch.sh' deepin-terminal -e pkexec bash /tmp/uengine-runner/update.sh") + OpenTerminal(f"pkexec bash /tmp/uengine-runner/update.sh") image = None class ApkInformation(): @@ -1244,7 +1312,7 @@ class ApkInformation(): if choose == None or choose == 7: return try: - QtWidgets.QMessageBox.information(widget, "提示", requests.post("https://304626p927.goho.co/uengine-runner/app/check/add.php", {"Package": GetApkPackageName(path), "Type": choose}).text) + QtWidgets.QMessageBox.information(widget, "提示", requests.post("http://120.25.153.144/uengine-runner/app/check/add.php", {"Package": GetApkPackageName(path), "Type": choose}).text) except: traceback.print_exc() QtWidgets.QMessageBox.critical(widget, "错误", langFile[lang]["Main"]["MainWindow"]["Error"]["ConnectServerStarError"]) @@ -1256,7 +1324,7 @@ class ApkInformation(): QtWidgets.QMessageBox.critical(widget, "错误", langFile[lang]["Main"]["MainWindow"]["Error"]["ApkFileError"]) return try: - data = json.loads(requests.get("https://304626p927.goho.co/uengine-runner/app/check/" + package +"/data.json").text) + data = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-downloads-of-runner/raw/branch/master/uengineapp/" + package +"/data.json").text) print(data) except: QtWidgets.QMessageBox.information(widget, "提示", "此程序暂时没有评分,欢迎您贡献第一个评分!") @@ -1454,6 +1522,28 @@ class AddNewUengineDesktopLink(): activityName.setText(str(GetApkActivityName(path))) write_txt(get_home() + "/.config/uengine-runner/FindApkName.json", json.dumps({"path": os.path.dirname(path)})) # 写入配置文件 +def GetNewInformation(): + try: + text = requests.get("https://code.gitlink.org.cn/gfdgd_xi/uengine-runner-list/raw/branch/master/information/index.html").text + except: + traceback.print_exc() + text = """
无法连接到服务器
+
+你可以尝试:
+1. 判断是否能正常连接网络
+2. 网络配置是否有误
""" + global webInformation + if bad: + webInformation = QtWidgets.QTextBrowser() + else: + webInformation = QtWebEngineWidgets.QWebEngineView() + webInformation.setHtml(text) + webInformation.setWindowTitle("获取程序公告") + webInformation.setWindowIcon(QtGui.QIcon(iconPath)) + webInformation.resize(int(webInformation.frameGeometry().width() * 1.3), int(webInformation.frameGeometry().height() * 1.1)) + webInformation.show() + + def UseProgram(): global useProgram useProgram = '''1、UEngine:{}
@@ -1496,6 +1586,7 @@ SystemVersion = GetSystemVersion() iconPath = "{}/runner.svg".format(os.path.split(os.path.realpath(__file__))[0]) about = f'''
介绍:一个基于 Python3 的 PyQt5 制作的 UEngine 运行器,在新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单。
+程序开源许可证:GPLV3
版本:{version}
适用平台:{goodRunSystem}
Qt 版本:{QtCore.qVersion()}
@@ -1603,12 +1694,32 @@ except: # add sub window #添加窗口开启关闭开关,防止重复开启 windowflag = "close" -def Egg(): +def Open(): try: - lists = json.loads(requests.get("https://304626p927.goho.co/uengine-runner/VersionList.json").text) + lists = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-downloads-of-runner/raw/branch/master/Open-UEngine/lists.json").text) data = [] for i in lists: - data.append(int(requests.get("https://304626p927.goho.co/uengine-runner/{}/data.txt".format(i)).text)) + data.append(int(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-downloads-of-runner/raw/branch/master/Open-UEngine/{}.txt".format(i)).text)) + except: + QtWidgets.QMessageBox.critical(widget, "错误", "服务器出错!数据获取失败!") + return + fig = matplotlib.pylab.figure() + fig.canvas.set_window_title("“UEngine 运行器”打开数(数据只供参考)") + matplotlib.pylab.plot(lists, data) + index = numpy.arange(len(lists)) + fonts = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 用于支持中文显示,需要依赖fonts-noto-cjk + matplotlib.pylab.xlabel("版本号", fontproperties=fonts) + matplotlib.pylab.ylabel("打开数", fontproperties=fonts) + + matplotlib.pylab.title("“UEngine 运行器”打开数(数据只供参考)", fontproperties=fonts) + matplotlib.pylab.show() + +def Download(): + try: + lists = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-downloads-of-runner/raw/branch/master/Install-UEngine/lists.json").text) + data = [] + for i in lists: + data.append(int(requests.get("https://code.gitlink.org.cn/gfdgd-xi-org/wine-runner-downloads-of-runner/raw/branch/master/Install-UEngine/{}.txt".format(i)).text)) except: QtWidgets.QMessageBox.critical(widget, "错误", "服务器出错!数据获取失败!") return @@ -1650,14 +1761,17 @@ def showhelp(): BtnGongxian = QtWidgets.QPushButton("谢明列表") BtnAbout = QtWidgets.QPushButton("关于") BtnDownN = QtWidgets.QPushButton("程序下载量") + BtnOpenN = QtWidgets.QPushButton("程序打开量") HelpStr = QtWidgets.QTextBrowser() - BtnDownN.setEnabled("--彩蛋" in sys.argv) + # 此功能从 2.0.0 后不再隐藏 + #BtnDownN.setEnabled("--彩蛋" in sys.argv) BtnReadme.clicked.connect(ChgTips) BtnLog.clicked.connect(ChgLog) BtnZujian.clicked.connect(ChgDep) BtnGongxian.clicked.connect(ChgCon) BtnAbout.clicked.connect(ChgAbout) - BtnDownN.clicked.connect(Egg) + BtnDownN.clicked.connect(Download) + BtnOpenN.clicked.connect(Open) ChgTips() @@ -1665,9 +1779,10 @@ def showhelp(): helpLayout.addWidget(BtnLog, 1, 0, 1, 1) helpLayout.addWidget(BtnZujian, 2, 0, 1, 1) helpLayout.addWidget(BtnGongxian, 3, 0, 1, 1) - helpLayout.addWidget(BtnAbout, 5, 0, 1, 1) helpLayout.addWidget(BtnDownN, 4, 0, 1, 1) - helpLayout.addWidget(HelpStr, 0, 1, 7, 1) + helpLayout.addWidget(BtnOpenN, 5, 0, 1, 1) + helpLayout.addWidget(BtnAbout, 6, 0, 1, 1) + helpLayout.addWidget(HelpStr, 0, 1, 8, 1) helpWidget.setLayout(helpLayout) helpWindow.setCentralWidget(helpWidget) @@ -1684,7 +1799,7 @@ if not os.path.exists("/usr/bin/uengine"): # Deepin/UOS 用户 if "deepin" in SystemVersion.lower() or "uos" in SystemVersion.lower(): if QtWidgets.QMessageBox.question(None, "提示", "您的电脑没有安装 UEngine,是否安装 UEngine 以便更好的使用\n安装完后重新启动该程序即可") == QtWidgets.QMessageBox.Yes: - os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"pkexec apt install uengine -y\"") + OpenTerminal(f"'pkexec apt install uengine -y") sys.exit(0) # 非 Deepin/UOS 用户 # 因为安装器出现问题,所以废弃 @@ -1693,7 +1808,8 @@ if not os.path.exists("/usr/bin/uengine"): #sys.exit(0) #if QtWidgets.QMessageBox.question(None, "提示", "您的电脑没有安装 UEngine,是否安装 UEngine 以便更好的使用\n这里将会使用 shenmo 提供的脚本进行安装\n安装完后重新启动该程序即可\n提示:无法保证此安装脚本安装的 UEngine 可以使用") == QtWidgets.QMessageBox.Yes: if QtWidgets.QMessageBox.question(None, "提示", "您的电脑没有安装 UEngine,是否安装 UEngine 以便更好的使用\n这里将会安装移植版本(之前由 Shenmo 编写)\n安装完后重新启动该程序即可\n提示:需要在 Ubuntu 22.04 及以上版本才能正常安装") == QtWidgets.QMessageBox.Yes: - os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"bash '{programPath}/uengine-installer'\"") + #os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"bash '{programPath}/uengine-installer'\"") + OpenTerminal(f"bash '{programPath}/uengine-installer'") sys.exit(0) ########################### @@ -1833,26 +1949,35 @@ uengineDoNotUseAdb.triggered.connect(UengineDoNotUseAdb) uengineAllowOrDisallowUpdateAndroidApp = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][13]) uengineSetHttpProxy = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][15]) -uengineOpenDebBuilder = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][1]) -uengineKeyboardToMouse = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][7]) -uengineCheckCpu = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][8]) -uengineUbuntuInstall = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][12]) +uengineOpenDebBuilder = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][1]) +uengineKeyboardToMouse = QtWidgets.QAction(QtGui.QIcon.fromTheme("keyboard"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][7]) +uengineCheckCpu = QtWidgets.QAction(QtGui.QIcon.fromTheme("cpu"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][8]) +#uengineUbuntuInstall = QtWidgets.QAction(QtGui.QIcon.fromTheme("ubuntu-logo-icon"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][12]) uengineDeleteUengineCheck = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][9]) uengineReinstall = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][10]) -uengineUbuntuInstall = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][14]) +uengineUbuntuInstall = QtWidgets.QAction(QtGui.QIcon.fromTheme("ubuntu-logo-icon"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][14]) +uengineUbuntuInstallRoot = QtWidgets.QAction(QtGui.QIcon.fromTheme("ubuntu-logo-icon"), "在 Ubuntu 上安装 UEngine(SuperSU 镜像)") uengineWindowSizeSetting = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][16]) -uengine.addAction(uengineAllowOrDisallowUpdateAndroidApp) -uengine.addAction(uengineSetHttpProxy) uengine.addAction(uengineOpenDebBuilder) uengine.addAction(uengineKeyboardToMouse) uengine.addAction(uengineCheckCpu) +uengine.addSeparator() uengine.addAction(uengineUbuntuInstall) +uengine.addAction(uengineUbuntuInstallRoot) +uengine.addSeparator() uengine.addAction(uengineWindowSizeSetting) -uengineService = uengine.addMenu(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Name"]) -uengineInternet = uengine.addMenu(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Name"]) +uengine.addSeparator() +uengine.addAction(uengineAllowOrDisallowUpdateAndroidApp) +uengine.addAction(uengineSetHttpProxy) +uengine.addSeparator() +uengineService = uengine.addMenu(QtGui.QIcon.fromTheme("services"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Name"]) +uengineInternet = uengine.addMenu(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Name"]) +uengine.addSeparator() uengineIcon = uengine.addMenu(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][4]["Name"]) +uengine.addSeparator() uengine.addMenu(uengineUseAdbm) -uengineData = uengine.addMenu(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Name"]) +uengineData = uengine.addMenu(QtGui.QIcon.fromTheme("fileopen"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Name"]) +uengine.addSeparator() uengine.addAction(uengineDeleteUengineCheck) uengine.addAction(uengineReinstall) uengineRoot = uengine.addMenu(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][11]["Name"]) @@ -1864,13 +1989,14 @@ uengineOpenDebBuilder.triggered.connect(OpenUengineDebBuilder) uengineKeyboardToMouse.triggered.connect(KeyboardToMouse) uengineCheckCpu.triggered.connect(UengineCheckCpu) uengineUbuntuInstall.triggered.connect(UengineUbuntuInstall) +uengineUbuntuInstallRoot.triggered.connect(UengineUbuntuInstallRoot) uengineDeleteUengineCheck.triggered.connect(DelUengineCheck) uengineReinstall.triggered.connect(ReinstallUengine) uengineWindowSizeSetting.triggered.connect(UengineWindowSizeSetting.ShowWindow) -uengineStart = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][0]) -uengineStop = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][1]) -uengineRestart = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][2]) +uengineStart = QtWidgets.QAction(QtGui.QIcon.fromTheme("services"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][0]) +uengineStop = QtWidgets.QAction(QtGui.QIcon.fromTheme("services"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][1]) +uengineRestart = QtWidgets.QAction(QtGui.QIcon.fromTheme("services"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][2]) uengineService.addAction(uengineStart) uengineService.addAction(uengineStop) uengineService.addAction(uengineRestart) @@ -1879,14 +2005,14 @@ uengineStart.triggered.connect(StartUengine) uengineStop.triggered.connect(StopUengine) uengineRestart.triggered.connect(UengineRestart) -uengineBridgeStart = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][0]) -uengineBridgeStop = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][1]) -uengineBridgeRestart = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][2]) -uengineBridgeReload = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][3]) -uengineBridgeForceReload = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][4]) +uengineBridgeStart = QtWidgets.QAction(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][0]) +uengineBridgeStop = QtWidgets.QAction(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][1]) +uengineBridgeRestart = QtWidgets.QAction(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][2]) +uengineBridgeReload = QtWidgets.QAction(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][3]) +uengineBridgeForceReload = QtWidgets.QAction(QtGui.QIcon.fromTheme("internet"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][3]["Menu"][4]) uengineInternet.addAction(uengineBridgeStart) uengineInternet.addAction(uengineBridgeStop) -uengineInternet.addAction(uengineReinstall) +#uengineInternet.addAction(uengineReinstall) uengineInternet.addAction(uengineBridgeReload) uengineInternet.addAction(uengineBridgeForceReload) # 绑定信号 @@ -1913,9 +2039,9 @@ uengineAddNewUengineDesktopLink.triggered.connect(AddNewUengineDesktopLink.ShowW uengineCleanAllUengineDesktopLink.triggered.connect(CleanAllUengineDesktopLink) #uengineData -uengineOpenRootData = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][0]) -uengineOpenUserData = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][1]) -uengineBackClean = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][2]) +uengineOpenRootData = QtWidgets.QAction(QtGui.QIcon.fromTheme("fileopen"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][0]) +uengineOpenUserData = QtWidgets.QAction(QtGui.QIcon.fromTheme("fileopen"), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][1]) +uengineBackClean = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(40), langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][6]["Menu"][2]) uengineData.addAction(uengineOpenRootData) uengineData.addAction(uengineOpenUserData) uengineData.addSeparator() @@ -1946,8 +2072,9 @@ helpUengineRunnerBugUpload = QtWidgets.QAction(langFile[lang]["Main"]["MainWindo helpShowHelp = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][4]) helpRunnerUpdate = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][3]) helpFen = QtWidgets.QAction("程序评分") -helpAbout = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][1]) -helpAboutQt = QtWidgets.QAction(langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][5]) +helpWebInformation = QtWidgets.QAction("程序公告") +helpAbout = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][1]) +helpAboutQt = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][5]) help.addAction(helpOpenProgramUrl) help.addAction(uengineRunnerSearch) help.addAction(makerWebsize) @@ -1958,6 +2085,7 @@ help.addSeparator() help.addAction(helpShowHelp) help.addAction(helpRunnerUpdate) help.addAction(helpFen) +help.addAction(helpWebInformation) help.addSeparator() help.addAction(helpAbout) help.addAction(helpAboutQt) @@ -1975,6 +2103,7 @@ helpUengineRunnerBugUpload.triggered.connect(UengineRunnerBugUpload) helpShowHelp.triggered.connect(ShowHelp) helpRunnerUpdate.triggered.connect(UpdateWindow.ShowWindow) helpFen.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/ProgramFen.py'"]).start()) +helpWebInformation.triggered.connect(GetNewInformation) helpAbout.triggered.connect(showhelp) helpAboutQt.triggered.connect(lambda: QtWidgets.QMessageBox.aboutQt(widget)) # 设置窗口 @@ -1985,4 +2114,12 @@ window.setWindowTitle(title) window.show() window.setWindowIcon(QtGui.QIcon(iconPath)) window.setFixedSize(window.frameSize().width(), window.frameSize().height()) +# 癸卯年正月初一彩蛋(只显示一次,错过就没了) +# (2023年1月22日) +if datetime.datetime.now().year == 2023 and datetime.datetime.now().month == 1 and datetime.datetime.now().day == 22 and not os.path.exists(f"{get_home()}/.config/uengine-runner/2023-sf.lock"): + os.system(f"touch '{get_home()}/.config/uengine-runner/2023-sf.lock'") + QtWidgets.QMessageBox.information(window, "新年祝福", "今天是癸卯年正月初一,这里代表 RacoonGX 团队祝您在新的一年里万事顺意、幸福美满、官运亨通、美梦连连、吉祥如意、万事顺利、荣华富贵、一帆风顺、金玉满堂、五福临门、龙凤呈祥、龙门精神、百业兴旺、六畜兴旺、五谷丰登、喜上眉梢!") +if version == "2.0.0": + title += " 新春版" + window.setWindowTitle(title) sys.exit(app.exec_()) diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-applist-launch.sh b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-applist-launch.sh index 20255aa..18a10f8 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-applist-launch.sh +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-applist-launch.sh @@ -20,10 +20,10 @@ else else # 因为安装器出现问题,所以废弃 zenity --error --text="请安装 UEngine 后继续" --no-wrap - #echo "非 Deepin/UOS 系统,使用 shenmo 提供的脚本安装\n暂未保证此安装脚本一定安装成功" - #zenity --question --text="您还未安装 UEngine,是否现在安装?\n将会使用 shenmo 提供的脚本进行安装\n暂未保证此安装脚本一定安装成功" --no-wrap - #if [[ $? = 0 ]]; then - # deepin-terminal -C "bash /opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer" - #fi + echo "非 Deepin/UOS 系统,使用 shenmo 提供的脚本安装\n暂未保证此安装脚本一定安装成功" + zenity --question --text="您还未安装 UEngine,是否现在安装?" --no-wrap + if [[ $? = 0 ]]; then + deepin-terminal -C "bash /opt/apps/com.gitee.uengine.runner.spark/files/uengine-installer" + fi fi fi diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug index a975ab9..a6bec0e 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug @@ -10,7 +10,12 @@ import updatekiller import urllib.parse as parse import PyQt5.QtGui as QtGui import PyQt5.QtWidgets as QtWidgets - +print("""过零丁洋 +辛苦遭逢起一经,干戈寥落四周星。山河破碎风飘絮,身世浮沉雨打萍。 +惶恐滩头说惶恐,零丁洋里叹零丁。人生自古谁无死?留取丹心照汗青。""") +print("") +print("译文:回想我早年由科举入仕历尽辛苦,如今战火消歇已熬过了四个年头。国家危在旦夕恰如狂风中的柳絮,个人又哪堪言说似骤雨里的浮萍。惶恐滩的惨败让我至今依然惶恐,零丁洋身陷元虏可叹我孤苦零丁。人生自古以来有谁能够长生不死?我要留一片爱国的丹心映照史册。") +print("================================") # 读取文本文档 def readtxt(path: "路径")->"读取文本文档": f = open(path, "r") # 设置文件对象 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb index e0eaf6b..e407923 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb @@ -8,6 +8,16 @@ import sys import traceback import updatekiller import PyQt5.QtWidgets as QtWidgets +print("""白雪歌送武判官归京 +北风卷地白草折,胡天八月即飞雪。忽如一夜春风来,千树万树梨花开。 +散入珠帘湿罗幕,狐裘不暖锦衾薄。将军角弓不得控,都护铁衣冷难着。 +瀚海阑干百丈冰,愁云惨淡万里凝。中军置酒饮归客,胡琴琵琶与羌笛。 +纷纷暮雪下辕门,风掣红旗冻不翻。轮台东门送君去,去时雪满天山路。 +山回路转不见君,雪上空留马行处。""") +print("") +print("北风席卷大地把白草吹折,胡地天气八月就纷扬落雪。忽然间宛如一夜春风吹来,好像是千树万树梨花盛开。雪花散入珠帘打湿了罗幕,狐裘穿不暖锦被也嫌单薄。将军都护手冻得拉不开弓,铁甲冰冷得让人难以穿着。沙漠结冰百丈纵横有裂纹,万里长空凝聚着惨淡愁云。主帅帐中摆酒为归客饯行,胡琴琵琶羌笛合奏来助兴。傍晚辕门前大雪落个不停,红旗冻僵了风也无法牵引。轮台东门外欢送你回京去,你去时大雪盖满了天山路。山路迂回曲折已看不见你,雪上只留下一行马蹄印迹。") +print("================================") + ######################## # ######################## diff --git a/uengine-apk-builder b/uengine-apk-builder index 342ca2b..a543fca 100755 --- a/uengine-apk-builder +++ b/uengine-apk-builder @@ -28,7 +28,7 @@ print("""渔家傲·秋思 塞下秋来风景异,衡阳雁去无留意。四面边声连角起。千嶂里,长烟落日孤城闭。 浊酒一杯家万里,燕然未勒归无计。羌管悠悠霜满地。人不寐,将军白发征夫泪。""") print("") -print("""眼看秋天到了,西北边塞的风光和江南风光自然大不相同。头顶的大雁又飞回南方衡阳去了,一点也没有停留意思。此情此景,不禁又勾起戍边人思乡的情绪。黄昏时分,军中号角催吹,周围的边声也随之而起。层峦叠嶂里,暮霭沉沉,山衔落日,孤零零的城门紧闭。 +print("""译文:眼看秋天到了,西北边塞的风光和江南风光自然大不相同。头顶的大雁又飞回南方衡阳去了,一点也没有停留意思。此情此景,不禁又勾起戍边人思乡的情绪。黄昏时分,军中号角催吹,周围的边声也随之而起。层峦叠嶂里,暮霭沉沉,山衔落日,孤零零的城门紧闭。 饮一杯浊酒,我不由得想起万里之外的亲人。可是,眼下外患未平,功不成名不就,又怎能半途而废。远方传来羌笛的悠悠之声,天气寒冷,军营里早已结满寒霜。夜深了,我还不能安睡,为操持军计,我的须发都变白了。戍边人思念亲人,也久久难以成眠,多少次梦里流下眼泪。""") print("================================")