Compare commits
105 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
664bdce10f | ||
|
|
9457d74047 | ||
|
|
26663ed888 | ||
|
|
9f9e19e3b0 | ||
|
|
df902e9122 | ||
|
|
8337a2822f | ||
|
|
e8f39da602 | ||
|
|
1ba71443f5 | ||
|
|
9c4caf506b | ||
|
|
668396803a | ||
|
|
a11c4bc79a | ||
|
|
ec957caf3c | ||
|
|
ad80612ac2 | ||
|
|
3eb6d98b95 | ||
|
|
c722094df9 | ||
|
|
c199ce80c7 | ||
|
|
ead50105e3 | ||
|
|
81db4c0055 | ||
|
|
9f64d060fb | ||
|
|
0cf4a755fd | ||
|
|
37196ab4f5 | ||
|
|
e96a627c55 | ||
|
|
7f2c209a06 | ||
|
|
b1a3eb23c7 | ||
|
|
35b8b389ff | ||
|
|
d8493554cd | ||
|
|
a40e730bf0 | ||
|
|
056b1c3087 | ||
|
|
7127b8ea31 | ||
|
|
82906899de | ||
|
|
566d40bd05 | ||
|
|
6a8cd1ec80 | ||
|
|
b0db806f5e | ||
|
|
439dcb35d1 | ||
|
|
ad07539cb6 | ||
|
|
a7c1481f87 | ||
|
|
c7bc2d0aa6 | ||
|
|
2bbad80235 | ||
|
|
ffe11b17b5 | ||
|
|
0daae5af37 | ||
|
|
2f1f6a6c83 | ||
|
|
f8393e3d77 | ||
|
|
40c4d65669 | ||
|
|
7d866b183b | ||
|
|
b13f77ce95 | ||
|
|
cb324389e4 | ||
|
|
2de62b1636 | ||
|
|
afb137edee | ||
|
|
d4fdd62916 | ||
|
|
ac63e5a957 | ||
|
|
b8aa592b19 | ||
|
|
325b9334b5 | ||
|
|
f547fbc601 | ||
|
|
0e2678f09e | ||
|
|
e78bbc9c3b | ||
|
|
f523d12fa1 | ||
|
|
c6f844775f | ||
|
|
450c18198a | ||
|
|
ad57071515 | ||
|
|
f6d0323485 | ||
|
|
004958f464 | ||
|
|
09117d68a6 | ||
|
|
04eea84f8a | ||
|
|
685ffedb53 | ||
|
|
f74e9930c1 | ||
|
|
a05e62f1d3 | ||
|
|
3aba608001 | ||
|
|
fa59e71fe3 | ||
|
|
839c6fc1e6 | ||
|
|
ff509ed6b5 | ||
|
|
ca3239f0ff | ||
|
|
eb0911d3c0 | ||
|
|
a7c7a3f40c | ||
|
|
a6f0357ad8 | ||
|
|
35eb472e6b | ||
|
|
ba4ff3cd42 | ||
|
|
9709cc2845 | ||
|
|
f35e49dc8b | ||
|
|
9a307978b5 | ||
|
|
bd01e250b2 | ||
|
|
8bb1049cf0 | ||
|
|
52391d9a08 | ||
|
|
823390d28b | ||
|
|
eedab7da56 | ||
|
|
63fda12c99 | ||
|
|
5cc005583c | ||
|
|
6b856314d0 | ||
|
|
b581b7a8b1 | ||
|
|
0bfa44e6bb | ||
|
|
5c05dc6eb6 | ||
|
|
7a2845fef3 | ||
|
|
5b71b776a7 | ||
|
|
2bd3b4c3b9 | ||
|
|
b90ce09c5e | ||
|
|
04a1b95372 | ||
|
|
3c65720188 | ||
|
|
335fdbf949 | ||
|
|
5637381ca6 | ||
|
|
082773fdc9 | ||
|
|
3c9ace0bbe | ||
|
|
7ea4072724 | ||
|
|
3e9f7d6478 | ||
|
|
46a3a13311 | ||
|
|
47d3884af3 | ||
|
|
1f498ab916 |
18
.gitmodules
vendored
18
.gitmodules
vendored
@@ -1,18 +1,24 @@
|
||||
[submodule "lib/stdex"]
|
||||
path = lib/stdex
|
||||
url = https://github.com/Amebis/stdex.git
|
||||
url = https://git.amebis.si/Amebis/stdex.git
|
||||
[submodule "lib/WinStd"]
|
||||
path = lib/WinStd
|
||||
url = https://github.com/Amebis/WinStd.git
|
||||
url = https://git.amebis.si/Amebis/WinStd.git
|
||||
[submodule "lib/wxExtend"]
|
||||
path = lib/wxExtend
|
||||
url = https://github.com/Amebis/wxExtend.git
|
||||
url = https://git.amebis.si/Amebis/wxExtend.git
|
||||
[submodule "MSI/MSIBuild"]
|
||||
path = MSI/MSIBuild
|
||||
url = https://github.com/Amebis/MSIBuild.git
|
||||
url = https://git.amebis.si/Amebis/MSIBuild.git
|
||||
[submodule "MSI/MSICA"]
|
||||
path = MSI/MSICA
|
||||
url = https://github.com/Amebis/MSICA.git
|
||||
url = https://git.amebis.si/Amebis/MSICA.git
|
||||
[submodule "Updater"]
|
||||
path = Updater
|
||||
url = https://github.com/Amebis/Updater.git
|
||||
url = https://git.amebis.si/Amebis/Updater.git
|
||||
[submodule "lib/oatpp"]
|
||||
path = lib/oatpp
|
||||
url = https://github.com/oatpp/oatpp.git
|
||||
[submodule "lib/oatpp-swagger"]
|
||||
path = lib/oatpp-swagger
|
||||
url = https://github.com/oatpp/oatpp-swagger.git
|
||||
|
||||
Submodule MSI/MSIBuild updated: 05edc2b598...eccce8c523
Submodule MSI/MSICA updated: f98cfef1e7...982643e871
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# Copyright © 1991-2021 Amebis
|
||||
# Copyright © 1991-2022 Amebis
|
||||
|
||||
!INCLUDE "..\..\include\MSIBuildCfg.mak"
|
||||
!INCLUDE "..\MSIBuild\Makefile"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,26 +1,28 @@
|
||||
#
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Simon Rozman <simon@rozman.si>, 2022
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: German (Germany) (https://app.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de_DE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3464,18 +3466,22 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
#: en_US.x64.Release.Control-2.idtx:5 en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3483,6 +3489,7 @@ msgid ""
|
||||
"or some other appropriate part of the publication the note below:"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3496,6 +3503,7 @@ msgid ""
|
||||
"(http://www.zrc-sazu.si) by Peter Weiss.\\f1\\par}"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3503,11 +3511,14 @@ msgid ""
|
||||
"dialog or on its website."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3515,16 +3526,19 @@ msgstr ""
|
||||
msgid "&Continue"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "binfontsubst.bmp"
|
||||
msgstr "binfontsubst.bmp"
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3533,86 +3547,103 @@ msgid ""
|
||||
"computer that will take effect after the next restart."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Schriftarten"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentation"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "+386 1 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
#
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Simon Rozman <simon@rozman.si>, 2022
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: Russian (Russia) (https://app.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru_RU\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3464,18 +3466,22 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
#: en_US.x64.Release.Control-2.idtx:5 en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Декларация"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3485,6 +3491,7 @@ msgstr ""
|
||||
"Текст, созданный с помощью системы ZRCola, должен в примечании или другом "
|
||||
"соответствующем месте в публикации сопровождаться следующей записью"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3514,6 +3521,7 @@ msgstr ""
|
||||
"\\'cb\\'fe\\'e1\\'eb\\'ff\\'ed\\'e5 (http://www.zrc-sazu.si) "
|
||||
"\\'cf\\'e5\\'f2\\'f0\\'ee\\'ec \\'c2\\'e5\\'e9\\'f1\\'f1o\\'ec.\\f1\\par}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3523,11 +3531,14 @@ msgstr ""
|
||||
"Примечание: Ета декларация доступна также в диалоговом окне «О программе» "
|
||||
"либо на вебсайте системы ZRCola."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr "Согласен."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3535,16 +3546,19 @@ msgstr "Согласен."
|
||||
msgid "&Continue"
|
||||
msgstr "Продолжить"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr "[DlgTitleFont]Шрифт «00 ZRCola» в «ZRCola»"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "binfontsubst.bmp"
|
||||
msgstr "binfontsubst.bmp"
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3556,86 +3570,103 @@ msgstr ""
|
||||
"предыдущих документов в вашем компьютере проведена субституция шрифтов, "
|
||||
"которая вступит в силу после следующего запуска компьютера."
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Шрифты"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Шрифты, использованные системой ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Шрифт на основе Times New Roman"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Документация"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Документация системы ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Сочетание клавиш"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr "Документ PDF со списком сочетаний клавиш системы ZRCola "
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr "Amebis, Словения, ЕС"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr "Институт словенского языка им. Франа Рамовша ZRC SAZU"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "+386 1 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|Сочетание клавиш системы ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
#
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Simon Rozman <simon@rozman.si>, 2022
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sl_SI\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3464,18 +3466,22 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
#: en_US.x64.Release.Control-2.idtx:5 en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont]Deklaracija [SimpleProductName]"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3486,6 +3492,7 @@ msgstr ""
|
||||
"opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim "
|
||||
"zapisom:"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3503,10 +3510,11 @@ msgstr ""
|
||||
"Roman;}Times New Roman CE;}}{\\colortbl "
|
||||
";\\red0\\green0\\blue255;}{\\*\\generator Msftedit "
|
||||
"5.41.21.2510;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\i\\f0\\fs22 "
|
||||
"Besedilo je bilo pripravljeno z vna\\'9aalnim sistemom ZRCola (http://zrcola"
|
||||
".zrc-sazu.si), ki ga je na Znanstvenoraziskovalnem centru SAZU v Ljubljani "
|
||||
"(http://www.zrc-sazu.si) razvil Peter Weiss.\\i0\\f1\\par}"
|
||||
"Besedilo je bilo pripravljeno z vna\\'9aalnim sistemom ZRCola "
|
||||
"(http://zrcola.zrc-sazu.si), ki ga je na Znanstvenoraziskovalnem centru SAZU"
|
||||
" v Ljubljani (http://www.zrc-sazu.si) razvil Peter Weiss.\\i0\\f1\\par}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3516,11 +3524,14 @@ msgstr ""
|
||||
"Opomba: Ta deklaracija je na voljo tudi v dialogu vizitke "
|
||||
"[SimpleProductName] ali na spletni strani."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr "&Strinjam se."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3528,16 +3539,19 @@ msgstr "&Strinjam se."
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr "[DlgTitleFont]\"00 ZRCola\" v pisavo \"ZRCola\""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "binfontsubst.bmp"
|
||||
msgstr "binfontsubst.bmp"
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3549,86 +3563,103 @@ msgstr ""
|
||||
" dokumenti prikazani pravilno, smo na vašem računalniku uredili nadomeščanje"
|
||||
" pisave, ki bo stopilo v veljavo po naslednjem zagonu."
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Pisave"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Pisave, ki jih uporablja ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Pisava na osnovi Times New Roman"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentacija"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Dokumentacija ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Bližnjice na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr "Dokument PDF s seznamom ZRColinih bližnjic na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr "Amebis, d. o. o., Kamnik"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr "Inštitut za slovenski jezik Frana Ramovša ZRC SAZU"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "01 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|ZRColine bližnjice na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
BIN
MakefileLang.mak
BIN
MakefileLang.mak
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
MakefilePlat.mak
BIN
MakefilePlat.mak
Binary file not shown.
Binary file not shown.
29
README.md
29
README.md
@@ -1,4 +1,4 @@
|
||||
# ZRCola
|
||||
# ZRCola
|
||||
|
||||
A Microsoft Windows application for composing texts using a wide range of Slavic (and general) letters from or beyond Unicode.
|
||||
|
||||
@@ -36,14 +36,25 @@ ZRCola is using wxWidgets static libraries. You have to compile static libraries
|
||||
ZRCola compilation references wxWidgets libraries using `WXWIN` environment variable. Please set it to wxWidgets folder (e.g. `C:\SDK\wxWidgets`).
|
||||
|
||||
### Digital Signing of Build Outputs
|
||||
In order to have the build process digitally sign output files, one should provide the following:
|
||||
In order to have the build process digitally sign output files, one should setup either:
|
||||
|
||||
1. A signing certificate installed in the current user's certificate store.
|
||||
2. The following variables in the environment:
|
||||
- `ManifestCertificateThumbprint` - set the value to certificate's SHA1 thumbprint (hexadecimal, without spaces, e.g. `f61b973226c502a732d24f41aa85e192b009e7c0`).
|
||||
- `ManifestTimestampRFC3161Url` - set the value to URL used to perform RFC3161 timestamp signature (e.g. `http://time.certum.pl`). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.
|
||||
- Local signing:
|
||||
1. A signing certificate installed in the current user's certificate store.
|
||||
2. The following variables in the environment:
|
||||
- `ManifestCertificateThumbprint` - set the value to certificate's SHA1 thumbprint (hexadecimal, without spaces, e.g. `f61b973226c502a732d24f41aa85e192b009e7c0`).
|
||||
- `ManifestTimestampRFC3161Url` - set the value to URL used to perform RFC3161 timestamp signature (e.g. `http://time.certum.pl`). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.
|
||||
|
||||
Please note that only Release builds are configured for timestamp signing. Debug configurations do not attempt to timestamp sign the resulting DLL and EXE files in order to speed up the building process and enable offline building.
|
||||
- Microsoft Trusted Signing:
|
||||
1. Install [Trusted Signing dlib package](https://www.nuget.org/packages/Microsoft.Trusted.Signing.Client):
|
||||
```cmd
|
||||
nuget install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
|
||||
```
|
||||
2. Provide a [`manifest.json`](https://learn.microsoft.com/en-us/azure/trusted-signing/how-to-signing-integrations#create-a-json-file) file and place it at `%APPDATA%\Microsoft.Trusted.Signing.Client.json`:
|
||||
```cmd
|
||||
notepad "%APPDATA%\Microsoft.Trusted.Signing.Client.json"
|
||||
```
|
||||
|
||||
Please note that only Release builds are configured for signing. Debug configurations do not sign the resulting DLL and EXE files in order to speed up the building process and reduce signing volume.
|
||||
|
||||
### Building
|
||||
Use Microsoft NMAKE to build the project. The resulting files can be found in output subfolder. Open _x64 Native Tools Command Prompt for VS 2017_ for building.
|
||||
@@ -56,6 +67,10 @@ Use Microsoft NMAKE to build the project. The resulting files can be found in ou
|
||||
|
||||
The `/ls` flag can be appended to the commands above to reduce NMAKE's verbosity. You can combine multiple targets (e.g. nmake Unregister Clean). Please, see NMAKE reference for further reading.
|
||||
|
||||
## Building and installing ZRCola webservice
|
||||
|
||||
ZRCola is also available as a Linux web-service. See [ZRColaWS/README.md](ZRColaWS/README.md) for instructions.
|
||||
|
||||
## Translating ZRCola
|
||||
Instructions how to translate ZRCola to your language can be found [here](LOCALIZATION.md).
|
||||
|
||||
|
||||
2
Updater
2
Updater
Submodule Updater updated: 0ba186c984...f457f62448
30
ZRCola.sln
30
ZRCola.sln
@@ -18,12 +18,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRCola", "lib\libZRCola\
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRColaUI", "lib\libZRColaUI\build\libZRColaUI.vcxproj", "{C0A84BD2-3870-4CD6-B281-0AB322E3C579}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdex", "lib\stdex\build\stdex.vcxproj", "{518777CC-0A59-4415-A12A-82751ED75343}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Updater", "Updater\Updater\build\Updater.vcxproj", "{990D8CF9-4457-4DC0-AA18-4968EF434741}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinStd", "lib\WinStd\build\WinStd.vcxproj", "{47399D91-7EB9-41DE-B521-514BA5DB0C43}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
@@ -82,18 +78,6 @@ Global
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|Win32.Build.0 = Release|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|x64.ActiveCfg = Release|x64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|x64.Build.0 = Release|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|x64.Build.0 = Debug|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.Build.0 = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|x64.ActiveCfg = Release|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|x64.Build.0 = Release|x64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
@@ -106,18 +90,6 @@ Global
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Release|Win32.Build.0 = Release|Win32
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Release|x64.ActiveCfg = Release|x64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Release|x64.Build.0 = Release|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|x64.Build.0 = Debug|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.Build.0 = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|x64.ActiveCfg = Release|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -126,9 +98,7 @@ Global
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{518777CC-0A59-4415-A12A-82751ED75343} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EECB5329-0607-4D77-8BC0-48BD8C08BEF9}
|
||||
|
||||
Binary file not shown.
BIN
ZRCola/ZRCola.rc
BIN
ZRCola/ZRCola.rc
Binary file not shown.
@@ -108,9 +108,6 @@
|
||||
<ProjectReference Include="..\lib\libZRCola\build\libZRCola.vcxproj">
|
||||
<Project>{3c61929e-7289-4101-8d0a-da22d6e1aea8}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||
<Project>{D3E29951-D9F5-486D-A167-20AE8E90B1FA}</Project>
|
||||
</ProjectReference>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <Updater/chkthread.h>
|
||||
|
||||
#include <wxex/common.h>
|
||||
#include <wxex/icon.h>
|
||||
#include <wxex/url.h>
|
||||
#include <wxex/persist/auimanager.h>
|
||||
#include <wxex/persist/toplevel.h>
|
||||
@@ -46,7 +47,7 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <stdex/idrec.h>
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
#include <Msi.h>
|
||||
|
||||
12410
ZRCola/res/ZRCola.fbp
12410
ZRCola/res/ZRCola.fbp
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -218,9 +218,9 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
|
||||
m_toolbarEdit->Realize();
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo().Name( wxT("toolbarEdit") ).Top().Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo() .Name( wxT("toolbarEdit") ).Top() .Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORIZONTAL|wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIcon( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
@@ -235,7 +235,7 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolComposition->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolComposition );
|
||||
wxArrayString m_toolTranslationSeqChoices;
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, wxSize( 180,-1 ), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, wxSize( 200,-1 ), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolTranslationSeq );
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
@@ -243,7 +243,7 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIcon( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
|
||||
m_toolbarTranslate->Realize();
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo().Name( wxT("toolbarCompose") ).Top().Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo() .Name( wxT("toolbarCompose") ).Top() .Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_panelChrCat = new wxZRColaCharacterCatalogPanel( this );
|
||||
|
||||
@@ -382,7 +382,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
this->SetSizer( bSizerMain );
|
||||
this->Layout();
|
||||
bSizerMain->Fit( this );
|
||||
m_timerSave.SetOwner( this, wxID_TIMER_SAVE );
|
||||
m_timerSave.SetOwner( this, m_timerSave.GetId() );
|
||||
|
||||
// Connect Events
|
||||
m_source->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnSourcePaint ), NULL, this );
|
||||
@@ -391,7 +391,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
m_destination->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Connect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Connect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
}
|
||||
|
||||
wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
@@ -403,7 +403,7 @@ wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
m_destination->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Disconnect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Disconnect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
|
||||
}
|
||||
|
||||
@@ -512,32 +512,32 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
wxBoxSizer* sbSizerSearch;
|
||||
sbSizerSearch = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxArrayString m_categoriesChoices;
|
||||
m_categories = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,60 ), m_categoriesChoices, 0 );
|
||||
m_categories->SetToolTip( _("List of Unicode character categories to search in") );
|
||||
wxArrayString m_blocksChoices;
|
||||
m_blocks = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,60 ), m_blocksChoices, 0 );
|
||||
m_blocks->SetToolTip( _("List of Unicode character blocks to search in") );
|
||||
|
||||
sbSizerSearch->Add( m_categories, 0, wxALL|wxEXPAND, 5 );
|
||||
sbSizerSearch->Add( m_blocks, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerCategoriesCtrl;
|
||||
bSizerCategoriesCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
wxBoxSizer* bSizerBlocksCtrl;
|
||||
bSizerBlocksCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_categoriesAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesAll->SetToolTip( _("Select all categories") );
|
||||
m_blocksAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksAll->SetToolTip( _("Select all categories") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesAll, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksAll, 0, wxALL, 5 );
|
||||
|
||||
m_categoriesNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesNone->SetToolTip( _("Clear category selection") );
|
||||
m_blocksNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksNone->SetToolTip( _("Clear block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesNone, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksNone, 0, wxALL, 5 );
|
||||
|
||||
m_categoriesInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesInvert->SetToolTip( _("Invert category selection") );
|
||||
m_blocksInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksInvert->SetToolTip( _("Invert block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesInvert, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksInvert, 0, wxALL, 5 );
|
||||
|
||||
|
||||
sbSizerSearch->Add( bSizerCategoriesCtrl, 0, wxALIGN_RIGHT, 5 );
|
||||
sbSizerSearch->Add( bSizerBlocksCtrl, 0, wxALIGN_RIGHT, 5 );
|
||||
|
||||
|
||||
m_search_panel->SetSizer( sbSizerSearch );
|
||||
@@ -687,10 +687,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
|
||||
sbSizerPreview->Add( m_tags, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_category = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_category->SetToolTip( _("Unicode character category") );
|
||||
m_block = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_block->SetToolTip( _("Unicode character block") );
|
||||
|
||||
sbSizerPreview->Add( m_category, 0, wxALL|wxEXPAND, 5 );
|
||||
sbSizerPreview->Add( m_block, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerNavigateButtons;
|
||||
bSizerNavigateButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
@@ -780,10 +780,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
this->Connect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -805,10 +805,10 @@ wxZRColaCharSelectBase::~wxZRColaCharSelectBase()
|
||||
this->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -61,7 +61,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_CHARACTER_SELECTOR = 6000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
@@ -78,7 +78,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
wxID_HELP_UPDATE,
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
@@ -105,7 +105,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxZRColaCharacterCatalogPanel* m_panelChrCat;
|
||||
wxStatusBar* m_statusBar;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnIconize( wxIconizeEvent& event ) { event.Skip(); }
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
@@ -116,7 +116,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
public:
|
||||
wxZRColaComposerPanel* m_panel;
|
||||
|
||||
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 600,400 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );
|
||||
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 640,480 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );
|
||||
wxAuiManager m_mgr;
|
||||
|
||||
~wxZRColaFrameBase();
|
||||
@@ -133,7 +133,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
wxID_TIMER_SAVE = 6000,
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
@@ -146,7 +146,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
@@ -161,6 +161,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
@@ -189,7 +190,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -199,6 +200,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
@@ -214,10 +216,10 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxSearchCtrl* m_search;
|
||||
wxHyperlinkCtrl* m_search_more;
|
||||
wxPanel* m_search_panel;
|
||||
wxCheckListBox* m_categories;
|
||||
wxHyperlinkCtrl* m_categoriesAll;
|
||||
wxHyperlinkCtrl* m_categoriesNone;
|
||||
wxHyperlinkCtrl* m_categoriesInvert;
|
||||
wxCheckListBox* m_blocks;
|
||||
wxHyperlinkCtrl* m_blocksAll;
|
||||
wxHyperlinkCtrl* m_blocksNone;
|
||||
wxHyperlinkCtrl* m_blocksInvert;
|
||||
wxZRColaCharGrid* m_gridResults;
|
||||
wxZRColaCharGrid* m_gridRecent;
|
||||
wxStaticText* m_labelUnicode;
|
||||
@@ -226,20 +228,20 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxGrid* m_gridPreview;
|
||||
wxTextCtrl* m_description;
|
||||
wxTextCtrl* m_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxTextCtrl* m_block;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchMore( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultsKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -258,6 +260,7 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Character Search"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharSelect") );
|
||||
|
||||
~wxZRColaCharSelectBase();
|
||||
|
||||
};
|
||||
@@ -284,7 +287,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsApply;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnLanguageUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnApplyButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -294,6 +297,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaSettingsBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaSettings") );
|
||||
|
||||
~wxZRColaSettingsBase();
|
||||
|
||||
};
|
||||
@@ -320,6 +324,7 @@ class wxZRColaAboutBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaAboutBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaAbout") );
|
||||
|
||||
~wxZRColaAboutBase();
|
||||
|
||||
};
|
||||
@@ -336,7 +341,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonClose;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnClose( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -345,6 +350,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaUpdaterBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Product Update"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaUpdater") );
|
||||
|
||||
~wxZRColaUpdaterBase();
|
||||
|
||||
};
|
||||
@@ -367,13 +373,14 @@ class wxZRColaCharRequestBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharRequestBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Request a New Character"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharRequest") );
|
||||
|
||||
~wxZRColaCharRequestBase();
|
||||
|
||||
};
|
||||
@@ -399,7 +406,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -416,6 +423,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -82,7 +82,7 @@ bool ZRColaApp::OnInit()
|
||||
ZRCola::recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == ZRCola::translation_rec::id) {
|
||||
if (id == ZRCola::translation_rec::id()) {
|
||||
dat >> ZRCola::translation_rec(m_t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
@@ -90,61 +90,61 @@ bool ZRColaApp::OnInit()
|
||||
wxFAIL_MSG(wxT("Error reading translation data from ZRCola.zrcdb."));
|
||||
m_t_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transet_rec::id) {
|
||||
} else if (id == ZRCola::transet_rec::id()) {
|
||||
dat >> ZRCola::transet_rec(m_ts_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation set data from ZRCola.zrcdb."));
|
||||
m_ts_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transeq_rec::id) {
|
||||
} else if (id == ZRCola::transeq_rec::id()) {
|
||||
dat >> ZRCola::transeq_rec(m_tsq_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation sequence data from ZRCola.zrcdb."));
|
||||
m_tsq_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::langchar_rec::id) {
|
||||
} else if (id == ZRCola::langchar_rec::id()) {
|
||||
dat >> ZRCola::langchar_rec(m_lc_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lc_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::language_rec::id) {
|
||||
} else if (id == ZRCola::language_rec::id()) {
|
||||
dat >> ZRCola::language_rec(m_lang_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lang_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::keyseq_rec::id) {
|
||||
} else if (id == ZRCola::keyseq_rec::id()) {
|
||||
dat >> ZRCola::keyseq_rec(m_ks_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading key sequences data from ZRCola.zrcdb."));
|
||||
m_ks_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::character_rec::id) {
|
||||
} else if (id == ZRCola::character_rec::id()) {
|
||||
dat >> ZRCola::character_rec(m_chr_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character data from ZRCola.zrcdb."));
|
||||
m_chr_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrcat_rec::id) {
|
||||
dat >> ZRCola::chrcat_rec(m_cc_db);
|
||||
} else if (id == ZRCola::chrblk_rec::id()) {
|
||||
dat >> ZRCola::chrblk_rec(m_cb_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character category data from ZRCola.zrcdb."));
|
||||
m_cc_db.clear();
|
||||
wxFAIL_MSG(wxT("Error reading character block data from ZRCola.zrcdb."));
|
||||
m_cb_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrtag_rec::id) {
|
||||
} else if (id == ZRCola::chrtag_rec::id()) {
|
||||
dat >> ZRCola::chrtag_rec(m_ct_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character tag data from ZRCola.zrcdb."));
|
||||
m_ct_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::tagname_rec::id) {
|
||||
} else if (id == ZRCola::tagname_rec::id()) {
|
||||
dat >> ZRCola::tagname_rec(m_tn_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading tag name data from ZRCola.zrcdb."));
|
||||
m_tn_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::highlight_rec::id) {
|
||||
} else if (id == ZRCola::highlight_rec::id()) {
|
||||
dat >> ZRCola::highlight_rec(m_h_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading highlight data from ZRCola.zrcdb."));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
ZRCola::language_db m_lang_db; ///< Language database
|
||||
ZRCola::keyseq_db m_ks_db; ///< Key sequence database
|
||||
ZRCola::character_db m_chr_db; ///< Character database
|
||||
ZRCola::chrcat_db m_cc_db; ///< Characted category database
|
||||
ZRCola::chrblk_db m_cb_db; ///< Character block database
|
||||
ZRCola::chrtag_db m_ct_db; ///< Character tag database
|
||||
ZRCola::tagname_db m_tn_db; ///< Tag name database
|
||||
ZRCola::highlight_db m_h_db; ///< Highlight database
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
|
||||
protected:
|
||||
#ifdef __WXMSW__
|
||||
winstd::win_handle<NULL> m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
winstd::event m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -148,11 +148,11 @@ void wxZRColaCharacterCatalogPanel::Update()
|
||||
wxArrayShort(reinterpret_cast<const short*>(cg.chrshow()), reinterpret_cast<const short*>(cg.chrshow_end())));
|
||||
} else {
|
||||
// Select frequently used characters only.
|
||||
const wchar_t *src = cg.chrlst();
|
||||
const unsigned __int16 *shown = cg.chrshow();
|
||||
const auto *src = cg.chrlst();
|
||||
const uint16_t *shown = cg.chrshow();
|
||||
wxArrayString chars;
|
||||
for (size_t i = 0, i_end = cg.chrlst_len(), j = 0; i < i_end; j++) {
|
||||
for (unsigned __int16 k = 0, mask = shown[j]; k < 16 && i < i_end; k++, mask >>= 1) {
|
||||
for (uint16_t k = 0, mask = shown[j]; k < 16 && i < i_end; k++, mask >>= 1) {
|
||||
size_t len = wcsnlen(src + i, i_end - i);
|
||||
if (mask & 1)
|
||||
chars.Add(wxString(src + i, len));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -110,7 +110,7 @@ wxString wxZRColaCharGrid::GetToolTipText(int idx)
|
||||
const auto &chr = m_chars[idx];
|
||||
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*chr.length()]);
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::char_t)*chr.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, chr.data(), chr.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, start)) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -13,7 +13,7 @@
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxZRColaUTF16CharValidator, wxValidator);
|
||||
|
||||
|
||||
wxZRColaUTF16CharValidator::wxZRColaUTF16CharValidator(wchar_t *val) :
|
||||
wxZRColaUTF16CharValidator::wxZRColaUTF16CharValidator(ZRCola::char_t *val) :
|
||||
m_val(val),
|
||||
wxValidator()
|
||||
{
|
||||
@@ -58,11 +58,11 @@ bool wxZRColaUTF16CharValidator::TransferFromWindow()
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wchar_t *val_out)
|
||||
bool wxZRColaUTF16CharValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, ZRCola::char_t *val_out)
|
||||
{
|
||||
const wxStringCharType *buf = val_in;
|
||||
|
||||
wchar_t chr = 0;
|
||||
ZRCola::char_t chr = 0;
|
||||
for (size_t i = i_start;;) {
|
||||
if (i >= i_end) {
|
||||
// End of Unicode found.
|
||||
@@ -156,7 +156,7 @@ bool wxZRColaUnicodeDumpValidator::Parse(const wxString &val_in, size_t i_start,
|
||||
wxString str;
|
||||
for (size_t i = i_start;;) {
|
||||
const wxStringCharType *buf_next;
|
||||
wchar_t chr;
|
||||
ZRCola::char_t chr;
|
||||
if ((buf_next = wmemchr(buf + i, L'+', i_end - i)) != NULL) {
|
||||
// Unicode dump separator found.
|
||||
if (!wxZRColaUTF16CharValidator::Parse(val_in, i, buf_next - buf, ctrl, parent, &chr))
|
||||
@@ -202,13 +202,13 @@ wxZRColaCharSelect::wxZRColaCharSelect(wxWindow* parent) :
|
||||
|
||||
m_unicode->SetValidator(wxZRColaUnicodeDumpValidator(&m_char));
|
||||
|
||||
// Fill categories.
|
||||
// Fill blocks.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
int idx = m_categories->Insert(wxGetTranslation(wxString(cc.name(), cc.name_len()), wxT("ZRCola-zrcdb")), (unsigned int)i);
|
||||
m_categories->Check(idx);
|
||||
m_ccOrder.insert(std::make_pair(cc.cat, idx));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
int idx = m_blocks->Insert(wxGetTranslation(wxString(cb.name(), cb.name_len()), wxT("ZRCola-zrcdb")), (unsigned int)i);
|
||||
m_blocks->Check(idx);
|
||||
m_cbOrder.insert(std::make_pair(cb.id, idx));
|
||||
}
|
||||
|
||||
ResetResults();
|
||||
@@ -242,7 +242,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
|
||||
m_gridPreview->SetCellValue(0, 0, m_char);
|
||||
|
||||
std::unique_ptr<ZRCola::character_db::character> ch((ZRCola::character_db::character*)new char[sizeof(ZRCola::character_db::character) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::character_db::character> ch((ZRCola::character_db::character*)new char[sizeof(ZRCola::character_db::character) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ch->ZRCola::character_db::character::character(m_char.data(), m_char.length());
|
||||
ZRCola::character_db::indexChr::size_type ch_start;
|
||||
if (app->m_chr_db.idxChr.find(*ch, ch_start)) {
|
||||
@@ -251,7 +251,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
m_description->SetValue(wxString(chr.desc(), chr.desc_len()));
|
||||
{
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, m_char.data(), m_char.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type ks_start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, ks_start)) {
|
||||
@@ -265,26 +265,26 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
}
|
||||
{
|
||||
// Update character category.
|
||||
ZRCola::chrcat_db::indexChrCat::size_type cc_start;
|
||||
if (app->m_cc_db.idxChrCat.find(ZRCola::chrcat_db::chrcat(chr.cat), cc_start)) {
|
||||
const auto &cat = app->m_cc_db.idxChrCat[cc_start];
|
||||
m_category->SetValue(wxGetTranslation(wxString(cat.name(), cat.name_len()), wxT("ZRCola-zrcdb")));
|
||||
// Update character block.
|
||||
ZRCola::chrblk_db::indexChrId::size_type cb_start;
|
||||
if (app->m_cb_db.idxChrId.find(ZRCola::chrblk_db::chrcls(chr.blk), cb_start)) {
|
||||
const auto &blk = app->m_cb_db.idxChrId[cb_start];
|
||||
m_block->SetValue(wxGetTranslation(wxString(blk.name(), blk.name_len()), wxT("ZRCola-zrcdb")));
|
||||
} else
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_block->SetValue(wxEmptyString);
|
||||
}
|
||||
// Update related characters.
|
||||
m_gridRelated->SetCharacters(wxString(chr.rel(), chr.rel_end()));
|
||||
} else {
|
||||
m_description->SetValue(wxEmptyString);
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_block->SetValue(wxEmptyString);
|
||||
m_gridRelated->ClearGrid();
|
||||
}
|
||||
|
||||
// Find character tags.
|
||||
std::list<std::wstring> tag_names;
|
||||
std::unique_ptr<ZRCola::chrtag_db::chrtag> ct((ZRCola::chrtag_db::chrtag*)new char[sizeof(ZRCola::chrtag_db::chrtag) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::chrtag_db::chrtag> ct((ZRCola::chrtag_db::chrtag*)new char[sizeof(ZRCola::chrtag_db::chrtag) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ct->ZRCola::chrtag_db::chrtag::chrtag(m_char.data(), m_char.length());
|
||||
ZRCola::chrtag_db::indexChr::size_type ct_start, ct_end;
|
||||
if (app->m_ct_db.idxChr.find(*ct, ct_start, ct_end)) {
|
||||
@@ -301,7 +301,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
// Add name to the list.
|
||||
tag_names.push_back(std::wstring(tn.name(), tn.name_end()));
|
||||
break;
|
||||
} else if (ZRCola::tagname_db::tagname::CompareName(m_locale, name->data(), (unsigned __int16)name->length(), tn.name(), tn.name_len()) == 0)
|
||||
} else if (ZRCola::tagname_db::tagname::CompareName(m_locale, name->data(), (uint16_t)name->length(), tn.name(), tn.name_len()) == 0)
|
||||
// Name is already on the list.
|
||||
break;
|
||||
}
|
||||
@@ -340,11 +340,11 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
|
||||
m_searchThread->m_search.assign(val.c_str(), val.Length());
|
||||
|
||||
// Select categories.
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
if (m_categories->IsChecked((unsigned int)i))
|
||||
m_searchThread->m_cats.insert(cc.cat);
|
||||
// Select blocks.
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
if (m_blocks->IsChecked((unsigned int)i))
|
||||
m_searchThread->m_blks.insert(cb.id);
|
||||
}
|
||||
|
||||
if (m_searchThread->Run() != wxTHREAD_NO_ERROR) {
|
||||
@@ -384,43 +384,43 @@ void wxZRColaCharSelect::OnSearchMore(wxHyperlinkEvent& event)
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesAll(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksAll(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, true);
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, true);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesNone(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksNone(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, false);
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, false);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesInvert(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksInvert(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, !m_categories->IsChecked((unsigned int)i));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, !m_blocks->IsChecked((unsigned int)i));
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesToggle(wxCommandEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksToggle(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
@@ -625,8 +625,8 @@ void wxZRColaCharSelect::ResetResults()
|
||||
val.reserve(n);
|
||||
for (i = 0; i < n; i++) {
|
||||
const auto &chr = app->m_chr_db.idxChr[i];
|
||||
auto idx = m_ccOrder.find(chr.cat);
|
||||
if (idx == m_ccOrder.end() || m_categories->IsChecked(idx->second))
|
||||
auto idx = m_cbOrder.find(chr.blk);
|
||||
if (idx == m_cbOrder.end() || m_blocks->IsChecked(idx->second))
|
||||
val.Add(wxString(chr.chr(), chr.chr_len()));
|
||||
}
|
||||
m_gridResults->SetCharacters(val);
|
||||
@@ -718,15 +718,15 @@ wxThread::ExitCode wxZRColaCharSelect::SearchThread::Entry()
|
||||
|
||||
{
|
||||
// Search by tags: Get tags with given names. Then, get characters of found tags.
|
||||
std::map<ZRCola::tagid_t, unsigned __int16> hits_tag;
|
||||
std::map<ZRCola::tagid_t, uint16_t> hits_tag;
|
||||
if (!app->m_tn_db.Search(m_search.c_str(), m_parent->m_locale, hits_tag, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_ct_db.Search(hits_tag, app->m_chr_db, m_cats, hits, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_ct_db.Search(hits_tag, app->m_chr_db, m_blks, hits, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
}
|
||||
|
||||
{
|
||||
// Search by description and merge results.
|
||||
std::map<std::wstring, ZRCola::charrank_t> hits_sub;
|
||||
if (!app->m_chr_db.Search(m_search.c_str(), m_cats, hits, hits_sub, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_chr_db.Search(m_search.c_str(), m_blks, hits, hits_sub, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
for (auto i = hits_sub.cbegin(), i_end = hits_sub.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
auto idx = hits.find(i->first);
|
||||
@@ -766,14 +766,14 @@ wxThread::ExitCode wxZRColaCharSelect::SearchThread::Entry()
|
||||
|
||||
int __cdecl wxZRColaCharSelect::SearchThread::CompareHits(const void *a, const void *b)
|
||||
{
|
||||
const std::pair<ZRCola::charrank_t, wchar_t> *_a = (const std::pair<ZRCola::charrank_t, wchar_t>*)a;
|
||||
const std::pair<ZRCola::charrank_t, wchar_t> *_b = (const std::pair<ZRCola::charrank_t, wchar_t>*)b;
|
||||
const std::pair<ZRCola::charrank_t, ZRCola::char_t> *_a = (const std::pair<ZRCola::charrank_t, ZRCola::char_t>*)a;
|
||||
const std::pair<ZRCola::charrank_t, ZRCola::char_t> *_b = (const std::pair<ZRCola::charrank_t, ZRCola::char_t>*)b;
|
||||
|
||||
if (_a->first > _b->first) return -1;
|
||||
else if (_a->first < _b->first) return 1;
|
||||
if (_a->first > _b->first) return -1;
|
||||
if (_a->first < _b->first) return 1;
|
||||
|
||||
if (_a->second < _b->second) return -1;
|
||||
else if (_a->second > _b->second) return 1;
|
||||
if (_a->second < _b->second) return -1;
|
||||
if (_a->second > _b->second) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -820,11 +820,9 @@ void wxPersistentZRColaCharSelect::Save() const
|
||||
SaveValue(wxT("recentChars" ), str ); // Save in legacy format for backward compatibility.
|
||||
SaveValue(wxT("recentChars2"), str2); // Save in native format
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
SaveValue(name, wnd->m_categories->IsChecked((unsigned int)i));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
SaveValue(wxString::Format(wxT("block%u"), cb.id), wnd->m_blocks->IsChecked((unsigned int)i));
|
||||
}
|
||||
|
||||
SaveValue(wxT("searchPanel"), wnd->m_search_panel->IsShown());
|
||||
@@ -843,7 +841,7 @@ bool wxPersistentZRColaCharSelect::Restore()
|
||||
for (wxStringTokenizer tok(str, wxT("|")); tok.HasMoreTokens(); ) {
|
||||
wxString chr;
|
||||
for (wxStringTokenizer tok_chr(tok.GetNextToken(), wxT("+")); tok_chr.HasMoreTokens(); )
|
||||
chr += (wchar_t)_tcstoul(tok_chr.GetNextToken().c_str(), NULL, 16);
|
||||
chr += (ZRCola::char_t)_tcstoul(tok_chr.GetNextToken().c_str(), NULL, 16);
|
||||
val.Add(chr);
|
||||
}
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
@@ -855,13 +853,11 @@ bool wxPersistentZRColaCharSelect::Restore()
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
}
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
bool val;
|
||||
if (RestoreValue(name, &val))
|
||||
wnd->m_categories->Check((unsigned int)i, val);
|
||||
if (RestoreValue(wxString::Format(wxT("block%u"), cb.id), &val))
|
||||
wnd->m_blocks->Check((unsigned int)i, val);
|
||||
}
|
||||
|
||||
bool search_panel;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
///
|
||||
/// Construct the validator with a value to store data
|
||||
///
|
||||
wxZRColaUTF16CharValidator(wchar_t *val = NULL);
|
||||
wxZRColaUTF16CharValidator(ZRCola::char_t *val = NULL);
|
||||
|
||||
///
|
||||
/// Copies this validator
|
||||
@@ -140,10 +140,10 @@ protected:
|
||||
virtual void OnIdle(wxIdleEvent& event);
|
||||
virtual void OnSearchText(wxCommandEvent& event);
|
||||
virtual void OnSearchMore(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesAll(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesNone(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesInvert(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesToggle(wxCommandEvent& event);
|
||||
virtual void OnBlocksAll(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksNone(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksInvert(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksToggle(wxCommandEvent& event);
|
||||
void OnSearchComplete(wxThreadEvent& event);
|
||||
virtual void OnResultSelectCell(wxGridEvent& event);
|
||||
virtual void OnResultCellDClick(wxGridEvent& event);
|
||||
@@ -168,8 +168,8 @@ public:
|
||||
|
||||
protected:
|
||||
LCID m_locale; ///< Locale for tag lookup
|
||||
bool m_searchChanged; ///< Did Search field or category selection change?
|
||||
std::map<ZRCola::chrcatid_t, int> m_ccOrder; ///< Character category order
|
||||
bool m_searchChanged; ///< Did Search field or block selection change?
|
||||
std::map<ZRCola::chrblkid_t, int> m_cbOrder; ///< Character block order
|
||||
bool m_unicodeChanged; ///< Did Unicode field change?
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ protected:
|
||||
|
||||
public:
|
||||
std::wstring m_search; ///< Search phrase
|
||||
std::set<ZRCola::chrcatid_t> m_cats; ///< Search categories
|
||||
std::set<ZRCola::chrblkid_t> m_blks; ///< Search blocks
|
||||
std::vector<std::pair<ZRCola::charrank_t, std::wstring> > m_hits; ///< Search results
|
||||
|
||||
protected:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -49,7 +49,7 @@ void wxZRColaComposerPanel::RestoreFromStateFile()
|
||||
wxFFile file(fileName, wxT("rb"));
|
||||
if (file.IsOpened()) {
|
||||
// Load source text.
|
||||
unsigned __int64 n;
|
||||
uint64_t n;
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString source;
|
||||
@@ -98,9 +98,11 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
// ZRCola decompose first, then re-compose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
|
||||
app->m_t_db.Translate(app->m_mainWnd->m_composition_id, dst2.data(), dst2.size(), dst, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
// Other translations
|
||||
@@ -109,7 +111,9 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
for (auto s = sets_begin; s != sets_end; ++s) {
|
||||
app->m_t_db.Translate(*s, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
}
|
||||
|
||||
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
||||
@@ -144,18 +148,24 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
for (auto s = sets_end; (s--) != sets_begin;) {
|
||||
app->m_t_db.TranslateInv(*s, dst.data(), dst.size(), dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
|
||||
map.invert();
|
||||
for (auto& m : map)
|
||||
m.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
if (app->m_mainWnd->m_composition) {
|
||||
// ZRCola decompose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), &app->m_lc_db, app->m_mainWnd->m_settings->m_lang, dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
|
||||
map.invert();
|
||||
for (auto& m : map)
|
||||
m.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
m_destination->GetSelection(&m_selDestination.first, &m_selDestination.second);
|
||||
@@ -195,16 +205,16 @@ void wxZRColaComposerPanel::OnSourcePaint(wxPaintEvent& event)
|
||||
m_selSource.second = to;
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(from),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(to ));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, from),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(from),
|
||||
m_selDestination.second = (long)MapToDestination(to ));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,16 +232,16 @@ void wxZRColaComposerPanel::OnSourceHexPaint(wxPaintEvent& event)
|
||||
m_selSourceHex.second = to;
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)m_mappingSourceHex.to_src(from),
|
||||
m_selSource.second = (long)m_mappingSourceHex.to_src(to ));
|
||||
m_selSource.first = (long)stdex::dst2src<size_t>(m_mappingSourceHex, from),
|
||||
m_selSource.second = (long)stdex::dst2src<size_t>(m_mappingSourceHex, to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(m_selSource.first ),
|
||||
m_selDestination.second = (long)MapToDestination(m_selSource.second));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,16 +278,16 @@ void wxZRColaComposerPanel::OnDestinationPaint(wxPaintEvent& event)
|
||||
m_selDestination.second = to;
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(from),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(to ));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, from),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(from),
|
||||
m_selSource.second = (long)MapToSource(to ));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.first ),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,16 +305,16 @@ void wxZRColaComposerPanel::OnDestinationHexPaint(wxPaintEvent& event)
|
||||
m_selDestinationHex.second = to;
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)m_mappingDestinationHex.to_src(from),
|
||||
m_selDestination.second = (long)m_mappingDestinationHex.to_src(to ));
|
||||
m_selDestination.first = (long)stdex::dst2src<size_t>(m_mappingDestinationHex, from),
|
||||
m_selDestination.second = (long)stdex::dst2src<size_t>(m_mappingDestinationHex, to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(m_selDestination.first ),
|
||||
m_selSource.second = (long)MapToSource(m_selDestination.second));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.first ),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,8 +418,8 @@ void wxZRColaComposerPanel::SetHexValue(wxTextCtrl *wnd, std::pair<long, long> &
|
||||
|
||||
wnd->SetValue(hex);
|
||||
wnd->SetSelection(
|
||||
range.first = (long)mapping.to_dst(from),
|
||||
range.second = (long)mapping.to_dst(to ));
|
||||
range.first = (long)stdex::src2dst<size_t>(mapping, from),
|
||||
range.second = (long)stdex::src2dst<size_t>(mapping, to ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
@@ -97,7 +97,7 @@ protected:
|
||||
inline size_t wxZRColaComposerPanel::MapToDestination(_In_ size_t src) const
|
||||
{
|
||||
for (auto m = m_mapping.cbegin(), m_end = m_mapping.cend(); m != m_end; ++m)
|
||||
src = m->to_dst(src);
|
||||
src = stdex::src2dst(*m, src);
|
||||
|
||||
return src;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ inline size_t wxZRColaComposerPanel::MapToDestination(_In_ size_t src) const
|
||||
inline size_t wxZRColaComposerPanel::MapToSource(_In_ size_t dst) const
|
||||
{
|
||||
for (auto m = m_mapping.crbegin(), m_end = m_mapping.crend(); m != m_end; ++m)
|
||||
dst = m->to_src(dst);
|
||||
dst = stdex::dst2src(*m, dst);
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -69,14 +69,6 @@ wxZRColaFrame::wxZRColaFrame() :
|
||||
m_transeq(NULL),
|
||||
wxZRColaFrameBase(NULL)
|
||||
{
|
||||
{
|
||||
// wxFrameBuilder 3.5 does not support wxAUI_TB_HORIZONTAL flag. Add it manually.
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarTranslate);
|
||||
paneInfo.LeftDockable(false);
|
||||
paneInfo.RightDockable(false);
|
||||
m_toolbarTranslate->SetWindowStyleFlag(m_toolbarTranslate->GetWindowStyleFlag() | wxAUI_TB_HORIZONTAL);
|
||||
}
|
||||
|
||||
// Populate list of translation sequences.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_toolTranslationSeq->Clear();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -30,7 +30,7 @@ delete old;
|
||||
static wxFBContextSensitiveHelpSetter s_wxFBSetTheHelpProvider;
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, long style, const wxString& name ) : wxFrame( parent, id, title, pos, parent->FromDIP(wxSize(600, 400)), style, name )
|
||||
wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, long style, const wxString& name ) : wxFrame( parent, id, title, pos, parent->FromDIP(wxSize(640, 480)), style, name )
|
||||
{
|
||||
this->SetSizeHints( FromDIP(wxSize( 150,150 )), wxDefaultSize );
|
||||
m_mgr.SetManagedWindow(this);
|
||||
@@ -48,27 +48,27 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxMenuItem* m_menuItemEditCut;
|
||||
m_menuItemEditCut = new wxMenuItem( m_menuEdit, wxID_CUT, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditCut->SetBitmaps( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCut->SetBitmaps( wxIconEx( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditCut->SetBitmap( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCut->SetBitmap( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditCut );
|
||||
|
||||
wxMenuItem* m_menuItemEditCopy;
|
||||
m_menuItemEditCopy = new wxMenuItem( m_menuEdit, wxID_COPY, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditCopy->SetBitmaps( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCopy->SetBitmaps( wxIconEx( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditCopy->SetBitmap( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCopy->SetBitmap( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditCopy );
|
||||
|
||||
wxMenuItem* m_menuItemEditPaste;
|
||||
m_menuItemEditPaste = new wxMenuItem( m_menuEdit, wxID_PASTE, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditPaste->SetBitmaps( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditPaste->SetBitmaps( wxIconEx( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditPaste->SetBitmap( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditPaste->SetBitmap( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditPaste );
|
||||
|
||||
@@ -89,45 +89,45 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxMenuItem* m_menuItemSendDestination;
|
||||
m_menuItemSendDestination = new wxMenuItem( m_menuEdit, wxID_SEND_DESTINATION, wxString( _("&Send Composed") ) + wxT('\t') + wxT("F5"), _("Send composed text to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendDestination->SetBitmaps( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendDestination->SetBitmaps( wxIconEx( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendDestination->SetBitmap( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendDestination->SetBitmap( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendDestination );
|
||||
|
||||
wxMenuItem* m_menuItemCopyDestinationAndReturn;
|
||||
m_menuItemCopyDestinationAndReturn = new wxMenuItem( m_menuEdit, wxID_COPY_DESTINATION_AND_RETURN, wxString( _("Copy Composed and &Return") ) + wxT('\t') + wxT("Ctrl+F5"), _("Copy composed text to clipboard and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmaps( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmaps( wxIconEx( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmap( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmap( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemCopyDestinationAndReturn );
|
||||
|
||||
wxMenuItem* m_menuItemSendSource;
|
||||
m_menuItemSendSource = new wxMenuItem( m_menuEdit, wxID_SEND_SOURCE, wxString( _("Send &Decomposed") ) + wxT('\t') + wxT("F6"), _("Send decomposed text to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendSource->SetBitmaps( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendSource->SetBitmaps( wxIconEx( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendSource->SetBitmap( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendSource->SetBitmap( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendSource );
|
||||
|
||||
wxMenuItem* m_menuItemCopySourceAndReturn;
|
||||
m_menuItemCopySourceAndReturn = new wxMenuItem( m_menuEdit, wxID_COPY_SOURCE_AND_RETURN, wxString( _("Copy Decomposed and Re&turn") ) + wxT('\t') + wxT("Ctrl+F6"), _("Copy decomposed text to clipboard and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemCopySourceAndReturn->SetBitmaps( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopySourceAndReturn->SetBitmaps( wxIconEx( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemCopySourceAndReturn->SetBitmap( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopySourceAndReturn->SetBitmap( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemCopySourceAndReturn );
|
||||
|
||||
wxMenuItem* m_menuItemSendAbort;
|
||||
m_menuItemSendAbort = new wxMenuItem( m_menuEdit, wxID_SEND_ABORT, wxString( _("Abort (De)composition") ) + wxT('\t') + wxT("Esc"), _("Abort composition and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendAbort->SetBitmaps( wxIcon( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendAbort->SetBitmaps( wxIconEx( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendAbort->SetBitmap( wxIcon( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendAbort->SetBitmap( wxIconEx( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendAbort );
|
||||
|
||||
@@ -211,21 +211,21 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
this->SetMenuBar( m_menubar );
|
||||
|
||||
m_toolbarEdit = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolEditCut = m_toolbarEdit->AddTool( wxID_CUT, _("Cut"), wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Cut"), _("Cut selection"), NULL );
|
||||
m_toolEditCut = m_toolbarEdit->AddTool( wxID_CUT, _("Cut"), wxIconEx( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Cut"), _("Cut selection"), NULL );
|
||||
|
||||
m_toolEditCopy = m_toolbarEdit->AddTool( wxID_COPY, _("Copy"), wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Copy"), _("Copy selection"), NULL );
|
||||
m_toolEditCopy = m_toolbarEdit->AddTool( wxID_COPY, _("Copy"), wxIconEx( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Copy"), _("Copy selection"), NULL );
|
||||
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIconEx( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
|
||||
m_toolbarEdit->Realize();
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo().Name( wxT("toolbarEdit") ).Top().Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo() .Name( wxT("toolbarEdit") ).Top() .Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIcon( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORIZONTAL|wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIconEx( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIconEx( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
|
||||
m_toolSendSource = m_toolbarTranslate->AddTool( wxID_SEND_SOURCE, _("Send Decomposed"), wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Send Decomposed"), _("Send decomposed text to source window"), NULL );
|
||||
m_toolSendSource = m_toolbarTranslate->AddTool( wxID_SEND_SOURCE, _("Send Decomposed"), wxIconEx( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Send Decomposed"), _("Send decomposed text to source window"), NULL );
|
||||
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
|
||||
@@ -235,15 +235,15 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolComposition->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolComposition );
|
||||
wxArrayString m_toolTranslationSeqChoices;
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( 180,-1 )), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( 200,-1 )), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolTranslationSeq );
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIcon( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIconEx( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
|
||||
m_toolbarTranslate->Realize();
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo().Name( wxT("toolbarCompose") ).Top().Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo() .Name( wxT("toolbarCompose") ).Top() .Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_panelChrCat = new wxZRColaCharacterCatalogPanel( this );
|
||||
|
||||
@@ -382,7 +382,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
this->SetSizer( bSizerMain );
|
||||
this->Layout();
|
||||
bSizerMain->Fit( this );
|
||||
m_timerSave.SetOwner( this, wxID_TIMER_SAVE );
|
||||
m_timerSave.SetOwner( this, m_timerSave.GetId() );
|
||||
|
||||
// Connect Events
|
||||
m_source->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnSourcePaint ), NULL, this );
|
||||
@@ -391,7 +391,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
m_destination->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Connect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Connect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
}
|
||||
|
||||
wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
@@ -403,7 +403,7 @@ wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
m_destination->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Disconnect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Disconnect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
|
||||
}
|
||||
|
||||
@@ -512,32 +512,32 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
wxBoxSizer* sbSizerSearch;
|
||||
sbSizerSearch = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxArrayString m_categoriesChoices;
|
||||
m_categories = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( -1,60 )), m_categoriesChoices, 0 );
|
||||
m_categories->SetToolTip( _("List of Unicode character categories to search in") );
|
||||
wxArrayString m_blocksChoices;
|
||||
m_blocks = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( -1,60 )), m_blocksChoices, 0 );
|
||||
m_blocks->SetToolTip( _("List of Unicode character blocks to search in") );
|
||||
|
||||
sbSizerSearch->Add( m_categories, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
sbSizerSearch->Add( m_blocks, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerCategoriesCtrl;
|
||||
bSizerCategoriesCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
wxBoxSizer* bSizerBlocksCtrl;
|
||||
bSizerBlocksCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_categoriesAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesAll->SetToolTip( _("Select all categories") );
|
||||
m_blocksAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksAll->SetToolTip( _("Select all categories") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesAll, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksAll, 0, wxALL, FromDIP(5) );
|
||||
|
||||
m_categoriesNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesNone->SetToolTip( _("Clear category selection") );
|
||||
m_blocksNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksNone->SetToolTip( _("Clear block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesNone, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksNone, 0, wxALL, FromDIP(5) );
|
||||
|
||||
m_categoriesInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesInvert->SetToolTip( _("Invert category selection") );
|
||||
m_blocksInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksInvert->SetToolTip( _("Invert block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesInvert, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksInvert, 0, wxALL, FromDIP(5) );
|
||||
|
||||
|
||||
sbSizerSearch->Add( bSizerCategoriesCtrl, 0, wxALIGN_RIGHT, FromDIP(5) );
|
||||
sbSizerSearch->Add( bSizerBlocksCtrl, 0, wxALIGN_RIGHT, FromDIP(5) );
|
||||
|
||||
|
||||
m_search_panel->SetSizer( sbSizerSearch );
|
||||
@@ -687,10 +687,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
|
||||
sbSizerPreview->Add( m_tags, 1, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
m_category = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_category->SetToolTip( _("Unicode character category") );
|
||||
m_block = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_block->SetToolTip( _("Unicode character block") );
|
||||
|
||||
sbSizerPreview->Add( m_category, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
sbSizerPreview->Add( m_block, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerNavigateButtons;
|
||||
bSizerNavigateButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
@@ -780,10 +780,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
this->Connect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -805,10 +805,10 @@ wxZRColaCharSelectBase::~wxZRColaCharSelectBase()
|
||||
this->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -934,7 +934,7 @@ wxZRColaAboutBase::wxZRColaAboutBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxBoxSizer* bSizerColumns;
|
||||
bSizerColumns = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_bitmapIcon = new wxStaticBitmap( this, wxID_ANY, wxIcon( wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(32), FromDIP(32) ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_bitmapIcon = new wxStaticBitmap( this, wxID_ANY, wxIconEx( wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 32, 32, this ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerColumns->Add( m_bitmapIcon, 0, wxALL, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerText;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -61,7 +61,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_CHARACTER_SELECTOR = 6000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
@@ -78,7 +78,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
wxID_HELP_UPDATE,
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
@@ -105,7 +105,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxZRColaCharacterCatalogPanel* m_panelChrCat;
|
||||
wxStatusBar* m_statusBar;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnIconize( wxIconizeEvent& event ) { event.Skip(); }
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
@@ -133,7 +133,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
wxID_TIMER_SAVE = 6000,
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
@@ -146,7 +146,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
@@ -161,6 +161,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
@@ -189,7 +190,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -199,6 +200,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
@@ -214,10 +216,10 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxSearchCtrl* m_search;
|
||||
wxHyperlinkCtrl* m_search_more;
|
||||
wxPanel* m_search_panel;
|
||||
wxCheckListBox* m_categories;
|
||||
wxHyperlinkCtrl* m_categoriesAll;
|
||||
wxHyperlinkCtrl* m_categoriesNone;
|
||||
wxHyperlinkCtrl* m_categoriesInvert;
|
||||
wxCheckListBox* m_blocks;
|
||||
wxHyperlinkCtrl* m_blocksAll;
|
||||
wxHyperlinkCtrl* m_blocksNone;
|
||||
wxHyperlinkCtrl* m_blocksInvert;
|
||||
wxZRColaCharGrid* m_gridResults;
|
||||
wxZRColaCharGrid* m_gridRecent;
|
||||
wxStaticText* m_labelUnicode;
|
||||
@@ -226,20 +228,20 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxGrid* m_gridPreview;
|
||||
wxTextCtrl* m_description;
|
||||
wxTextCtrl* m_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxTextCtrl* m_block;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchMore( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultsKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -258,6 +260,7 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Character Search"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharSelect") );
|
||||
|
||||
~wxZRColaCharSelectBase();
|
||||
|
||||
};
|
||||
@@ -284,7 +287,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsApply;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnLanguageUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnApplyButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -294,6 +297,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaSettingsBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaSettings") );
|
||||
|
||||
~wxZRColaSettingsBase();
|
||||
|
||||
};
|
||||
@@ -320,6 +324,7 @@ class wxZRColaAboutBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaAboutBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaAbout") );
|
||||
|
||||
~wxZRColaAboutBase();
|
||||
|
||||
};
|
||||
@@ -336,7 +341,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonClose;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnClose( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -345,6 +350,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaUpdaterBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Product Update"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaUpdater") );
|
||||
|
||||
~wxZRColaUpdaterBase();
|
||||
|
||||
};
|
||||
@@ -367,13 +373,14 @@ class wxZRColaCharRequestBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharRequestBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Request a New Character"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharRequest") );
|
||||
|
||||
~wxZRColaCharRequestBase();
|
||||
|
||||
};
|
||||
@@ -399,7 +406,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -416,6 +423,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,172 +1,171 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaSettings::wxZRColaSettings(wxWindow* parent) :
|
||||
m_lang_auto(true),
|
||||
m_lang(ZRCola::langid_t::blank),
|
||||
wxZRColaSettingsBase(parent)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_languages->Clear();
|
||||
for (size_t i = 0, n = app->m_lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = app->m_lang_db.idxLang[i];
|
||||
wxString
|
||||
label(lang.name(), lang.name_len()),
|
||||
label_tran(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_languages->Insert(label_tran, (unsigned int)i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnInitDialog(wxInitDialogEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
// Set state of auto-start according to Startup folder shortcut presence.
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
m_autoStart->SetValue(wxFileExists(linkName));
|
||||
#else
|
||||
m_autoStart->SetValue(false);
|
||||
m_panelAutoStart->Enable(false);
|
||||
#endif
|
||||
|
||||
m_languages->Enable(!m_lang_auto);
|
||||
(m_lang_auto ? m_langAuto : m_langManual)->SetValue(true);
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
ZRCola::language_db::indexLang::size_type start;
|
||||
m_languages->Select(app->m_lang_db.idxLang.find(ZRCola::language_db::language(m_lang), start) ? (int)start : -1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLanguageUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_languages->Enable(m_langManual->GetValue());
|
||||
|
||||
wxZRColaSettingsBase::OnLanguageUpdate(event);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnApplyButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
if (m_autoStart->IsChecked()) {
|
||||
// Create the shortcut.
|
||||
IShellLink *sl;
|
||||
HRESULT hr = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&sl);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Setup ZRCola shortcut.
|
||||
sl->SetPath(wxTheApp->argv[0]);
|
||||
sl->SetDescription(_("Start ZRCola automatically on logon"));
|
||||
sl->SetShowCmd(SW_SHOWMINNOACTIVE);
|
||||
|
||||
// Query IShellLink for the IPersistFile interface, used for saving the
|
||||
// shortcut in persistent storage.
|
||||
IPersistFile *pf;
|
||||
hr = sl->QueryInterface(IID_IPersistFile, (LPVOID*)&pf);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Save the link by calling IPersistFile::Save.
|
||||
hr = pf->Save(linkName, TRUE);
|
||||
pf->Release();
|
||||
}
|
||||
|
||||
sl->Release();
|
||||
}
|
||||
} else if (wxFileExists(linkName)) {
|
||||
// The shortcut already exists. Remove it.
|
||||
wxRemoveFile(linkName);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_langAuto->GetValue()) {
|
||||
m_lang_auto = true;
|
||||
#if defined(__WXMSW__)
|
||||
// Set update keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), m_lang);
|
||||
#endif
|
||||
} else {
|
||||
m_lang_auto = false;
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
const auto &lang = app->m_lang_db.idxLang[m_languages->GetSelection()];
|
||||
|
||||
if (m_lang != lang.lang) {
|
||||
m_lang = lang.lang;
|
||||
|
||||
// Notify destination text something changed and should re-inverse translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
app->m_mainWnd->m_panel->m_destination->ProcessWindowEvent(event2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaSettings::OnApplyButtonClick(event);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaSettings::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaSettings::wxPersistentZRColaSettings(wxZRColaSettings *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaSettings::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaSettings*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("langAuto"), wnd->m_lang_auto);
|
||||
SaveValue(wxT("lang" ), wxString::FromAscii(wnd->m_lang.data, _countof(wnd->m_lang.data)));
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaSettings::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaSettings*>(GetWindow());
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
wxString lang;
|
||||
|
||||
// Restore automatic language detection setting first.
|
||||
RestoreValue(wxT("langAuto"), &(wnd->m_lang_auto));
|
||||
if (wnd->m_lang_auto) {
|
||||
#if defined(__WXMSW__)
|
||||
// Set keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), wnd->m_lang);
|
||||
#endif
|
||||
} else if (RestoreValue(wxT("lang"), &lang) && lang.Length() == 3) {
|
||||
// The language was read from configuration.
|
||||
wnd->m_lang = lang.c_str();
|
||||
} else if (!app->m_lang_db.idxLang.empty()) {
|
||||
wnd->m_lang = app->m_lang_db.idxLang[0].lang;
|
||||
} else
|
||||
wnd->m_lang = ZRCola::langid_t::blank;
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaSettings::wxZRColaSettings(wxWindow* parent) :
|
||||
m_lang_auto(true),
|
||||
wxZRColaSettingsBase(parent)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_languages->Clear();
|
||||
for (size_t i = 0, n = app->m_lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = app->m_lang_db.idxLang[i];
|
||||
wxString
|
||||
label(lang.name(), lang.name_len()),
|
||||
label_tran(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_languages->Insert(label_tran, (unsigned int)i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnInitDialog(wxInitDialogEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
// Set state of auto-start according to Startup folder shortcut presence.
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
m_autoStart->SetValue(wxFileExists(linkName));
|
||||
#else
|
||||
m_autoStart->SetValue(false);
|
||||
m_panelAutoStart->Enable(false);
|
||||
#endif
|
||||
|
||||
m_languages->Enable(!m_lang_auto);
|
||||
(m_lang_auto ? m_langAuto : m_langManual)->SetValue(true);
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
ZRCola::language_db::indexLang::size_type start;
|
||||
m_languages->Select(app->m_lang_db.idxLang.find(ZRCola::language_db::language(m_lang), start) ? (int)start : -1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLanguageUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_languages->Enable(m_langManual->GetValue());
|
||||
|
||||
wxZRColaSettingsBase::OnLanguageUpdate(event);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnApplyButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
if (m_autoStart->IsChecked()) {
|
||||
// Create the shortcut.
|
||||
IShellLink *sl;
|
||||
HRESULT hr = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&sl);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Setup ZRCola shortcut.
|
||||
sl->SetPath(wxTheApp->argv[0]);
|
||||
sl->SetDescription(_("Start ZRCola automatically on logon"));
|
||||
sl->SetShowCmd(SW_SHOWMINNOACTIVE);
|
||||
|
||||
// Query IShellLink for the IPersistFile interface, used for saving the
|
||||
// shortcut in persistent storage.
|
||||
IPersistFile *pf;
|
||||
hr = sl->QueryInterface(IID_IPersistFile, (LPVOID*)&pf);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Save the link by calling IPersistFile::Save.
|
||||
hr = pf->Save(linkName, TRUE);
|
||||
pf->Release();
|
||||
}
|
||||
|
||||
sl->Release();
|
||||
}
|
||||
} else if (wxFileExists(linkName)) {
|
||||
// The shortcut already exists. Remove it.
|
||||
wxRemoveFile(linkName);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_langAuto->GetValue()) {
|
||||
m_lang_auto = true;
|
||||
#if defined(__WXMSW__)
|
||||
// Set update keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), m_lang);
|
||||
#endif
|
||||
} else {
|
||||
m_lang_auto = false;
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
const auto &lang = app->m_lang_db.idxLang[m_languages->GetSelection()];
|
||||
|
||||
if (m_lang != lang.lang) {
|
||||
m_lang = lang.lang;
|
||||
|
||||
// Notify destination text something changed and should re-inverse translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
app->m_mainWnd->m_panel->m_destination->ProcessWindowEvent(event2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaSettings::OnApplyButtonClick(event);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaSettings::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaSettings::wxPersistentZRColaSettings(wxZRColaSettings *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaSettings::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaSettings*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("langAuto"), wnd->m_lang_auto);
|
||||
SaveValue(wxT("lang" ), wxString::FromAscii(wnd->m_lang.data, _countof(wnd->m_lang.data)));
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaSettings::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaSettings*>(GetWindow());
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
wxString lang;
|
||||
|
||||
// Restore automatic language detection setting first.
|
||||
RestoreValue(wxT("langAuto"), &(wnd->m_lang_auto));
|
||||
if (wnd->m_lang_auto) {
|
||||
#if defined(__WXMSW__)
|
||||
// Set keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), wnd->m_lang);
|
||||
#endif
|
||||
} else if (RestoreValue(wxT("lang"), &lang) && lang.Length() == 3) {
|
||||
// The language was read from configuration.
|
||||
wnd->m_lang = lang.c_str();
|
||||
} else if (!app->m_lang_db.idxLang.empty()) {
|
||||
wnd->m_lang = app->m_lang_db.idxLang[0].lang;
|
||||
} else
|
||||
wnd->m_lang = ZRCola::langid_t();
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
|
||||
Binary file not shown.
@@ -66,9 +66,6 @@
|
||||
<ProjectReference Include="..\lib\libZRCola\build\libZRCola.vcxproj">
|
||||
<Project>{3c61929e-7289-4101-8d0a-da22d6e1aea8}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||
<Project>{D3E29951-D9F5-486D-A167-20AE8E90B1FA}</Project>
|
||||
</ProjectReference>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRColaCompile\n"
|
||||
"POT-Creation-Date: 2018-09-19 09:00+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:30+0100\n"
|
||||
"PO-Revision-Date: 2016-04-13 18:11+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
@@ -10,25 +10,25 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: main.cpp:251
|
||||
#: main.cpp:239
|
||||
msgid "Show this help message"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:252
|
||||
msgid "<input file>"
|
||||
#: main.cpp:240
|
||||
msgid "<Input file>"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:253
|
||||
msgid "<output file>"
|
||||
#: main.cpp:241
|
||||
msgid "<Output file>"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:254
|
||||
msgid "<output POT catalog>"
|
||||
#: main.cpp:242
|
||||
msgid "Output POT catalog"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
@@ -745,8 +745,6 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
set<ZRCola::chrcatid_t> categories_used;
|
||||
|
||||
{
|
||||
// Get characters.
|
||||
com_obj<ADORecordset> rs;
|
||||
@@ -756,7 +754,32 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
ZRCola::DBSource::character_desc_idx idxChrDsc, idxChrDscSub;
|
||||
ZRCola::DBSource::character_bank chrs;
|
||||
|
||||
// Phase 1: Parse characters and build indexes.
|
||||
// Phase 1: Get character blocks.
|
||||
com_obj<ADORecordset> rs2;
|
||||
if (src.SelectCharacterBlocks(rs2)) {
|
||||
size_t count2 = src.GetRecordsetCount(rs2);
|
||||
if (count2 < 0xffffffff) { // 4G check (-1 is reserved for error condition)
|
||||
// Parse character blocks and build index and data.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs2); rs2->MoveNext()) {
|
||||
// Read character block from the database.
|
||||
ZRCola::DBSource::chrblk cb;
|
||||
if (src.GetCharacterBlock(rs2, cb))
|
||||
chrs.idxChrBlk[cb.first] = std::move(cb.second);
|
||||
else
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0029: Error getting character block count from database or too many character blocks.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0028: Error getting character blocks from database. Please make sure the file is ZRCola.zrc compatible.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Phase 2: Parse characters and build indexes.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs); rs->MoveNext()) {
|
||||
// Read character from the database.
|
||||
ZRCola::DBSource::character chr;
|
||||
@@ -766,33 +789,61 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Phase 2: Build related character lists.
|
||||
// Phase 3: Build related character lists.
|
||||
chrs.build_related();
|
||||
|
||||
ZRCola::character_db db;
|
||||
{
|
||||
ZRCola::character_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChr.reserve(count);
|
||||
db.data .reserve(count*4);
|
||||
// Preallocate memory.
|
||||
db.idxChr.reserve(count);
|
||||
db.data.reserve(count * 4);
|
||||
|
||||
// Phase 3: Parse characters and build index and data.
|
||||
for (auto chr = chrs.cbegin(), chr_end = chrs.cend(); chr != chr_end; ++chr) {
|
||||
// Add character to index and data.
|
||||
db << *chr;
|
||||
// Phase 4: Parse characters and build index and data.
|
||||
for (auto chr = chrs.cbegin(), chr_end = chrs.cend(); chr != chr_end; ++chr) {
|
||||
// Add character to index and data.
|
||||
db << *chr;
|
||||
|
||||
// Add description (and keywords) to index.
|
||||
idxChrDsc .add_keywords(chr->second.terms, chr->first, 0);
|
||||
idxChrDscSub.add_keywords(chr->second.terms, chr->first, 3);
|
||||
// Add description (and keywords) to index.
|
||||
idxChrDsc.add_keywords(chr->second.terms, chr->first, 0);
|
||||
idxChrDscSub.add_keywords(chr->second.terms, chr->first, 3);
|
||||
}
|
||||
|
||||
// Mark category used.
|
||||
categories_used.insert(chr->second.cat);
|
||||
// Write characters to file.
|
||||
db.idxChr.sort();
|
||||
idxChrDsc.save(db.idxDsc);
|
||||
idxChrDscSub.save(db.idxDscSub);
|
||||
dst << ZRCola::character_rec(db);
|
||||
}
|
||||
|
||||
// Write characters to file.
|
||||
db.idxChr.sort();
|
||||
idxChrDsc .save(db.idxDsc );
|
||||
idxChrDscSub.save(db.idxDscSub);
|
||||
dst << ZRCola::character_rec(db);
|
||||
{
|
||||
ZRCola::chrblk_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChrId.reserve(chrs.idxChrBlk.size());
|
||||
db.idxRank.reserve(chrs.idxChrBlk.size());
|
||||
db.data.reserve(chrs.idxChrBlk.size() * 16);
|
||||
|
||||
// Phase 5: Parse character blocks and build index and data.
|
||||
for (auto& cb : chrs.idxChrBlk)
|
||||
{
|
||||
if (!cb.second.used) {
|
||||
// Skip unused character blocks.
|
||||
continue;
|
||||
}
|
||||
|
||||
if (build_pot)
|
||||
pot.insert(cb.second.name);
|
||||
|
||||
// Add character block to index and data.
|
||||
db << cb;
|
||||
}
|
||||
|
||||
// Write character blocks to file.
|
||||
db.idxChrId.sort();
|
||||
db.idxRank.sort();
|
||||
dst << ZRCola::chrblk_rec(db);
|
||||
}
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0017: Error getting character count from database or too many characters.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
@@ -803,52 +854,6 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// Get character categories.
|
||||
com_obj<ADORecordset> rs;
|
||||
if (src.SelectCharacterCategories(rs)) {
|
||||
size_t count = src.GetRecordsetCount(rs);
|
||||
if (count < 0xffffffff) { // 4G check (-1 is reserved for error condition)
|
||||
ZRCola::DBSource::chrcat cc;
|
||||
ZRCola::chrcat_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChrCat.reserve(count);
|
||||
db.idxRank .reserve(count);
|
||||
db.data .reserve(count*4);
|
||||
|
||||
// Parse character categories and build index and data.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs); rs->MoveNext()) {
|
||||
// Read character category from the database.
|
||||
if (src.GetCharacterCategory(rs, cc)) {
|
||||
if (build_pot)
|
||||
pot.insert(cc.name);
|
||||
|
||||
if (categories_used.find(cc.cat) == categories_used.end()) {
|
||||
// Skip empty character categories.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Add character category to index and data.
|
||||
db << cc;
|
||||
} else
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Write character categories to file.
|
||||
db.idxChrCat.sort();
|
||||
db.idxRank .sort();
|
||||
dst << ZRCola::chrcat_rec(db);
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0019: Error getting character category count from database or too many character categories.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0018: Error getting character categories from database. Please make sure the file is ZRCola.zrc compatible.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// Get characters tags.
|
||||
com_obj<ADORecordset> rs;
|
||||
@@ -981,10 +986,10 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
<< "\"Content-Transfer-Encoding: 8bit\\n\"" << endl
|
||||
<< "\"X-Generator: ZRColaCompile\\n\"" << endl;
|
||||
|
||||
wstring_convert<codecvt_utf8<wchar_t>> conv;
|
||||
charset_encoder<wchar_t, char> conv(stdex::wchar_t_charset, charset_id::utf8);
|
||||
for (auto p = pot.cbegin(); p != pot.cend(); ++p) {
|
||||
// Convert UTF-16 to UTF-8 and escape.
|
||||
string t(conv.to_bytes(*p)), u;
|
||||
string t(conv.convert(*p)), u;
|
||||
for (size_t i = 0, n = t.size(); i < n; i++) {
|
||||
char c = t[i];
|
||||
switch (c) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2018-2021 Amebis
|
||||
Copyright © 2018-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2018-2021 Amebis
|
||||
Copyright © 2018-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <wx/intl.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <stdex/idrec.h>
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#include <WinStd/Common.h>
|
||||
|
||||
|
||||
Binary file not shown.
@@ -39,7 +39,7 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IntDir>temp\$(ProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</IntDir>
|
||||
<IntDir>temp\$(ProjectName).$(Platform).$(Configuration)\</IntDir>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -16,14 +16,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZRColaCompile", "ZRColaComp
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxExtend", "lib\wxExtend\build\wxExtendLib.vcxproj", "{D3E29951-D9F5-486D-A167-20AE8E90B1FA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdex", "lib\stdex\build\stdex.vcxproj", "{518777CC-0A59-4415-A12A-82751ED75343}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRColaUI", "lib\libZRColaUI\build\libZRColaUI.vcxproj", "{C0A84BD2-3870-4CD6-B281-0AB322E3C579}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZRColaInstall", "ZRColaInstall\ZRColaInstall.vcxproj", "{5BD95B95-38B0-4C7D-9471-F99CA1203DF4}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinStd", "lib\WinStd\build\WinStd.vcxproj", "{47399D91-7EB9-41DE-B521-514BA5DB0C43}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
@@ -42,10 +38,6 @@ Global
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|Win32.Build.0 = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.Build.0 = Release|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|Win32.ActiveCfg = Release|Win32
|
||||
@@ -54,10 +46,6 @@ Global
|
||||
{5BD95B95-38B0-4C7D-9471-F99CA1203DF4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{5BD95B95-38B0-4C7D-9471-F99CA1203DF4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{5BD95B95-38B0-4C7D-9471-F99CA1203DF4}.Release|Win32.Build.0 = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -65,9 +53,7 @@ Global
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8} = {A7D28E0C-BB96-444D-AAB0-F22A6483FE5F}
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA} = {A7D28E0C-BB96-444D-AAB0-F22A6483FE5F}
|
||||
{518777CC-0A59-4415-A12A-82751ED75343} = {A7D28E0C-BB96-444D-AAB0-F22A6483FE5F}
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579} = {A7D28E0C-BB96-444D-AAB0-F22A6483FE5F}
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43} = {A7D28E0C-BB96-444D-AAB0-F22A6483FE5F}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {22B0355E-423C-4ACC-81F8-DAD72A8BEC0E}
|
||||
|
||||
3
ZRColaWS/.gitignore
vendored
Normal file
3
ZRColaWS/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/*.d
|
||||
/*.o
|
||||
/zrcolaws
|
||||
91
ZRColaWS/Makefile
Normal file
91
ZRColaWS/Makefile
Normal file
@@ -0,0 +1,91 @@
|
||||
CPPFLAGS := $(CPPFLAGS) -I../lib/libZRCola/include -I../lib/stdex/include -I../lib/oatpp-swagger/src -I../lib/oatpp/src
|
||||
LDFLAGS := $(LDFLAGS) -L../lib/libZRCola/lib -L../lib/oatpp-swagger/build/src -L../lib/oatpp/build/src
|
||||
LDLIBS := $(LDLIBS) -lZRCola -loatpp-swagger -loatpp -lstdc++
|
||||
SRCS := zrcolaws.cpp
|
||||
|
||||
include ../include/props.mak
|
||||
|
||||
.PHONY: all
|
||||
all: zrcolaws
|
||||
|
||||
zrcolaws: \
|
||||
../lib/oatpp/build/src/liboatpp.a \
|
||||
../lib/oatpp-swagger/build/src/liboatpp-swagger.a \
|
||||
../lib/libZRCola/lib/libZRCola.a \
|
||||
$(OBJS)
|
||||
$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
|
||||
|
||||
../lib/oatpp/build/src/liboatpp.a: ../lib/oatpp/build/Makefile
|
||||
$(MAKE) $(MFLAGS) -C ../lib/oatpp/build
|
||||
|
||||
../lib/oatpp/build/Makefile: ../lib/oatpp/CMakeLists.txt
|
||||
cmake -D OATPP_INSTALL=OFF -D OATPP_BUILD_TESTS=OFF -D OATPP_LINK_TEST_LIBRARY=OFF -S ../lib/oatpp -B ../lib/oatpp/build
|
||||
|
||||
../lib/oatpp-swagger/build/src/liboatpp-swagger.a: ../lib/oatpp-swagger/build/Makefile
|
||||
$(MAKE) $(MFLAGS) -C ../lib/oatpp-swagger/build
|
||||
|
||||
../lib/oatpp-swagger/build/Makefile: ../lib/oatpp-swagger/CMakeLists.txt
|
||||
cmake -D OATPP_INSTALL=OFF -D OATPP_BUILD_TESTS=OFF -D OATPP_MODULES_LOCATION=CUSTOM -D OATPP_DIR_SRC=${CURDIR}/../lib/oatpp/src -D OATPP_DIR_LIB=${CURDIR}/../lib/oatpp/build/src -S ../lib/oatpp-swagger -B ../lib/oatpp-swagger/build
|
||||
|
||||
../lib/libZRCola/lib/libZRCola.a:
|
||||
$(MAKE) $(MFLAGS) -C ../lib/libZRCola/build
|
||||
|
||||
.PHONY: install
|
||||
install: zrcolaws ../output/data/ZRCola.zrcdb
|
||||
install -d $(PREFIX)/bin/
|
||||
install -m 755 zrcolaws $(PREFIX)/bin/
|
||||
install -d $(PREFIX)/share/zrcola/
|
||||
install -m 644 ../output/data/ZRCola.zrcdb $(PREFIX)/share/zrcola/
|
||||
install -d $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/favicon-16x16.png $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/favicon-32x32.png $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/index.html $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/oauth2-redirect.html $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-bundle.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-bundle.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle-core.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle-core.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-standalone-preset.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-standalone-preset.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.css $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.css.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -d $(PREFIX)/etc/sysconfig/
|
||||
{ echo '#!/bin/sh'; \
|
||||
echo ''; \
|
||||
echo '# Interface to listen on. Default: localhost'; \
|
||||
echo '#HOST=0.0.0.0'; \
|
||||
echo ''; \
|
||||
echo '# Port to listen on. Default: 54591'; \
|
||||
echo '#PORT=54591'; \
|
||||
echo ''; \
|
||||
echo '# Additional zrcolaws command line options'; \
|
||||
echo '#OPTIONS=-4'; \
|
||||
} > $(PREFIX)/etc/sysconfig/zrcolaws
|
||||
install -d $(PREFIX)/lib/systemd/system/
|
||||
{ echo '[Unit]'; \
|
||||
echo 'Description=ZRCola Web Service'; \
|
||||
echo 'After=network.target'; \
|
||||
echo ''; \
|
||||
echo '[Service]'; \
|
||||
echo 'Environment="HOST=localhost" "PORT=54591"'; \
|
||||
echo 'EnvironmentFile=-$(PREFIX)/etc/sysconfig/zrcolaws'; \
|
||||
echo 'DynamicUser=yes'; \
|
||||
echo 'ExecStart=/usr/local/bin/zrcolaws --host $$HOST --port $$PORT $$OPTIONS'; \
|
||||
echo 'Type=exec'; \
|
||||
echo 'Restart=always'; \
|
||||
echo ''; \
|
||||
echo '[Install]'; \
|
||||
echo 'WantedBy=multi-user.target'; \
|
||||
echo 'RequiredBy=network.target'; \
|
||||
} > $(PREFIX)/lib/systemd/system/zrcolaws.service
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm -r *.{d,o} zrcolaws
|
||||
|
||||
include ../include/targets.mak
|
||||
-include $(DEPS)
|
||||
23
ZRColaWS/README.md
Normal file
23
ZRColaWS/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# ZRCola Web Service
|
||||
|
||||
## Building and Installation
|
||||
|
||||
1. Install prerequisites: `sudo dnf install git cmake gcc gcc-c++ make libatomic`
|
||||
|
||||
2. Clone this Git repository: `git clone --recursive https://git.amebis.si/Amebis/ZRCola.git`
|
||||
|
||||
3. Build ZRColaWS: `make -C ZRCola/ZRColaWS`
|
||||
|
||||
4. Install ZRColaWS: `sudo make -C ZRCola/ZRColaWS install`
|
||||
|
||||
5. Configure ZRColaWS by editing _/usr/local/etc/sysconfig/zrcolaws_
|
||||
|
||||
6. Start ZRColaWS: `sudo systemctl start zrcolaws.service`
|
||||
|
||||
7. Configure ZRColaWS for auto-start: `sudo systemctl enable zrcolaws.service`
|
||||
|
||||
8. Remember to open webservice port in firewall, should the service require external access.
|
||||
|
||||
## Usage
|
||||
|
||||
Web service API documentation is available at _http://host:port/swagger/ui_.
|
||||
73
ZRColaWS/appcomponent.hpp
Normal file
73
ZRColaWS/appcomponent.hpp
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include "controller.hpp"
|
||||
#include <oatpp-swagger/Model.hpp>
|
||||
#include <oatpp-swagger/Resources.hpp>
|
||||
#include <oatpp/core/base/CommandLineArguments.hpp>
|
||||
#include <oatpp/core/macro/component.hpp>
|
||||
#include <oatpp/network/Server.hpp>
|
||||
#include <oatpp/network/tcp/server/ConnectionProvider.hpp>
|
||||
#include <oatpp/parser/json/mapping/ObjectMapper.hpp>
|
||||
#include <oatpp/web/server/HttpConnectionHandler.hpp>
|
||||
|
||||
class AppComponent
|
||||
{
|
||||
protected:
|
||||
oatpp::network::Address m_address;
|
||||
|
||||
public:
|
||||
AppComponent(const oatpp::network::Address& address) : m_address(address) {}
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([this] {
|
||||
return oatpp::network::tcp::server::ConnectionProvider::createShared({m_address.host, m_address.port, m_address.family});
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
|
||||
return oatpp::web::server::HttpRouter::createShared();
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
|
||||
return oatpp::web::server::HttpConnectionHandler::createShared(router);
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
|
||||
auto serializerConfig = oatpp::parser::json::mapping::Serializer::Config::createShared();
|
||||
serializerConfig->escapeFlags &= ~oatpp::parser::json::Utils::FLAG_ESCAPE_UTF8CHAR;
|
||||
return oatpp::parser::json::mapping::ObjectMapper::createShared(
|
||||
serializerConfig,
|
||||
oatpp::parser::json::mapping::Deserializer::Config::createShared());
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::Server>, server)([] {
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, connectionHandler);
|
||||
return oatpp::network::Server::createShared(connectionProvider, connectionHandler);
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::DocumentInfo>, swaggerDocumentInfo)([] {
|
||||
oatpp::swagger::DocumentInfo::Builder builder;
|
||||
builder
|
||||
.setTitle("ZRCola Web Service")
|
||||
.setDescription(
|
||||
"ZRCola is an input system designed mainly, although not exclusively, for linguistic use. "
|
||||
"It allows the user to combine basic letters with any diacritic marks and insert the resulting complex characters into the texts with ease.")
|
||||
.setVersion(PRODUCT_VERSION_STR)
|
||||
.setContactName("ZRCola")
|
||||
.setContactUrl("https://zrcola.zrc-sazu.si/en/")
|
||||
|
||||
.setLicenseName("GNU General Public License, Version 3")
|
||||
.setLicenseUrl("https://www.gnu.org/licenses/gpl-3.0.en.html");
|
||||
return builder.build();
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::Resources>, swaggerResources)([] {
|
||||
return oatpp::swagger::Resources::loadResources(PREFIX "/share/zrcola/res");
|
||||
}());
|
||||
};
|
||||
243
ZRColaWS/controller.hpp
Normal file
243
ZRColaWS/controller.hpp
Normal file
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include "dto.hpp"
|
||||
#include "iconverter.hpp"
|
||||
#include "zrcolaws.hpp"
|
||||
#include <zrcola/translate.h>
|
||||
#include <oatpp/core/macro/codegen.hpp>
|
||||
#include <oatpp/core/macro/component.hpp>
|
||||
#include <oatpp/web/server/api/ApiController.hpp>
|
||||
|
||||
#include OATPP_CODEGEN_BEGIN(ApiController)
|
||||
|
||||
class Controller : public oatpp::web::server::api::ApiController
|
||||
{
|
||||
public:
|
||||
Controller(const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& defaultObjectMapper, const oatpp::String &routerPrefix = nullptr) :
|
||||
oatpp::web::server::api::ApiController(defaultObjectMapper, routerPrefix)
|
||||
{}
|
||||
|
||||
ADD_CORS(getAbout)
|
||||
ENDPOINT_INFO(getAbout) {
|
||||
info->summary = "Returns service information";
|
||||
info->addResponse<Object<dto::About>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/about", getAbout)
|
||||
{
|
||||
auto dto = dto::About::createShared();
|
||||
dto->vendor = PRODUCT_CFG_VENDOR;
|
||||
dto->application = PRODUCT_CFG_APPLICATION;
|
||||
dto->version = PRODUCT_VERSION_STR;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
}
|
||||
|
||||
ADD_CORS(getTranset)
|
||||
ENDPOINT_INFO(getTranset) {
|
||||
info->summary = "Lists supported translation sets";
|
||||
info->description = "Each translation set describes a set of replacements that are performed to translate text from one script or encoding to another. ";
|
||||
info->addResponse<oatpp::Vector<oatpp::Object<dto::TranSet>>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/transet", getTranset)
|
||||
{
|
||||
try {
|
||||
utf16toutf8 c;
|
||||
auto result = oatpp::Vector<oatpp::Object<dto::TranSet>>::createShared();
|
||||
auto dto = dto::TranSet::createShared();
|
||||
dto->set = ZRCOLA_TRANSETID_DEFAULT;
|
||||
dto->src = "ZRCola Decomposed";
|
||||
dto->dst = "ZRCola Composed";
|
||||
result->push_back(dto);
|
||||
for (size_t i = 0, n = ts_db.idxTranSet.size(); i < n; i++) {
|
||||
const auto &ts = ts_db.idxTranSet[i];
|
||||
dto = dto::TranSet::createShared();
|
||||
dto->set = ts.set;
|
||||
dto->src = c.convert(ts.src(), ts.src_len());
|
||||
dto->dst = c.convert(ts.dst(), ts.dst_len());
|
||||
result->push_back(dto);
|
||||
}
|
||||
dto = dto::TranSet::createShared();
|
||||
dto->set = ZRCOLA_TRANSETID_UNICODE;
|
||||
dto->src = "ZRCola Decomposed";
|
||||
dto->dst = "Unicode";
|
||||
result->push_back(dto);
|
||||
return createDtoResponse(Status::CODE_200, result);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(getLanguage)
|
||||
ENDPOINT_INFO(getLanguage) {
|
||||
info->summary = "Lists supported languages";
|
||||
info->description = "Each language describes a set of special characters that are specific to that language (e.g. č, š, ž in Slovenian, or ä, ö, ü in German).";
|
||||
info->addResponse<oatpp::Vector<oatpp::Object<dto::Language>>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/language", getLanguage)
|
||||
{
|
||||
try {
|
||||
utf16toutf8 c;
|
||||
auto result = oatpp::Vector<oatpp::Object<dto::Language>>::createShared();
|
||||
for (size_t i = 0, n = lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = lang_db.idxLang[i];
|
||||
auto dto = dto::Language::createShared();
|
||||
dto->lang = std::string(&lang.lang.data[0], strnlen(lang.lang.data, std::size(lang.lang.data)));
|
||||
dto->name = c.convert(lang.name(), lang.name_len());
|
||||
result->push_back(dto);
|
||||
}
|
||||
return createDtoResponse(Status::CODE_200, result);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(postTranslate)
|
||||
ENDPOINT_INFO(postTranslate) {
|
||||
info->summary = "Translate text";
|
||||
info->description =
|
||||
"Performs any number of supported translations (see /transet) on a given input text in a sequence. "
|
||||
"Together with the output text, it also returns character index mapping between input and output texts.";
|
||||
auto transet = oatpp::Vector<UInt16>::createShared();
|
||||
transet->push_back(ZRCOLA_TRANSETID_DEFAULT);
|
||||
auto dto = dto::TranslateIn::createShared();
|
||||
dto->transet = transet;
|
||||
dto->text = "To je test.";
|
||||
info->addConsumes<Object<dto::TranslateIn>>("application/json")
|
||||
.addExample("Perform ZRCola composition", dto);
|
||||
info->addResponse<Object<dto::TranslateOut>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("POST", "/translate", postTranslate, BODY_DTO(Object<dto::TranslateIn>, input))
|
||||
{
|
||||
try {
|
||||
utf8toutf16 cIn;
|
||||
std::u16string dst, dst2;
|
||||
if (input->text)
|
||||
dst = cIn.convert(*input->text);
|
||||
size_t src_len = dst.size();
|
||||
std::vector<ZRCola::mapping_vector> mapping;
|
||||
if (input->transet) {
|
||||
ZRCola::mapping_vector map;
|
||||
const auto ts_end = input->transet->cend();
|
||||
for (auto ts = input->transet->cbegin(); ts != ts_end; ++ts) {
|
||||
switch (*ts) {
|
||||
case ZRCOLA_TRANSETID_DEFAULT:
|
||||
case ZRCOLA_TRANSETID_UNICODE:
|
||||
// Decompose first, then re-compose.
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
t_db.Translate(*ts, dst2.data(), dst2.size(), dst, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
break;
|
||||
|
||||
default:
|
||||
t_db.Translate(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
utf16toutf8 cOut;
|
||||
auto dto = dto::TranslateOut::createShared();
|
||||
dto->text = cOut.convert(dst);
|
||||
auto map = oatpp::Vector<oatpp::UInt32>::createShared();
|
||||
auto m_end = mapping.cend();
|
||||
for (size_t i = 0; i < src_len; ++i) {
|
||||
auto j = i;
|
||||
for (auto m = mapping.cbegin(); m != m_end; ++m)
|
||||
j = m->to_dst(j);
|
||||
map->push_back(j);
|
||||
}
|
||||
dto->map = map;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(postTranslateInv)
|
||||
ENDPOINT_INFO(postTranslateInv) {
|
||||
info->summary = "Inverse translate text";
|
||||
info->description =
|
||||
"Performs any number of supported translations (see /transet) on a given input text in a sequence in reverse. "
|
||||
"Together with the output text, it also returns character index mapping between input and output texts.";
|
||||
auto transet = oatpp::Vector<UInt16>::createShared();
|
||||
transet->push_back(ZRCOLA_TRANSETID_DEFAULT);
|
||||
auto dto = dto::TranslateIn::createShared();
|
||||
dto->transet = transet;
|
||||
dto->text = "T ťᵉⓢṭ.";
|
||||
dto->lang = "slv";
|
||||
info->addConsumes<Object<dto::TranslateIn>>("application/json")
|
||||
.addExample("Perform ZRCola decomposition", dto);
|
||||
info->addResponse<Object<dto::TranslateOut>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("POST", "/translateInv", postTranslateInv, BODY_DTO(Object<dto::TranslateIn>, input))
|
||||
{
|
||||
try {
|
||||
utf8toutf16 cIn;
|
||||
std::u16string dst, dst2;
|
||||
ZRCola::langid_t lang;
|
||||
if (input->text)
|
||||
dst = cIn.convert(*input->text);
|
||||
lang = input->lang->c_str();
|
||||
size_t src_len = dst.size();
|
||||
std::vector<ZRCola::mapping_vector> mapping;
|
||||
if (input->transet) {
|
||||
ZRCola::mapping_vector map;
|
||||
const auto ts_begin = input->transet->cbegin();
|
||||
for (auto ts = input->transet->cend(); (ts--) != ts_begin; ) {
|
||||
switch (*ts) {
|
||||
case ZRCOLA_TRANSETID_DEFAULT:
|
||||
case ZRCOLA_TRANSETID_UNICODE:
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), &lc_db, lang, dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
map.invert();
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
break;
|
||||
|
||||
default:
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
map.invert();
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
utf16toutf8 cOut;
|
||||
auto dto = dto::TranslateOut::createShared();
|
||||
dto->text = cOut.convert(dst);
|
||||
auto map = oatpp::Vector<oatpp::UInt32>::createShared();
|
||||
auto m_end = mapping.crend();
|
||||
for (size_t i = 0; i < src_len; ++i) {
|
||||
auto j = i;
|
||||
for (auto m = mapping.crbegin(); m != m_end; ++m)
|
||||
j = m->to_src(j);
|
||||
map->push_back(j);
|
||||
}
|
||||
dto->map = map;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#include OATPP_CODEGEN_END(ApiController)
|
||||
90
ZRColaWS/dto.hpp
Normal file
90
ZRColaWS/dto.hpp
Normal file
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <oatpp/core/data/mapping/type/Object.hpp>
|
||||
#include <oatpp/core/macro/codegen.hpp>
|
||||
#include <oatpp/core/Types.hpp>
|
||||
|
||||
#include OATPP_CODEGEN_BEGIN(DTO)
|
||||
|
||||
namespace dto {
|
||||
|
||||
class About : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(About, DTO)
|
||||
|
||||
DTO_FIELD_INFO(vendor) { info->description = "Application vendor"; }
|
||||
DTO_FIELD(String, vendor);
|
||||
|
||||
DTO_FIELD_INFO(application) { info->description = "Application name"; }
|
||||
DTO_FIELD(String, application);
|
||||
|
||||
DTO_FIELD_INFO(version) { info->description = "Application version"; }
|
||||
DTO_FIELD(String, version);
|
||||
};
|
||||
|
||||
class TranSet : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranSet, DTO)
|
||||
|
||||
DTO_FIELD_INFO(set) { info->description = "Translation set ID"; }
|
||||
DTO_FIELD(UInt16, set);
|
||||
|
||||
DTO_FIELD_INFO(src) { info->description = "Input transcript name in English"; }
|
||||
DTO_FIELD(String, src);
|
||||
|
||||
DTO_FIELD_INFO(dst) { info->description = "Output transcript name in English"; }
|
||||
DTO_FIELD(String, dst);
|
||||
};
|
||||
|
||||
class Language : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(Language, DTO)
|
||||
|
||||
DTO_FIELD_INFO(lang) { info->description = "Language ID"; }
|
||||
DTO_FIELD(String, lang);
|
||||
|
||||
DTO_FIELD_INFO(name) { info->description = "Language name in English"; }
|
||||
DTO_FIELD(String, name);
|
||||
};
|
||||
|
||||
class TranslateIn : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranslateIn, DTO)
|
||||
|
||||
DTO_FIELD_INFO(transet) {
|
||||
info->description = "Array of one or multiple translation set IDs to perform translation on the text. When inverse translating, the translation sets are read in reverse order listed in this array. Use /transet to get IDs of all supported translation sets.";
|
||||
info->required = true;
|
||||
}
|
||||
DTO_FIELD(Vector<UInt16>, transet);
|
||||
|
||||
DTO_FIELD_INFO(text) {
|
||||
info->description = "Text to be translated";
|
||||
info->required = true;
|
||||
}
|
||||
DTO_FIELD(String, text);
|
||||
|
||||
DTO_FIELD_INFO(lang) {
|
||||
info->description = "Language ID of the text to be translated. This is used on inverse translating to skip decomposing language-specific common characters (e.g. č, š, ž in Slovenian, or ä, ö, ü in German). Use /language to get IDs of all supported languages.";
|
||||
}
|
||||
DTO_FIELD(String, lang) = "slv";
|
||||
};
|
||||
|
||||
class TranslateOut : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranslateOut, DTO)
|
||||
|
||||
DTO_FIELD_INFO(text) { info->description = "Translated text"; }
|
||||
DTO_FIELD(String, text);
|
||||
|
||||
DTO_FIELD_INFO(map) { info->description = "Character index mapping between input and translated text. The map[i] value represents the index of the beginning of a character (in translated text) that translated from the character (in the input text) beginning at index i. All input indexes are measured in characters after input string is translated to UTF-16, and all output indexes are measured in characters before output string is translated from UTF-16."; }
|
||||
DTO_FIELD(Vector<UInt32>, map);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#include OATPP_CODEGEN_END(DTO)
|
||||
75
ZRColaWS/iconverter.hpp
Normal file
75
ZRColaWS/iconverter.hpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdex/compat.hpp>
|
||||
#include <iconv.h>
|
||||
#include <cstring>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
inline static std::runtime_error errno_error(_In_z_ const char *file, _In_ int line, _In_z_ const char *func)
|
||||
{
|
||||
int _errno = errno;
|
||||
return std::runtime_error(
|
||||
std::string(file) + ":" + std::to_string(line) +
|
||||
std::string(func) + " error " + std::to_string(_errno) + ": " +
|
||||
std::strerror(_errno));
|
||||
}
|
||||
|
||||
template <typename T_from, typename T_to>
|
||||
class iconverter
|
||||
{
|
||||
public:
|
||||
iconverter(_In_z_ const char* from, _In_z_ const char* to)
|
||||
{
|
||||
m_handle = iconv_open(to, from);
|
||||
if (m_handle == (iconv_t)-1)
|
||||
throw errno_error(__FILE__, __LINE__, __FUNCTION__);
|
||||
}
|
||||
|
||||
~iconverter()
|
||||
{
|
||||
iconv_close(m_handle);
|
||||
}
|
||||
|
||||
std::basic_string<T_to> convert(_In_z_count_(count) const T_from* input, _In_ size_t count) const
|
||||
{
|
||||
T_to buf[0x100];
|
||||
std::basic_string<T_to> result;
|
||||
size_t inSize = sizeof(T_from) * count;
|
||||
do {
|
||||
T_to* output = &buf[0];
|
||||
size_t outSize = sizeof(buf);
|
||||
errno = 0;
|
||||
iconv(m_handle, (char**)&input, &inSize, (char**)&output, &outSize);
|
||||
if (errno)
|
||||
throw errno_error(__FILE__, __LINE__, __FUNCTION__);
|
||||
result.insert(result.end(), buf, (T_to*)((char*)buf + sizeof(buf) - outSize));
|
||||
} while (inSize);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::basic_string<T_to> convert(_In_ const std::basic_string<T_from>& input)
|
||||
{
|
||||
return convert(input.c_str(), input.length());
|
||||
}
|
||||
|
||||
protected:
|
||||
iconv_t m_handle;
|
||||
};
|
||||
|
||||
class utf16toutf8 : public iconverter<char16_t, char>
|
||||
{
|
||||
public:
|
||||
utf16toutf8() : iconverter("UTF-16LE", "UTF-8") {}
|
||||
};
|
||||
|
||||
class utf8toutf16 : public iconverter<char, char16_t>
|
||||
{
|
||||
public:
|
||||
utf8toutf16() : iconverter("UTF-8", "UTF-16LE") {}
|
||||
};
|
||||
27
ZRColaWS/stdlogger.hpp
Normal file
27
ZRColaWS/stdlogger.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <oatpp/core/base/Environment.hpp>
|
||||
#include <iostream>
|
||||
#include <mutex>
|
||||
|
||||
class StdLogger : public oatpp::base::Logger
|
||||
{
|
||||
private:
|
||||
std::mutex m_lock;
|
||||
|
||||
public:
|
||||
StdLogger() {}
|
||||
|
||||
void log(v_uint32 priority, const std::string& tag, const std::string& message) override
|
||||
{
|
||||
if (!isLogPriorityEnabled(priority))
|
||||
return;
|
||||
std::lock_guard<std::mutex> guard(m_lock);
|
||||
(priority < oatpp::base::Logger::PRIORITY_W ? std::cout : std::cerr) << tag << ": " << message << std::endl;
|
||||
}
|
||||
};
|
||||
176
ZRColaWS/zrcolaws.cpp
Normal file
176
ZRColaWS/zrcolaws.cpp
Normal file
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#include "appcomponent.hpp"
|
||||
#include "controller.hpp"
|
||||
#include "stdlogger.hpp"
|
||||
#include "zrcolaws.hpp"
|
||||
#include <oatpp-swagger/Controller.hpp>
|
||||
#include <oatpp/core/base/CommandLineArguments.hpp>
|
||||
#include <oatpp/network/Server.hpp>
|
||||
#include <signal.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
using namespace ZRCola;
|
||||
|
||||
translation_db t_db;
|
||||
transet_db ts_db;
|
||||
// transeq_db tsq_db;
|
||||
langchar_db lc_db;
|
||||
language_db lang_db;
|
||||
// character_db chr_db;
|
||||
// chrblk_db cb_db;
|
||||
// chrtag_db ct_db;
|
||||
// tagname_db tn_db;
|
||||
// highlight_db h_db;
|
||||
|
||||
static void load_database()
|
||||
{
|
||||
fstream dat(PREFIX "/share/zrcola/ZRCola.zrcdb", ios_base::in | ios_base::binary);
|
||||
if (!dat.good())
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb not found or cannot be opened.");
|
||||
|
||||
if (!stdex::idrec::find<recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(recordid_t)))
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb is not a valid ZRCola database.");
|
||||
|
||||
recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(recordsize_t));
|
||||
if (dat.good()) {
|
||||
bool has_translation_data = false;
|
||||
|
||||
for (;;) {
|
||||
recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == translation_rec::id()) {
|
||||
dat >> translation_rec(t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
} else {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading translation data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
t_db.clear();
|
||||
}
|
||||
} else if (id == transet_rec::id()) {
|
||||
dat >> transet_rec(ts_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading translation set data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
ts_db.clear();
|
||||
}
|
||||
// } else if (id == transeq_rec::id()) {
|
||||
// dat >> transeq_rec(tsq_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading translation sequence data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// tsq_db.clear();
|
||||
// }
|
||||
} else if (id == langchar_rec::id()) {
|
||||
dat >> langchar_rec(lc_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading language character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
lc_db.clear();
|
||||
}
|
||||
} else if (id == language_rec::id()) {
|
||||
dat >> language_rec(lang_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading language character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
lang_db.clear();
|
||||
}
|
||||
// } else if (id == character_rec::id()) {
|
||||
// dat >> character_rec(chr_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// chr_db.clear();
|
||||
// }
|
||||
// } else if (id == chrblk_rec::id()) {
|
||||
// dat >> chrblk_rec(cb_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character block data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// cb_db.clear();
|
||||
// }
|
||||
// } else if (id == chrtag_rec::id()) {
|
||||
// dat >> chrtag_rec(ct_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character tag data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// ct_db.clear();
|
||||
// }
|
||||
// } else if (id == tagname_rec::id()) {
|
||||
// dat >> tagname_rec(tn_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading tag name data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// tn_db.clear();
|
||||
// }
|
||||
// } else if (id == highlight_rec::id()) {
|
||||
// dat >> highlight_rec(h_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading highlight data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// h_db.clear();
|
||||
// }
|
||||
} else
|
||||
stdex::idrec::ignore<recordsize_t, ZRCOLA_RECORD_ALIGN>(dat);
|
||||
}
|
||||
|
||||
if (!has_translation_data)
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb has no translation data.");
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_handler(int s)
|
||||
{
|
||||
OATPP_LOGD(__FUNCTION__, "Caught signal %d", s);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::Server>, server);
|
||||
server->stop();
|
||||
}
|
||||
|
||||
int main(int argc, const char* argv[])
|
||||
{
|
||||
auto logger = std::make_shared<StdLogger>();
|
||||
oatpp::base::Environment::init(logger);
|
||||
try {
|
||||
{
|
||||
oatpp::base::CommandLineArguments cmdArgs(argc, argv);
|
||||
if (cmdArgs.hasArgument("-?") || cmdArgs.hasArgument("--help")) {
|
||||
cerr << "ZRColaWS " << PRODUCT_VERSION_STR << " Copyright © 2022 Amebis" << endl;
|
||||
cerr << endl;
|
||||
cerr << argv[0] << " [--host <interface name>] [--port <port number>] [-4|-6]" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
load_database();
|
||||
|
||||
struct sigaction sigIntHandler;
|
||||
sigIntHandler.sa_handler = sig_handler;
|
||||
sigemptyset(&sigIntHandler.sa_mask);
|
||||
sigIntHandler.sa_flags = 0;
|
||||
sigaction(SIGINT, &sigIntHandler, NULL);
|
||||
|
||||
oatpp::String host = cmdArgs.getNamedArgumentValue("--host", "localhost");
|
||||
v_uint16 port = oatpp::utils::conversion::strToInt32(cmdArgs.getNamedArgumentValue("--port", "54591"));
|
||||
oatpp::network::Address::Family family = oatpp::network::Address::UNSPEC;
|
||||
if (cmdArgs.hasArgument("-4"))
|
||||
family = oatpp::network::Address::IP_4;
|
||||
else if (cmdArgs.hasArgument("-6"))
|
||||
family = oatpp::network::Address::IP_6;
|
||||
AppComponent components({host, port, family});
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, objectMapper);
|
||||
auto controller = std::make_shared<Controller>(objectMapper);
|
||||
router->addController(controller);
|
||||
auto swaggerController = oatpp::swagger::Controller::createShared(controller->getEndpoints());
|
||||
router->addController(swaggerController);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
|
||||
OATPP_LOGI(__FUNCTION__, "Server " PRODUCT_VERSION_STR " starting on %s:%s",
|
||||
connectionProvider->getProperty("host").getData(), connectionProvider->getProperty("port").getData());
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::Server>, server);
|
||||
server->run();
|
||||
OATPP_LOGI(__FUNCTION__, "Server stopped");
|
||||
}
|
||||
oatpp::base::Environment::destroy();
|
||||
} catch (exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
24
ZRColaWS/zrcolaws.hpp
Normal file
24
ZRColaWS/zrcolaws.hpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#ifndef PREFIX
|
||||
#define PREFIX "/usr/local"
|
||||
#endif
|
||||
|
||||
extern ZRCola::translation_db t_db;
|
||||
extern ZRCola::transet_db ts_db;
|
||||
// extern ZRCola::transeq_db tsq_db;
|
||||
extern ZRCola::langchar_db lc_db;
|
||||
extern ZRCola::language_db lang_db;
|
||||
// extern ZRCola::character_db chr_db;
|
||||
// extern ZRCola::chrblk_db cb_db;
|
||||
// extern ZRCola::chrtag_db ct_db;
|
||||
// extern ZRCola::tagname_db tn_db;
|
||||
// extern ZRCola::highlight_db h_db;
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2017-2021 Amebis
|
||||
Copyright © 2017-2022 Amebis
|
||||
-->
|
||||
<package>
|
||||
<job id="CanoPerm">
|
||||
<runtime>
|
||||
<description>Generates character index permutations - Amebis, Copyright © 2017-2021</description>
|
||||
<description>Generates character index permutations - Amebis, Copyright © 2017-2022</description>
|
||||
<unnamed name="<Pattern>" required="true" helpstring="Cannonical form (X=unmoveable character; 0-9=moveable character, characters of the same number must preserve global order of appearance; maximum 10 characters)"/>
|
||||
<example>
|
||||
Example:
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<package>
|
||||
<job id="InstFont">
|
||||
<runtime>
|
||||
<description>Installs font - Amebis, Copyright © 2016-2021</description>
|
||||
<description>Installs font - Amebis, Copyright © 2016-2022</description>
|
||||
<unnamed name="<Shortcut.lnk>" required="true" helpstring="Shortcut file to create"/>
|
||||
<example>
|
||||
Example:
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 1991-2021 Amebis
|
||||
Copyright © 1991-2022 Amebis
|
||||
-->
|
||||
<package>
|
||||
<job id="MkLnk">
|
||||
<runtime>
|
||||
<description>Creates shortcut to a program - Amebis, Copyright © 1991-2021</description>
|
||||
<description>Creates shortcut to a program - Amebis, Copyright © 1991-2022</description>
|
||||
<unnamed name="<Shortcut.lnk>" required="true" helpstring="Shortcut file to create"/>
|
||||
<unnamed name="<Target>" required="true" helpstring="Target file the shortcut invokes"/>
|
||||
<named name="A" type="string" required="false" helpstring="Command line arguments"/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<package>
|
||||
<job id="CharImport">
|
||||
|
||||
1
include/.gitignore
vendored
1
include/.gitignore
vendored
@@ -1,2 +1 @@
|
||||
/UpdaterKeypair.txt
|
||||
/UpdaterKeyPrivate.bin
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
@@ -20,11 +20,7 @@
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||
<SetChecksum>true</SetChecksum>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Target Name="Sign" Condition="'$(ManifestCertificateThumbprint)' != '' and ('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Message Text="Signing output file..." />
|
||||
<Exec Command="signtool.exe sign /du "https://www.amebis.si" /sha1 "%ManifestCertificateThumbprint%" /fd sha256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
</Project>
|
||||
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
@@ -24,9 +24,12 @@
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<Target Name="Sign" Condition="'$(ManifestCertificateThumbprint)' != '' and ('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Message Text="Signing output file..." />
|
||||
<Exec Command="signtool.exe sign /sha1 "%ManifestCertificateThumbprint%" /fd sha256 /tr "%ManifestTimestampRFC3161Url%" /td sha256 /q "$(TargetPath)"" />
|
||||
<Target Name="SignLocal" Condition="('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary') and '$(ManifestCertificateThumbprint)' != ''" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Exec Command="signtool.exe sign /sha1 "$(ManifestCertificateThumbprint)" /fd SHA256 /tr "$(ManifestTimestampRFC3161Url)" /td SHA256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
<Target Name="SignAzure" Condition="('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary') and exists('$(APPDATA)\Microsoft.Trusted.Signing.Client.json')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Exec Command="signtool.exe sign /dlib "$(USERPROFILE)\.nuget\packages\microsoft.trusted.signing.client\1.0.53\bin\$(PreferredToolArchitecture)\Azure.CodeSigning.Dlib.dll" /dmdf "$(APPDATA)\Microsoft.Trusted.Signing.Client.json" /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "version.h"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -12,8 +12,8 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>ZRCola Common</_PropertySheetDisplayName>
|
||||
<IntDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</IntDir>
|
||||
<OutDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</OutDir>
|
||||
<IntDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration)\</IntDir>
|
||||
<OutDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration)\</OutDir>
|
||||
<IncludePath>$(WXWIN)\include\msvc;$(WXWIN)\include;$(IncludePath)</IncludePath>
|
||||
<SourcePath>$(WXWIN)\src\aui;$(WXWIN)\src\cocoa;$(WXWIN)\src\common;$(WXWIN)\src\dfb;$(WXWIN)\src\expat;$(WXWIN)\src\generic;$(WXWIN)\src\gtk;$(WXWIN)\src\gtk1;$(WXWIN)\src\html;$(WXWIN)\src\jpeg;$(WXWIN)\src\motif;$(WXWIN)\src\msdos;$(WXWIN)\src\msw;$(WXWIN)\src\os2;$(WXWIN)\src\osx;$(WXWIN)\src\png;$(WXWIN)\src\propgrid;$(WXWIN)\src\regex;$(WXWIN)\src\ribbon;$(WXWIN)\src\richtext;$(WXWIN)\src\stc;$(WXWIN)\src\tiff;$(WXWIN)\src\univ;$(WXWIN)\src\unix;$(WXWIN)\src\x11;$(WXWIN)\src\xml;$(WXWIN)\src\xrc;$(WXWIN)\src\zlib;$(SourcePath)</SourcePath>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
@@ -31,6 +31,7 @@
|
||||
<DisableSpecificWarnings>4100;4505</DisableSpecificWarnings>
|
||||
<SupportJustMyCode>false</SupportJustMyCode>
|
||||
<EnablePREfast>true</EnablePREfast>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
||||
17
include/props.mak
Normal file
17
include/props.mak
Normal file
@@ -0,0 +1,17 @@
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX := /usr/local
|
||||
endif
|
||||
CPPFLAGS := $(CPPFLAGS) -MMD -MP -DPREFIX='"$(PREFIX)"'
|
||||
ifeq ($(CFG),Debug)
|
||||
CPPFLAGS := $(CPPFLAGS) -D_DEBUG
|
||||
CFLAGS := $(CFLAGS) -Og -g
|
||||
CXXFLAGS := $(CXXFLAGS) -Og -g
|
||||
else
|
||||
CPPFLAGS := $(CPPFLAGS) -DNDEBUG
|
||||
CFLAGS := $(CFLAGS) -O3 -fdata-sections -ffunction-sections
|
||||
CXXFLAGS := $(CXXFLAGS) -O3 -fdata-sections -ffunction-sections
|
||||
LDFLAGS := $(LDFLAGS) -Wl,--gc-sections
|
||||
endif
|
||||
|
||||
OBJS := $(SRCS:%=%.o)
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
5
include/targets.mak
Normal file
5
include/targets.mak
Normal file
@@ -0,0 +1,5 @@
|
||||
%.h.gch: %.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -x c++-header -o $@ -c $<
|
||||
|
||||
%.cpp.o: %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $<
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -9,7 +9,7 @@
|
||||
// Product version as a single DWORD
|
||||
// Note: Used for version comparison within C/C++ code.
|
||||
//
|
||||
#define PRODUCT_VERSION 0x02050500
|
||||
#define PRODUCT_VERSION 0x02070100
|
||||
|
||||
//
|
||||
// Product version by components
|
||||
@@ -18,27 +18,27 @@
|
||||
// separately.
|
||||
//
|
||||
#define PRODUCT_VERSION_MAJ 2
|
||||
#define PRODUCT_VERSION_MIN 5
|
||||
#define PRODUCT_VERSION_REV 5
|
||||
#define PRODUCT_VERSION_MIN 7
|
||||
#define PRODUCT_VERSION_REV 1
|
||||
#define PRODUCT_VERSION_BUILD 0
|
||||
|
||||
//
|
||||
// Human readable product version and build year for UI
|
||||
//
|
||||
#define PRODUCT_VERSION_STR "2.5.5"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2021"
|
||||
#define PRODUCT_VERSION_STR "2.7.1"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2025"
|
||||
|
||||
//
|
||||
// Numerical version presentation for ProductVersion propery in
|
||||
// Numerical version presentation for ProductVersion property in
|
||||
// MSI packages (syntax: N.N[.N[.N]])
|
||||
//
|
||||
#define PRODUCT_VERSION_INST "2.5.5"
|
||||
#define PRODUCT_VERSION_INST "2.7.1"
|
||||
|
||||
//
|
||||
// The product code for ProductCode property in MSI packages
|
||||
// Replace with new on every version change, regardless how minor it is.
|
||||
//
|
||||
#define PRODUCT_VERSION_GUID "{109805EF-6EB5-4F43-A05A-82B3862E16B5}"
|
||||
#define PRODUCT_VERSION_GUID "{9423BEC3-3159-4130-8C3E-48D5DE24D48A}"
|
||||
|
||||
//
|
||||
// The product vendor and application name for configuration keeping.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2016-2021 Amebis
|
||||
Copyright © 2016-2022 Amebis
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 1991-2021 Amebis
|
||||
Copyright © 1991-2022 Amebis
|
||||
-->
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(POCompileBeforeTargets)' == '' and '$(POCompileAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 1991-2021 Amebis
|
||||
Copyright © 1991-2022 Amebis
|
||||
-->
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user