This commit is contained in:
恍兮惚兮 2024-09-23 16:29:06 +08:00
parent 1a54be9343
commit 4a596c3c0d
32 changed files with 146 additions and 247 deletions

View File

@ -148,7 +148,7 @@ class MAINUI:
if self.autoswitchgameuid:
gameuid, _ = findgameuidofpath(getpidexe(_pid))
if gameuid:
self.gameuid = gameuid[0]
self.gameuid = gameuid
except:
print_exc()
else:

View File

@ -1,7 +1,7 @@
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget
from qtsymbols import *
import os, functools, uuid
import functools, uuid
from datetime import datetime, timedelta
from traceback import print_exc
import gobject
@ -37,12 +37,9 @@ from gui.inputdialog import (
from gui.specialwidget import ScrollFlow, chartwidget
from gui.usefulwidget import (
TableViewW,
saveposwindow,
getsimpleswitch,
getsimplepatheditor,
getboxlayout,
auto_select_webview,
Prompt_dialog,
clearlayout,
getsimplecombobox,
getspinbox,
@ -62,164 +59,69 @@ from gui.dynalang import (
LLabel,
LDialog,
)
from gui.dialog_savedgame_common import tagitem, TagWidget
from gui.dialog_savedgame_common import tagitem
@Singleton
class browserdialog(saveposwindow):
seturlsignal = pyqtSignal(str)
def startupsettitle(self, gameuid):
if gameuid:
title = savehook_new_data[gameuid]["title"]
else:
title = "LunaTranslator"
self.setWindowTitle(title)
def loadalllinks(self, gameuid):
items = []
if gameuid:
self.setWindowTitle(savehook_new_data[gameuid]["title"])
for link in globalconfig["relationlinks"]:
items.append((link[0], tagitem.TYPE_GLOABL_LIKE, link[1]))
if gameuid:
for link in savehook_new_data[self.gameuid]["relationlinks"]:
items.append((link[0], tagitem.TYPE_GAME_LIKE, link[1]))
if len(items) == 0:
items.append(
(
"Luna",
tagitem.TYPE_GLOABL_LIKE,
static_data["main_server"][gobject.serverindex],
)
)
self.tagswidget.clearTag(False)
self.tagswidget.addTags(items)
def startupnavi(self, gameuid):
for idx in range(2, 100):
if idx == 2:
if gameuid:
if len(savehook_new_data[gameuid]["relationlinks"]):
navitarget = savehook_new_data[gameuid]["relationlinks"][-1][1]
break
elif idx == 3:
if len(globalconfig["relationlinks"]):
navitarget = globalconfig["relationlinks"][-1][1]
break
else:
navitarget = None
break
if navitarget:
self.browser.navigate(navitarget)
self.urlchanged(navitarget)
def urlchanged(self, url):
self.tagswidget.lineEdit.setCurrentText(url)
self.current = url
def likelink(self):
_dia = Prompt_dialog(
self,
"收藏",
"",
[
["名称", ""],
["网址", self.current],
],
)
if _dia.exec():
text = []
for _t in _dia.text:
text.append(_t.text())
if self.gameuid:
savehook_new_data[self.gameuid]["relationlinks"].append(text)
self.tagswidget.addTag(text[0], tagitem.TYPE_GAME_LIKE, text[1])
else:
globalconfig["relationlinks"].append(text)
self.tagswidget.addTag(text[0], tagitem.TYPE_GLOABL_LIKE, text[1])
def tagschanged(self, tags):
__ = []
__2 = []
for _name, _type, _url in tags:
if _type == tagitem.TYPE_GLOABL_LIKE:
__.append([_name, _url])
elif _type == tagitem.TYPE_GAME_LIKE:
__2.append([_name, _url])
globalconfig["relationlinks"] = __
if self.gameuid:
savehook_new_data[self.gameuid]["relationlinks"] = __2
def reinit(self, gameuid=None):
self.gameuid = gameuid
self.loadalllinks(gameuid)
self.startupnavi(gameuid)
self.startupsettitle(gameuid)
class favorites(LDialog):
def __init__(self, parent, gameuid=None) -> None:
super().__init__(parent, poslist=globalconfig["browserwidget"])
super().__init__(parent, Qt.WindowType.WindowCloseButtonHint)
if gameuid:
self.setWindowIcon(getExeIcon(get_launchpath(gameuid), cache=True))
self.browser = auto_select_webview(self)
self.tagswidget = TagWidget(self, exfoucus=True)
self.tagswidget.tagschanged.connect(self.tagschanged)
self.tagswidget.tagclicked.connect(self.urlclicked)
self.tagswidget.linepressedenter.connect(self.browser.navigate)
self.browser.on_load.connect(self.urlchanged)
hlay = QHBoxLayout()
hlay.addWidget(self.tagswidget)
hlay.addWidget(getIconButton(self.likelink, icon="fa.heart"))
hlay.addWidget(
getIconButton(
lambda: self.urlclicked((None, None, self.current)), icon="fa.repeat"
)
self.setWindowTitle("收藏夹")
self.gameuid = gameuid
self.reflist = (
savehook_new_data[self.gameuid]["relationlinks"]
if gameuid
else globalconfig["relationlinks"]
)
_topw = QWidget()
_topw.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
_topw.setLayout(hlay)
layout = QVBoxLayout()
layout.setContentsMargins(*(0 for i in range(4)))
hlay.setContentsMargins(*(0 for i in range(4)))
layout.addWidget(_topw)
layout.addWidget(self.browser)
layout.setSpacing(0)
__w = QWidget()
__w.setLayout(layout)
self.setCentralWidget(__w)
model = LStandardItemModel()
model.setHorizontalHeaderLabels(["名称", "链接"])
formLayout = QVBoxLayout(self)
table = TableViewW(self, copypaste=True, updown=True)
table.setModel(model)
table.horizontalHeader().setSectionResizeMode(
1, QHeaderView.ResizeMode.Interactive
)
table.horizontalHeader().setSectionResizeMode(
0, QHeaderView.ResizeMode.Interactive
)
table.horizontalHeader().setStretchLastSection(True)
for item in self.reflist:
model.appendRow([QStandardItem(item[0]), QStandardItem(item[1])])
self.reinit(gameuid)
table.insertplainrow = lambda row: model.insertRow(
row,
[
QStandardItem(),
QStandardItem(),
],
)
formLayout.addWidget(table)
self.table = table
button = threebuttons(texts=["添加行", "删除行", "上移", "下移", "立即应用"])
button.btn1clicked.connect(functools.partial(table.insertplainrow, 0))
button.btn2clicked.connect(table.removeselectedrows)
button.btn5clicked.connect(self.apply)
button.btn3clicked.connect(functools.partial(table.moverank, -1))
button.btn4clicked.connect(functools.partial(table.moverank, 1))
self.button = button
formLayout.addWidget(button)
self.resize(QSize(600, 400))
self.show()
def urlclicked(self, _):
tag, _, url = _
if url[:4].lower() != "http":
url = os.path.abspath(url)
self.browser.navigate(url)
def apply(self):
self.reflist.clear()
self.table.dedumpmodel(1)
for row in range(self.table.model().rowCount()):
k = self.table.getdata(row, 0)
v = self.table.getdata(row, 1)
self.reflist.append((k, v))
def showmenu(self, p):
tab_index = self.nettab.tabBar().tabAt(p)
if (self.hasvndb and tab_index == 0) or tab_index == self.nettab.count() - 1:
return
menu = QMenu(self)
shanchu = LAction(("删除"))
menu.addAction(shanchu)
action = menu.exec(self.mapToGlobal(p))
if action == shanchu:
self.nettab.setCurrentIndex(0)
self.nettab.removeTab(tab_index)
savehook_new_data[self.gameuid]["relationlinks"].pop(
tab_index - self.hasvndb
)
def closeEvent(self, a0: QCloseEvent) -> None:
self.button.setFocus()
self.apply()
def maybehavebutton(self, gameuid, post):
@ -314,10 +216,8 @@ class dialog_setting_game_internal(QWidget):
icons=("fa.gear",),
),
getIconButton(
lambda: browserdialog(
gobject.baseobject.commonstylebase, gameuid
),
icon="fa.book",
lambda: favorites(gobject.baseobject.commonstylebase, gameuid),
icon="fa.heart",
),
]
),

View File

@ -2,8 +2,8 @@ from qtsymbols import *
import time, functools, threading, os, importlib, shutil, uuid
from traceback import print_exc
import windows, qtawesome, gobject, winsharedutils
from myutils.wrapper import threader, trypass, tryprint
from myutils.config import globalconfig, saveallconfig, static_data
from myutils.wrapper import threader, tryprint
from myutils.config import globalconfig, saveallconfig, static_data, savehook_new_data
from gui.dialog_savedgame import dialog_setting_game
from myutils.subproc import endsubprocs
from myutils.ocrutil import ocr_run, imageCut
@ -26,7 +26,7 @@ from gui.usefulwidget import (
)
from gui.edittext import edittrans
from gui.dialog_savedgame import dialog_savedgame_integrated
from gui.dialog_savedgame_setting import browserdialog, calculate_centered_rect
from gui.dialog_savedgame_setting import favorites, calculate_centered_rect
from gui.dynalang import LDialog
@ -486,6 +486,30 @@ class TranslatorWindow(resizableframeless):
self.refreshtoolicon()
self.setontopthread()
def favoritesmenu(self):
menu = QMenu(gobject.baseobject.commonstylebase)
gameuid = gobject.baseobject.gameuid
maps = {}
if gameuid:
for name, link in savehook_new_data[gameuid]["relationlinks"]:
act = QAction(name)
maps[act] = link
menu.addAction(act)
if (
globalconfig["relationlinks"]
and gameuid
and savehook_new_data[gameuid]["relationlinks"]
):
menu.addSeparator()
for name, link in globalconfig["relationlinks"]:
act = QAction(name)
maps[act] = link
menu.addAction(act)
action = menu.exec(QCursor.pos())
link = maps.get(action)
if link:
gobject.baseobject.openlink(link)
def addbuttons(self):
def simulate_key_ctrl():
windows.SetForegroundWindow(gobject.baseobject.hwnd)
@ -633,10 +657,13 @@ class TranslatorWindow(resizableframeless):
),
),
(
"open_relative_link",
lambda: browserdialog(
"game_ref_favorites",
self.favoritesmenu,
None,
None,
lambda: favorites(
gobject.baseobject.commonstylebase,
trypass(lambda: gobject.baseobject.gameuid)(),
gobject.baseobject.gameuid,
),
),
(

View File

@ -2046,20 +2046,20 @@ class listediterline(QLineEdit):
def openfiledirectory(directory, multi, edit, isdir, filter1="*.*", callback=None):
if isdir:
f = QFileDialog.getExistingDirectory(directory=directory)
res = os.path.normpath(f)
res = QFileDialog.getExistingDirectory(directory=directory)
else:
if multi:
f = QFileDialog.getOpenFileNames(directory=directory, filter=filter1)
res = [os.path.normpath(_) for _ in f[0]]
else:
f = QFileDialog.getOpenFileName(directory=directory, filter=filter1)
res = os.path.normpath(f[0])
res = (QFileDialog.getOpenFileName, QFileDialog.getOpenFileNames)[multi](
directory=directory, filter=filter1
)[0]
if len(res) == 0:
if not res:
return
if isinstance(res, list):
res = [os.path.normpath(_) for _ in res]
else:
res = os.path.normpath(res)
if edit:
edit.setText("|".join(res) if multi else res)
edit.setText("|".join(res) if isinstance(res, list) else res)
if callback:
callback(res)

View File

@ -570,7 +570,6 @@
"simulate_key_ctrl",
"simulate_key_enter",
"copy_once",
"open_relative_link",
"open_game_setting",
"ocr_once",
"ocr_once_follow",
@ -604,10 +603,10 @@
"icon": "fa.file-o",
"align": 0
},
"open_relative_link": {
"game_ref_favorites": {
"use": false,
"tip": "打开关联页面",
"icon": "fa.sitemap",
"tip": "收藏夹",
"icon": "fa.heart",
"align": 0
},
"open_game_setting": {

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "استخدام حقن YAPI",
"窗口缩放": "نافذة التكبير",
"缩放方式": "طريقة التكبير",
"打开关联页面": "فتح صفحة الارتباط",
"API超时(秒)": "API مهلة ( ثانية )",
"去除重复字符": "إزالة الأحرف المكررة",
"游戏内叠加层": "لعبة التراص الداخلي",
@ -825,5 +824,6 @@
"游戏适配": "لعبة مباراة",
"指定翻译器": "تعيين مترجم",
"关于软件": "عن البرمجيات",
"严格的": "صارم"
"严格的": "صارم",
"收藏夹": "المفضلة"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "使用 YAPI 注入",
"窗口缩放": "視窗縮放",
"缩放方式": "縮放方式",
"打开关联页面": "打開關聯頁面",
"API超时(秒)": "API 超時(秒)",
"去除重复字符": "去除重複字元",
"游戏内叠加层": "遊戲內疊加層",
@ -825,5 +824,6 @@
"游戏适配": "遊戲適配",
"指定翻译器": "指定翻譯器",
"关于软件": "關於軟件",
"严格的": "嚴格的"
"严格的": "嚴格的",
"收藏夹": "我的最愛"
}

View File

@ -506,7 +506,6 @@
"使用YAPI注入": "Injekce pomocí YAPI",
"窗口缩放": "Měřítko okna",
"缩放方式": "Metoda škálování",
"打开关联页面": "Otevřít přidruženou stránku",
"API超时(秒)": "Časový limit API (sekundy)",
"去除重复字符": "Odstranit duplicitní znaky",
"游戏内叠加层": "Vrstva překrytí ve hře",
@ -825,5 +824,6 @@
"游戏适配": "Úprava hry",
"指定翻译器": "Upřesnit překladatele",
"关于软件": "O softwaru",
"严格的": "přísná"
"严格的": "přísná",
"收藏夹": "Oblíbené"
}

View File

@ -506,7 +506,6 @@
"使用YAPI注入": "Injizieren mit YAPI",
"窗口缩放": "Fensterskalierung",
"缩放方式": "Skalierungsmethode",
"打开关联页面": "Die zugehörige Seite öffnen",
"API超时(秒)": "API Timeout (Sekunden)",
"去除重复字符": "Doppelte Zeichen entfernen",
"游戏内叠加层": "Overlay-Ebene im Spiel",
@ -825,5 +824,6 @@
"游戏适配": "Anpassung des Spiels",
"指定翻译器": "Übersetzer angeben",
"关于软件": "Über Software",
"严格的": "streng"
"严格的": "streng",
"收藏夹": "Favoriten"
}

View File

@ -497,7 +497,6 @@
"使用YAPI注入": "Use YAPI Injection",
"窗口缩放": "Window Scaling",
"缩放方式": "Scaling Method",
"打开关联页面": "Open Related Page",
"API超时(秒)": "API Timeout (s)",
"去除重复字符": "Remove Duplicate Characters",
"游戏内叠加层": "In-Game Overlay Layer",
@ -825,5 +824,6 @@
"游戏适配": "Game adaptation",
"指定翻译器": "Specify translator",
"关于软件": "About software",
"严格的": "strict"
"严格的": "strict",
"收藏夹": "Favorites"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Inyección con Yapi",
"窗口缩放": "Ampliación de la ventana",
"缩放方式": "Modo de zoom",
"打开关联页面": "Abrir página asociada",
"API超时(秒)": "Horas extras API (segundos)",
"去除重复字符": "Eliminar caracteres duplicados",
"游戏内叠加层": "Capa superpuesta en el juego",
@ -825,5 +824,6 @@
"游戏适配": "Adaptación del juego",
"指定翻译器": "Especificar traductor",
"关于软件": "Sobre el software",
"严格的": "Estricto"
"严格的": "Estricto",
"收藏夹": "Colección"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Injection avec Yapi",
"窗口缩放": "Zoom de la fenêtre",
"缩放方式": "Mode de zoom",
"打开关联页面": "Ouvrir la page associée",
"API超时(秒)": "API timeout (secondes)",
"去除重复字符": "Supprimer les caractères dupliqués",
"游戏内叠加层": "Couches superposées dans le jeu",
@ -825,5 +824,6 @@
"游戏适配": "Adaptation du jeu",
"指定翻译器": "Spécifier le traducteur",
"关于软件": "À propos du logiciel",
"严格的": "Strictement"
"严格的": "Strictement",
"收藏夹": "Favoris"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Uso dell'iniezione di YAPI",
"窗口缩放": "Zoom finestra",
"缩放方式": "Metodo zoom",
"打开关联页面": "Apri la pagina associata",
"API超时(秒)": "Timeout API (secondi)",
"去除重复字符": "Rimuovi caratteri duplicati",
"游戏内叠加层": "Livello di sovrapposizione in gioco",
@ -825,5 +824,6 @@
"游戏适配": "Adattamento del gioco",
"指定翻译器": "Specifica traduttore",
"关于软件": "Informazioni sul software",
"严格的": "severo"
"严格的": "severo",
"收藏夹": "Preferiti"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "YAPI注入を使用する",
"窗口缩放": "ウィンドウのズーム",
"缩放方式": "スケール方法",
"打开关联页面": "関連ページを開く",
"API超时(秒)": "APIタイムアウト",
"去除重复字符": "繰り返し文字を削除",
"游戏内叠加层": "ゲーム内のオーバーレイレイヤ",
@ -825,5 +824,6 @@
"游戏适配": "ゲームアダプタ",
"指定翻译器": "翻訳機の指定",
"关于软件": "ソフトウェアについて",
"严格的": "きびしい"
"严格的": "きびしい",
"收藏夹": "お気に入り"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "YAPI 주입 사용",
"窗口缩放": "창 크기 조절",
"缩放方式": "배율 조정 방법",
"打开关联页面": "연관 페이지 열기",
"API超时(秒)": "API 제한 시간 (초)",
"去除重复字符": "중복 문자 제거",
"游戏内叠加层": "게임 내 중첩층",
@ -825,5 +824,6 @@
"游戏适配": "게임 적합성",
"指定翻译器": "번역기 지정",
"关于软件": "소프트웨어 정보",
"严格的": "엄격했어"
"严格的": "엄격했어",
"收藏夹": "즐겨찾기"
}

View File

@ -506,7 +506,6 @@
"使用YAPI注入": "Injecteren met YAPI",
"窗口缩放": "Vensterschalen",
"缩放方式": "Schaalmethode",
"打开关联页面": "De bijbehorende pagina openen",
"API超时(秒)": "API timeout (seconden)",
"去除重复字符": "Dubbele tekens verwijderen",
"游戏内叠加层": "Overlaylaag in het spel",
@ -825,5 +824,6 @@
"游戏适配": "Game aanpassing",
"指定翻译器": "Vertaler opgeven",
"关于软件": "Over software",
"严格的": "strikt"
"严格的": "strikt",
"收藏夹": "Favorieten"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Zastosowanie wstrzykiwań YAPI",
"窗口缩放": "Powiększenie okna",
"缩放方式": "Metoda powiększania",
"打开关联页面": "Otwórz powiązaną stronę",
"API超时(秒)": "Limit czasu API (sekundy)",
"去除重复字符": "Usuń duplikaty znaków",
"游戏内叠加层": "Warstwa nakładki w grze",
@ -825,5 +824,6 @@
"游戏适配": "Adaptacja gry",
"指定翻译器": "Określ tłumacza",
"关于软件": "O oprogramowaniu",
"严格的": "surowe"
"严格的": "surowe",
"收藏夹": "Ulubione"
}

View File

@ -506,7 +506,6 @@
"使用YAPI注入": "Injectar utilizando YAPI",
"窗口缩放": "Escala da janela",
"缩放方式": "Método de dimensionamento",
"打开关联页面": "Abrir a página associada",
"API超时(秒)": "Tempo limite da API (segundos)",
"去除重复字符": "Remover caracteres duplicados",
"游戏内叠加层": "Camada de sobreposição no jogo",
@ -825,5 +824,6 @@
"游戏适配": "Adaptação do jogo",
"指定翻译器": "Especificar o tradutor",
"关于软件": "Sobre o software",
"严格的": "estrito"
"严格的": "estrito",
"收藏夹": "Favoritos"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Использовать инъекцию YAPI",
"窗口缩放": "Масштаб окна",
"缩放方式": "Режим масштабирования",
"打开关联页面": "Открыть страницу",
"API超时(秒)": "API Время ожидания (секунды)",
"去除重复字符": "Удалить повторяющиеся символы",
"游戏内叠加层": "Слой наложения внутри игры",
@ -825,5 +824,6 @@
"游戏适配": "Игра подходит",
"指定翻译器": "Назначить переводчика",
"关于软件": "О программном обеспечении",
"严格的": "Строго"
"严格的": "Строго",
"收藏夹": "Коллекция"
}

View File

@ -506,7 +506,6 @@
"使用YAPI注入": "Injicera med YAPI",
"窗口缩放": "Fönsterskalning",
"缩放方式": "Skalningsmetod",
"打开关联页面": "Öppna associerad sida",
"API超时(秒)": "Tidsfrist för API (sekunder)",
"去除重复字符": "Ta bort dubbletter",
"游戏内叠加层": "Överläggningslager i spelet",
@ -825,5 +824,6 @@
"游戏适配": "Spelanpassning",
"指定翻译器": "Ange översättare",
"关于软件": "Om programvara",
"严格的": "strikt"
"严格的": "strikt",
"收藏夹": "Favoriter"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "ใช้ YAPI ฉีด",
"窗口缩放": "หน้าต่างซูม",
"缩放方式": "โหมดซูม",
"打开关联页面": "เปิดหน้าพันธมิตร",
"API超时(秒)": "หมดเวลา API (วินาที)",
"去除重复字符": "ลบอักขระที่ซ้ำกัน",
"游戏内叠加层": "ซ้อนทับในเกม",
@ -825,5 +824,6 @@
"游戏适配": "การปรับเกม",
"指定翻译器": "ระบุนักแปล",
"关于软件": "เกี่ยวกับซอฟต์แวร์",
"严格的": "เข้มงวด"
"严格的": "เข้มงวด",
"收藏夹": "รายการโปรด"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "YAPI injeksiyonu kullanıyor",
"窗口缩放": "Pencere Yakınlaştır",
"缩放方式": "Yakınlaştırma yöntemi",
"打开关联页面": "İlişkili sayfanı aç",
"API超时(秒)": "API zaman aşımı (saniyeler)",
"去除重复字符": "Çift karakterleri sil",
"游戏内叠加层": "Oyun üzerindeki katı",
@ -825,5 +824,6 @@
"游戏适配": "Oyun uygulaması",
"指定翻译器": "Çevirmeyi belirtin",
"关于软件": "Yazılım hakkında",
"严格的": "strict"
"严格的": "strict",
"收藏夹": "Favoritler"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Використання інструкції YAPI",
"窗口缩放": "Масштаб вікна",
"缩放方式": "Метод масштабу",
"打开关联页面": "Відкрити пов’ язану сторінку",
"API超时(秒)": "Часовий час API (секунди)",
"去除重复字符": "Вилучити дублікатні символи",
"游戏内叠加层": "Шир перекладу у грі",
@ -825,5 +824,6 @@
"游戏适配": "Адаптація гри",
"指定翻译器": "Вкажіть перекладач",
"关于软件": "Про програмне забезпечення",
"严格的": "strict"
"严格的": "strict",
"收藏夹": "Улюблені"
}

View File

@ -498,7 +498,6 @@
"使用YAPI注入": "Sử dụng YAPI Injection",
"窗口缩放": "Thu phóng cửa sổ",
"缩放方式": "Cách thu phóng",
"打开关联页面": "Mở trang liên kết",
"API超时(秒)": "Thời gian chờ API (giây)",
"去除重复字符": "Loại bỏ các ký tự trùng lặp",
"游戏内叠加层": "Lớp phủ trong trò chơi",
@ -825,5 +824,6 @@
"游戏适配": "Trò chơi phù hợp",
"指定翻译器": "Chỉ định trình dịch",
"关于软件": "Về phần mềm",
"严格的": "Nghiêm ngặt"
"严格的": "Nghiêm ngặt",
"收藏夹": "Yêu thích"
}

View File

@ -507,7 +507,6 @@
"使用YAPI注入": "",
"窗口缩放": "",
"缩放方式": "",
"打开关联页面": "",
"API超时(秒)": "",
"去除重复字符": "",
"游戏内叠加层": "",
@ -825,5 +824,6 @@
"逐行匹配": "",
"指定翻译器": "",
"关于软件": "",
"严格的": ""
"严格的": "",
"收藏夹": ""
}

View File

@ -34,8 +34,7 @@ Some buttons have two icons to indicate two different states. Some buttons only
The actual meaning is to read text once from the clipboard regardless of the current default text input source and pass it on to the subsequent translation/tts/... process
1. #### <i class="fa fa-sitemap"></i> <i class="fa fa-icon fa-rotate-right"></i> Open Related Page
It is equivalent to a small browser, mainly for creating a small favorites folder for each game. It will automatically query metadata for game-related pages such as vndb/bangumi/dlsite/, and you can also manually add some web pages associated with the game (such as game strategy pages) for easy viewing. It saves the trouble of creating and managing bookmarks in a browser.
See [Useful Features](/zh/usefulsmalltools.md?id=Related Page, Convenient Management of Game-Related Web Pages)
Able to create a small favorites folder for each game. It includes automatically query metadata for game-related pages such as vndb/bangumi/dlsite/, and you can also manually add some web pages associated with the game (such as game strategy pages) for easy viewing. It saves the trouble of creating and managing bookmarks in a browser.
1. #### <i class="fa fa-futbol"></i> <i class="fa fa-icon fa-rotate-right"></i> Game Settings
When using HOOK mode to connect to a game, or using OCR mode to bind a game window, you can directly open the current game's settings window through this button
1. #### <i class="fa fa-mouse-pointer"></i> <i class="btnstatus2 fa fa-mouse-pointer"></i> Mouse Through Window

View File

@ -29,11 +29,3 @@ The gallery automatically includes images downloaded from the web based on metad
![img](https://image.lunatranslator.org/zh/usefulsmalltools/3.png)
![img](https://image.lunatranslator.org/zh/usefulsmalltools/8.png)
#### Associated Pages, Convenient Management of Game-related Web Pages
![img](https://image.lunatranslator.org/zh/usefulsmalltools/5.png)
Equivalent to a small browser, mainly allowing you to create a small bookmark for each game. It automatically queries metadata to collect game pages from vndb/bangumi/dlsite/etc., and you can manually add some web pages related to this game (e.g., game strategy web pages, in addition to using memos, you can also use this function to collect them), making it convenient to view. It saves the trouble of creating and managing bookmarks in the browser.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/7.png)

View File

@ -35,8 +35,7 @@
Фактически означает, что независимо от текущего источника текстового ввода, с буфера обмена будет прочитан текст один раз и передан в последующий процесс перевода/TTS/...
1. #### <i class="fa fa-sitemap"></i> <i class="fa fa-icon fa-rotate-right"></i> Открыть связанную страницу
Это эквивалент небольшому браузеру, который в основном предназначен для создания отдельных закладок для каждой игры. Автоматически ищет метаданные для страниц с коллекцией игр на vndb/bangumi/dlsite/ и т.д., также можно вручную добавить некоторые веб-страницы, связанные с этой игрой (например, веб-страницы с гайдами по игре, помимо использования блокнота, можно использовать эту функцию для хранения закладок), что облегчает просмотр. Избавляет от необходимости создавать закладки в браузере и управлять ими.
Подробнее в разделе [Полезные функции](/ru/usefulsmalltools.md?id=Связанные_страницы,_удобное_управлениееб-страницами_связанными_сгрой)
Который в основном предназначен для создания отдельных закладок для каждой игры. Автоматически ищет метаданные для страниц с коллекцией игр на vndb/bangumi/dlsite/ и т.д., также можно вручную добавить некоторые веб-страницы, связанные с этой игрой (например, веб-страницы с гайдами по игре, помимо использования блокнота, можно использовать эту функцию для хранения закладок), что облегчает просмотр. Избавляет от необходимости создавать закладки в браузере и управлять ими.
1. #### <i class="fa fa-futbol"></i> <i class="fa fa-icon fa-rotate-right"></i> Настройки игры
При использовании режима HOOK для подключения к игре или привязке окна игры в режиме OCR, можно использовать эту кнопку для прямого открытия окна настроек текущей игры
1. #### <i class="fa fa-mouse-pointer"></i> <i class="btnstatus2 fa fa-mouse-pointer"></i> Прозрачность окна мыши

View File

@ -29,11 +29,3 @@
![img](https://image.lunatranslator.org/zh/usefulsmalltools/3.png)
![img](https://image.lunatranslator.org/zh/usefulsmalltools/8.png)
#### Связанные страницы, удобная учетная игра-related веб-страниц
![img](https://image.lunatranslator.org/zh/usefulsmalltools/5.png)
Это аналог небольшого браузера, который позволяет для каждой игры создать отдельную коллекцию закладок. Автоматически собирает страницы с метаданными игр vndb/bangumi/dlsite/ и т. д., также можно вручную добавить некоторые веб-страницы, связанные с игрой (например, веб-страницы с гайдами по игре, помимо использования блокнота, можно использовать эту функцию для хранения закладок), что облегчает просмотр. Избавляет от необходимости создавать закладки в браузере и управлять ими.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/7.png)

View File

@ -34,9 +34,8 @@
1. #### <i class="fa fa-file"></i> <i class="fa fa-icon fa-rotate-right"></i> 读取剪贴板
这个的实际意义是,不管当前的默认文本输入源是什么,都从剪贴板读取一次文本,并传给之后的翻译/tts/...流程
1. #### <i class="fa fa-sitemap"></i> <i class="fa fa-icon fa-rotate-right"></i> 打开关联页面
相当于一个小浏览器主要是可以为每个游戏单独创建一个小的收藏夹。会自动查询元数据收藏游戏的vndb/bangumi/dlsite/等页面,也可以手动再添加一些和这个游戏关联的网页进去(例如游戏攻略的网页,除了用备忘录外,也可以用这个功能进行收藏),方便查看。免去了在浏览器里创建收藏夹进行管理的麻烦。
详见[实用功能](/zh/usefulsmalltools.md?id=关联页面,便捷管理游戏相关网页)
1. #### <i class="fa fa-heart"></i> <i class="fa fa-icon fa-rotate-right"></i> 收藏夹
可以为每个游戏单独创建一个小的收藏夹。会包含自动查询元数据收藏游戏的vndb/bangumi/dlsite/等页面,也可以手动再添加一些和这个游戏关联的网页进去(例如游戏攻略的网页,除了用备忘录外,也可以用这个功能进行收藏),方便查看。免去了在浏览器里创建收藏夹进行管理的麻烦。
1. #### <i class="fa fa-futbol"></i> <i class="fa fa-icon fa-rotate-right"></i> 游戏设置
当使用HOOK模式连接到游戏或使用OCR模式绑定游戏窗口后则可以通过这个按钮直接打开当前游戏的设置窗口
1. #### <i class="fa fa-mouse-pointer"></i> <i class="btnstatus2 fa fa-mouse-pointer"></i> 鼠标穿透窗口

View File

@ -29,11 +29,3 @@
![img](https://image.lunatranslator.org/zh/usefulsmalltools/3.png)
![img](https://image.lunatranslator.org/zh/usefulsmalltools/8.png)
#### 关联页面,便捷管理游戏相关网页
![img](https://image.lunatranslator.org/zh/usefulsmalltools/5.png)
相当于一个小浏览器主要是可以为每个游戏单独创建一个小的收藏夹。会自动查询元数据收藏游戏的vndb/bangumi/dlsite/等页面,也可以手动再添加一些和这个游戏关联的网页进去(例如游戏攻略的网页,除了用备忘录外,也可以用这个功能进行收藏),方便查看。免去了在浏览器里创建收藏夹进行管理的麻烦。
![img](https://image.lunatranslator.org/zh/usefulsmalltools/7.png)

View File

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