text encoding fixups

This commit is contained in:
Akash Mozumdar 2019-09-09 22:08:24 -04:00
parent b7c9f0bfce
commit 5d77350e3c
3 changed files with 7 additions and 8 deletions

View File

@ -165,7 +165,7 @@ private:
dictionaryWindow.UpdateDictionary(); dictionaryWindow.UpdateDictionary();
if (dictionaryWindow.dictionary.empty()) if (dictionaryWindow.dictionary.empty())
{ {
std::ofstream(DICTIONARY_SAVE_FILE) << DICTIONARY_INSTRUCTIONS; std::ofstream(DICTIONARY_SAVE_FILE) << u8"\ufeff" << DICTIONARY_INSTRUCTIONS;
_spawnlp(_P_DETACH, "notepad", "notepad", DICTIONARY_SAVE_FILE, NULL); // show file to user _spawnlp(_P_DETACH, "notepad", "notepad", DICTIONARY_SAVE_FILE, NULL); // show file to user
} }
} }

View File

@ -113,7 +113,8 @@ BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved
UpdateReplacements(); UpdateReplacements();
if (trie.Empty()) if (trie.Empty())
{ {
std::ofstream(REPLACE_SAVE_FILE, std::ios::binary).write((char*)REPLACER_INSTRUCTIONS, wcslen(REPLACER_INSTRUCTIONS) * sizeof(wchar_t)); auto file = std::ofstream(REPLACE_SAVE_FILE, std::ios::binary) << "\xff\xfe";
for (auto ch : std::wstring_view(REPLACER_INSTRUCTIONS)) file << (ch == L'\n' ? std::string_view("\r\0\n", 4) : std::string_view((char*)&ch, 2));
_spawnlp(_P_DETACH, "notepad", "notepad", REPLACE_SAVE_FILE, NULL); // show file to user _spawnlp(_P_DETACH, "notepad", "notepad", REPLACE_SAVE_FILE, NULL); // show file to user
} }
} }

View File

@ -1,6 +1,4 @@
#include "defs.h" #ifdef _WIN64
#ifdef _WIN64
#define ARCH "x64" #define ARCH "x64"
#else #else
#define ARCH "x86" #define ARCH "x86"
@ -121,13 +119,13 @@ Click and drag on window edges to move, or the bottom right corner to resize)";
const char* TOPMOST = u8"Always on top"; const char* TOPMOST = u8"Always on top";
const char* DICTIONARY = u8"Dictionary"; const char* DICTIONARY = u8"Dictionary";
const char* DICTIONARY_INSTRUCTIONS = u8R"(This file is used only for the "Dictionary" feature of the Extra Window extension. const char* DICTIONARY_INSTRUCTIONS = u8R"(This file is used only for the "Dictionary" feature of the Extra Window extension.
It is not meant to be written manually (though it can be). It uses a custom format specific to Textractor and is not meant to be written manually.
You should look for a dictionary in this format online (https://artikash.github.io/?dictionary is a good place to start). You should look for a dictionary in this format online (https://artikash.github.io/?dictionary is a good place to start).
Alternatively, if you're a programmer, you can write a script to convert a dictionary from another format with the info below. Alternatively, if you're a programmer, you can write a script to convert a dictionary from another format with the info below.
Once you have a dictionary, to look up some text in Extra Window, select it. All matching definitions will be shown. Once you have a dictionary, to look up some text in Extra Window, select it. All matching definitions will be shown.
Definitions are formatted like this:|TERM|Hola|TERM|hola|TERM|Bonjour|TERM|bonjour|DEFINITION|hello|END| Definitions are formatted like this:|TERM|Hola|TERM|hola|TERM|Bonjour|TERM|bonjour|DEFINITION|hello|END|
The definition can include rich text (https://doc.qt.io/qt-5/richtext-html-subset.html) which will be formatted properly. The definition can include rich text (https://doc.qt.io/qt-5/richtext-html-subset.html) which will be formatted properly.
All text in this file outside of definitions is ignored. All text in this file outside of a definition is ignored.
Terms longer than 50 characters may not be shown (for performance reasons that should be fixed soon). Terms longer than 50 characters may not be shown (for performance reasons that should be fixed soon).
This file must be encoded in UTF-8.)"; This file must be encoded in UTF-8.)";
const char* SHOW_ORIGINAL = u8"Original text"; const char* SHOW_ORIGINAL = u8"Original text";
@ -170,7 +168,7 @@ Replacement commands must be formatted like this:
|ORIG|original_text|BECOMES|replacement_text|END| |ORIG|original_text|BECOMES|replacement_text|END|
All text in this file outside of a replacement command is ignored. All text in this file outside of a replacement command is ignored.
Whitespace in original_text is ignored, but replacement_text can contain spaces, newlines, etc. Whitespace in original_text is ignored, but replacement_text can contain spaces, newlines, etc.
This file must be encoded in Unicode (UTF-16 little endian).)"; This file must be encoded in Unicode (UTF-16 Little Endian).)";
const char* THREAD_LINKER = u8"Thread Linker"; const char* THREAD_LINKER = u8"Thread Linker";
const char* LINK = u8"Link"; const char* LINK = u8"Link";
const char* THREAD_LINK_FROM = u8"Thread number to link from"; const char* THREAD_LINK_FROM = u8"Thread number to link from";