forked from Public-Mirror/Textractor
reorganize
This commit is contained in:
parent
0160578c2d
commit
83e8c2ecde
@ -4,9 +4,9 @@ find_qt5(Core Widgets)
|
|||||||
|
|
||||||
cmake_policy(SET CMP0037 OLD)
|
cmake_policy(SET CMP0037 OLD)
|
||||||
|
|
||||||
add_library(Remove\ Repetition SHARED removerepeat.cpp extensionimpl.cpp)
|
add_library(Bing\ Translate SHARED bingtranslate/bingtranslate.cpp extensionimpl.cpp)
|
||||||
add_library(Copy\ to\ Clipboard SHARED copyclipboard.cpp extensionimpl.cpp)
|
add_library(Copy\ to\ Clipboard SHARED copyclipboard/copyclipboard.cpp extensionimpl.cpp)
|
||||||
add_library(Bing\ Translate SHARED bingtranslate.cpp extensionimpl.cpp)
|
add_library(Extra\ Newlines SHARED extranewlines/extranewlines.cpp extensionimpl.cpp)
|
||||||
add_library(Extra\ Newlines SHARED extranewlines.cpp extensionimpl.cpp)
|
add_library(Remove\ Repetition SHARED removerepeat/removerepeat.cpp extensionimpl.cpp)
|
||||||
|
|
||||||
target_link_libraries(Bing\ Translate winhttp.lib Qt5::Widgets)
|
target_link_libraries(Bing\ Translate winhttp Qt5::Widgets)
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#include "extension.h"
|
#include "../extension.h"
|
||||||
#include <winhttp.h>
|
#include <winhttp.h>
|
||||||
|
#include <vector>
|
||||||
|
#include <mutex>
|
||||||
|
#include <algorithm>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
@ -81,13 +84,13 @@ std::wstring Translate(std::wstring text, std::wstring& translateFrom, std::wstr
|
|||||||
static HINTERNET internet = NULL;
|
static HINTERNET internet = NULL;
|
||||||
if (!internet) internet = WinHttpOpen(L"Mozilla/5.0 Textractor", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, NULL, NULL, 0);
|
if (!internet) internet = WinHttpOpen(L"Mozilla/5.0 Textractor", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, NULL, NULL, 0);
|
||||||
|
|
||||||
char buffer[10000] = {};
|
char utf8[10000] = {};
|
||||||
WideCharToMultiByte(CP_UTF8, 0, text.c_str(), -1, buffer, 10000, NULL, NULL);
|
WideCharToMultiByte(CP_UTF8, 0, text.c_str(), -1, utf8, 10000, NULL, NULL);
|
||||||
text.clear();
|
text.clear();
|
||||||
for (int i = 0; buffer[i];)
|
for (int i = 0; utf8[i];)
|
||||||
{
|
{
|
||||||
wchar_t utf8char[3] = {};
|
wchar_t utf8char[3] = {};
|
||||||
swprintf_s<3>(utf8char, L"%02X", (int)(unsigned char)buffer[i++]);
|
swprintf_s<3>(utf8char, L"%02X", (unsigned)utf8[i++]);
|
||||||
text += L"%" + std::wstring(utf8char);
|
text += L"%" + std::wstring(utf8char);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,10 +126,22 @@ std::wstring Translate(std::wstring text, std::wstring& translateFrom, std::wstr
|
|||||||
|
|
||||||
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
||||||
{
|
{
|
||||||
if (sentenceInfo["hook address"] == -1 || sentenceInfo["current select"] != 1) return false;
|
if (sentenceInfo["hook address"] == -1) return false;
|
||||||
|
|
||||||
std::wstring translation;
|
{
|
||||||
std::wstring translateFrom;
|
static std::mutex m;
|
||||||
|
static std::vector<DWORD> requestTimes;
|
||||||
|
std::lock_guard l(m);
|
||||||
|
requestTimes.push_back(GetTickCount());
|
||||||
|
requestTimes.erase(std::remove_if(requestTimes.begin(), requestTimes.end(), [&](DWORD requestTime) { return GetTickCount() - requestTime > 60 * 1000; }), requestTimes.end());
|
||||||
|
if (!sentenceInfo["current select"] && requestTimes.size() > 30)
|
||||||
|
{
|
||||||
|
sentence += L"\r\nToo many translation requests: refuse to make more.";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::wstring translation, translateFrom;
|
||||||
Translate(sentence, translateFrom, translateTo);
|
Translate(sentence, translateFrom, translateTo);
|
||||||
translation = Translate(sentence, translateFrom, translateTo);
|
translation = Translate(sentence, translateFrom, translateTo);
|
||||||
for (auto& c : translation) if (c == L'\\') c = 0x200b;
|
for (auto& c : translation) if (c == L'\\') c = 0x200b;
|
@ -1,8 +1,8 @@
|
|||||||
#include "extension.h"
|
#include "../extension.h"
|
||||||
|
|
||||||
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
||||||
{
|
{
|
||||||
if (sentenceInfo["current select"] == 1 && sentenceInfo["hook address"] != -1)
|
if (sentenceInfo["current select"] && sentenceInfo["hook address"] != -1)
|
||||||
{
|
{
|
||||||
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (sentence.size() + 2) * sizeof(wchar_t));
|
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (sentence.size() + 2) * sizeof(wchar_t));
|
||||||
memcpy(GlobalLock(hMem), sentence.c_str(), (sentence.size() + 2) * sizeof(wchar_t));
|
memcpy(GlobalLock(hMem), sentence.c_str(), (sentence.size() + 2) * sizeof(wchar_t));
|
@ -1,4 +1,4 @@
|
|||||||
#include "extension.h"
|
#include "../extension.h"
|
||||||
|
|
||||||
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
#include "extension.h"
|
#include "../extension.h"
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user