From 24a199a8c44244b4cfd83d4e17142f58b4ac6eef Mon Sep 17 00:00:00 2001 From: Blu3train Date: Tue, 24 May 2022 23:33:21 +0200 Subject: [PATCH 1/3] translatewrapper: regex lineedit doesn't translate sentence on a full match --- extensions/bingtranslate.cpp | 1 + extensions/deepltranslate.cpp | 1 + extensions/devtoolsdeepltranslate.cpp | 1 + extensions/devtoolspapagotranslate.cpp | 1 + extensions/devtoolssystrantranslate.cpp | 1 + extensions/googletranslate.cpp | 1 + extensions/translatewrapper.cpp | 20 ++++++++++++++++++++ text.cpp | 2 ++ 8 files changed, 28 insertions(+) diff --git a/extensions/bingtranslate.cpp b/extensions/bingtranslate.cpp index 2722b85..0cb09ea 100644 --- a/extensions/bingtranslate.cpp +++ b/extensions/bingtranslate.cpp @@ -194,6 +194,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = false, useRateLimiter = true, rateLimitSelected = false, useCache = true, useFilter = true; int tokenCount = 30, rateLimitTimespan = 60000, maxSentenceSize = 1000; +std::wstring dontTranslateIfMatch = L""; std::pair Translate(const std::wstring& text, TranslationParam tlp) { diff --git a/extensions/deepltranslate.cpp b/extensions/deepltranslate.cpp index 5af759b..d75eede 100644 --- a/extensions/deepltranslate.cpp +++ b/extensions/deepltranslate.cpp @@ -99,6 +99,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = true, useRateLimiter = true, rateLimitSelected = true, useCache = true, useFilter = true; int tokenCount = 10, rateLimitTimespan = 60000, maxSentenceSize = 1000; +std::wstring dontTranslateIfMatch = L""; enum KeyType { CAT, REST }; int keyType = REST; diff --git a/extensions/devtoolsdeepltranslate.cpp b/extensions/devtoolsdeepltranslate.cpp index 16a79ad..dc3425b 100644 --- a/extensions/devtoolsdeepltranslate.cpp +++ b/extensions/devtoolsdeepltranslate.cpp @@ -99,6 +99,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = true, useRateLimiter = true, rateLimitSelected = false, useCache = true, useFilter = true; int tokenCount = 30, rateLimitTimespan = 60000, maxSentenceSize = 2500; +std::wstring dontTranslateIfMatch = L""; BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/extensions/devtoolspapagotranslate.cpp b/extensions/devtoolspapagotranslate.cpp index 0934008..22fca47 100644 --- a/extensions/devtoolspapagotranslate.cpp +++ b/extensions/devtoolspapagotranslate.cpp @@ -48,6 +48,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = true, useRateLimiter = true, rateLimitSelected = false, useCache = true, useFilter = true; int tokenCount = 30, rateLimitTimespan = 60000, maxSentenceSize = 2500; +std::wstring dontTranslateIfMatch = L""; BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/extensions/devtoolssystrantranslate.cpp b/extensions/devtoolssystrantranslate.cpp index ab7184b..5b66144 100644 --- a/extensions/devtoolssystrantranslate.cpp +++ b/extensions/devtoolssystrantranslate.cpp @@ -114,6 +114,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = true, useRateLimiter = true, rateLimitSelected = false, useCache = true, useFilter = true; int tokenCount = 30, rateLimitTimespan = 60000, maxSentenceSize = 2500; +std::wstring dontTranslateIfMatch = L""; BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/extensions/googletranslate.cpp b/extensions/googletranslate.cpp index 26d8d41..af26784 100644 --- a/extensions/googletranslate.cpp +++ b/extensions/googletranslate.cpp @@ -234,6 +234,7 @@ extern const std::unordered_map codes bool translateSelectedOnly = false, useRateLimiter = true, rateLimitSelected = false, useCache = true, useFilter = true; int tokenCount = 30, rateLimitTimespan = 60000, maxSentenceSize = 1000; +std::wstring dontTranslateIfMatch = L""; std::pair Translate(const std::wstring& text, TranslationParam tlp) { diff --git a/extensions/translatewrapper.cpp b/extensions/translatewrapper.cpp index 77f9271..24afe9a 100644 --- a/extensions/translatewrapper.cpp +++ b/extensions/translatewrapper.cpp @@ -17,6 +17,7 @@ extern const char* FILTER_GARBAGE; extern const char* MAX_TRANSLATIONS_IN_TIMESPAN; extern const char* TIMESPAN; extern const char* MAX_SENTENCE_SIZE; +extern const char* DONT_TRANSLATE_IF_MATCH; extern const char* API_KEY; extern const wchar_t* TOO_MANY_TRANS_REQUESTS; @@ -25,6 +26,7 @@ extern const char* GET_API_KEY_FROM; extern const QStringList languagesTo, languagesFrom; extern bool translateSelectedOnly, useRateLimiter, rateLimitSelected, useCache, useFilter; extern int tokenCount, rateLimitTimespan, maxSentenceSize; +extern std::wstring dontTranslateIfMatch; std::pair Translate(const std::wstring& text, TranslationParam tlp); QFormLayout* display; @@ -119,6 +121,14 @@ public: display->addRow(label, spinBox); connect(spinBox, qOverload(&QSpinBox::valueChanged), [label, &value](int newValue) { settings.setValue(label, value = newValue); }); } + + auto matchEdit = new QLineEdit(settings.value(DONT_TRANSLATE_IF_MATCH).toString(), this); + dontTranslateIfMatch = S(matchEdit->text()); + QObject::connect(matchEdit, &QLineEdit::textChanged, [](QString match) { settings.setValue(DONT_TRANSLATE_IF_MATCH, S(dontTranslateIfMatch = S(match))); }); + auto matchLabel = new QLabel(QString("%1 (regex)").arg(DONT_TRANSLATE_IF_MATCH), this); + matchLabel->setOpenExternalLinks(true); + display->addRow(matchLabel, matchEdit); + if (GET_API_KEY_FROM) { auto keyEdit = new QLineEdit(settings.value(API_KEY).toString(), this); @@ -189,6 +199,16 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo) sentence.erase(std::remove_if(sentence.begin(), sentence.end(), [](wchar_t ch) { return ch < ' ' && ch != '\n'; }), sentence.end()); } if (sentence.empty()) return true; + + try + { + if (!dontTranslateIfMatch.empty() && std::regex_match(sentence, std::wregex(dontTranslateIfMatch))) + { + sentence += L"\x200b \n" + sentence; + return true; + } + } catch (...) {} + if (useCache) { auto translationCache = ::translationCache.Acquire(); diff --git a/text.cpp b/text.cpp index b68a1f7..6bb1886 100644 --- a/text.cpp +++ b/text.cpp @@ -157,6 +157,7 @@ const wchar_t* ERROR_START_CHROME = L"failed to start Chrome or to connect to it const char* EXTRA_WINDOW_INFO = u8R"(Right click to change settings Click and drag on window edges to move, or the bottom right corner to resize)"; const char* MAX_SENTENCE_SIZE = u8"Max sentence size"; +const char* DONT_TRANSLATE_IF_MATCH = u8"Don't translate if match full"; const char* TOPMOST = u8"Always on top"; const char* DICTIONARY = u8"Dictionary"; const char* DICTIONARY_INSTRUCTIONS = u8R"(This file is used only for the "Dictionary" feature of the Extra Window extension. @@ -875,6 +876,7 @@ esempio: Textractor -p4466 -p"My Game.exe" sta tentando di inniettare i processi EXTRA_WINDOW_INFO = u8R"(Tasto destro per cambiare le impostazioni Clicca e trascina i bordi della finestra per muoverla, oppure nell'angolo in basso a destra per ridimensionare)"; MAX_SENTENCE_SIZE = u8"Dimensione massima sentenza"; + DONT_TRANSLATE_IF_MATCH = u8"Non traduce se corrisponde completamente"; TOPMOST = u8"Sempre in primo piano"; DICTIONARY = u8"Dizionario"; DICTIONARY_INSTRUCTIONS = u8R"(Questo file รจ utilizzato solo per la funzione "Dizionario" dell'estenzione Extra Window. From 66b3c9a023472a3b7af482b2af7476e423bd4923 Mon Sep 17 00:00:00 2001 From: Blu3train Date: Thu, 2 Jun 2022 15:58:20 +0200 Subject: [PATCH 2/3] translates only the selected thread --- extensions/translatewrapper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/translatewrapper.cpp b/extensions/translatewrapper.cpp index 24afe9a..7843a45 100644 --- a/extensions/translatewrapper.cpp +++ b/extensions/translatewrapper.cpp @@ -163,7 +163,7 @@ private: bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo) { - if (sentenceInfo["text number"] == 0 || sentence.size() > maxSentenceSize) return false; + if (!sentenceInfo["current select"] || sentenceInfo["text number"] == 0 || sentence.size() > maxSentenceSize) return false; static class { From 0e9d3a90858eba38bb9bdf20a6e7c59260e3f715 Mon Sep 17 00:00:00 2001 From: Blu3train Date: Sat, 6 Aug 2022 01:31:26 +0200 Subject: [PATCH 3/3] Last modification removed because I didn't realize that it's managed by the flag --- extensions/translatewrapper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/translatewrapper.cpp b/extensions/translatewrapper.cpp index 7843a45..24afe9a 100644 --- a/extensions/translatewrapper.cpp +++ b/extensions/translatewrapper.cpp @@ -163,7 +163,7 @@ private: bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo) { - if (!sentenceInfo["current select"] || sentenceInfo["text number"] == 0 || sentence.size() > maxSentenceSize) return false; + if (sentenceInfo["text number"] == 0 || sentence.size() > maxSentenceSize) return false; static class {