This commit is contained in:
恍兮惚兮 2024-09-04 11:21:26 +08:00
parent 3d588bdb4c
commit c5a94b4674
5 changed files with 34 additions and 28 deletions

View File

@ -82,6 +82,7 @@ class MAINUI:
self.showocrimage = None
self.showocrimage_cached = None
self.autoswitchgameuid = True
self.istriggertoupdate = False
def maybesetimage(self, pair):
if self.showocrimage:
@ -974,9 +975,13 @@ class MAINUI:
trayMenu.addAction(quitAction)
self.tray.setContextMenu(trayMenu)
self.tray.activated.connect(self.leftclicktray)
self.tray.messageClicked.connect(winsharedutils.dispatchcloseevent)
self.tray.messageClicked.connect(self.triggertoupdate)
self.tray.show()
def triggertoupdate(self):
self.istriggertoupdate = True
winsharedutils.dispatchcloseevent()
def leftclicktray(self, reason):
if reason == QSystemTrayIcon.ActivationReason.Trigger:
self.translation_ui.showhideui()

View File

@ -16,7 +16,6 @@ from gui.setting_about import (
setTab_aboutlazy,
setTab_update,
versionlabelmaybesettext,
updateprogress,
versioncheckthread,
)
from gui.dynalang import LListWidgetItem, LListWidget
@ -67,7 +66,6 @@ class TabWidget(QWidget):
class Setting(closeashidewindow):
voicelistsignal = pyqtSignal(object)
versiontextsignal = pyqtSignal(str)
progresssignal = pyqtSignal(str, int)
progresssignal2 = pyqtSignal(str, int)
progresssignal3 = pyqtSignal(int)
showandsolvesig = pyqtSignal(str, str)
@ -81,7 +79,6 @@ class Setting(closeashidewindow):
self.versiontextsignal.connect(
functools.partial(versionlabelmaybesettext, self)
)
self.progresssignal.connect(functools.partial(updateprogress, self))
self.isfirst = True
versioncheckthread(self)
registrhotkeys(self)

View File

@ -76,7 +76,7 @@ def doupdate():
gobject.getcachedir("Updater.exe"),
)
subprocess.Popen(
rf".\cache\Updater.exe update .\cache\update\LunaTranslator{bit} "
rf".\cache\Updater.exe update {int(gobject.baseobject.istriggertoupdate)} .\cache\update\LunaTranslator{bit} "
+ dynamiclink("{main_server}")
)
@ -129,8 +129,9 @@ def updatemethod(urls, self):
prg = int(10000 * file_size / size)
prg100 = prg / 100
sz = int(1000 * (int(size / 1024) / 1024)) / 1000
self.progresssignal.emit(
"总大小{} MB 进度 {:0.2f}% ".format(sz, prg100), prg
self.downloadprogress_cache = (
"总大小{} MB 进度 {:0.2f}% ".format(sz, prg100),
prg,
)
if check_interrupt():
@ -140,7 +141,7 @@ def updatemethod(urls, self):
def uncompress(self, savep):
self.progresssignal.emit(_TR("正在解压"), 10000)
self.downloadprogress_cache = (_TR("正在解压"), 10000)
shutil.rmtree(gobject.getcachedir("update/LunaTranslator/"))
with zipfile.ZipFile(savep) as zipf:
zipf.extractall(gobject.getcachedir("update"))
@ -152,7 +153,7 @@ def versioncheckthread(self):
while True:
x = versionchecktask.get()
gobject.baseobject.update_avalable = False
self.progresssignal.emit("", 0)
self.downloadprogress_cache = ("", 0)
if not x:
continue
self.versiontextsignal.emit("获取中") # ,'',url,url))
@ -171,28 +172,20 @@ def versioncheckthread(self):
)
if not (need and globalconfig["autoupdate"]):
continue
self.progresssignal.emit("……", 0)
self.downloadprogress_cache = ("……", 0)
savep = updatemethod(_version[1:], self)
if not savep:
self.progresssignal.emit(_TR("自动更新失败,请手动更新"), 0)
self.downloadprogress_cache = (_TR("自动更新失败,请手动更新"), 0)
continue
uncompress(self, savep)
gobject.baseobject.update_avalable = True
self.progresssignal.emit(_TR("准备完毕,等待更新"), 10000)
self.downloadprogress_cache = (_TR("准备完毕,等待更新"), 10000)
gobject.baseobject.showtraymessage(
sversion, _TR("准备完毕,等待更新") + "\n" + _TR("点击消息后退出并开始更新")
)
def updateprogress(self, text, val):
try:
self.downloadprogress.setValue(val)
self.downloadprogress.setFormat(text)
except:
self.downloadprogress_cache = val, text
def createdownloadprogress(self):
self.downloadprogress = QProgressBar()
@ -202,12 +195,18 @@ def createdownloadprogress(self):
self.downloadprogress.setAlignment(
Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter
)
def __cb(self):
try:
val, text = self.downloadprogress_cache
text, val = self.downloadprogress_cache
except:
return
self.downloadprogress.setValue(val)
self.downloadprogress.setFormat(text)
except:
pass
self.downloadprogresstimer = QTimer(self.downloadprogress)
self.downloadprogresstimer.timeout.connect(functools.partial(__cb, self))
self.downloadprogresstimer.start(100)
return self.downloadprogress

View File

@ -29,7 +29,7 @@ include(generate_product_version)
set(VERSION_MAJOR 5)
set(VERSION_MINOR 33)
set(VERSION_PATCH 7)
set(VERSION_PATCH 8)
add_library(pch pch.cpp)
target_precompile_headers(pch PUBLIC pch.h)

View File

@ -23,15 +23,15 @@ int updatewmain(int argc, wchar_t *argv[])
*(wcsrchr(path, '\\')) = 0;
SetCurrentDirectory(path);
int needreload = std::stoi(argv[1]);
try
{
std::filesystem::copy(argv[1], L".\\", std::filesystem::copy_options::recursive | std::filesystem::copy_options::overwrite_existing);
MessageBoxW(GetForegroundWindow(), L"Update success", L"Success", 0);
std::filesystem::copy(argv[2], L".\\", std::filesystem::copy_options::recursive | std::filesystem::copy_options::overwrite_existing);
}
catch (std::exception &e)
{
MessageBoxA(GetForegroundWindow(), (std::string("Update failed!\r\n") + e.what()).c_str(), "Error", 0);
ShellExecute(0, L"open", (std::wstring(argv[2]) + L"/Github/LunaTranslator/releases").c_str(), NULL, NULL, SW_SHOWNORMAL);
ShellExecute(0, L"open", (std::wstring(argv[3]) + L"/Github/LunaTranslator/releases").c_str(), NULL, NULL, SW_SHOWNORMAL);
return 0;
}
try
@ -42,5 +42,10 @@ int updatewmain(int argc, wchar_t *argv[])
catch (std::exception &e)
{
}
MessageBoxW(GetForegroundWindow(), L"Update success", L"Success", 0);
if (needreload)
{
ShellExecute(0, L"open", L".\\LunaTranslator.exe", NULL, NULL, SW_SHOWNORMAL);
}
return 0;
}