新增提示新版本/公告功能

This commit is contained in:
gfdgd xi 2024-01-14 10:22:41 +08:00
parent ab7a5c18c5
commit 800c523935
2 changed files with 72 additions and 13 deletions

View File

@ -758,9 +758,8 @@ make install -j4
``` ```
## 请作者吃点零食 ## 请作者喝杯茶
如果你觉得 Wine 运行器对你有帮助,可以请作者吃点零食 如果您觉得 Wine 运行器对你有帮助,可以请作者喝杯茶
(本来想说喝一杯咖啡的,但我不喝啊)
<img src="Icon/QR/Wechat.png" width="200" /> <img src="Icon/QR/Wechat.png" width="200" />
<img src="Icon/QR/Alipay.jpg" width="200" /> <img src="Icon/QR/Alipay.jpg" width="200" />
<img src="Icon/QR/QQ.png" width="200" > <img src="Icon/QR/QQ.png" width="200" >

View File

@ -353,6 +353,8 @@ class Runexebutton_threading(QtCore.QThread):
res = subprocess.Popen([runCommand], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) res = subprocess.Popen([runCommand], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
# 实时读取程序返回 # 实时读取程序返回
# #
print(runCommand)
lastRunCommand = runCommand
if not setting["TerminalOpen"]: if not setting["TerminalOpen"]:
while res.poll() is None: while res.poll() is None:
try: try:
@ -361,8 +363,8 @@ class Runexebutton_threading(QtCore.QThread):
text = "" text = ""
self.signal.emit(text) self.signal.emit(text)
print(text, end="") print(text, end="")
lastRunCommand = runCommand
print(runCommand)
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath: if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
findExeHistory.append(wineBottonPath) # 将记录写进数组 findExeHistory.append(wineBottonPath) # 将记录写进数组
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入 write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
@ -1227,6 +1229,7 @@ class UpdateWindow():
versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:未知\n更新内容:") versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:未知\n更新内容:")
updateText = QtWidgets.QTextBrowser() updateText = QtWidgets.QTextBrowser()
updateText.anchorClicked.connect(OpenUrl) updateText.anchorClicked.connect(OpenUrl)
updateText.setOpenLinks(False)
updateText.setOpenExternalLinks(False) updateText.setOpenExternalLinks(False)
ok = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "更新(更新时会自动关闭 Wine 运行器)")) ok = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "更新(更新时会自动关闭 Wine 运行器)"))
ok.clicked.connect(UpdateWindow.Update) ok.clicked.connect(UpdateWindow.Update)
@ -2065,7 +2068,10 @@ def SaveLog():
def GetNewInformation(): def GetNewInformation():
try: try:
text = requests.get("http://wine-runner.gfdgdxi.top/info/").text # 获取是否为最新版本的公告
informationID = requests.get("http://update.gfdgdxi.top/wine-runner/info/id.json").json()["Number"]
text = requests.get("http://update.gfdgdxi.top/wine-runner/info/").text
write_txt(f"{get_home()}/.config/deepin-wine-runner/information/{informationID}", informationID)
except: except:
traceback.print_exc() traceback.print_exc()
text = f"""<p>无法连接到服务器</p> text = f"""<p>无法连接到服务器</p>
@ -2294,6 +2300,8 @@ if not os.path.exists(get_home() + "/.config/"): # 如果没有配置文件夹
os.mkdir(get_home() + "/.config/") # 创建配置文件夹 os.mkdir(get_home() + "/.config/") # 创建配置文件夹
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹 if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹 os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
if not os.path.exists(f"{get_home()}/.config/deepin-wine-runner/information"): # 如果没有配置文件夹
os.mkdir(f"{get_home()}/.config/deepin-wine-runner/information") # 创建配置文件夹
if not os.path.exists(get_home() + "/.config/deepin-wine-runner/ShellHistory.json"): # 如果没有配置文件 if not os.path.exists(get_home() + "/.config/deepin-wine-runner/ShellHistory.json"): # 如果没有配置文件
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", json.dumps({})) # 创建配置文件 write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", json.dumps({})) # 创建配置文件
if not os.path.exists(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json"): # 如果没有配置文件 if not os.path.exists(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json"): # 如果没有配置文件
@ -2657,6 +2665,49 @@ Deepin 论坛:<a href="https://bbs.deepin.org">https://bbs.deepin.org</a>
gfdgd xi<a href="https://gfdgd-xi.github.io">https://gfdgd-xi.github.io</a> gfdgd xi<a href="https://gfdgd-xi.github.io">https://gfdgd-xi.github.io</a>
<hr> <hr>
<h1>©2020~{time.strftime("%Y")} By gfdgd xi</h1>''' <h1>©2020~{time.strftime("%Y")} By gfdgd xi</h1>'''
defaultCommandText = """<pre>在此可以看到wine安装应用时的终端输出内容
=============================================================
如果解决了你的问题请不要吝啬你的star哟
地址
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner'>https://gitee.com/gfdgd-xi/deep-wine-runner</a>
<a href='https://github.com/gfdgd-xi/deep-wine-runner'>https://github.com/gfdgd-xi/deep-wine-runner</a>
<a href='https://sourceforge.net/projects/deep-wine-runner'>https://sourceforge.net/projects/deep-wine-runner</a>"""
# 创建线程用于获取是否有更新
class GetUpdateToShow(QtCore.QThread):
signal = QtCore.pyqtSignal(str)
def __init__(self):
super().__init__()
def run(self):
global defaultCommandText
# 获取更新
url = "http://update.gfdgdxi.top/update.json"
try:
data = json.loads(requests.get(url).text)
if data["Version"] != version:
# 版本号读取(防止出现高版本号提示要“升级”到低版本号的问题)
localVersionList = version.split(".")
webVersionList = data['Version'].split(".")
for i in range(len(localVersionList)):
local = int(localVersionList[i])
web = int(webVersionList[i])
if web < local:
break
if web > local:
defaultCommandText += f"""\n=============================================================
Wine运行器 {data['Version']} 发布了<a href='http://update.gfdgdxi.top/update-wine-runner'>点此立即更新</a>"""
except:
traceback.print_exc()
# 获取应用公告
try:
informationID = requests.get("http://update.gfdgdxi.top/wine-runner/info/id.json").json()["Number"]
if not os.path.exists(f"{get_home()}/.config/deepin-wine-runner/information/{informationID}"):
defaultCommandText += f"""\n=============================================================
程序有新的公告<a href='http://update.gfdgdxi.top/information-wine-runner'>点此立即查看</a>"""
except:
traceback.print_exc()
if lastRunCommand == "暂未运行命令":
self.signal.emit(defaultCommandText + "</pre>")
offLineInformation = "" offLineInformation = ""
if os.path.exists(f"{programPath}/off-line.lock"): if os.path.exists(f"{programPath}/off-line.lock"):
title = "Wine 运行器 {}(离线模式)".format(version) title = "Wine 运行器 {}(离线模式)".format(version)
@ -2819,17 +2870,25 @@ button_r_6.setSizePolicy(size)
wineConfig.setSizePolicy(size) wineConfig.setSizePolicy(size)
returnText = QtWidgets.QTextBrowser() returnText = QtWidgets.QTextBrowser()
getUpdate = GetUpdateToShow()
getUpdate.signal.connect(returnText.setHtml)
getUpdate.start()
def ReturnTextOpenUrl(url):
print(url)
if url.url() == "http://update.gfdgdxi.top/update-wine-runner":
UpdateWindow.ShowWindow()
elif url.url() == "http://update.gfdgdxi.top/information-wine-runner":
GetNewInformation()
else:
webbrowser.open_new_tab(url.url())
returnText.anchorClicked.connect(ReturnTextOpenUrl)
returnText.setOpenExternalLinks(False)
returnText.setOpenLinks(False)
returnText.setStyleSheet(""" returnText.setStyleSheet("""
background-color: black; background-color: black;
color: white; color: white;
""") """)
returnText.setText(QtCore.QCoreApplication.translate("U", """在此可以看到wine安装应用时的终端输出内容 returnText.setHtml(QtCore.QCoreApplication.translate("U", defaultCommandText) + "</pre>")
=============================================
如果解决了你的问题请不要吝啬你的star哟
地址
https://gitee.com/gfdgd-xi/deep-wine-runner
https://github.com/gfdgd-xi/deep-wine-runner
https://sourceforge.net/projects/deep-wine-runner"""))
mainLayout.setRowStretch(0, 2) mainLayout.setRowStretch(0, 2)
mainLayout.setRowStretch(1, 1) mainLayout.setRowStretch(1, 1)
mainLayout.setColumnStretch(0, 2) mainLayout.setColumnStretch(0, 2)
@ -3420,6 +3479,7 @@ if o1.currentText() == "":
canUseWine.append("没有识别到任何Wine请在菜单栏“程序”安装Wine或安装任意Wine应用") canUseWine.append("没有识别到任何Wine请在菜单栏“程序”安装Wine或安装任意Wine应用")
o1.addItem("没有识别到任何Wine请在菜单栏“程序”安装Wine或安装任意Wine应用") o1.addItem("没有识别到任何Wine请在菜单栏“程序”安装Wine或安装任意Wine应用")
SetFont(setting["FontSize"]) SetFont(setting["FontSize"])
# Mini 模式 # Mini 模式
# MiniMode(True) # MiniMode(True)
sys.exit(app.exec_()) sys.exit(app.exec_())