Compare commits
172 Commits
ver/2.0-al
...
ver/2.0-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
040109c36f | ||
|
|
d130888753 | ||
|
|
e81b0f772d | ||
|
|
750cab5370 | ||
|
|
213425fd11 | ||
|
|
689c72e7e7 | ||
|
|
fbd60a53dc | ||
|
|
e3475ef48d | ||
|
|
86d512e752 | ||
|
|
665b6c3564 | ||
|
|
173d9c77af | ||
|
|
a6088c3028 | ||
|
|
ff0354474e | ||
|
|
33f0cbea0d | ||
|
|
c39aa9f97e | ||
|
|
45530b23f3 | ||
|
|
cb17f06927 | ||
|
|
ac3b44de2b | ||
|
|
c839d5f50d | ||
|
|
22be76bec5 | ||
|
|
e5b246a4f0 | ||
|
|
3f64aef58d | ||
|
|
2dc6b2d4f5 | ||
|
|
c938320c45 | ||
|
|
d7968f539c | ||
|
|
beabeb17aa | ||
|
|
155f12f44e | ||
|
|
d46a1d4041 | ||
|
|
c195a07982 | ||
|
|
6c82b6333f | ||
|
|
1178406aa9 | ||
|
|
1e09407742 | ||
|
|
a7b5e1a573 | ||
|
|
d70b72b0c1 | ||
|
|
7bbe92d359 | ||
|
|
0e844cd5e4 | ||
|
|
67a6fd18e4 | ||
|
|
1fcd2d2689 | ||
|
|
1becda5600 | ||
|
|
9bccaefabb | ||
|
|
7e3e24232d | ||
|
|
6733ef3cfc | ||
|
|
38f47db6d6 | ||
|
|
5a26350153 | ||
|
|
5570a73895 | ||
|
|
de98129893 | ||
|
|
4898492972 | ||
|
|
73c2146fe2 | ||
|
|
44c86e2886 | ||
|
|
3c2e689ae2 | ||
|
|
5d215f628b | ||
|
|
e055207cea | ||
|
|
8f10cff923 | ||
|
|
91c44c388f | ||
|
|
79664972a3 | ||
|
|
d36c47e8a6 | ||
|
|
16a28cd011 | ||
|
|
73f1d4d2c9 | ||
|
|
26c899734b | ||
|
|
ff6a551c50 | ||
|
|
72ba4377c8 | ||
|
|
3f02306182 | ||
|
|
9c03547378 | ||
|
|
5271aca526 | ||
|
|
dbcf539616 | ||
|
|
903c635b34 | ||
|
|
6c13837398 | ||
|
|
3126091e0b | ||
|
|
bb1b0e64d6 | ||
|
|
78ccf1b2cf | ||
|
|
c921d533a9 | ||
|
|
e4fb91e305 | ||
|
|
a81dd7e250 | ||
|
|
a4fe4b6a26 | ||
|
|
1198579963 | ||
|
|
5d732522fe | ||
|
|
155fb03c5a | ||
|
|
710937f8df | ||
|
|
4e435b044c | ||
|
|
4ec7dc3ca5 | ||
|
|
9c3c1585d5 | ||
|
|
53ce3a2411 | ||
|
|
643a8dcb82 | ||
|
|
9337b660d2 | ||
|
|
44f2ef1ae1 | ||
|
|
4aa0d9183e | ||
|
|
e3c6a01722 | ||
|
|
0d30a89d22 | ||
|
|
23ba447283 | ||
|
|
a27f7f470d | ||
|
|
50790ad01d | ||
|
|
ae3344d5eb | ||
|
|
79ae4855e3 | ||
|
|
349bc34fa8 | ||
|
|
92bbc9a8bf | ||
|
|
b88cafcdfd | ||
|
|
994ec6461e | ||
|
|
1867235007 | ||
|
|
7545e9dadf | ||
|
|
eb67174bed | ||
|
|
8f33c72ad7 | ||
|
|
dbdfa139c4 | ||
|
|
dd87605ac2 | ||
|
|
5c9a9cab03 | ||
|
|
d86c1d004d | ||
|
|
7bd217ec47 | ||
|
|
01c50ba9e1 | ||
|
|
f9ef646f22 | ||
|
|
2a6212d19d | ||
|
|
1a6dc8b723 | ||
|
|
3b6eff0b44 | ||
|
|
9a2bc6b743 | ||
|
|
6e4cd60152 | ||
|
|
f2f0b007c4 | ||
|
|
306be13fca | ||
|
|
eb75e020e9 | ||
|
|
bbb09f3779 | ||
|
|
99a4b2e6c8 | ||
|
|
3ff9459198 | ||
|
|
8bdef858a0 | ||
|
|
4ef335b6aa | ||
|
|
15365aff46 | ||
|
|
4a27d62b4e | ||
|
|
38bf070a4a | ||
|
|
b7533d4b27 | ||
|
|
c7df06ba1e | ||
|
|
b9d636fb30 | ||
|
|
ac005c0b77 | ||
|
|
58f354f028 | ||
|
|
a1a1852552 | ||
|
|
7807e8a918 | ||
|
|
3daaff4260 | ||
|
|
840c8240b7 | ||
|
|
21114d818c | ||
|
|
7a424da3fc | ||
|
|
82d2fc42bd | ||
|
|
5f755aa3d9 | ||
|
|
8c51f9c2a6 | ||
|
|
5df7ca886b | ||
|
|
2e89edb62c | ||
|
|
a021dd31f7 | ||
|
|
5e4331903b | ||
|
|
55c76265df | ||
|
|
5a2fcf7cb2 | ||
|
|
4fba54bdb2 | ||
|
|
ab3ef08a5f | ||
|
|
c21e1b8198 | ||
|
|
7e6eaefd42 | ||
|
|
f735bd5bee | ||
|
|
b7f3305019 | ||
|
|
b194662c03 | ||
|
|
177edd19e8 | ||
|
|
fc93474b9a | ||
|
|
02f164cee6 | ||
|
|
a35c0d83ca | ||
|
|
6b4ed23801 | ||
|
|
2c602ad659 | ||
|
|
279537b1f3 | ||
|
|
f918c49bfd | ||
|
|
72c29a692e | ||
|
|
fc78a650a2 | ||
|
|
acec7098e5 | ||
|
|
98eff47054 | ||
|
|
cd2c20fc06 | ||
|
|
ac772671cc | ||
|
|
acfe980705 | ||
|
|
426b7a6227 | ||
|
|
834743c7dd | ||
|
|
c8628ef4eb | ||
|
|
4f52304fe9 | ||
|
|
eef80067bb | ||
|
|
9240288245 |
3
.gitmodules
vendored
@@ -16,6 +16,9 @@
|
||||
[submodule "lib/MSICALib"]
|
||||
path = lib/MSICALib
|
||||
url = https://github.com/Amebis/MSICALib.git
|
||||
[submodule "lib/WinStd"]
|
||||
path = lib/WinStd
|
||||
url = https://github.com/Amebis/WinStd.git
|
||||
[submodule "Updater"]
|
||||
path = Updater
|
||||
url = https://github.com/Amebis/Updater.git
|
||||
|
||||
1
MSI/MSM/wxMSW_wxmsw30u_adv_vc100.lst
Normal file
@@ -0,0 +1 @@
|
||||
System Folder\wxmsw30u_adv_vc100.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30u_adv_vc100.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30u_adv_vc100.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30u_adv_vc100_x64.lst
Normal file
@@ -0,0 +1 @@
|
||||
System (64-bit) Folder\wxmsw30u_adv_vc100_x64.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30u_adv_vc100_x64.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30u_adv_vc100_x64.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30u_aui_vc100.lst
Normal file
@@ -0,0 +1 @@
|
||||
System Folder\wxmsw30u_aui_vc100.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30u_aui_vc100.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30u_aui_vc100.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30u_aui_vc100_x64.lst
Normal file
@@ -0,0 +1 @@
|
||||
System (64-bit) Folder\wxmsw30u_aui_vc100_x64.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30u_aui_vc100_x64.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30u_aui_vc100_x64.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100.lst
Normal file
@@ -0,0 +1 @@
|
||||
System Folder\wxmsw30ud_adv_vc100.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100_x64.lst
Normal file
@@ -0,0 +1 @@
|
||||
System (64-bit) Folder\wxmsw30ud_adv_vc100_x64.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100_x64.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30ud_adv_vc100_x64.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100.lst
Normal file
@@ -0,0 +1 @@
|
||||
System Folder\wxmsw30ud_aui_vc100.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
1
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100_x64.lst
Normal file
@@ -0,0 +1 @@
|
||||
System (64-bit) Folder\wxmsw30ud_aui_vc100_x64.dll
|
||||
BIN
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100_x64.msm
Normal file
24
MSI/MSM/wxMSW_wxmsw30ud_aui_vc100_x64.msmcfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 1991-2016 Amebis
|
||||
#
|
||||
# This file is part of ZRCola.
|
||||
#
|
||||
# ZRCola is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# ZRCola is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[splosno]
|
||||
jezik=0
|
||||
deli=featZRCola
|
||||
|
||||
[parametri]
|
||||
BIN
MSI/ZRCola/Main/Icon/PDF.ico
Normal file
|
After Width: | Height: | Size: 23 KiB |
@@ -1,8 +1,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-03-14 17:26+0100\n"
|
||||
"POT-Creation-Date: 2016-06-14 09:22+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <simon.rozman@amebis.si>\n"
|
||||
@@ -13,12 +14,23 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
"X-Generator: Poedit 1.8.8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: En.Win32.Debug.Registry-2.idtx:4 En.Win32.Release.Registry-2.idtx:4 En.x64.Debug.Registry-2.idtx:4 En.x64.Release.Registry-2.idtx:4
|
||||
msgid "#58"
|
||||
msgstr ""
|
||||
#, fuzzy
|
||||
msgid "#60"
|
||||
msgstr "#176"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:11 En.Win32.Release.Control-2.idtx:11 En.x64.Debug.Control-2.idtx:11 En.x64.Release.Control-2.idtx:11
|
||||
#, fuzzy
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:6 En.Win32.Release.Control-2.idtx:6 En.x64.Debug.Control-2.idtx:6 En.x64.Release.Control-2.idtx:6
|
||||
#, fuzzy
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont]Deklaracija [SimpleProductName]"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:4 En.Win32.Release.Control-2.idtx:4 En.x64.Debug.Control-2.idtx:4 En.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -758,12 +770,97 @@ msgid ""
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
msgstr ""
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:3 En.Win32.Debug.Directory-2.idtx:3 En.Win32.Debug.Registry-2.idtx:3 En.Win32.Release.Control-2.idtx:3 En.Win32.Release.Directory-2.idtx:3
|
||||
#: En.Win32.Release.Registry-2.idtx:3 En.x64.Debug.Control-2.idtx:3 En.x64.Debug.Directory-2.idtx:3 En.x64.Debug.Registry-2.idtx:3 En.x64.Release.Control-2.idtx:3
|
||||
#: En.x64.Release.Directory-2.idtx:3 En.x64.Release.Registry-2.idtx:3
|
||||
msgid "1252"
|
||||
#: En.Win32.Debug.Control-2.idtx:8 En.Win32.Release.Control-2.idtx:8 En.x64.Debug.Control-2.idtx:8 En.x64.Release.Control-2.idtx:8
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1060\\deflangfe1060\\deftab708{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset238 Calibri;}{\\f1\\froman\\fprq2\\fcharset238{\\*\\fname Times New "
|
||||
"Roman;}Times New Roman CE;}}{\\colortbl ;\\red0\\green0\\blue255;}{\\*\\generator Msftedit 5.41.21.2510;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\i\\f0\\fs22 This text was written "
|
||||
"using the ZRCola input system (http://zrcola.zrc-sazu.si), developed at the Science and Research Centre of SAZU in Ljubljana (http://www.zrc-sazu.si) by Dr. Peter Weiss.\\f1\\par}"
|
||||
msgstr ""
|
||||
"{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1060\\deflangfe1060\\deftab708{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset238 Calibri;}{\\f1\\froman\\fprq2\\fcharset238{\\*\\fname Times New "
|
||||
"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 dr. Peter Weiss."
|
||||
"\\i0\\f1\\par}"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:5 En.Win32.Release.Feature-2.idtx:5 En.x64.Debug.Feature-2.idtx:5 En.x64.Release.Feature-2.idtx:5
|
||||
#, fuzzy
|
||||
msgid "00 ZRCola"
|
||||
msgstr "00 ZRCola"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:3 En.Win32.Debug.Directory-2.idtx:3 En.Win32.Debug.Feature-2.idtx:3 En.Win32.Debug.Registry-2.idtx:3 En.Win32.Debug.Shortcut-2.idtx:3
|
||||
#: En.Win32.Release.Control-2.idtx:3 En.Win32.Release.Directory-2.idtx:3 En.Win32.Release.Feature-2.idtx:3 En.Win32.Release.Registry-2.idtx:3 En.Win32.Release.Shortcut-2.idtx:3
|
||||
#: En.x64.Debug.Control-2.idtx:3 En.x64.Debug.Directory-2.idtx:3 En.x64.Debug.Feature-2.idtx:3 En.x64.Debug.Registry-2.idtx:3 En.x64.Debug.Shortcut-2.idtx:3 En.x64.Release.Control-2.idtx:3
|
||||
#: En.x64.Release.Directory-2.idtx:3 En.x64.Release.Feature-2.idtx:3 En.x64.Release.Registry-2.idtx:3 En.x64.Release.Shortcut-2.idtx:3
|
||||
#, fuzzy
|
||||
msgid "1252"
|
||||
msgstr "1250"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:5 En.Win32.Release.Control-2.idtx:5 En.x64.Debug.Control-2.idtx:5 En.x64.Release.Control-2.idtx:5
|
||||
#, fuzzy
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:6 En.Win32.Release.Feature-2.idtx:6 En.x64.Debug.Feature-2.idtx:6 En.x64.Release.Feature-2.idtx:6
|
||||
#, fuzzy
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentacija"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:4 En.Win32.Release.Feature-2.idtx:4 En.x64.Debug.Feature-2.idtx:4 En.x64.Release.Feature-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "Fonts"
|
||||
msgstr "Pisave"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:4 En.Win32.Release.Feature-2.idtx:4 En.x64.Debug.Feature-2.idtx:4 En.x64.Release.Feature-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Pisave, ki jih uporablja ZRCola"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:10 En.Win32.Release.Control-2.idtx:10 En.x64.Debug.Control-2.idtx:10 En.x64.Release.Control-2.idtx:10
|
||||
#, fuzzy
|
||||
msgid "I &agree."
|
||||
msgstr "&Strinjam se."
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:7 En.Win32.Release.Feature-2.idtx:7 En.x64.Debug.Feature-2.idtx:7 En.x64.Release.Feature-2.idtx:7
|
||||
#, fuzzy
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Bližnjice na tipkovnici"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:9 En.Win32.Release.Control-2.idtx:9 En.x64.Debug.Control-2.idtx:9 En.x64.Release.Control-2.idtx:9
|
||||
#, fuzzy
|
||||
msgid "Note: This declaration is also available in [SimpleProductName]'s about dialog or on its website."
|
||||
msgstr "Opomba: Ta deklaracija je na voljo tudi v dialogu vizitke [SimpleProductName] ali na spletni strani."
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:7 En.Win32.Release.Feature-2.idtx:7 En.x64.Debug.Feature-2.idtx:7 En.x64.Release.Feature-2.idtx:7
|
||||
#, fuzzy
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr "Dokument PDF s seznamom ZRColinih bližnjic na tipkovnici"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:7 En.Win32.Release.Control-2.idtx:7 En.x64.Debug.Control-2.idtx:7 En.x64.Release.Control-2.idtx:7
|
||||
#, fuzzy
|
||||
msgid "Texts made using ZRCola have to include in the colophon, foreword, footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr "Besedilo, nastalo z uporabo ZRCole, mora biti v kolofonu, predgovoru, v opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim zapisom:"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:5 En.Win32.Release.Feature-2.idtx:5 En.x64.Debug.Feature-2.idtx:5 En.x64.Release.Feature-2.idtx:5
|
||||
#, fuzzy
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Pisava na osnovi Times New Roman"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:6 En.Win32.Release.Feature-2.idtx:6 En.x64.Debug.Feature-2.idtx:6 En.x64.Release.Feature-2.idtx:6
|
||||
#, fuzzy
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Dokumentacija ZRCola"
|
||||
|
||||
#: En.Win32.Debug.Shortcut-2.idtx:4 En.Win32.Release.Shortcut-2.idtx:4 En.x64.Debug.Shortcut-2.idtx:4 En.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRColine bližnjice na tipkovnici"
|
||||
|
||||
#: En.Win32.Debug.Directory-2.idtx:4 En.Win32.Release.Directory-2.idtx:4 En.x64.Debug.Directory-2.idtx:4 En.x64.Release.Directory-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCola:."
|
||||
msgstr ""
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: En.Win32.Debug.Shortcut-2.idtx:4 En.Win32.Release.Shortcut-2.idtx:4 En.x64.Debug.Shortcut-2.idtx:4 En.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|ZRColine bližnjice na tipkovnici"
|
||||
|
||||
1587
MSI/ZRCola/locale/de_DE.po
Normal file
1585
MSI/ZRCola/locale/ru_RU.po
Normal file
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-03-24 12:36+0100\n"
|
||||
"POT-Creation-Date: 2016-06-14 09:23+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <simon.rozman@amebis.si>\n"
|
||||
@@ -12,16 +12,23 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"X-Generator: Poedit 1.8.8\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-SearchPath-0: .\n"
|
||||
|
||||
# wxLanguage enum value for this language (decimal, # prefixed)
|
||||
#: En.Win32.Debug.Registry-2.idtx:4 En.Win32.Release.Registry-2.idtx:4 En.x64.Debug.Registry-2.idtx:4 En.x64.Release.Registry-2.idtx:4
|
||||
msgid "#60"
|
||||
msgstr "#176"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:11 En.Win32.Release.Control-2.idtx:11 En.x64.Debug.Control-2.idtx:11 En.x64.Release.Control-2.idtx:11
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:6 En.Win32.Release.Control-2.idtx:6 En.x64.Debug.Control-2.idtx:6 En.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont]Deklaracija [SimpleProductName]"
|
||||
|
||||
# Licence Agreement
|
||||
# 1. Translate as a separate RTF document.
|
||||
# 2. Remove ALL line breaks from RTF file.
|
||||
@@ -1498,18 +1505,41 @@ msgstr ""
|
||||
"TOC Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
# Declaration
|
||||
# 1. Translate as a separate RTF document.
|
||||
# 2. Remove ALL line breaks from RTF file.
|
||||
# 3. Paste translation.
|
||||
#: En.Win32.Debug.Control-2.idtx:8 En.Win32.Release.Control-2.idtx:8 En.x64.Debug.Control-2.idtx:8 En.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1060\\deflangfe1060\\deftab708{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset238 Calibri;}{\\f1\\froman\\fprq2\\fcharset238{\\*\\fname Times New "
|
||||
"Roman;}Times New Roman CE;}}{\\colortbl ;\\red0\\green0\\blue255;}{\\*\\generator Msftedit 5.41.21.2510;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\i\\f0\\fs22 This text was written "
|
||||
"using the ZRCola input system (http://zrcola.zrc-sazu.si), developed at the Science and Research Centre of SAZU in Ljubljana (http://www.zrc-sazu.si) by Dr. Peter Weiss.\\f1\\par}"
|
||||
msgstr ""
|
||||
"{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1060\\deflangfe1060\\deftab708{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset238 Calibri;}{\\f1\\froman\\fprq2\\fcharset238{\\*\\fname Times New "
|
||||
"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 dr. Peter Weiss."
|
||||
"\\i0\\f1\\par}"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:5 En.Win32.Release.Feature-2.idtx:5 En.x64.Debug.Feature-2.idtx:5 En.x64.Release.Feature-2.idtx:5
|
||||
msgid "00 ZRCola"
|
||||
msgstr "00 ZRCola"
|
||||
|
||||
# Windows charset for this language (decimal)
|
||||
#: En.Win32.Debug.Control-2.idtx:3 En.Win32.Debug.Directory-2.idtx:3 En.Win32.Debug.Feature-2.idtx:3 En.Win32.Debug.Registry-2.idtx:3 En.Win32.Release.Control-2.idtx:3
|
||||
#: En.Win32.Release.Directory-2.idtx:3 En.Win32.Release.Feature-2.idtx:3 En.Win32.Release.Registry-2.idtx:3 En.x64.Debug.Control-2.idtx:3 En.x64.Debug.Directory-2.idtx:3
|
||||
#: En.x64.Debug.Feature-2.idtx:3 En.x64.Debug.Registry-2.idtx:3 En.x64.Release.Control-2.idtx:3 En.x64.Release.Directory-2.idtx:3 En.x64.Release.Feature-2.idtx:3
|
||||
#: En.x64.Release.Registry-2.idtx:3
|
||||
#: En.Win32.Debug.Control-2.idtx:3 En.Win32.Debug.Directory-2.idtx:3 En.Win32.Debug.Feature-2.idtx:3 En.Win32.Debug.Registry-2.idtx:3 En.Win32.Debug.Shortcut-2.idtx:3
|
||||
#: En.Win32.Release.Control-2.idtx:3 En.Win32.Release.Directory-2.idtx:3 En.Win32.Release.Feature-2.idtx:3 En.Win32.Release.Registry-2.idtx:3 En.Win32.Release.Shortcut-2.idtx:3
|
||||
#: En.x64.Debug.Control-2.idtx:3 En.x64.Debug.Directory-2.idtx:3 En.x64.Debug.Feature-2.idtx:3 En.x64.Debug.Registry-2.idtx:3 En.x64.Debug.Shortcut-2.idtx:3 En.x64.Release.Control-2.idtx:3
|
||||
#: En.x64.Release.Directory-2.idtx:3 En.x64.Release.Feature-2.idtx:3 En.x64.Release.Registry-2.idtx:3 En.x64.Release.Shortcut-2.idtx:3
|
||||
msgid "1252"
|
||||
msgstr "1250"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:5 En.Win32.Release.Control-2.idtx:5 En.x64.Debug.Control-2.idtx:5 En.x64.Release.Control-2.idtx:5
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:6 En.Win32.Release.Feature-2.idtx:6 En.x64.Debug.Feature-2.idtx:6 En.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentacija"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:4 En.Win32.Release.Feature-2.idtx:4 En.x64.Debug.Feature-2.idtx:4 En.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Pisave"
|
||||
@@ -1518,10 +1548,46 @@ msgstr "Pisave"
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Pisave, ki jih uporablja ZRCola"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:10 En.Win32.Release.Control-2.idtx:10 En.x64.Debug.Control-2.idtx:10 En.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr "&Strinjam se."
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:7 En.Win32.Release.Feature-2.idtx:7 En.x64.Debug.Feature-2.idtx:7 En.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Bližnjice na tipkovnici"
|
||||
|
||||
#: En.Win32.Debug.Control-2.idtx:9 En.Win32.Release.Control-2.idtx:9 En.x64.Debug.Control-2.idtx:9 En.x64.Release.Control-2.idtx:9
|
||||
msgid "Note: This declaration is also available in [SimpleProductName]'s about dialog or on its website."
|
||||
msgstr "Opomba: Ta deklaracija je na voljo tudi v dialogu vizitke [SimpleProductName] ali na spletni strani."
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:7 En.Win32.Release.Feature-2.idtx:7 En.x64.Debug.Feature-2.idtx:7 En.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.Win32.Debug.Control-2.idtx:7 En.Win32.Release.Control-2.idtx:7 En.x64.Debug.Control-2.idtx:7 En.x64.Release.Control-2.idtx:7
|
||||
msgid "Texts made using ZRCola have to include in the colophon, foreword, footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr "Besedilo, nastalo z uporabo ZRCole, mora biti v kolofonu, predgovoru, v opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim zapisom:"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:5 En.Win32.Release.Feature-2.idtx:5 En.x64.Debug.Feature-2.idtx:5 En.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Pisava na osnovi Times New Roman"
|
||||
|
||||
#: En.Win32.Debug.Feature-2.idtx:6 En.Win32.Release.Feature-2.idtx:6 En.x64.Debug.Feature-2.idtx:6 En.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Dokumentacija ZRCola"
|
||||
|
||||
#: En.Win32.Debug.Shortcut-2.idtx:4 En.Win32.Release.Shortcut-2.idtx:4 En.x64.Debug.Shortcut-2.idtx:4 En.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRColine bližnjice na tipkovnici"
|
||||
|
||||
#: En.Win32.Debug.Directory-2.idtx:4 En.Win32.Release.Directory-2.idtx:4 En.x64.Debug.Directory-2.idtx:4 En.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: En.Win32.Debug.Shortcut-2.idtx:4 En.Win32.Release.Shortcut-2.idtx:4 En.x64.Debug.Shortcut-2.idtx:4 En.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|ZRColine bližnjice na tipkovnici"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Determining required space for installation..."
|
||||
#~ msgstr "Ugotavljanje potrebnega prostora za namestitev ..."
|
||||
|
||||
67
Makefile
@@ -82,6 +82,7 @@ Setup \
|
||||
SetupDebug \
|
||||
Register \
|
||||
Unregister \
|
||||
PublishPre \
|
||||
Publish :: "MSI\MSIBuild\Version\Version.mak"
|
||||
$(MAKE) /f "Makefile" /$(MAKEFLAGS) HAS_VERSION=1 $@
|
||||
|
||||
@@ -157,24 +158,24 @@ UnregisterSettings ::
|
||||
!ENDIF
|
||||
|
||||
InstallFonts :: \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Re.ttf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_It.ttf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Bd.ttf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_BI.ttf"
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola (TrueType)" /t REG_SZ /d "00_ZRCola_Re.ttf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Italic (TrueType)" /t REG_SZ /d "00_ZRCola_It.ttf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold (TrueType)" /t REG_SZ /d "00_ZRCola_Bd.ttf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold Italic (TrueType)" /t REG_SZ /d "00_ZRCola_BI.ttf" $(REG_FLAGS) > NUL
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Re.otf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_It.otf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Bd.otf" \
|
||||
"$(WINDIR)\Fonts\00_ZRCola_BI.otf"
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola (TrueType)" /t REG_SZ /d "00_ZRCola_Re.otf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Italic (TrueType)" /t REG_SZ /d "00_ZRCola_It.otf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold (TrueType)" /t REG_SZ /d "00_ZRCola_Bd.otf" $(REG_FLAGS) > NUL
|
||||
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold Italic (TrueType)" /t REG_SZ /d "00_ZRCola_BI.otf" $(REG_FLAGS) > NUL
|
||||
|
||||
UninstallFonts::
|
||||
-reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola (TrueType)" $(REG_FLAGS) > NUL
|
||||
-reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Italic (TrueType)" $(REG_FLAGS) > NUL
|
||||
-reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold (TrueType)" $(REG_FLAGS) > NUL
|
||||
-reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "00 ZRCola Bold Italic (TrueType)" $(REG_FLAGS) > NUL
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_Re.ttf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_Re.ttf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_It.ttf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_It.ttf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_Bd.ttf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_Bd.ttf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_BI.ttf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_BI.ttf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_Re.otf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_Re.otf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_It.otf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_It.otf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_Bd.otf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_Bd.otf"
|
||||
-if exist "$(WINDIR)\Fonts\00_ZRCola_BI.otf" rd /s /q "$(WINDIR)\Fonts\00_ZRCola_BI.otf"
|
||||
|
||||
RegisterShortcuts :: \
|
||||
"$(PROGRAMDATA)\Microsoft\Windows\Start Menu\Programs\ZRCola" \
|
||||
@@ -183,12 +184,20 @@ RegisterShortcuts :: \
|
||||
UnregisterShortcuts ::
|
||||
-if exist "$(PROGRAMDATA)\Microsoft\Windows\Start Menu\Programs\ZRCola" rd /s /q "$(PROGRAMDATA)\Microsoft\Windows\Start Menu\Programs\ZRCola"
|
||||
|
||||
Publish :: \
|
||||
PublishPre :: \
|
||||
"$(PUBLISH_PACKAGE_DIR)" \
|
||||
$(REDIST_EN_WIN32) \
|
||||
$(REDIST_EN_X64) \
|
||||
$(REDIST_SL_WIN32) \
|
||||
$(REDIST_SL_X64) \
|
||||
"$(PUBLISH_DIR)" \
|
||||
"$(PUBLISH_DIR)\ZRColaInstallDe.exe" \
|
||||
"$(PUBLISH_DIR)\ZRColaInstallEn.exe" \
|
||||
"$(PUBLISH_DIR)\ZRColaInstallRu.exe" \
|
||||
"$(PUBLISH_DIR)\ZRColaInstallSl.exe"
|
||||
|
||||
Publish :: \
|
||||
PublishPre \
|
||||
"$(PUBLISH_DIR)\catalog-0000.xml"
|
||||
|
||||
|
||||
@@ -242,16 +251,28 @@ $(REDIST_SL_X64) : "$(OUTPUT_DIR)\ZRColaSl64.3.msi"
|
||||
"$(OUTPUT_DIR)\Setup\ZRColaSl64D.msi" : "$(OUTPUT_DIR)\ZRColaSl64D.3.msi"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Re.ttf" : "$(OUTPUT_DIR)\00_ZRCola_Re.ttf"
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Re.otf" : "$(OUTPUT_DIR)\00_ZRCola_Re.otf"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(WINDIR)\Fonts\00_ZRCola_It.ttf" : "$(OUTPUT_DIR)\00_ZRCola_It.ttf"
|
||||
"$(WINDIR)\Fonts\00_ZRCola_It.otf" : "$(OUTPUT_DIR)\00_ZRCola_It.otf"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Bd.ttf" : "$(OUTPUT_DIR)\00_ZRCola_Bd.ttf"
|
||||
"$(WINDIR)\Fonts\00_ZRCola_Bd.otf" : "$(OUTPUT_DIR)\00_ZRCola_Bd.otf"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(WINDIR)\Fonts\00_ZRCola_BI.ttf" : "$(OUTPUT_DIR)\00_ZRCola_BI.ttf"
|
||||
"$(WINDIR)\Fonts\00_ZRCola_BI.otf" : "$(OUTPUT_DIR)\00_ZRCola_BI.otf"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(PUBLISH_DIR)\ZRColaInstallDe.exe" : "$(OUTPUT_DIR)\Win32.Release\ZRColaInstallDe.exe"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(PUBLISH_DIR)\ZRColaInstallEn.exe" : "$(OUTPUT_DIR)\Win32.Release\ZRColaInstallEn.exe"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(PUBLISH_DIR)\ZRColaInstallRu.exe" : "$(OUTPUT_DIR)\Win32.Release\ZRColaInstallRu.exe"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(PUBLISH_DIR)\ZRColaInstallSl.exe" : "$(OUTPUT_DIR)\Win32.Release\ZRColaInstallSl.exe"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
|
||||
@@ -303,6 +324,18 @@ $(REDIST_SL_X64) : "$(OUTPUT_DIR)\ZRColaSl64.3.msi"
|
||||
"$(OUTPUT_DIR)\ZRColaSl64D.3.msi" ::
|
||||
devenv.com "ZRCola.sln" /build "Debug|x64"
|
||||
|
||||
"$(OUTPUT_DIR)\Win32.Release\ZRColaInstallDe.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Release\ZRColaInstallEn.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Release\ZRColaInstallRu.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Release\ZRColaInstallSl.exe" ::
|
||||
devenv.com "ZRColaUtils.sln" /build "Release|Win32"
|
||||
|
||||
"$(OUTPUT_DIR)\Win32.Debug\ZRColaInstallDe.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Debug\ZRColaInstallEn.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Debug\ZRColaInstallRu.exe" \
|
||||
"$(OUTPUT_DIR)\Win32.Debug\ZRColaInstallSl.exe" ::
|
||||
devenv.com "ZRColaUtils.sln" /build "Debug|Win32"
|
||||
|
||||
"$(OUTPUT_DIR)\ZRColaEn32.3.msi" \
|
||||
"$(OUTPUT_DIR)\ZRColaSl32.3.msi" ::
|
||||
devenv.com "MSI\MSICA\MSICA.sln" /build "Release|Win32"
|
||||
|
||||
2
Updater
22
ZRCola.sln
@@ -18,6 +18,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRColaUI", "lib\libZRCol
|
||||
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|Win32 = Debug|Win32
|
||||
@@ -66,6 +70,22 @@ Global
|
||||
{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|Win32.ActiveCfg = Debug|Win32
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|x64.Build.0 = Debug|x64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{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|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|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
|
||||
@@ -75,5 +95,7 @@ Global
|
||||
{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
|
||||
EndGlobal
|
||||
|
||||
BIN
ZRCola/MSIBuild/Binary/tutorial1.bmp
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
ZRCola/MSIBuild/Binary/tutorial1.psd
Normal file
BIN
ZRCola/MSIBuild/Binary/tutorial2.bmp
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
ZRCola/MSIBuild/Binary/tutorial2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
ZRCola/MSIBuild/Binary/tutorial3.bmp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
ZRCola/MSIBuild/Binary/tutorial3.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
@@ -37,6 +37,36 @@ OLDZRCOLADIR clZRCola.exe.$(PLAT)
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# Binary
|
||||
|
||||
All :: \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial1.bmp" \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial2.bmp" \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial3.bmp"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" : "Makefile" "..\..\include\MSIBuildCfg.mak" "$(LANG).$(PLAT).$(CFG).Binary-1"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Name Data
|
||||
s$(MSIBUILD_LENGTH_ID) v0
|
||||
Binary Name
|
||||
bintutorial1.bmp tutorial1.bmp
|
||||
bintutorial2.bmp tutorial2.bmp
|
||||
bintutorial3.bmp tutorial3.bmp
|
||||
<<NOKEEP
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial1.bmp" : "Binary\tutorial1.bmp"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial2.bmp" : "Binary\tutorial2.bmp"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\tutorial3.bmp" : "Binary\tutorial3.bmp"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
|
||||
######################################################################
|
||||
# CompLocator
|
||||
|
||||
@@ -80,6 +110,99 @@ compZRCola.mo.sl_SI {7FF95C71-D8DE-4D2B-A26D-FEB5A1F54D63} ZRCOLALOCSLSIDIR $(MS
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# Control
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).Control-2.idt"
|
||||
|
||||
"En.$(PLAT).$(CFG).Control-2.idtx" : "Makefile" "..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Dialog_ Control Type X Y Width Height Attributes Property Text Control_Next Help
|
||||
s$(MSIBUILD_LENGTH_ID) s50 s20 i2 i2 i2 i2 I4 S50 L0 S50 L$(MSIBUILD_LENGTH_HELP)
|
||||
1252 Control Dialog_ Control
|
||||
dlgTutorial1 ctlBannerBitmap Bitmap 0 0 400 45 1 binUIHeader.bmp ctlTitle
|
||||
dlgTutorial1 ctlTitle Text 15 15 320 15 196611 [DlgTitleFont][SimpleProductName] Tutorial : Starting ctlScreenshot
|
||||
dlgTutorial1 ctlScreenshot Bitmap 154 60 92 54 5 bintutorial1.bmp ctlText1
|
||||
dlgTutorial1 ctlText1 Text 15 119 370 24 196611 When configured, ZRCola starts at system startup and runs in the background. If needed, it can be brought up by pressing the combination Win+F5. ctlText2
|
||||
dlgTutorial1 ctlText2 Text 15 148 370 36 196611 IMPORTANT: Upon pressing the combination Win+F5 the program memorises the location of the cursor in the text. If ZRCola is brought to the foreground without using the aforementioned combination of keys, the program won't know where to insert the special characters! ctlContinue
|
||||
dlgTutorial1 ctlContinue PushButton 325 265 60 20 3 &Continue ctlBannerBitmap
|
||||
dlgTutorial2 ctlBannerBitmap Bitmap 0 0 400 45 1 binUIHeader.bmp ctlTitle
|
||||
dlgTutorial2 ctlTitle Text 15 15 320 15 196611 [DlgTitleFont][SimpleProductName] Tutorial : Composition ctlScreenshot
|
||||
dlgTutorial2 ctlScreenshot Bitmap 81 60 238 137 5 bintutorial2.bmp ctlText1
|
||||
dlgTutorial2 ctlText1 Text 15 202 370 36 196611 The string of basic and substitute characters is entered into the upper input window of the program. In the window below the resulted special characters are displayed. To insert them in the text, the F5 key is used. ctlContinue
|
||||
dlgTutorial2 ctlContinue PushButton 325 265 60 20 3 &Continue ctlBannerBitmap
|
||||
dlgTutorial3 ctlBannerBitmap Bitmap 0 0 400 45 1 binUIHeader.bmp ctlTitle
|
||||
dlgTutorial3 ctlTitle Text 15 15 320 15 196611 [DlgTitleFont][SimpleProductName] Tutorial : Entering Characters ctlScreenshot
|
||||
dlgTutorial3 ctlScreenshot Bitmap 147 60 106 112 5 bintutorial3.bmp ctlText1
|
||||
dlgTutorial3 ctlText1 Text 15 177 370 24 196611 Characters can be entered using keyboard shortcuts, the character catalogue (F4) or the character finding tool (F8). ctlContinue
|
||||
dlgTutorial3 ctlContinue PushButton 325 265 60 20 3 &Continue ctlBannerBitmap
|
||||
<<NOKEEP
|
||||
|
||||
"De.$(PLAT).$(CFG).Control-2.idt" : "En.$(PLAT).$(CFG).Control-2.idtx" "..\locale\de_DE.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
"En.$(PLAT).$(CFG).Control-2.idt" : "En.$(PLAT).$(CFG).Control-2.idtx"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"It.$(PLAT).$(CFG).Control-2.idt" : "En.$(PLAT).$(CFG).Control-2.idtx" "..\locale\it_IT.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
"Sl.$(PLAT).$(CFG).Control-2.idt" : "En.$(PLAT).$(CFG).Control-2.idtx" "..\locale\sl_SI.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
|
||||
######################################################################
|
||||
# ControlEvent
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).ControlEvent-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).ControlEvent-1.idt" : "Makefile" "..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Dialog_ Control_ Event Argument Condition Ordering
|
||||
s$(MSIBUILD_LENGTH_ID) s50 s50 s255 S255 I2
|
||||
ControlEvent Dialog_ Control_ Event Argument Condition
|
||||
dlgTutorial1 ctlContinue EndDialog Return 1 1000
|
||||
dlgTutorial2 ctlContinue EndDialog Return 1 1000
|
||||
dlgTutorial3 ctlContinue EndDialog Return 1 1000
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# Dialog
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).Dialog-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Dialog-1.idt" : "Makefile" "..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Dialog HCentering VCentering Width Height Attributes Title Control_First Control_Default Control_Cancel
|
||||
s$(MSIBUILD_LENGTH_ID) i2 i2 i2 i2 I4 L128 s50 S50 S50
|
||||
Dialog Dialog
|
||||
dlgTutorial1 50 50 400 300 3 [Setup] [SimpleProductName] [DisplayVersion] ctlTitle ctlContinue ctlContinue
|
||||
dlgTutorial2 50 50 400 300 3 [Setup] [SimpleProductName] [DisplayVersion] ctlTitle ctlContinue ctlContinue
|
||||
dlgTutorial3 50 50 400 300 3 [Setup] [SimpleProductName] [DisplayVersion] ctlTitle ctlContinue ctlContinue
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# InstallUISequence
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).InstallUISequence-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).InstallUISequence-1.idt" : "Makefile" "..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Action Condition Sequence
|
||||
s$(MSIBUILD_LENGTH_ID) S255 I2
|
||||
InstallUISequence Action
|
||||
dlgTutorial1 NOT Installed 1400
|
||||
dlgTutorial2 NOT Installed 1401
|
||||
dlgTutorial3 NOT Installed 1402
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# Feature
|
||||
|
||||
@@ -122,14 +245,18 @@ featZRCola compZRCola.exe.$(PLAT)
|
||||
featZRCola complibZRCola.dll.$(PLAT)
|
||||
featZRCola complibZRColaUI.dll.$(PLAT)
|
||||
featZRCola compwxExtend.dll.$(PLAT)
|
||||
featZRCola compUpdater.dll.$(PLAT)
|
||||
featZRCola compLocalizationRepositoryPath
|
||||
featZRCola compLanguage
|
||||
featZRCola compDatabasePath
|
||||
featZRCola compZRCola.zrcdb
|
||||
featZRCola comp00_ZRCola_Re.ttf
|
||||
featZRCola comp00_ZRCola_Re.otf
|
||||
!IF "$(LANG)" == "Sl"
|
||||
featZRCola compZRCola.mo.sl_SI
|
||||
featZRCola compZRCola.zrcdb.mo.sl_SI
|
||||
featZRCola complibZRColaUI.mo.sl_SI
|
||||
featZRCola compwxExtend.mo.sl_SI
|
||||
featZRCola compUpdater.mo.sl_SI
|
||||
featZRCola compwxstd.mo.sl_SI
|
||||
!ENDIF
|
||||
<<NOKEEP
|
||||
|
||||
6710
ZRCola/ZRCola.fbp
@@ -7,7 +7,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\lib\wxExtend\include;..\lib\stdex\include;..\lib\libZRCola\include;..\lib\libZRColaUI\include</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\lib\wxExtend\include;..\Updater\Updater\include;..\lib\stdex\include;..\lib\WinStd\include;..\lib\libZRCola\include;..\lib\libZRColaUI\include</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
|
||||
BIN
ZRCola/ZRCola.rc
@@ -80,19 +80,33 @@
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolaabout.cpp" />
|
||||
<ClCompile Include="zrcolaapp.cpp" />
|
||||
<ClCompile Include="zrcolachrcatpnl.cpp" />
|
||||
<ClCompile Include="zrcolachrgrid.cpp" />
|
||||
<ClCompile Include="zrcolachrreq.cpp" />
|
||||
<ClCompile Include="zrcolachrslct.cpp" />
|
||||
<ClCompile Include="zrcolacomppnl.cpp" />
|
||||
<ClCompile Include="zrcolafrm.cpp" />
|
||||
<ClCompile Include="zrcolagui.cpp" />
|
||||
<ClCompile Include="zrcolakeyhndlr.cpp" />
|
||||
<ClCompile Include="zrcolasettings.cpp" />
|
||||
<ClCompile Include="zrcolaupdater.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="zrcolaabout.h" />
|
||||
<ClInclude Include="zrcolaapp.h" />
|
||||
<ClInclude Include="zrcolachrcatpnl.h" />
|
||||
<ClInclude Include="zrcolachrgrid.h" />
|
||||
<ClInclude Include="zrcolachrreq.h" />
|
||||
<ClInclude Include="zrcolachrslct.h" />
|
||||
<ClInclude Include="zrcolacomppnl.h" />
|
||||
<ClInclude Include="zrcolafrm.h" />
|
||||
<ClInclude Include="zrcolagui.h" />
|
||||
<ClInclude Include="zrcolakeyhndlr.h" />
|
||||
<ClInclude Include="zrcolasettings.h" />
|
||||
<ClInclude Include="zrcolaupdater.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\lib\libZRColaUI\build\libZRColaUI.vcxproj">
|
||||
@@ -104,20 +118,30 @@
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtend.vcxproj">
|
||||
<Project>{a3a36689-ac35-4026-93da-a3ba0c0e767c}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Updater\Updater\build\Updater.vcxproj">
|
||||
<Project>{990d8cf9-4457-4dc0-aa18-4968ef434741}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="locale\ZRCola.pot" />
|
||||
<None Include="res\char_select.ico" />
|
||||
<None Include="res\edit_copy.ico" />
|
||||
<None Include="res\edit_cut.ico" />
|
||||
<None Include="res\edit_paste.ico" />
|
||||
<None Include="res\navigate_back.ico" />
|
||||
<None Include="res\navigate_forward.ico" />
|
||||
<None Include="res\send_abort.ico" />
|
||||
<None Include="res\send_composed.ico" />
|
||||
<None Include="res\send_decomposed.ico" />
|
||||
<None Include="res\zrcola.ico" />
|
||||
<None Include="ZRCola.fbp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ZRCola.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\de_DE.po" />
|
||||
<POCompile Include="locale\ru_RU.po" />
|
||||
<POCompile Include="locale\sl_SI.po" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
||||
@@ -37,6 +37,27 @@
|
||||
<ClCompile Include="zrcolakeyhndlr.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolachrgrid.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolachrcatpnl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolachrslct.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolasettings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolaabout.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolaupdater.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolachrreq.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
@@ -57,6 +78,27 @@
|
||||
<ClInclude Include="zrcolakeyhndlr.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolachrgrid.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolachrcatpnl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolachrslct.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolasettings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolaabout.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolaupdater.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolachrreq.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\zrcola.ico">
|
||||
@@ -80,6 +122,21 @@
|
||||
<None Include="res\edit_paste.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="ZRCola.fbp">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\char_select.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="locale\ZRCola.pot">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</None>
|
||||
<None Include="res\navigate_back.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\navigate_forward.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ZRCola.rc">
|
||||
@@ -90,5 +147,11 @@
|
||||
<POCompile Include="locale\sl_SI.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\de_DE.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
<POCompile Include="locale\ru_RU.po">
|
||||
<Filter>Resource Files\Localization</Filter>
|
||||
</POCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
1091
ZRCola/locale/ZRCola.pot
Normal file
965
ZRCola/locale/de_DE.po
Normal file
@@ -0,0 +1,965 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2016-06-14 09:58+0200\n"
|
||||
"PO-Revision-Date: 2016-06-14 09:58+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.8\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
|
||||
#: zrcolaabout.cpp:31
|
||||
#, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaapp.cpp:79 zrcolafrm.cpp:90 zrcolagui.cpp:860 zrcolagui.h:104
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: zrcolachrreq.cpp:49 zrcolagui.cpp:989
|
||||
#, fuzzy
|
||||
msgid "Character"
|
||||
msgstr "Eingabe eines Zeichenstils"
|
||||
|
||||
#: zrcolachrreq.cpp:58 zrcolagui.cpp:1010
|
||||
#, fuzzy
|
||||
msgid "Context"
|
||||
msgstr "Konnte den Kontext auf dem überlagerten Fenster nicht initialisieren."
|
||||
|
||||
#: zrcolachrreq.cpp:64 zrcolagui.h:360
|
||||
msgid "Request a New Character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:39 zrcolachrslct.cpp:180 zrcolachrslct.cpp:624
|
||||
msgid "▸ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:183 zrcolachrslct.cpp:621
|
||||
msgid "▾ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:141
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:141 zrcolafrm.cpp:143
|
||||
#, fuzzy
|
||||
msgid "Warning"
|
||||
msgstr "Warnung: "
|
||||
|
||||
#: zrcolafrm.cpp:143
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:351
|
||||
msgid "http://zrcola-2.amebis.si/en/info/instructions/"
|
||||
msgstr "http://zrcola-2.amebis.si/de/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:375
|
||||
msgid ""
|
||||
"http://zrcola-2.amebis.si/wp-content/uploads/2016/04/5_ZRCola-"
|
||||
"Tipkovnica_2009-06-21.pdf"
|
||||
msgstr ""
|
||||
"http://zrcola-2.amebis.si/wp-content/uploads/2016/04/5_ZRCola-"
|
||||
"Tipkovnica_2009-06-21.pdf"
|
||||
|
||||
#: zrcolagui.cpp:36
|
||||
msgid "E&xit"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:36
|
||||
#, fuzzy
|
||||
msgid "Quit this program"
|
||||
msgstr "Dieses Programm beenden"
|
||||
|
||||
#: zrcolagui.cpp:39
|
||||
#, fuzzy
|
||||
msgid "&Program"
|
||||
msgstr "Samodejno zaženi ta program ob prijavi"
|
||||
|
||||
#: zrcolagui.cpp:72
|
||||
#, fuzzy
|
||||
msgid "Select &All"
|
||||
msgstr "Alles auswählen"
|
||||
|
||||
#: zrcolagui.cpp:72
|
||||
msgid "Select all text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:78
|
||||
#, fuzzy
|
||||
msgid "Find C&haracter..."
|
||||
msgstr "Eingabe eines Zeichenstils"
|
||||
|
||||
#: zrcolagui.cpp:78 zrcolagui.cpp:180
|
||||
msgid "Display character search to select character to insert into text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:89
|
||||
#, fuzzy
|
||||
msgid "&Send Composed"
|
||||
msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#: zrcolagui.cpp:89 zrcolagui.cpp:182
|
||||
msgid "Send composed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:98
|
||||
#, fuzzy
|
||||
msgid "Send &Decomposed"
|
||||
msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#: zrcolagui.cpp:98 zrcolagui.cpp:184
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:107
|
||||
msgid "Abort (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:107
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:118
|
||||
msgid "&Settings..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:118
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:121
|
||||
#, fuzzy
|
||||
msgid "&Edit"
|
||||
msgstr "&Bearbeiten"
|
||||
|
||||
#: zrcolagui.cpp:125
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:125
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:129
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:129
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:135
|
||||
msgid "Character Catalo&g"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:135
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:138
|
||||
#, fuzzy
|
||||
msgid "&View"
|
||||
msgstr "&Ansicht..."
|
||||
|
||||
#: zrcolagui.cpp:142
|
||||
msgid "&Instructions..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:142
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:146
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:146
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:152
|
||||
msgid "&Request a new character..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:152
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:156
|
||||
msgid "Check for &Updates..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:156
|
||||
msgid "Check online for product update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:165
|
||||
#, fuzzy
|
||||
msgid "&Help"
|
||||
msgstr "&Hilfe"
|
||||
|
||||
#: zrcolagui.cpp:170
|
||||
#, fuzzy
|
||||
msgid "Cut"
|
||||
msgstr "Ausschneiden"
|
||||
|
||||
#: zrcolagui.cpp:170
|
||||
#, fuzzy
|
||||
msgid "Cut selection"
|
||||
msgstr "Auswahl ausschneiden"
|
||||
|
||||
#: zrcolagui.cpp:172
|
||||
#, fuzzy
|
||||
msgid "Copy"
|
||||
msgstr "Kopieren"
|
||||
|
||||
#: zrcolagui.cpp:172
|
||||
#, fuzzy
|
||||
msgid "Copy selection"
|
||||
msgstr "Auswahl kopieren"
|
||||
|
||||
#: zrcolagui.cpp:174
|
||||
#, fuzzy
|
||||
msgid "Paste"
|
||||
msgstr "Einfügen"
|
||||
|
||||
#: zrcolagui.cpp:174
|
||||
#, fuzzy
|
||||
msgid "Paste selection"
|
||||
msgstr "Auswahl einfügen"
|
||||
|
||||
#: zrcolagui.cpp:177
|
||||
#, fuzzy
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: zrcolagui.cpp:180
|
||||
#, fuzzy
|
||||
msgid "Find Character"
|
||||
msgstr "Eingabe eines Zeichenstils"
|
||||
|
||||
#: zrcolagui.cpp:182
|
||||
#, fuzzy
|
||||
msgid "Send Composed"
|
||||
msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#: zrcolagui.cpp:184
|
||||
#, fuzzy
|
||||
msgid "Send Decomposed"
|
||||
msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#: zrcolagui.cpp:187
|
||||
msgid "Compose"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:191
|
||||
msgid "Character Catalog"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:195
|
||||
msgid "(De)Composer"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:234
|
||||
msgid "Decomposed Text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:254
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:281
|
||||
msgid "Composed Text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:301
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:421
|
||||
#, fuzzy
|
||||
msgid "&Browse"
|
||||
msgstr "Durchsuchen"
|
||||
|
||||
#: zrcolagui.cpp:428
|
||||
msgid ""
|
||||
"Full or partial terms from Unicode character description (in English) to "
|
||||
"search for"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:432
|
||||
msgid "Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:433
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:445
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:452
|
||||
#, fuzzy
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: zrcolagui.cpp:453
|
||||
msgid "Select all categories"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:457
|
||||
#, fuzzy
|
||||
msgid "None"
|
||||
msgstr "Kein"
|
||||
|
||||
#: zrcolagui.cpp:458
|
||||
#, fuzzy
|
||||
msgid "Clear category selection"
|
||||
msgstr "Auswahl kopieren"
|
||||
|
||||
#: zrcolagui.cpp:462
|
||||
msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:463
|
||||
#, fuzzy
|
||||
msgid "Invert category selection"
|
||||
msgstr "Auswahl einfügen"
|
||||
|
||||
#: zrcolagui.cpp:502
|
||||
#, fuzzy
|
||||
msgid "Character search results"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:512
|
||||
msgid "Re¢ly Used"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:540
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:554
|
||||
#, fuzzy
|
||||
msgid "Preview"
|
||||
msgstr " Vorschau"
|
||||
|
||||
#: zrcolagui.cpp:559
|
||||
#, fuzzy
|
||||
msgid "U+"
|
||||
msgstr "Hilfeverzeichnis %u nicht gefunden."
|
||||
|
||||
#: zrcolagui.cpp:564
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:569
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:604
|
||||
#, fuzzy
|
||||
msgid "Character preview"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:609
|
||||
msgid "Unicode character description"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:614
|
||||
msgid "Unicode character category"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:621
|
||||
#, fuzzy
|
||||
msgid "« Back"
|
||||
msgstr "< &Zurück"
|
||||
|
||||
#: zrcolagui.cpp:623
|
||||
msgid "To previously viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:627
|
||||
#, fuzzy
|
||||
msgid "Forward »"
|
||||
msgstr "&Vorwärts"
|
||||
|
||||
#: zrcolagui.cpp:629
|
||||
msgid "To following viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:640
|
||||
msgid "Re&lated"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:667
|
||||
msgid "List of related characters"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:756
|
||||
msgid ""
|
||||
"Some character native to specific language you are working with should not "
|
||||
"decompose to primitives.\n"
|
||||
"For optimal decomposition you should set the language correctly."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:760
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:763
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:775
|
||||
msgid "Text Language"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:780
|
||||
msgid ""
|
||||
"ZRCola can be launched every time you log in to your computer.\n"
|
||||
"It will be available on the system tray and via registered shortcuts Win+F5 "
|
||||
"and Win+F6."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:784
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:791
|
||||
msgid "Startup"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:870
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Development and maintenance (2004-2015): dr. Peter Weiss"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:878
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:884
|
||||
msgid ""
|
||||
"Texts made using ZRCola have to include in the colophon, foreword, footnote "
|
||||
"or some other appropriate part of the publication the note below:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:888
|
||||
msgid ""
|
||||
"This text was written using the ZRCola input system (http://zrcola.zrc-sazu."
|
||||
"si), developed at the Science and Research Centre of SAZU in Ljubljana "
|
||||
"(http://www.zrc-sazu.si) by Dr. Peter Weiss."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:929
|
||||
#, fuzzy
|
||||
msgid "Log"
|
||||
msgstr "&Log"
|
||||
|
||||
#: zrcolagui.cpp:945
|
||||
#, fuzzy
|
||||
msgid "Quit and &Update..."
|
||||
msgstr "Kann Benutzer-Konfigurationsdatei nicht aktualisieren."
|
||||
|
||||
#: zrcolagui.cpp:947
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:951
|
||||
#, fuzzy
|
||||
msgid "&Close"
|
||||
msgstr "&Schließen"
|
||||
|
||||
#: zrcolagui.cpp:952
|
||||
#, fuzzy
|
||||
msgid "Close this window"
|
||||
msgstr "Fenster schließen"
|
||||
|
||||
#: zrcolagui.cpp:991
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:998
|
||||
msgid "Decomposed character to request"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1002
|
||||
msgid ""
|
||||
"Please, use the decomposed form.\n"
|
||||
"You can use ZRCola keyboard shortcuts to enter the character or Copy&&Paste "
|
||||
"it from the Decomposed window."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1012
|
||||
msgid ""
|
||||
"The &context, examples or short description why and where the character is "
|
||||
"required:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1018
|
||||
msgid "Additional notes for character request"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1025
|
||||
msgid ""
|
||||
"After clicking OK button, your e-mail application should open allowing you "
|
||||
"to submit the new character request to ZRCola Editor.\n"
|
||||
"Your e-mail application might not display all the characters correctly, but "
|
||||
"we'll encode the necessarry information so the Editor will be able to read "
|
||||
"it correctly."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolakeyhndlr.cpp:44
|
||||
msgid ""
|
||||
"INS key is pressed. Type the Unicode code of desired character now (up to "
|
||||
"four hexadecimal digits: 0-9, A-F), then release INS."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolasettings.cpp:93
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaupdater.cpp:94
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaupdater.cpp:94 zrcolagui.h:331
|
||||
msgid "Product Update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:243
|
||||
#, fuzzy
|
||||
msgid "Character Search"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.h:280
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:306
|
||||
msgid "About ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:9
|
||||
#, fuzzy
|
||||
msgid "&Continue"
|
||||
msgstr "Konnte den Kontext auf dem überlagerten Fenster nicht initialisieren."
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr ""
|
||||
|
||||
# Windows charset for this language (decimal)
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:3
|
||||
#, fuzzy
|
||||
msgid "1252"
|
||||
msgstr "1252"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:6
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:12
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:17
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:18
|
||||
msgid ""
|
||||
"Characters can be entered using keyboard shortcuts, the character catalogue "
|
||||
"(F4) or the character finding tool (F8)."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"IMPORTANT: Upon pressing the combination Win+F5 the program memorises the "
|
||||
"location of the cursor in the text. If ZRCola is brought to the foreground "
|
||||
"without using the aforementioned combination of keys, the program won't know "
|
||||
"where to insert the special characters!"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:13
|
||||
msgid ""
|
||||
"The string of basic and substitute characters is entered into the upper "
|
||||
"input window of the program. In the window below the resulted special "
|
||||
"characters are displayed. To insert them in the text, the F5 key is used."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
"When configured, ZRCola starts at system startup and runs in the background. "
|
||||
"If needed, it can be brought up by pressing the combination Win+F5."
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Auto Start"
|
||||
#~ msgstr "Samodejni zagon"
|
||||
|
||||
#~ msgid "Select %s language for decomposition"
|
||||
#~ msgstr "Izberi jezik %s za razstavljanje"
|
||||
|
||||
#~ msgid "&Start on Logon"
|
||||
#~ msgstr "Z&aženi ob prijavi"
|
||||
|
||||
#~ msgid "Start this program automatically on logon"
|
||||
#~ msgstr "Samodejno zaženi ta program ob prijavi"
|
||||
|
||||
#~ msgid "Set language according to keyboard layout automatically"
|
||||
#~ msgstr "Samodejno nastavi jezik glede na izbrano tipkovnico"
|
||||
|
||||
#~ msgid "&Unicode"
|
||||
#~ msgstr "&Unicode"
|
||||
|
||||
#~ msgid "Esc"
|
||||
#~ msgstr "Esc"
|
||||
|
||||
#~ msgid "F1"
|
||||
#~ msgstr "F1"
|
||||
|
||||
#~ msgid "F2"
|
||||
#~ msgstr "F2"
|
||||
|
||||
#~ msgid "F3"
|
||||
#~ msgstr "F3"
|
||||
|
||||
#~ msgid "F4"
|
||||
#~ msgstr "F4"
|
||||
|
||||
#~ msgid "F5"
|
||||
#~ msgstr "F5"
|
||||
|
||||
#~ msgid "F6"
|
||||
#~ msgstr "F6"
|
||||
|
||||
#~ msgid "F7"
|
||||
#~ msgstr "F7"
|
||||
|
||||
#~ msgid "F8"
|
||||
#~ msgstr "F8"
|
||||
|
||||
#~ msgid "F9"
|
||||
#~ msgstr "F9"
|
||||
|
||||
#~ msgid "F10"
|
||||
#~ msgstr "F10"
|
||||
|
||||
#~ msgid "F11"
|
||||
#~ msgstr "F11"
|
||||
|
||||
#~ msgid "F12"
|
||||
#~ msgstr "F12"
|
||||
|
||||
#~ msgid "Print Screen"
|
||||
#~ msgstr "Print Screen"
|
||||
|
||||
#~ msgid "Scroll Lock"
|
||||
#~ msgstr "Scroll Lock"
|
||||
|
||||
#~ msgid "Pause"
|
||||
#~ msgstr "Pause"
|
||||
|
||||
#~ msgid "Backspace"
|
||||
#~ msgstr "Backspace"
|
||||
|
||||
#~ msgid "Tab"
|
||||
#~ msgstr "Tab"
|
||||
|
||||
#~ msgid "Caps Lock"
|
||||
#~ msgstr "Caps Lock"
|
||||
|
||||
#~ msgid "Return"
|
||||
#~ msgstr "Return"
|
||||
|
||||
#~ msgid "Space"
|
||||
#~ msgstr "preslednica"
|
||||
|
||||
#~ msgid "Shift"
|
||||
#~ msgstr "Shift"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Alt"
|
||||
#~ msgstr "Alle"
|
||||
|
||||
#~ msgid "Ctrl"
|
||||
#~ msgstr "Ctrl"
|
||||
|
||||
#~ msgid "Menu"
|
||||
#~ msgstr "Menu"
|
||||
|
||||
#~ msgid "Insert"
|
||||
#~ msgstr "Insert"
|
||||
|
||||
#~ msgid "Delete"
|
||||
#~ msgstr "Delete"
|
||||
|
||||
#~ msgid "Page Up"
|
||||
#~ msgstr "Page Up"
|
||||
|
||||
#~ msgid "Page Down"
|
||||
#~ msgstr "Page Down"
|
||||
|
||||
#~ msgid "Home"
|
||||
#~ msgstr "Home"
|
||||
|
||||
#~ msgid "End"
|
||||
#~ msgstr "End"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Left"
|
||||
|
||||
#~ msgid "Up"
|
||||
#~ msgstr "Up"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Right"
|
||||
|
||||
#~ msgid "Down"
|
||||
#~ msgstr "Down"
|
||||
|
||||
#~ msgid "Num Lock"
|
||||
#~ msgstr "Num Lock"
|
||||
|
||||
#~ msgid "`"
|
||||
#~ msgstr "`"
|
||||
|
||||
#~ msgid "-"
|
||||
#~ msgstr "-"
|
||||
|
||||
#~ msgid "["
|
||||
#~ msgstr "["
|
||||
|
||||
#~ msgid "]"
|
||||
#~ msgstr "]"
|
||||
|
||||
#~ msgid ":"
|
||||
#~ msgstr ":"
|
||||
|
||||
#~ msgid "'"
|
||||
#~ msgstr "'"
|
||||
|
||||
#~ msgid "\\"
|
||||
#~ msgstr "\\"
|
||||
|
||||
#~ msgid ","
|
||||
#~ msgstr ","
|
||||
|
||||
#~ msgid "."
|
||||
#~ msgstr "."
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
#~ msgid "INS"
|
||||
#~ msgstr "INS"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Character &Groups"
|
||||
#~ msgstr "Eingabe eines Zeichenstils"
|
||||
|
||||
#~ msgid "Language:"
|
||||
#~ msgstr "Jezik:"
|
||||
|
||||
#~ msgid "&About"
|
||||
#~ msgstr "O progr&amu"
|
||||
|
||||
#~ msgid "Cuts selected text and puts it on the clipboard"
|
||||
#~ msgstr "Izreže izbrano besedilo in ga shrani na odložišče"
|
||||
|
||||
#~ msgid "Copies selected text to the clipboard"
|
||||
#~ msgstr "Kopira izbrano besedilo na odložišče"
|
||||
|
||||
#~ msgid "Inserts text from the clipboard"
|
||||
#~ msgstr "Vstavi besedilo z odložišča"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "&Copy"
|
||||
#~ msgstr "Kopieren"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "&Paste"
|
||||
#~ msgstr "Einfügen"
|
||||
|
||||
#~ msgid "&File"
|
||||
#~ msgstr "&Datoteka"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Send Decomposed (F6)"
|
||||
#~ msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Send Composed (F5)"
|
||||
#~ msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "ZRCola keyboard shortcut Win+Shift+Z could not be registered. Some "
|
||||
#~ "functionality will not be available."
|
||||
#~ msgstr ""
|
||||
#~ "ZRColine bližnjice na tipkovnici Win+Shift+Z ni mogoče registrirati. "
|
||||
#~ "Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Authentication progress real time monitor"
|
||||
#~ msgstr "Nadzira postopek overovljanja v realnem času"
|
||||
|
||||
#~ msgid "Grave\t&7"
|
||||
#~ msgstr "Krativec\t&7"
|
||||
|
||||
#~ msgid "Acute\t&9"
|
||||
#~ msgstr "Ostrivec\t&9"
|
||||
|
||||
#~ msgid "Circumflex\t&3"
|
||||
#~ msgstr "Cirkumfleks\t&3"
|
||||
|
||||
#~ msgid "Inverted &breve"
|
||||
#~ msgstr "O&brnjen polkrog"
|
||||
|
||||
#~ msgid "&Accents"
|
||||
#~ msgstr "N&aglasi"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "There is already an auto hidden bar on this edge.\n"
|
||||
#~ "Only one auto hidden bar is allowed on each edge.\n"
|
||||
#~ "Auto-hide feature is now off."
|
||||
#~ msgstr ""
|
||||
#~ "Ob tem robu je že samodejno skrita pasica.\n"
|
||||
#~ "Na vsakem robu je lahko samo ena samodejno skrita pasica.\n"
|
||||
#~ "Samodejno skrivanje je zdaj izklopljeno."
|
||||
|
||||
#~ msgid "Hello World"
|
||||
#~ msgstr "Zdravo svet"
|
||||
|
||||
#~ msgid "&Hello...\tCtrl+H"
|
||||
#~ msgstr "&Pozdrav ...\tCtrl+H"
|
||||
|
||||
#~ msgid "Help string shown in status bar for this menu item"
|
||||
#~ msgstr "Niz s pomočjo prikazan v statusni vrstici za to točko menija"
|
||||
|
||||
#~ msgid "This is a wxWidgets' Hello world sample"
|
||||
#~ msgstr "To je primer Zdravo svet v wxWidgets"
|
||||
|
||||
#~ msgid "About Hello World"
|
||||
#~ msgstr "O Zdravo svet"
|
||||
|
||||
#~ msgid "Hello world from wxWidgets!"
|
||||
#~ msgstr "Zdravo svet iz wxWidgets!"
|
||||
|
||||
#~ msgid "Welcome to wxWidgets!"
|
||||
#~ msgstr "Dobrodošli v wxWidgets!"
|
||||
940
ZRCola/locale/ru_RU.po
Normal file
@@ -0,0 +1,940 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2016-06-14 09:58+0200\n"
|
||||
"PO-Revision-Date: 2016-06-14 09:58+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.8\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
|
||||
#: zrcolaabout.cpp:31
|
||||
#, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaapp.cpp:79 zrcolafrm.cpp:90 zrcolagui.cpp:860 zrcolagui.h:104
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: zrcolachrreq.cpp:49 zrcolagui.cpp:989
|
||||
#, fuzzy
|
||||
msgid "Character"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolachrreq.cpp:58 zrcolagui.cpp:1010
|
||||
msgid "Context"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrreq.cpp:64 zrcolagui.h:360
|
||||
msgid "Request a New Character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:39 zrcolachrslct.cpp:180 zrcolachrslct.cpp:624
|
||||
msgid "▸ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:183 zrcolachrslct.cpp:621
|
||||
msgid "▾ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:141
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:141 zrcolafrm.cpp:143
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:143
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:351
|
||||
msgid "http://zrcola-2.amebis.si/en/info/instructions/"
|
||||
msgstr "http://zrcola-2.amebis.si/ru/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:375
|
||||
msgid ""
|
||||
"http://zrcola-2.amebis.si/wp-content/uploads/2016/04/5_ZRCola-"
|
||||
"Tipkovnica_2009-06-21.pdf"
|
||||
msgstr ""
|
||||
"http://zrcola-2.amebis.si/wp-content/uploads/2016/04/5_ZRCola-"
|
||||
"Tipkovnica_2009-06-21.pdf"
|
||||
|
||||
#: zrcolagui.cpp:36
|
||||
msgid "E&xit"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:36
|
||||
msgid "Quit this program"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:39
|
||||
msgid "&Program"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:72
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:72
|
||||
msgid "Select all text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:78
|
||||
#, fuzzy
|
||||
msgid "Find C&haracter..."
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:78 zrcolagui.cpp:180
|
||||
msgid "Display character search to select character to insert into text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:89
|
||||
#, fuzzy
|
||||
msgid "&Send Composed"
|
||||
msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#: zrcolagui.cpp:89 zrcolagui.cpp:182
|
||||
msgid "Send composed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:98
|
||||
#, fuzzy
|
||||
msgid "Send &Decomposed"
|
||||
msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#: zrcolagui.cpp:98 zrcolagui.cpp:184
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:107
|
||||
msgid "Abort (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:107
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:118
|
||||
msgid "&Settings..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:118
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:121
|
||||
msgid "&Edit"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:125
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:125
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:129
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:129
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:135
|
||||
msgid "Character Catalo&g"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:135
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:138
|
||||
msgid "&View"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:142
|
||||
msgid "&Instructions..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:142
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:146
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:146
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:152
|
||||
msgid "&Request a new character..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:152
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:156
|
||||
msgid "Check for &Updates..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:156
|
||||
msgid "Check online for product update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:165
|
||||
msgid "&Help"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:170
|
||||
msgid "Cut"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:170
|
||||
msgid "Cut selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:172
|
||||
#, fuzzy
|
||||
msgid "Copy"
|
||||
msgstr "&Kopiraj"
|
||||
|
||||
#: zrcolagui.cpp:172
|
||||
msgid "Copy selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:174
|
||||
#, fuzzy
|
||||
msgid "Paste"
|
||||
msgstr "&Prilepi"
|
||||
|
||||
#: zrcolagui.cpp:174
|
||||
msgid "Paste selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:177
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:180
|
||||
#, fuzzy
|
||||
msgid "Find Character"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:182
|
||||
#, fuzzy
|
||||
msgid "Send Composed"
|
||||
msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#: zrcolagui.cpp:184
|
||||
#, fuzzy
|
||||
msgid "Send Decomposed"
|
||||
msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#: zrcolagui.cpp:187
|
||||
msgid "Compose"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:191
|
||||
msgid "Character Catalog"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:195
|
||||
msgid "(De)Composer"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:234
|
||||
msgid "Decomposed Text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:254
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:281
|
||||
msgid "Composed Text"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:301
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:421
|
||||
msgid "&Browse"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:428
|
||||
msgid ""
|
||||
"Full or partial terms from Unicode character description (in English) to "
|
||||
"search for"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:432
|
||||
msgid "Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:433
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:445
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:452
|
||||
#, fuzzy
|
||||
msgid "All"
|
||||
msgstr "Alt"
|
||||
|
||||
#: zrcolagui.cpp:453
|
||||
msgid "Select all categories"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:457
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:458
|
||||
msgid "Clear category selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:462
|
||||
msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:463
|
||||
msgid "Invert category selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:502
|
||||
#, fuzzy
|
||||
msgid "Character search results"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:512
|
||||
msgid "Re¢ly Used"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:540
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:554
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:559
|
||||
msgid "U+"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:564
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:569
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:604
|
||||
#, fuzzy
|
||||
msgid "Character preview"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.cpp:609
|
||||
msgid "Unicode character description"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:614
|
||||
msgid "Unicode character category"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:621
|
||||
msgid "« Back"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:623
|
||||
msgid "To previously viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:627
|
||||
msgid "Forward »"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:629
|
||||
msgid "To following viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:640
|
||||
msgid "Re&lated"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:667
|
||||
msgid "List of related characters"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:756
|
||||
msgid ""
|
||||
"Some character native to specific language you are working with should not "
|
||||
"decompose to primitives.\n"
|
||||
"For optimal decomposition you should set the language correctly."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:760
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:763
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:775
|
||||
msgid "Text Language"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:780
|
||||
msgid ""
|
||||
"ZRCola can be launched every time you log in to your computer.\n"
|
||||
"It will be available on the system tray and via registered shortcuts Win+F5 "
|
||||
"and Win+F6."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:784
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:791
|
||||
msgid "Startup"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:870
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Development and maintenance (2004-2015): dr. Peter Weiss"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:878
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:884
|
||||
msgid ""
|
||||
"Texts made using ZRCola have to include in the colophon, foreword, footnote "
|
||||
"or some other appropriate part of the publication the note below:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:888
|
||||
msgid ""
|
||||
"This text was written using the ZRCola input system (http://zrcola.zrc-sazu."
|
||||
"si), developed at the Science and Research Centre of SAZU in Ljubljana "
|
||||
"(http://www.zrc-sazu.si) by Dr. Peter Weiss."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:929
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:945
|
||||
msgid "Quit and &Update..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:947
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:951
|
||||
msgid "&Close"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:952
|
||||
msgid "Close this window"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:991
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:998
|
||||
msgid "Decomposed character to request"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1002
|
||||
msgid ""
|
||||
"Please, use the decomposed form.\n"
|
||||
"You can use ZRCola keyboard shortcuts to enter the character or Copy&&Paste "
|
||||
"it from the Decomposed window."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1012
|
||||
msgid ""
|
||||
"The &context, examples or short description why and where the character is "
|
||||
"required:"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1018
|
||||
msgid "Additional notes for character request"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:1025
|
||||
msgid ""
|
||||
"After clicking OK button, your e-mail application should open allowing you "
|
||||
"to submit the new character request to ZRCola Editor.\n"
|
||||
"Your e-mail application might not display all the characters correctly, but "
|
||||
"we'll encode the necessarry information so the Editor will be able to read "
|
||||
"it correctly."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolakeyhndlr.cpp:44
|
||||
msgid ""
|
||||
"INS key is pressed. Type the Unicode code of desired character now (up to "
|
||||
"four hexadecimal digits: 0-9, A-F), then release INS."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolasettings.cpp:93
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaupdater.cpp:94
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaupdater.cpp:94 zrcolagui.h:331
|
||||
msgid "Product Update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:243
|
||||
#, fuzzy
|
||||
msgid "Character Search"
|
||||
msgstr "Skupine &znakov"
|
||||
|
||||
#: zrcolagui.h:280
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:306
|
||||
msgid "About ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:9
|
||||
msgid "&Continue"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr ""
|
||||
|
||||
# Windows charset for this language (decimal)
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:3
|
||||
#, fuzzy
|
||||
msgid "1252"
|
||||
msgstr "1251"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:6
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:12
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:17
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:18
|
||||
msgid ""
|
||||
"Characters can be entered using keyboard shortcuts, the character catalogue "
|
||||
"(F4) or the character finding tool (F8)."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"IMPORTANT: Upon pressing the combination Win+F5 the program memorises the "
|
||||
"location of the cursor in the text. If ZRCola is brought to the foreground "
|
||||
"without using the aforementioned combination of keys, the program won't know "
|
||||
"where to insert the special characters!"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:13
|
||||
msgid ""
|
||||
"The string of basic and substitute characters is entered into the upper "
|
||||
"input window of the program. In the window below the resulted special "
|
||||
"characters are displayed. To insert them in the text, the F5 key is used."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/En.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/En.x64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/En.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
"When configured, ZRCola starts at system startup and runs in the background. "
|
||||
"If needed, it can be brought up by pressing the combination Win+F5."
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Auto Start"
|
||||
#~ msgstr "Samodejni zagon"
|
||||
|
||||
#~ msgid "Select %s language for decomposition"
|
||||
#~ msgstr "Izberi jezik %s za razstavljanje"
|
||||
|
||||
#~ msgid "&Start on Logon"
|
||||
#~ msgstr "Z&aženi ob prijavi"
|
||||
|
||||
#~ msgid "Start this program automatically on logon"
|
||||
#~ msgstr "Samodejno zaženi ta program ob prijavi"
|
||||
|
||||
#~ msgid "Set language according to keyboard layout automatically"
|
||||
#~ msgstr "Samodejno nastavi jezik glede na izbrano tipkovnico"
|
||||
|
||||
#~ msgid "&Unicode"
|
||||
#~ msgstr "&Unicode"
|
||||
|
||||
#~ msgid "Esc"
|
||||
#~ msgstr "Esc"
|
||||
|
||||
#~ msgid "F1"
|
||||
#~ msgstr "F1"
|
||||
|
||||
#~ msgid "F2"
|
||||
#~ msgstr "F2"
|
||||
|
||||
#~ msgid "F3"
|
||||
#~ msgstr "F3"
|
||||
|
||||
#~ msgid "F4"
|
||||
#~ msgstr "F4"
|
||||
|
||||
#~ msgid "F5"
|
||||
#~ msgstr "F5"
|
||||
|
||||
#~ msgid "F6"
|
||||
#~ msgstr "F6"
|
||||
|
||||
#~ msgid "F7"
|
||||
#~ msgstr "F7"
|
||||
|
||||
#~ msgid "F8"
|
||||
#~ msgstr "F8"
|
||||
|
||||
#~ msgid "F9"
|
||||
#~ msgstr "F9"
|
||||
|
||||
#~ msgid "F10"
|
||||
#~ msgstr "F10"
|
||||
|
||||
#~ msgid "F11"
|
||||
#~ msgstr "F11"
|
||||
|
||||
#~ msgid "F12"
|
||||
#~ msgstr "F12"
|
||||
|
||||
#~ msgid "Print Screen"
|
||||
#~ msgstr "Print Screen"
|
||||
|
||||
#~ msgid "Scroll Lock"
|
||||
#~ msgstr "Scroll Lock"
|
||||
|
||||
#~ msgid "Pause"
|
||||
#~ msgstr "Pause"
|
||||
|
||||
#~ msgid "Backspace"
|
||||
#~ msgstr "Backspace"
|
||||
|
||||
#~ msgid "Tab"
|
||||
#~ msgstr "Tab"
|
||||
|
||||
#~ msgid "Caps Lock"
|
||||
#~ msgstr "Caps Lock"
|
||||
|
||||
#~ msgid "Return"
|
||||
#~ msgstr "Return"
|
||||
|
||||
#~ msgid "Space"
|
||||
#~ msgstr "preslednica"
|
||||
|
||||
#~ msgid "Shift"
|
||||
#~ msgstr "Shift"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Alt"
|
||||
#~ msgstr "Alt"
|
||||
|
||||
#~ msgid "Ctrl"
|
||||
#~ msgstr "Ctrl"
|
||||
|
||||
#~ msgid "Menu"
|
||||
#~ msgstr "Menu"
|
||||
|
||||
#~ msgid "Insert"
|
||||
#~ msgstr "Insert"
|
||||
|
||||
#~ msgid "Delete"
|
||||
#~ msgstr "Delete"
|
||||
|
||||
#~ msgid "Page Up"
|
||||
#~ msgstr "Page Up"
|
||||
|
||||
#~ msgid "Page Down"
|
||||
#~ msgstr "Page Down"
|
||||
|
||||
#~ msgid "Home"
|
||||
#~ msgstr "Home"
|
||||
|
||||
#~ msgid "End"
|
||||
#~ msgstr "End"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Left"
|
||||
|
||||
#~ msgid "Up"
|
||||
#~ msgstr "Up"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Right"
|
||||
|
||||
#~ msgid "Down"
|
||||
#~ msgstr "Down"
|
||||
|
||||
#~ msgid "Num Lock"
|
||||
#~ msgstr "Num Lock"
|
||||
|
||||
#~ msgid "`"
|
||||
#~ msgstr "`"
|
||||
|
||||
#~ msgid "-"
|
||||
#~ msgstr "-"
|
||||
|
||||
#~ msgid "["
|
||||
#~ msgstr "["
|
||||
|
||||
#~ msgid "]"
|
||||
#~ msgstr "]"
|
||||
|
||||
#~ msgid ":"
|
||||
#~ msgstr ":"
|
||||
|
||||
#~ msgid "'"
|
||||
#~ msgstr "'"
|
||||
|
||||
#~ msgid "\\"
|
||||
#~ msgstr "\\"
|
||||
|
||||
#~ msgid ","
|
||||
#~ msgstr ","
|
||||
|
||||
#~ msgid "."
|
||||
#~ msgstr "."
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
#~ msgid "INS"
|
||||
#~ msgstr "INS"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Character &Groups"
|
||||
#~ msgstr "Skupine &znakov"
|
||||
|
||||
#~ msgid "Language:"
|
||||
#~ msgstr "Jezik:"
|
||||
|
||||
#~ msgid "&About"
|
||||
#~ msgstr "O progr&amu"
|
||||
|
||||
#~ msgid "Cuts selected text and puts it on the clipboard"
|
||||
#~ msgstr "Izreže izbrano besedilo in ga shrani na odložišče"
|
||||
|
||||
#~ msgid "Copies selected text to the clipboard"
|
||||
#~ msgstr "Kopira izbrano besedilo na odložišče"
|
||||
|
||||
#~ msgid "Inserts text from the clipboard"
|
||||
#~ msgstr "Vstavi besedilo z odložišča"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "&Copy"
|
||||
#~ msgstr "&Kopiraj"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "&Paste"
|
||||
#~ msgstr "&Prilepi"
|
||||
|
||||
#~ msgid "&File"
|
||||
#~ msgstr "&Datoteka"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Send Decomposed (F6)"
|
||||
#~ msgstr "Pošlji razstavljeno (F6)"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Send Composed (F5)"
|
||||
#~ msgstr "Pošlji sestavljeno (F5)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "ZRCola keyboard shortcut Win+Shift+Z could not be registered. Some "
|
||||
#~ "functionality will not be available."
|
||||
#~ msgstr ""
|
||||
#~ "ZRColine bližnjice na tipkovnici Win+Shift+Z ni mogoče registrirati. "
|
||||
#~ "Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Authentication progress real time monitor"
|
||||
#~ msgstr "Nadzira postopek overovljanja v realnem času"
|
||||
|
||||
#~ msgid "Grave\t&7"
|
||||
#~ msgstr "Krativec\t&7"
|
||||
|
||||
#~ msgid "Acute\t&9"
|
||||
#~ msgstr "Ostrivec\t&9"
|
||||
|
||||
#~ msgid "Circumflex\t&3"
|
||||
#~ msgstr "Cirkumfleks\t&3"
|
||||
|
||||
#~ msgid "Inverted &breve"
|
||||
#~ msgstr "O&brnjen polkrog"
|
||||
|
||||
#~ msgid "&Accents"
|
||||
#~ msgstr "N&aglasi"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "There is already an auto hidden bar on this edge.\n"
|
||||
#~ "Only one auto hidden bar is allowed on each edge.\n"
|
||||
#~ "Auto-hide feature is now off."
|
||||
#~ msgstr ""
|
||||
#~ "Ob tem robu je že samodejno skrita pasica.\n"
|
||||
#~ "Na vsakem robu je lahko samo ena samodejno skrita pasica.\n"
|
||||
#~ "Samodejno skrivanje je zdaj izklopljeno."
|
||||
|
||||
#~ msgid "Hello World"
|
||||
#~ msgstr "Zdravo svet"
|
||||
|
||||
#~ msgid "&Hello...\tCtrl+H"
|
||||
#~ msgstr "&Pozdrav ...\tCtrl+H"
|
||||
|
||||
#~ msgid "Help string shown in status bar for this menu item"
|
||||
#~ msgstr "Niz s pomočjo prikazan v statusni vrstici za to točko menija"
|
||||
|
||||
#~ msgid "This is a wxWidgets' Hello world sample"
|
||||
#~ msgstr "To je primer Zdravo svet v wxWidgets"
|
||||
|
||||
#~ msgid "About Hello World"
|
||||
#~ msgstr "O Zdravo svet"
|
||||
|
||||
#~ msgid "Hello world from wxWidgets!"
|
||||
#~ msgstr "Zdravo svet iz wxWidgets!"
|
||||
|
||||
#~ msgid "Welcome to wxWidgets!"
|
||||
#~ msgstr "Dobrodošli v wxWidgets!"
|
||||
BIN
ZRCola/res/char_select.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1794
ZRCola/res/char_select.pdf
Normal file
BIN
ZRCola/res/navigate_back.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1936
ZRCola/res/navigate_back.pdf
Normal file
BIN
ZRCola/res/navigate_forward.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1947
ZRCola/res/navigate_forward.pdf
Normal file
@@ -20,18 +20,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "../include/zrcola.h"
|
||||
#include "zrcolaabout.h"
|
||||
#include "zrcolaapp.h"
|
||||
#include "zrcolachrcatpnl.h"
|
||||
#include "zrcolachrgrid.h"
|
||||
#include "zrcolachrreq.h"
|
||||
#include "zrcolacomppnl.h"
|
||||
#include "zrcolafrm.h"
|
||||
#include "zrcolakeyhndlr.h"
|
||||
#include "zrcolasettings.h"
|
||||
#include "zrcolaupdater.h"
|
||||
|
||||
#include <Updater/chkthread.h>
|
||||
|
||||
#include <wxex/common.h>
|
||||
#include <wxex/url.h>
|
||||
#include <wxex/persist/auimanager.h>
|
||||
|
||||
#include <wx/ffile.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/persist.h>
|
||||
#include <wx/persist/toplevel.h>
|
||||
#include <wxex/common.h>
|
||||
#include <wx/utils.h>
|
||||
#include <wx/valtext.h>
|
||||
#include <wx/socket.h>
|
||||
|
||||
#include <WinStd/MSI.h>
|
||||
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <stdex/idrec.h>
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
#include <Msi.h>
|
||||
#include <ShObjIdl.h>
|
||||
#include <ShlGuid.h>
|
||||
#endif
|
||||
|
||||
32
ZRCola/zrcolaabout.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaAbout
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaAbout::wxZRColaAbout(wxWindow* parent) : wxZRColaAboutBase(parent)
|
||||
{
|
||||
m_staticTextVersion->SetLabelText(wxT(ZRCOLA_VERSION_STR));
|
||||
|
||||
m_staticTextCopyright->SetLabelText(wxString::Format(_("© 2004-%s ZRC SAZU"), wxT(ZRCOLA_BUILD_YEAR_STR)));
|
||||
}
|
||||
38
ZRCola/zrcolaabout.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaAbout;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
|
||||
|
||||
///
|
||||
/// About ZRCola dialog
|
||||
///
|
||||
class wxZRColaAbout : public wxZRColaAboutBase
|
||||
{
|
||||
public:
|
||||
wxZRColaAbout(wxWindow* parent);
|
||||
};
|
||||
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#if defined(__WXMSW__)
|
||||
#pragma comment(lib, "msi.lib")
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -27,13 +30,26 @@
|
||||
wxIMPLEMENT_APP(ZRColaApp);
|
||||
|
||||
|
||||
ZRColaApp::ZRColaApp() : wxApp()
|
||||
ZRColaApp::ZRColaApp() :
|
||||
m_mainWnd(NULL),
|
||||
#ifdef __WXMSW__
|
||||
m_running(NULL),
|
||||
#endif
|
||||
wxApp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool ZRColaApp::OnInit()
|
||||
{
|
||||
#if defined(__WXMSW__)
|
||||
// To compensate migration to non-advertised shortcut, do the Microsoft Installer's feature completeness check manually.
|
||||
// If execution got this far in the first place (EXE and dependent DLLs are present and loadable).
|
||||
// Furthermore, this increments program usage counter.
|
||||
if (::MsiQueryFeatureState(_T(ZRCOLA_VERSION_GUID), _T("featZRCola")) != INSTALLSTATE_UNKNOWN)
|
||||
::MsiUseFeature(_T(ZRCOLA_VERSION_GUID), _T("featZRCola"));
|
||||
#endif
|
||||
|
||||
wxConfigBase *cfgPrev = wxConfigBase::Set(new wxConfig(wxT(ZRCOLA_CFG_APPLICATION), wxT(ZRCOLA_CFG_VENDOR)));
|
||||
if (cfgPrev) wxDELETE(cfgPrev);
|
||||
|
||||
@@ -47,13 +63,128 @@ bool ZRColaApp::OnInit()
|
||||
if (wxConfigBase::Get()->Read(wxT("LocalizationRepositoryPath"), &sPath))
|
||||
m_locale.AddCatalogLookupPathPrefix(sPath);
|
||||
wxVERIFY(m_locale.Init(language));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("wxExtend")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("wxExtend") wxT(wxExtendVersion)));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("Updater") wxT(wxUpdaterVersion)));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("libZRColaUI")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("ZRCola")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("ZRCola-zrcdb")));
|
||||
}
|
||||
|
||||
wxZRColaFrame* mainFrame = new wxZRColaFrame();
|
||||
wxPersistentRegisterAndRestore<wxTopLevelWindow>(mainFrame);
|
||||
mainFrame->Show();
|
||||
#ifdef __WXMSW__
|
||||
// Create global event.
|
||||
m_running = ::CreateEvent(NULL, FALSE, FALSE, _T(ZRCOLA_CFG_APPLICATION) _T("{BBDE7AAD-29B6-4B83-ADA1-92AFA81A0883}"));
|
||||
wxASSERT(m_running);
|
||||
if (::GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
// ZRCola is already running. Find its window.
|
||||
HWND okno = ::FindWindow(_T("wxWindowNR"), _("ZRCola"));
|
||||
if (okno) {
|
||||
if (::IsIconic(okno))
|
||||
::SendMessage(okno, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
::SetActiveWindow(okno);
|
||||
::SetForegroundWindow(okno);
|
||||
|
||||
// Not an error condition actually; Just nothing else to do...
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
std::fstream dat((LPCTSTR)GetDatabaseFilePath(), std::ios_base::in | std::ios_base::binary);
|
||||
if (dat.good()) {
|
||||
if (stdex::idrec::find<ZRCola::recordid_t, ZRCola::recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(ZRCola::recordid_t))) {
|
||||
ZRCola::recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(ZRCola::recordsize_t));
|
||||
if (dat.good()) {
|
||||
bool has_translation_data = false;
|
||||
|
||||
for (;;) {
|
||||
ZRCola::recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == ZRCola::translation_rec::id) {
|
||||
dat >> ZRCola::translation_rec(m_t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
} else {
|
||||
wxFAIL_MSG(wxT("Error reading translation data from ZRCola.zrcdb."));
|
||||
m_t_db.idxComp .clear();
|
||||
m_t_db.idxDecomp.clear();
|
||||
m_t_db.data .clear();
|
||||
}
|
||||
} 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.idxChr.clear();
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
m_lc_db.idxLng.clear();
|
||||
#endif
|
||||
m_lc_db.data .clear();
|
||||
}
|
||||
} 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.idxLng.clear();
|
||||
m_lang_db.data .clear();
|
||||
}
|
||||
} 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.idxChr.clear();
|
||||
m_ks_db.idxKey.clear();
|
||||
m_ks_db.data .clear();
|
||||
}
|
||||
} 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.idxChr.clear();
|
||||
m_chr_db.data .clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrcat_rec::id) {
|
||||
dat >> ZRCola::chrcat_rec(m_cc_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character category data from ZRCola.zrcdb."));
|
||||
m_cc_db.idxChrCat.clear();
|
||||
m_cc_db.idxRnk .clear();
|
||||
m_cc_db.data .clear();
|
||||
}
|
||||
} else
|
||||
stdex::idrec::ignore<ZRCola::recordsize_t, ZRCOLA_RECORD_ALIGN>(dat);
|
||||
}
|
||||
|
||||
if (!has_translation_data)
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb has no translation data."));
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb is not a valid ZRCola database."));
|
||||
}
|
||||
|
||||
// Initialize sockets. Otherwise Updater thread will not work.
|
||||
wxSocketBase::Initialize();
|
||||
|
||||
m_mainWnd = new wxZRColaFrame();
|
||||
wxPersistentRegisterAndRestore<wxZRColaFrame>(m_mainWnd);
|
||||
m_mainWnd->Show();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int ZRColaApp::OnExit()
|
||||
{
|
||||
wxSocketBase::Shutdown();
|
||||
|
||||
int res = wxApp::OnExit();
|
||||
|
||||
#ifdef __WXMSW__
|
||||
if (m_running) {
|
||||
wxVERIFY(::CloseHandle(m_running));
|
||||
m_running = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,14 @@ class ZRColaApp;
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolafrm.h"
|
||||
#include <wx/app.h>
|
||||
#include <wx/config.h>
|
||||
#include <wx/intl.h>
|
||||
#include <zrcola/character.h>
|
||||
#include <zrcola/language.h>
|
||||
#include <zrcola/translate.h>
|
||||
#include <zrcolaui/keyboard.h>
|
||||
|
||||
|
||||
///
|
||||
@@ -42,20 +47,44 @@ public:
|
||||
/// Called when application initializes.
|
||||
///
|
||||
/// \returns
|
||||
/// - true if initialization succeeded
|
||||
/// - false otherwise
|
||||
/// - \c true if initialization succeeded
|
||||
/// - \c false otherwise
|
||||
///
|
||||
virtual bool OnInit();
|
||||
|
||||
///
|
||||
/// Called when application uninitializes.
|
||||
///
|
||||
/// \returns Result code to return to OS
|
||||
///
|
||||
virtual int OnExit();
|
||||
|
||||
///
|
||||
/// \returns Path to database files
|
||||
///
|
||||
inline wxString GetDatabasePath() const;
|
||||
|
||||
///
|
||||
/// \returns Path to ZRCola.zrcdb file
|
||||
///
|
||||
inline wxString GetDatabasePath() const;
|
||||
inline wxString GetDatabaseFilePath() const;
|
||||
|
||||
public:
|
||||
ZRCola::translation_db m_t_db; ///< Translation database
|
||||
ZRCola::langchar_db m_lc_db; ///< Language character database
|
||||
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
|
||||
|
||||
wxZRColaFrame *m_mainWnd; ///< Main window
|
||||
|
||||
wxLocale m_locale; ///< Current locale
|
||||
|
||||
protected:
|
||||
wxLocale m_locale; ///< Current locale
|
||||
#ifdef __WXMSW__
|
||||
HANDLE m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -67,12 +96,17 @@ inline wxString ZRColaApp::GetDatabasePath() const
|
||||
wxString sPath;
|
||||
if (wxConfigBase::Get()->Read(wxT("DatabasePath"), &sPath)) {
|
||||
if (!wxEndsWithPathSeparator(sPath))
|
||||
sPath << wxFILE_SEP_PATH;
|
||||
sPath += wxFILE_SEP_PATH;
|
||||
} else {
|
||||
sPath = wxPathOnly(argv[0]);
|
||||
sPath << wxT("\\..\\data\\");
|
||||
sPath += wxT("\\..\\data\\");
|
||||
}
|
||||
sPath << wxT("ZRCola.zrcdb");
|
||||
|
||||
return sPath;
|
||||
}
|
||||
|
||||
|
||||
inline wxString ZRColaApp::GetDatabaseFilePath() const
|
||||
{
|
||||
return GetDatabasePath() + wxT("ZRCola.zrcdb");
|
||||
}
|
||||
|
||||
193
ZRCola/zrcolachrcatpnl.cpp
Normal file
@@ -0,0 +1,193 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharacterCatalogPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(wxZRColaCharacterCatalogPanel, wxZRColaCharacterCatalogPanelBase)
|
||||
EVT_MENU(wxZRColaCharacterCatalogPanel::wxID_FOCUS_DECOMPOSED, wxZRColaCharacterCatalogPanel::OnFocusDecomposed)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
wxZRColaCharacterCatalogPanel::wxZRColaCharacterCatalogPanel(wxWindow* parent) : wxZRColaCharacterCatalogPanelBase(parent)
|
||||
{
|
||||
std::fstream dat((LPCTSTR)((ZRColaApp*)wxTheApp)->GetDatabaseFilePath(), std::ios_base::in | std::ios_base::binary);
|
||||
if (dat.good()) {
|
||||
if (stdex::idrec::find<ZRCola::recordid_t, ZRCola::recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(ZRCola::recordid_t))) {
|
||||
ZRCola::recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(ZRCola::recordsize_t));
|
||||
if (dat.good()) {
|
||||
ZRCola::chrgrp_rec rec(m_cg_db);
|
||||
if (rec.find(dat, size)) {
|
||||
dat >> rec;
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character group data from ZRCola.zrcdb."));
|
||||
m_cg_db.idxRnk.clear();
|
||||
m_cg_db.data .clear();
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb has no character group data."));
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb is not a valid ZRCola database."));
|
||||
}
|
||||
|
||||
if (!m_cg_db.idxRnk.empty()) {
|
||||
// Populate character group list.
|
||||
for (size_t i = 0, n = m_cg_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = m_cg_db.idxRnk[i];
|
||||
wxString
|
||||
label(cg.data, cg.name_len),
|
||||
label_tran2(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_choice->Insert(label_tran2, i);
|
||||
}
|
||||
m_cg_id = m_cg_db.idxRnk[0].id;
|
||||
m_choice->Select(0);
|
||||
|
||||
// Update grid by simulating wxEVT_COMMAND_CHOICE_SELECTED event.
|
||||
wxCommandEvent e(wxEVT_COMMAND_CHOICE_SELECTED, m_grid->GetId());
|
||||
e.SetInt(0);
|
||||
OnChoice(e);
|
||||
}
|
||||
|
||||
// Register frame specific hotkey(s).
|
||||
{
|
||||
wxAcceleratorEntry entries[1];
|
||||
entries[0].Set(wxACCEL_NORMAL, WXK_ESCAPE, wxID_FOCUS_DECOMPOSED);
|
||||
SetAcceleratorTable(wxAcceleratorTable(_countof(entries), entries));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharacterCatalogPanel::~wxZRColaCharacterCatalogPanel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnChoice(wxCommandEvent& event)
|
||||
{
|
||||
ZRCola::chrgrp_db::chrgrp &cg = m_cg_db.idxRnk[event.GetSelection()];
|
||||
|
||||
m_cg_id = cg.id;
|
||||
m_grid->SetCharacters(wxString(cg.data + cg.name_len, cg.char_len));
|
||||
|
||||
// As size of the grid might have changed, relayout the panel.
|
||||
Layout();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnGridClick(wxGridEvent& event)
|
||||
{
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_decomposed->WriteText(m_grid->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
app->m_mainWnd->m_panel->m_decomposed->SetFocus();
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnGridKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
switch (event.GetKeyCode()) {
|
||||
case WXK_RETURN:
|
||||
case WXK_NUMPAD_ENTER:
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_decomposed->WriteText(m_grid->GetCellValue(m_grid->GetCursorRow(), m_grid->GetCursorColumn()));
|
||||
app->m_mainWnd->m_panel->m_decomposed->SetFocus();
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnFocusDecomposed(wxCommandEvent& event)
|
||||
{
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_decomposed->SetFocus();
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaCharacterCatalogPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaCharacterCatalogPanel::wxPersistentZRColaCharacterCatalogPanel(wxZRColaCharacterCatalogPanel *wnd) : wxPersistentWindow<wxZRColaCharacterCatalogPanel>(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxString wxPersistentZRColaCharacterCatalogPanel::GetKind() const
|
||||
{
|
||||
return wxT(wxPERSIST_TLW_KIND);
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharacterCatalogPanel::Save() const
|
||||
{
|
||||
const wxZRColaCharacterCatalogPanel * const wnd = static_cast<const wxZRColaCharacterCatalogPanel*>(GetWindow());
|
||||
|
||||
SaveValue(wxT("charGroup"), wnd->m_cg_id);
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharacterCatalogPanel::Restore()
|
||||
{
|
||||
wxZRColaCharacterCatalogPanel * const wnd = static_cast<wxZRColaCharacterCatalogPanel*>(GetWindow());
|
||||
|
||||
// Restore selected character group.
|
||||
int cg_id;
|
||||
if (RestoreValue(wxT("charGroup"), &cg_id)) {
|
||||
for (size_t i = 0, n = wnd->m_cg_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = wnd->m_cg_db.idxRnk[i];
|
||||
if (cg.id == cg_id) {
|
||||
wnd->m_cg_id = cg.id;
|
||||
wnd->m_choice->Select(i);
|
||||
|
||||
// Update grid by simulating wxEVT_COMMAND_CHOICE_SELECTED event.
|
||||
wxCommandEvent e(wxEVT_COMMAND_CHOICE_SELECTED, wnd->m_grid->GetId());
|
||||
e.SetInt(i);
|
||||
wnd->OnChoice(e);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
79
ZRCola/zrcolachrcatpnl.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharacterCatalogPanel;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include <zrcolaui/chargroup.h>
|
||||
#include <wx/persist/window.h>
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola character groups panel
|
||||
///
|
||||
class wxZRColaCharacterCatalogPanel : public wxZRColaCharacterCatalogPanelBase
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
wxID_FOCUS_DECOMPOSED = 6000,
|
||||
};
|
||||
|
||||
wxZRColaCharacterCatalogPanel(wxWindow* parent);
|
||||
virtual ~wxZRColaCharacterCatalogPanel();
|
||||
|
||||
friend class wxPersistentZRColaCharacterCatalogPanel; // Allow saving/restoring window state.
|
||||
|
||||
protected:
|
||||
virtual void OnChoice(wxCommandEvent& event);
|
||||
virtual void OnGridClick(wxGridEvent& event);
|
||||
virtual void OnGridKeyDown(wxKeyEvent& event);
|
||||
void OnFocusDecomposed(wxCommandEvent& event);
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
protected:
|
||||
ZRCola::chrgrp_db m_cg_db; ///< Character group database
|
||||
int m_cg_id; ///< Selected character group ID
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaCharacterCatalogPanel state
|
||||
///
|
||||
class wxPersistentZRColaCharacterCatalogPanel : public wxPersistentWindow<wxZRColaCharacterCatalogPanel>
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaCharacterCatalogPanel(wxZRColaCharacterCatalogPanel *wnd);
|
||||
|
||||
virtual wxString GetKind() const;
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaCharacterCatalogPanel *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaCharacterCatalogPanel(wnd);
|
||||
}
|
||||
226
ZRCola/zrcolachrgrid.cpp
Normal file
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharGrid
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(wxZRColaCharGrid, wxGrid)
|
||||
EVT_SIZE(wxZRColaCharGrid::OnSize)
|
||||
EVT_KEY_DOWN(wxZRColaCharGrid::OnKeyDown)
|
||||
EVT_TIMER(wxZRColaCharGrid::wxID_TOOLTIP_TIMER, wxZRColaCharGrid::OnTooltipTimer)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
wxZRColaCharGrid::wxZRColaCharGrid() : wxGrid()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharGrid::wxZRColaCharGrid(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) : wxGrid(parent, id, pos, size, wxWANTS_CHARS, name)
|
||||
{
|
||||
Init();
|
||||
|
||||
SetDefaultRowSize(wxZRColaCharacterGridRowHeight);
|
||||
|
||||
// Create timer for saving the state.
|
||||
m_timerToolTip.SetOwner(this, wxID_TOOLTIP_TIMER);
|
||||
|
||||
// wxEVT_MOTION event must be connected to the wxGridWindow, not wxGrid itself.
|
||||
wxWindow *gridWnd = GetGridWindow();
|
||||
gridWnd->Connect(gridWnd->GetId(), wxEVT_MOTION, wxMouseEventHandler(wxZRColaCharGrid::OnMotion), NULL, this);
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharGrid::~wxZRColaCharGrid()
|
||||
{
|
||||
wxWindow *gridWnd = GetGridWindow();
|
||||
gridWnd->Disconnect(gridWnd->GetId(), wxEVT_MOTION, wxMouseEventHandler(wxZRColaCharGrid::OnMotion), NULL, this);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::Init()
|
||||
{
|
||||
m_regenerate = false;
|
||||
m_isResizing = false;
|
||||
m_toolTipIdx = (size_t)-1;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::SetCharacters(const wxString &chars)
|
||||
{
|
||||
m_chars = chars;
|
||||
m_regenerate = true;
|
||||
|
||||
// Invoke OnSize(), which will populate the grid.
|
||||
wxSizeEvent e(GetSize(), m_windowId);
|
||||
e.SetEventObject(this);
|
||||
HandleWindowEvent(e);
|
||||
}
|
||||
|
||||
|
||||
wxString wxZRColaCharGrid::GetToolTipText(int idx)
|
||||
{
|
||||
wxASSERT_MSG(idx < (int)m_chars.Length(), wxT("index out of bounds"));
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
|
||||
// See if this character has a key sequence registered.
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
bool found;
|
||||
char ks[sizeof(ZRCola::keyseq_db::keyseq)] = {};
|
||||
((ZRCola::keyseq_db::keyseq*)ks)->chr = m_chars[idx];
|
||||
found = app->m_ks_db.idxChr.find(*(ZRCola::keyseq_db::keyseq*)ks, start);
|
||||
|
||||
if (found) {
|
||||
ZRCola::keyseq_db::keyseq &seq = app->m_ks_db.idxChr[start];
|
||||
wxString ks_str;
|
||||
if (ZRCola::keyseq_db::GetSequenceAsText(seq.seq, seq.seq_len, ks_str))
|
||||
return wxString::Format(wxT("U+%04X (%s)"), (int)m_chars[idx], ks_str.c_str());
|
||||
}
|
||||
|
||||
return wxString::Format(wxT("U+%04X"), (int)m_chars[idx]);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_isResizing)
|
||||
return;
|
||||
|
||||
m_isResizing = true;
|
||||
|
||||
// Calculate initial estimate of columns and rows.
|
||||
wxSize size(event.GetSize());
|
||||
size_t
|
||||
char_len = m_chars.Length();
|
||||
int
|
||||
width = size.GetWidth() - m_rowLabelWidth - m_extraWidth,
|
||||
cols = std::max<int>(width / wxZRColaCharacterGridColumnWidth, 1),
|
||||
rows = std::max<int>((char_len + cols - 1) / cols, 1);
|
||||
|
||||
if (m_colLabelHeight + rows*wxZRColaCharacterGridRowHeight + m_extraHeight > size.GetHeight()) {
|
||||
// Vertical scrollbar will be shown. Adjust the width and recalculate layout to avoid horizontal scrollbar.
|
||||
width = std::max<int>(width - wxSystemSettings::GetMetric(wxSYS_VSCROLL_X, this), 0);
|
||||
cols = std::max<int>(width / wxZRColaCharacterGridColumnWidth, 1);
|
||||
rows = std::max<int>((char_len + cols - 1) / cols, 1);
|
||||
}
|
||||
|
||||
BeginBatch();
|
||||
|
||||
if (m_regenerate || cols != m_numCols) {
|
||||
// Build and set new grid data.
|
||||
wxGridStringTable *table = new wxGridStringTable(rows, cols);
|
||||
for (int r = 0, i = 0; r < rows; r++)
|
||||
for (int c = 0; c < cols; c++, i++)
|
||||
table->SetValue(r, c, i < (int)char_len ? wxString(1, m_chars[i]) : wxEmptyString);
|
||||
SetTable(table, true);
|
||||
m_regenerate = false;
|
||||
}
|
||||
|
||||
for (int c = 0; c < cols; c++)
|
||||
SetColSize(c, wxZRColaCharacterGridColumnWidth);
|
||||
|
||||
//// Set column widths to stretch to full width.
|
||||
//for (int c = 0, x_l = 0; c < cols; c++) {
|
||||
// int x_r = (c + 1)*width/cols;
|
||||
// SetColSize(c, x_r - x_l);
|
||||
// x_l = x_r;
|
||||
//}
|
||||
|
||||
EndBatch();
|
||||
m_isResizing = false;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::OnKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
wxWindow *parentWnd;
|
||||
|
||||
int key_code = event.GetKeyCode();
|
||||
if (key_code == WXK_TAB && (parentWnd = GetParent()) != NULL) {
|
||||
wxNavigationKeyEvent eventNav;
|
||||
eventNav.SetDirection(!event.ShiftDown());
|
||||
eventNav.SetWindowChange(event.ControlDown());
|
||||
eventNav.SetEventObject(this);
|
||||
|
||||
if (parentWnd->HandleWindowEvent(eventNav))
|
||||
return;
|
||||
} else if (key_code == WXK_LEFT && m_currentCellCoords.GetCol() == 0 && m_currentCellCoords.GetRow()) {
|
||||
GoToCell(m_currentCellCoords.GetRow() - 1, m_numCols - 1);
|
||||
event.StopPropagation();
|
||||
return;
|
||||
} else if (key_code == WXK_RIGHT && m_currentCellCoords.GetCol() == m_numCols - 1 && m_currentCellCoords.GetRow() < m_numRows - 1) {
|
||||
GoToCell(m_currentCellCoords.GetRow() + 1, 0);
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::OnMotion(wxMouseEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxPoint ptMouse(CalcUnscrolledPosition(event.GetPosition()));
|
||||
int
|
||||
col = XToCol(ptMouse.x - m_rowLabelWidth ),
|
||||
row = YToRow(ptMouse.y - m_colLabelHeight);
|
||||
|
||||
if (col == wxNOT_FOUND || row == wxNOT_FOUND )
|
||||
return;
|
||||
|
||||
size_t toolTipIdx = row*m_numCols + col;
|
||||
if (toolTipIdx >= m_chars.Length()) {
|
||||
// Index out of range.
|
||||
m_toolTipIdx = (size_t)-1;
|
||||
m_timerToolTip.Stop();
|
||||
return;
|
||||
} else if (toolTipIdx != m_toolTipIdx) {
|
||||
// Cell changed.
|
||||
m_toolTipIdx = toolTipIdx;
|
||||
wxWindow *gridWnd = GetGridWindow();
|
||||
if (gridWnd->GetToolTip()) {
|
||||
// The tooltip is already shown. Update it immediately.
|
||||
gridWnd->SetToolTip(GetToolTipText(m_toolTipIdx));
|
||||
} else {
|
||||
// This must be our initial entry. Schedule tooltip display after 1s.
|
||||
m_timerToolTip.Start(1000, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::OnTooltipTimer(wxTimerEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_toolTipIdx >= m_chars.Length())
|
||||
return;
|
||||
|
||||
GetGridWindow()->SetToolTip(GetToolTipText(m_toolTipIdx));
|
||||
}
|
||||
104
ZRCola/zrcolachrgrid.h
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharGrid;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/grid.h>
|
||||
|
||||
|
||||
///
|
||||
/// Character grid layout
|
||||
///
|
||||
#define wxZRColaCharacterGridColumnWidth 35
|
||||
#define wxZRColaCharacterGridRowHeight 35
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola character grid
|
||||
///
|
||||
|
||||
class wxZRColaCharGrid : public wxGrid
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
wxID_TOOLTIP_TIMER = 2000,
|
||||
};
|
||||
|
||||
wxZRColaCharGrid();
|
||||
wxZRColaCharGrid(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxWANTS_CHARS, const wxString& name = wxGridNameStr);
|
||||
virtual ~wxZRColaCharGrid();
|
||||
|
||||
///
|
||||
/// Sets new array of characters to display
|
||||
///
|
||||
/// \param[in] chars The string containing characters to display
|
||||
///
|
||||
void SetCharacters(const wxString &chars);
|
||||
|
||||
///
|
||||
/// Returns displayed characters
|
||||
///
|
||||
/// \returns The string containing displayed characters
|
||||
///
|
||||
inline wxString GetCharacters() const
|
||||
{
|
||||
return m_chars;
|
||||
}
|
||||
|
||||
///
|
||||
/// Returns given character coordinates
|
||||
///
|
||||
/// \param[in] c Character
|
||||
///
|
||||
/// \returns Grid coordinates of selected character or (-1, -1) if character not found.
|
||||
///
|
||||
inline wxGridCellCoords GetCharacterCoords(wchar_t c) const
|
||||
{
|
||||
int i = m_chars.Find(c);
|
||||
return i != wxNOT_FOUND ? wxGridCellCoords(i / m_numCols, i % m_numCols) : wxGridCellCoords(-1, -1);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual wxString GetToolTipText(int idx);
|
||||
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnKeyDown(wxKeyEvent& event);
|
||||
void OnMotion(wxMouseEvent& event);
|
||||
void OnTooltipTimer(wxTimerEvent& event);
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
private:
|
||||
void Init(); // common part of all ctors
|
||||
|
||||
protected:
|
||||
wxString m_chars; ///< Array of Unicode characters to display in the grid
|
||||
|
||||
private:
|
||||
bool m_regenerate; ///< Force regenerate grid table
|
||||
bool m_isResizing; ///< Prevents nesting of OnSize() method.
|
||||
wxTimer m_timerToolTip; ///< Timer for displaying tooltip
|
||||
size_t m_toolTipIdx; ///< Index of cell for tooltip display
|
||||
};
|
||||
101
ZRCola/zrcolachrreq.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharRequest
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaCharRequest::wxZRColaCharRequest(wxWindow* parent) : wxZRColaCharRequestBase(parent)
|
||||
{
|
||||
m_character->PushEventHandler(new wxZRColaKeyHandler());
|
||||
m_context->PushEventHandler(new wxZRColaKeyHandler());
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharRequest::~wxZRColaCharRequest()
|
||||
{
|
||||
m_context->PopEventHandler(true);
|
||||
m_character->PopEventHandler(true);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharRequest::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
const wxString chr = m_character->GetValue();
|
||||
const wxString ctx = m_context->GetValue();
|
||||
wxString body;
|
||||
|
||||
body += _("Character") + wxT(": ");
|
||||
for (size_t i = 0, i_end = chr.Length(); i < i_end; i++) {
|
||||
if (chr[i] < 0x7f)
|
||||
body += chr[i];
|
||||
else
|
||||
body += wxString::Format(wxT("(U+%04X)"), chr[i]);
|
||||
}
|
||||
body += wxT('\n');
|
||||
if (!ctx.IsEmpty()) {
|
||||
body += _("Context") + wxT(": ");
|
||||
body += ctx;
|
||||
body += wxT('\n');
|
||||
}
|
||||
|
||||
wxLaunchDefaultBrowser(wxString::Format(wxT("mailto:janos.jezovnik@zrc-sazu.si&subject=%s&body=%s"),
|
||||
wxURLEncode(wxString((wxString(wxT("[ZRCola] ")) + _("Request a New Character")).ToUTF8())),
|
||||
wxURLEncode(body.ToUTF8())
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaCharRequest
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaCharRequest::wxPersistentZRColaCharRequest(wxZRColaCharRequest *wnd) : wxPersistentDialog(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharRequest::Save() const
|
||||
{
|
||||
wxPersistentDialog::Save();
|
||||
|
||||
const wxZRColaCharRequest * const wnd = static_cast<const wxZRColaCharRequest*>(GetWindow());
|
||||
|
||||
SaveValue(wxT("character"), wnd->m_character->GetValue());
|
||||
SaveValue(wxT("context"), wnd->m_context->GetValue());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharRequest::Restore()
|
||||
{
|
||||
wxZRColaCharRequest * const wnd = static_cast<wxZRColaCharRequest*>(GetWindow());
|
||||
|
||||
wxString str;
|
||||
if (RestoreValue(wxT("character"), &str))
|
||||
wnd->m_character->SetValue(str);
|
||||
if (RestoreValue(wxT("context"), &str))
|
||||
wnd->m_context->SetValue(str);
|
||||
|
||||
return wxPersistentDialog::Restore();
|
||||
}
|
||||
65
ZRCola/zrcolachrreq.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharRequest;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include "zrcolakeyhndlr.h"
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola New Character Request dialog
|
||||
///
|
||||
class wxZRColaCharRequest : public wxZRColaCharRequestBase
|
||||
{
|
||||
public:
|
||||
wxZRColaCharRequest(wxWindow* parent);
|
||||
virtual ~wxZRColaCharRequest();
|
||||
|
||||
friend class wxPersistentZRColaCharRequest; // Allow saving/restoring window state.
|
||||
|
||||
protected:
|
||||
virtual void OnOKButtonClick(wxCommandEvent& event);
|
||||
};
|
||||
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaCharRequest state
|
||||
///
|
||||
class wxPersistentZRColaCharRequest : public wxPersistentDialog
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaCharRequest(wxZRColaCharRequest *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaCharRequest *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaCharRequest(wnd);
|
||||
}
|
||||
631
ZRCola/zrcolachrslct.cpp
Normal file
@@ -0,0 +1,631 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharSelect
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxDEFINE_EVENT(wxEVT_SEARCH_COMPLETE, wxThreadEvent);
|
||||
|
||||
|
||||
wxZRColaCharSelect::wxZRColaCharSelect(wxWindow* parent) :
|
||||
m_searchChanged(false),
|
||||
m_unicodeChanged(false),
|
||||
m_char(0),
|
||||
m_searchThread(NULL),
|
||||
wxZRColaCharSelectBase(parent)
|
||||
{
|
||||
Connect(wxID_ANY, wxEVT_SEARCH_COMPLETE, wxThreadEventHandler(wxZRColaCharSelect::OnSearchComplete), NULL, this);
|
||||
|
||||
m_search_more->SetLabel(_(L"▸ Search Options"));
|
||||
|
||||
m_unicode->SetValidator(wxHexValidator<wchar_t>(&m_char, wxNUM_VAL_DEFAULT, 4));
|
||||
|
||||
// Fill categories.
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrcat_db::chrcat &cc = app->m_cc_db.idxRnk[i];
|
||||
int idx = m_categories->Insert(wxGetTranslation(wxString(cc.name, cc.name_len), wxT("ZRCola-zrcdb")), i);
|
||||
m_categories->Check(idx);
|
||||
m_ccOrder.insert(std::make_pair(cc.id, idx));
|
||||
}
|
||||
|
||||
ResetResults();
|
||||
|
||||
NavigationState state;
|
||||
state.m_char = m_char;
|
||||
state.m_related.m_selected.SetCol(m_gridRelated->GetGridCursorCol());
|
||||
state.m_related.m_selected.SetRow(m_gridRelated->GetGridCursorRow());
|
||||
m_historyCursor = m_history.insert(m_history.end(), state);
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharSelect::~wxZRColaCharSelect()
|
||||
{
|
||||
if (m_searchThread)
|
||||
m_searchThread->Delete();
|
||||
|
||||
Disconnect(wxID_ANY, wxEVT_SEARCH_COMPLETE, wxThreadEventHandler(wxZRColaCharSelect::OnSearchComplete), NULL, this);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_unicodeChanged) {
|
||||
if (m_unicode->GetValidator()->TransferFromWindow()) {
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
|
||||
m_gridPreview->SetCellValue(wxString(1, m_char), 0, 0);
|
||||
|
||||
char chr[sizeof(ZRCola::character_db::character)] = {};
|
||||
((ZRCola::character_db::character*)chr)->chr = m_char;
|
||||
size_t start;
|
||||
if (app->m_chr_db.idxChr.find(*(ZRCola::character_db::character*)chr, start)) {
|
||||
const ZRCola::character_db::character &chr = app->m_chr_db.idxChr[start];
|
||||
// Update characted description.
|
||||
m_description->SetValue(wxString(chr.data, chr.desc_len));
|
||||
{
|
||||
// See if this character has a key sequence registered.
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
char ks[sizeof(ZRCola::keyseq_db::keyseq)] = {};
|
||||
((ZRCola::keyseq_db::keyseq*)ks)->chr = m_char;
|
||||
if (app->m_ks_db.idxChr.find(*(ZRCola::keyseq_db::keyseq*)ks, start)) {
|
||||
ZRCola::keyseq_db::keyseq &seq = app->m_ks_db.idxChr[start];
|
||||
wxString ks_str;
|
||||
if (ZRCola::keyseq_db::GetSequenceAsText(seq.seq, seq.seq_len, ks_str))
|
||||
m_shortcut->SetValue(ks_str);
|
||||
else
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
} else
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
}
|
||||
{
|
||||
char cc[sizeof(ZRCola::chrcat_db::chrcat)] = {};
|
||||
((ZRCola::chrcat_db::chrcat*)cc)->id = chr.cat;
|
||||
size_t start;
|
||||
// Update character category.
|
||||
if (app->m_cc_db.idxChrCat.find(*((ZRCola::chrcat_db::chrcat*)cc), start)) {
|
||||
const ZRCola::chrcat_db::chrcat &cat = app->m_cc_db.idxChrCat[start];
|
||||
m_category->SetValue(wxGetTranslation(wxString(cat.name, cat.name_len), wxT("ZRCola-zrcdb")));
|
||||
} else
|
||||
m_category->SetValue(wxEmptyString);
|
||||
}
|
||||
// Update related characters.
|
||||
m_gridRelated->SetCharacters(wxString(chr.data + chr.desc_len, chr.rel_len));
|
||||
} else {
|
||||
m_description->SetValue(wxEmptyString);
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_gridRelated->ClearGrid();
|
||||
}
|
||||
|
||||
m_gridRelated->GoToCell(m_historyCursor->m_related.m_selected);
|
||||
|
||||
wxGridCellCoords coord(m_gridResults->GetCharacterCoords(m_char));
|
||||
if (coord.GetRow() != -1 && coord.GetCol() != -1) {
|
||||
m_gridResults->GoToCell(coord);
|
||||
m_gridResults->SetGridCursor(coord);
|
||||
} else
|
||||
m_gridResults->ClearSelection();
|
||||
}
|
||||
|
||||
m_unicodeChanged = false;
|
||||
} else if (m_searchChanged) {
|
||||
if (m_searchThread)
|
||||
m_searchThread->Delete();
|
||||
|
||||
wxString val(m_search->GetValue());
|
||||
if (!val.IsEmpty()) {
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
|
||||
m_searchThread = new SearchThread(this);
|
||||
|
||||
m_searchThread->m_search.assign(val.c_str(), val.Length());
|
||||
|
||||
// Select categories.
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrcat_db::chrcat &cc = app->m_cc_db.idxRnk[i];
|
||||
if (m_categories->IsChecked(i))
|
||||
m_searchThread->m_cats.insert(cc.id);
|
||||
}
|
||||
|
||||
if (m_searchThread->Run() != wxTHREAD_NO_ERROR) {
|
||||
wxFAIL_MSG("Can't create the thread!");
|
||||
delete m_searchThread;
|
||||
m_searchThread = NULL;
|
||||
}
|
||||
} else
|
||||
ResetResults();
|
||||
|
||||
m_searchChanged = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnSearchText(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnSearchMore(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
if (m_search_panel->IsShown()) {
|
||||
m_search_panel->Show(false);
|
||||
m_search_more->SetLabel(_(L"▸ Search Options"));
|
||||
} else {
|
||||
m_search_panel->Show(true);
|
||||
m_search_more->SetLabel(_(L"▾ Search Options"));
|
||||
}
|
||||
|
||||
this->Layout();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesAll(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++)
|
||||
m_categories->Check(i, true);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesNone(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++)
|
||||
m_categories->Check(i, false);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesInvert(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++)
|
||||
m_categories->Check(i, !m_categories->IsChecked(i));
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesToggle(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnSearchComplete(wxThreadEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_searchThread) {
|
||||
// Display results.
|
||||
wxString chars;
|
||||
chars.reserve(m_searchThread->m_hits.size());
|
||||
for (std::vector<std::pair<ZRCola::charrank_t, wchar_t> >::const_iterator i = m_searchThread->m_hits.cbegin(), i_end = m_searchThread->m_hits.cend(); i != i_end; ++i)
|
||||
chars += i->second;
|
||||
m_gridResults->SetCharacters(chars);
|
||||
|
||||
m_searchThread->Delete();
|
||||
m_searchThread = NULL;
|
||||
|
||||
m_gridResults->Scroll(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnResultSelectCell(wxGridEvent& event)
|
||||
{
|
||||
if (m_unicodeChanged) return;
|
||||
|
||||
wxString val(m_gridResults->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty())
|
||||
NavigateTo(val[0]);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnResultCellDClick(wxGridEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxString val(m_gridResults->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val[0]);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_sdbSizerButtonsOK->GetEventHandler()->ProcessEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnResultsKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
switch (event.GetKeyCode()) {
|
||||
case WXK_RETURN:
|
||||
case WXK_NUMPAD_ENTER:
|
||||
wxString val(m_gridResults->GetCellValue(m_gridResults->GetCursorRow(), m_gridResults->GetCursorColumn()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val[0]);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_sdbSizerButtonsOK->GetEventHandler()->ProcessEvent(e);
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnRecentSelectCell(wxGridEvent& event)
|
||||
{
|
||||
if (m_unicodeChanged) return;
|
||||
|
||||
wxString val(m_gridRecent->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty())
|
||||
NavigateTo(val[0]);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnRecentCellDClick(wxGridEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxString val(m_gridRecent->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val[0]);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_sdbSizerButtonsOK->GetEventHandler()->ProcessEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnRecentKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
switch (event.GetKeyCode()) {
|
||||
case WXK_RETURN:
|
||||
case WXK_NUMPAD_ENTER:
|
||||
wxString val(m_gridRecent->GetCellValue(m_gridRecent->GetCursorRow(), m_gridRecent->GetCursorColumn()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val[0]);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_sdbSizerButtonsOK->GetEventHandler()->ProcessEvent(e);
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnUnicodeText(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
m_unicodeChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnPreviewKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
int key_code = event.GetKeyCode();
|
||||
if (key_code == WXK_TAB != NULL) {
|
||||
wxNavigationKeyEvent eventNav;
|
||||
eventNav.SetDirection(!event.ShiftDown());
|
||||
eventNav.SetWindowChange(event.ControlDown());
|
||||
eventNav.SetEventObject(this);
|
||||
|
||||
if (HandleWindowEvent(eventNav))
|
||||
return;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnNavigateBack(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
NavigateBy(-1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnNavigateForward(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
NavigateBy(+1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnRelatedSelectCell(wxGridEvent& event)
|
||||
{
|
||||
if (m_unicodeChanged) return;
|
||||
|
||||
wxString val(m_gridRelated->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty())
|
||||
NavigateTo(val[0]);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxString
|
||||
recent(m_gridRecent->GetCharacters()),
|
||||
val(1, m_char);
|
||||
for (size_t i = 0, n = recent.Length(); i < n; i++) {
|
||||
const wxStringCharType c = recent[i];
|
||||
if (c != m_char)
|
||||
val += c;
|
||||
}
|
||||
|
||||
m_gridRecent->SetCharacters(val);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::ResetResults()
|
||||
{
|
||||
// Fill the results.
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
size_t i, n = app->m_chr_db.idxChr.size();
|
||||
wxString val;
|
||||
val.reserve(n);
|
||||
for (i = 0; i < n; i++) {
|
||||
const ZRCola::character_db::character &chr = app->m_chr_db.idxChr[i];
|
||||
std::map<ZRCola::chrcatid_t, int>::const_iterator idx = m_ccOrder.find(chr.cat);
|
||||
if (idx == m_ccOrder.end() || m_categories->IsChecked(idx->second))
|
||||
val += chr.chr;
|
||||
}
|
||||
m_gridResults->SetCharacters(val);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::NavigateBy(int offset)
|
||||
{
|
||||
if (offset != 0) {
|
||||
// Update history state
|
||||
m_historyCursor->m_related.m_selected.SetCol(m_gridRelated->GetGridCursorCol());
|
||||
m_historyCursor->m_related.m_selected.SetRow(m_gridRelated->GetGridCursorRow());
|
||||
|
||||
if (offset < 0) {
|
||||
while (m_historyCursor != m_history.begin() && offset) {
|
||||
--m_historyCursor; offset++;
|
||||
m_char = m_historyCursor->m_char;
|
||||
m_unicodeChanged = true;
|
||||
}
|
||||
} else {
|
||||
while (offset) {
|
||||
++m_historyCursor;
|
||||
if (m_historyCursor == m_history.end()) {
|
||||
// We're past the last history entry.
|
||||
--m_historyCursor;
|
||||
break;
|
||||
}
|
||||
offset--;
|
||||
m_char = m_historyCursor->m_char;
|
||||
m_unicodeChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
m_navigateBack->Enable(m_historyCursor != m_history.begin());
|
||||
std::list<NavigationState>::iterator cursor_next(m_historyCursor);
|
||||
++cursor_next;
|
||||
m_navigateForward->Enable(cursor_next != m_history.end());
|
||||
|
||||
if (m_unicodeChanged)
|
||||
m_unicode->GetValidator()->TransferToWindow();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::NavigateTo(wchar_t c)
|
||||
{
|
||||
if (m_char != c) {
|
||||
// Update history state
|
||||
m_historyCursor->m_related.m_selected.SetCol(m_gridRelated->GetGridCursorCol());
|
||||
m_historyCursor->m_related.m_selected.SetRow(m_gridRelated->GetGridCursorRow());
|
||||
|
||||
++m_historyCursor;
|
||||
|
||||
// Create new state.
|
||||
NavigationState state;
|
||||
state.m_char = m_char = c;
|
||||
state.m_related.m_selected.SetCol(0);
|
||||
state.m_related.m_selected.SetRow(0);
|
||||
m_historyCursor = m_history.insert(m_historyCursor, state);
|
||||
|
||||
// Purge the history's tail.
|
||||
std::list<NavigationState>::iterator cursor_next(m_historyCursor);
|
||||
++cursor_next;
|
||||
m_history.erase(cursor_next, m_history.end());
|
||||
|
||||
m_unicode->GetValidator()->TransferToWindow();
|
||||
|
||||
m_navigateBack->Enable(true);
|
||||
m_navigateForward->Enable(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharSelect::SearchThread::SearchThread(wxZRColaCharSelect *parent) :
|
||||
m_parent(parent),
|
||||
wxThread(wxTHREAD_JOINABLE)
|
||||
{
|
||||
//// This is a worker thread. Set priority between minimal and normal.
|
||||
//SetPriority((wxPRIORITY_MIN + wxPRIORITY_DEFAULT) / 2);
|
||||
}
|
||||
|
||||
|
||||
wxThread::ExitCode wxZRColaCharSelect::SearchThread::Entry()
|
||||
{
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
std::map<wchar_t, ZRCola::charrank_t> hits;
|
||||
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
|
||||
{
|
||||
// Search by indexes and merge results.
|
||||
std::map<wchar_t, 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;
|
||||
for (std::map<wchar_t, ZRCola::charrank_t>::const_iterator i = hits_sub.cbegin(), i_end = hits_sub.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
std::map<wchar_t, ZRCola::charrank_t>::iterator idx = hits.find(i->first);
|
||||
if (idx == hits.end())
|
||||
hits.insert(std::make_pair(i->first, i->second / 4));
|
||||
else
|
||||
idx->second += i->second / 4;
|
||||
}
|
||||
}
|
||||
|
||||
// Get best rank.
|
||||
ZRCola::charrank_t rank_ref = 0;
|
||||
for (std::map<wchar_t, ZRCola::charrank_t>::const_iterator i = hits.cbegin(), i_end = hits.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
if (i->second > rank_ref)
|
||||
rank_ref = i->second;
|
||||
}
|
||||
|
||||
// Now sort the characters by rank (taking only top 3/4 by rank).
|
||||
ZRCola::charrank_t rank_threshold = rank_ref*3/4;
|
||||
m_hits.reserve(hits.size());
|
||||
for (std::map<wchar_t, ZRCola::charrank_t>::const_iterator i = hits.cbegin(), i_end = hits.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
if (i->second > rank_threshold)
|
||||
m_hits.push_back(std::make_pair(i->second, i->first));
|
||||
}
|
||||
std::qsort(m_hits.data(), m_hits.size(), sizeof(std::pair<ZRCola::charrank_t, wchar_t>), CompareHits);
|
||||
|
||||
// Signal the event handler that this thread is going to be destroyed.
|
||||
// NOTE: here we assume that using the m_parent pointer is safe,
|
||||
// (in this case this is assured by the wxZRColaCharSelect destructor)
|
||||
wxQueueEvent(m_parent, new wxThreadEvent(wxEVT_SEARCH_COMPLETE));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
|
||||
if (_a->first > _b->first) return -1;
|
||||
else if (_a->first < _b->first) return 1;
|
||||
|
||||
if (_a->second < _b->second) return -1;
|
||||
else if (_a->second > _b->second) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool __cdecl wxZRColaCharSelect::SearchThread::TestDestroyS(void *cookie)
|
||||
{
|
||||
return static_cast<wxZRColaCharSelect::SearchThread*>(cookie)->TestDestroy();
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaCharSelect
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaCharSelect::wxPersistentZRColaCharSelect(wxZRColaCharSelect *wnd) : wxPersistentDialog(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharSelect::Save() const
|
||||
{
|
||||
wxPersistentDialog::Save();
|
||||
|
||||
const wxZRColaCharSelect * const wnd = static_cast<const wxZRColaCharSelect*>(GetWindow());
|
||||
|
||||
SaveValue(wxT("recentChars"), wnd->m_gridRecent->GetCharacters());
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrcat_db::chrcat &cc = app->m_cc_db.idxRnk[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.id.data, _countof(cc.id.data));
|
||||
SaveValue(name, wnd->m_categories->IsChecked(i));
|
||||
}
|
||||
|
||||
SaveValue(wxT("searchPanel"), wnd->m_search_panel->IsShown());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharSelect::Restore()
|
||||
{
|
||||
wxZRColaCharSelect * const wnd = static_cast<wxZRColaCharSelect*>(GetWindow());
|
||||
|
||||
wxString recent;
|
||||
if (RestoreValue(wxT("recentChars"), &recent))
|
||||
wnd->m_gridRecent->SetCharacters(recent);
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRnk.size(); i < n; i++) {
|
||||
const ZRCola::chrcat_db::chrcat &cc = app->m_cc_db.idxRnk[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.id.data, _countof(cc.id.data));
|
||||
bool val;
|
||||
if (RestoreValue(name, &val))
|
||||
wnd->m_categories->Check(i, val);
|
||||
}
|
||||
|
||||
bool search_panel;
|
||||
if (RestoreValue(wxT("searchPanel"), &search_panel)) {
|
||||
if (search_panel) {
|
||||
wnd->m_search_panel->Show(true);
|
||||
wnd->m_search_more->SetLabel(_(L"▾ Search Options"));
|
||||
} else {
|
||||
wnd->m_search_panel->Show(false);
|
||||
wnd->m_search_more->SetLabel(_(L"▸ Search Options"));
|
||||
}
|
||||
}
|
||||
|
||||
wnd->ResetResults();
|
||||
|
||||
return wxPersistentDialog::Restore();
|
||||
}
|
||||
145
ZRCola/zrcolachrslct.h
Normal file
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharSelect;
|
||||
class wxPersistentZRColaCharSelect;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include <zrcola/character.h>
|
||||
#include <wxex/valhex.h>
|
||||
#include <wxex/persist/dialog.h>
|
||||
#include <wx/event.h>
|
||||
#include <wx/thread.h>
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
|
||||
wxDECLARE_EVENT(wxEVT_SEARCH_COMPLETE, wxThreadEvent);
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola character select dialog
|
||||
///
|
||||
class wxZRColaCharSelect : public wxZRColaCharSelectBase
|
||||
{
|
||||
public:
|
||||
wxZRColaCharSelect(wxWindow* parent);
|
||||
virtual ~wxZRColaCharSelect();
|
||||
|
||||
friend class wxPersistentZRColaCharSelect; // Allow saving/restoring window state.
|
||||
friend class SearchThread; // For search thread back-notifications
|
||||
|
||||
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);
|
||||
void OnSearchComplete(wxThreadEvent& event);
|
||||
virtual void OnResultSelectCell(wxGridEvent& event);
|
||||
virtual void OnResultCellDClick(wxGridEvent& event);
|
||||
virtual void OnResultsKeyDown(wxKeyEvent& event);
|
||||
virtual void OnRecentSelectCell(wxGridEvent& event);
|
||||
virtual void OnRecentCellDClick(wxGridEvent& event);
|
||||
virtual void OnRecentKeyDown(wxKeyEvent& event);
|
||||
virtual void OnNavigateBack(wxHyperlinkEvent& event);
|
||||
virtual void OnNavigateForward(wxHyperlinkEvent& event);
|
||||
virtual void OnUnicodeText(wxCommandEvent& event);
|
||||
virtual void OnPreviewKeyDown(wxKeyEvent& event);
|
||||
virtual void OnRelatedSelectCell(wxGridEvent& event);
|
||||
virtual void OnOKButtonClick(wxCommandEvent& event);
|
||||
|
||||
void ResetResults();
|
||||
void NavigateBy(int offset);
|
||||
void NavigateTo(wchar_t c);
|
||||
|
||||
public:
|
||||
wchar_t m_char; ///< Currently selected character (0 when none)
|
||||
|
||||
protected:
|
||||
bool m_searchChanged; ///< Did Search field or category selection change?
|
||||
std::map<ZRCola::chrcatid_t, int> m_ccOrder; ///< Character category order
|
||||
bool m_unicodeChanged; ///< Did Unicode field change?
|
||||
|
||||
|
||||
///
|
||||
/// Search worker thread
|
||||
///
|
||||
class SearchThread : public wxThread
|
||||
{
|
||||
public:
|
||||
SearchThread(wxZRColaCharSelect *parent);
|
||||
|
||||
protected:
|
||||
virtual ExitCode Entry();
|
||||
static int __cdecl CompareHits(const void *a, const void *b);
|
||||
static bool __cdecl TestDestroyS(void *cookie);
|
||||
|
||||
public:
|
||||
std::wstring m_search; ///< Search phrase
|
||||
std::set<ZRCola::chrcatid_t> m_cats; ///< Search categories
|
||||
std::vector<std::pair<ZRCola::charrank_t, wchar_t> > m_hits; ///< Search results
|
||||
|
||||
protected:
|
||||
wxZRColaCharSelect *m_parent; ///< Thread owner
|
||||
} *m_searchThread; ///< Search thread
|
||||
|
||||
|
||||
///
|
||||
/// Navigation state
|
||||
///
|
||||
struct NavigationState
|
||||
{
|
||||
wchar_t m_char;
|
||||
struct {
|
||||
wxGridCellCoords m_selected;
|
||||
} m_related;
|
||||
};
|
||||
std::list<NavigationState> m_history; ///< Navigation history
|
||||
std::list<NavigationState>::iterator m_historyCursor; ///< Navigation history cursor
|
||||
};
|
||||
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaCharSelect state
|
||||
///
|
||||
class wxPersistentZRColaCharSelect : public wxPersistentDialog
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaCharSelect(wxZRColaCharSelect *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaCharSelect *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaCharSelect(wnd);
|
||||
}
|
||||
@@ -25,43 +25,129 @@
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaComposerPanel::wxZRColaComposerPanel(wxWindow* parent) :
|
||||
m_progress(false),
|
||||
m_decomposedChanged(false),
|
||||
m_composedChanged(false),
|
||||
m_selDecomposed(0, 0),
|
||||
m_selComposed(0, 0),
|
||||
wxZRColaComposerPanelBase(parent)
|
||||
{
|
||||
std::fstream dat((LPCTSTR)((ZRColaApp*)wxTheApp)->GetDatabasePath(), std::ios_base::in | std::ios_base::binary);
|
||||
if (dat.good()) {
|
||||
if (stdex::idrec::find<ZRCola::recordid_t, ZRCola::recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(ZRCola::recordid_t))) {
|
||||
ZRCola::recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(ZRCola::recordsize_t));
|
||||
if (dat.good()) {
|
||||
ZRCola::translation_rec rec(m_t_db);
|
||||
if (rec.find(dat, size)) {
|
||||
dat >> rec;
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation data from ZRCola.zrcdb."));
|
||||
m_t_db.idxComp .clear();
|
||||
m_t_db.idxDecomp.clear();
|
||||
m_t_db.data .clear();
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb has no translation data."));
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb is not a valid ZRCola database."));
|
||||
}
|
||||
|
||||
m_decomposed->PushEventHandler(&m_keyhandler);
|
||||
|
||||
// Restore the previously saved state (if exists).
|
||||
wxString fileName(GetStateFileName());
|
||||
if (wxFileExists(fileName)) {
|
||||
wxFFile file(fileName, wxT("rb"));
|
||||
if (file.IsOpened()) {
|
||||
// Load decomposed text.
|
||||
unsigned __int64 n;
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString decomposed;
|
||||
file.Read(wxStringBuffer(decomposed, n), sizeof(wchar_t)*n);
|
||||
if (!file.Error()) {
|
||||
// Load composed text.
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString composed;
|
||||
file.Read(wxStringBuffer(composed, n), sizeof(wchar_t)*n);
|
||||
if (!file.Error()) {
|
||||
// Restore state.
|
||||
m_decomposed->SetValue(decomposed);
|
||||
m_decomposed->GetSelection(&m_selDecomposed.first, &m_selDecomposed.second);
|
||||
SetHexValue(m_decomposedHex, m_selDecomposedHex, m_mappingDecomposedHex, decomposed.GetData(), decomposed.Length(), m_selDecomposed.first, m_selDecomposed.second);
|
||||
m_decomposedChanged = false;
|
||||
|
||||
m_composed->SetValue(composed);
|
||||
m_composed->GetSelection(&m_selComposed.first, &m_selComposed.second);
|
||||
SetHexValue(m_composedHex, m_selComposedHex, m_mappingComposedHex, composed.GetData(), composed.Length(), m_selComposed.first, m_selComposed.second);
|
||||
m_composedChanged = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxZRColaComposerPanel::~wxZRColaComposerPanel()
|
||||
{
|
||||
m_decomposed->PopEventHandler();
|
||||
|
||||
// This is a controlled exit. Purge saved state.
|
||||
wxString fileName(GetStateFileName());
|
||||
if (wxFileExists(fileName))
|
||||
wxRemoveFile(fileName);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::SynchronizePanels()
|
||||
{
|
||||
if (m_decomposedChanged) {
|
||||
m_timerSave.Stop();
|
||||
|
||||
wxString src;
|
||||
size_t len = GetValue(m_decomposed, src);
|
||||
|
||||
std::wstring norm;
|
||||
((ZRColaApp*)wxTheApp)->m_t_db.Decompose(src.data(), len, norm, &m_mapping1);
|
||||
|
||||
std::wstring dst;
|
||||
((ZRColaApp*)wxTheApp)->m_t_db.Compose(norm.data(), norm.size(), dst, &m_mapping2);
|
||||
|
||||
m_decomposed->GetSelection(&m_selDecomposed.first, &m_selDecomposed.second);
|
||||
|
||||
// Update decomposed HEX dump.
|
||||
SetHexValue(m_decomposedHex, m_selDecomposedHex, m_mappingDecomposedHex, src.data(), len, m_selDecomposed.first, m_selDecomposed.second);
|
||||
|
||||
// Update composed text, and its HEX dump.
|
||||
m_composed->SetValue(dst);
|
||||
m_composed->SetSelection(
|
||||
m_selComposed.first = m_mapping2.to_dst(m_mapping1.to_dst(m_selDecomposed.first )),
|
||||
m_selComposed.second = m_mapping2.to_dst(m_mapping1.to_dst(m_selDecomposed.second)));
|
||||
SetHexValue(m_composedHex, m_selComposedHex, m_mappingComposedHex, dst.data(), dst.length(), m_selComposed.first, m_selComposed.second);
|
||||
|
||||
// Schedule state save after 3s.
|
||||
m_timerSave.Start(3000, true);
|
||||
} else if (m_composedChanged) {
|
||||
m_timerSave.Stop();
|
||||
|
||||
wxString src;
|
||||
size_t len = GetValue(m_composed, src);
|
||||
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
std::wstring dst;
|
||||
wxZRColaFrame *mainWnd = dynamic_cast<wxZRColaFrame*>(wxGetActiveWindow());
|
||||
if (mainWnd)
|
||||
app->m_t_db.Decompose(src.data(), len, &app->m_lc_db, mainWnd->m_settings->m_lang, dst, &m_mapping2);
|
||||
else
|
||||
app->m_t_db.Decompose(src.data(), len, dst, &m_mapping2);
|
||||
|
||||
m_mapping1.clear();
|
||||
m_mapping2.invert();
|
||||
|
||||
m_composed->GetSelection(&m_selComposed.first, &m_selComposed.second);
|
||||
|
||||
// Update composed HEX dump.
|
||||
SetHexValue(m_composedHex, m_selComposedHex, m_mappingComposedHex, src.data(), len, m_selComposed.first, m_selComposed.second);
|
||||
|
||||
// Update decomposed text, and its HEX dump.
|
||||
m_decomposed->SetValue(dst);
|
||||
m_decomposed->SetSelection(
|
||||
m_selDecomposed.first = m_mapping1.to_src(m_mapping2.to_src(m_selComposed.first )),
|
||||
m_selDecomposed.second = m_mapping1.to_src(m_mapping2.to_src(m_selComposed.second)));
|
||||
SetHexValue(m_decomposedHex, m_selDecomposedHex, m_mappingDecomposedHex, dst.data(), dst.length(), m_selDecomposed.first, m_selDecomposed.second);
|
||||
|
||||
// Schedule state save after 3s.
|
||||
m_timerSave.Start(3000, true);
|
||||
}
|
||||
|
||||
m_decomposedChanged = false;
|
||||
m_composedChanged = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDecomposedPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
@@ -73,39 +159,55 @@ void wxZRColaComposerPanel::OnDecomposedPaint(wxPaintEvent& event)
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selDecomposed.first = from;
|
||||
m_selDecomposed.second = to;
|
||||
m_composed->SetSelection(m_mapping.to_composed(from), m_mapping.to_composed(to));
|
||||
|
||||
m_decomposedHex->SetSelection(
|
||||
m_selDecomposedHex.first = m_mappingDecomposedHex.to_dst(from),
|
||||
m_selDecomposedHex.second = m_mappingDecomposedHex.to_dst(to ));
|
||||
|
||||
m_composed->SetSelection(
|
||||
m_selComposed.first = m_mapping2.to_dst(m_mapping1.to_dst(from)),
|
||||
m_selComposed.second = m_mapping2.to_dst(m_mapping1.to_dst(to )));
|
||||
|
||||
m_composedHex->SetSelection(
|
||||
m_selComposedHex.first = m_mappingComposedHex.to_dst(m_selComposed.first ),
|
||||
m_selComposedHex.second = m_mappingComposedHex.to_dst(m_selComposed.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDecomposedHexPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
long from, to;
|
||||
m_decomposedHex->GetSelection(&from, &to);
|
||||
|
||||
if (m_selDecomposedHex.first != from || m_selDecomposedHex.second != to) {
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selDecomposedHex.first = from;
|
||||
m_selDecomposedHex.second = to;
|
||||
|
||||
m_decomposed->SetSelection(
|
||||
m_selDecomposed.first = m_mappingDecomposedHex.to_src(from),
|
||||
m_selDecomposed.second = m_mappingDecomposedHex.to_src(to ));
|
||||
|
||||
m_composed->SetSelection(
|
||||
m_selComposed.first = m_mapping2.to_dst(m_mapping1.to_dst(m_selDecomposed.first )),
|
||||
m_selComposed.second = m_mapping2.to_dst(m_mapping1.to_dst(m_selDecomposed.second)));
|
||||
|
||||
m_composedHex->SetSelection(
|
||||
m_selComposedHex.first = m_mappingComposedHex.to_dst(m_selComposed.first ),
|
||||
m_selComposedHex.second = m_mappingComposedHex.to_dst(m_selComposed.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDecomposedText(wxCommandEvent& event)
|
||||
{
|
||||
if (m_progress) {
|
||||
// We are being updated by wxZRColaComposerPanel::OnComposedText()
|
||||
event.Skip();
|
||||
} else {
|
||||
#ifdef __WINDOWS__
|
||||
// Use Windows GetWindowText() function to avoid line ending conversion incompletely imposed by wxWidgets.
|
||||
WXHWND hWnd = m_decomposed->GetHWND();
|
||||
std::vector<wchar_t> src((std::vector<wchar_t>::size_type)::GetWindowTextLengthW(hWnd) + 1);
|
||||
::GetWindowTextW(hWnd, src.data(), src.size());
|
||||
#else
|
||||
wxString src(m_decomposed->GetValue());
|
||||
#endif
|
||||
event.Skip();
|
||||
|
||||
std::wstring dst;
|
||||
m_t_db.Compose(src.data(), src.size(), dst, &m_mapping);
|
||||
|
||||
long from, to;
|
||||
m_decomposed->GetSelection(&from, &to);
|
||||
|
||||
// Update composed text.
|
||||
m_progress = true;
|
||||
m_composed->SetValue(dst);
|
||||
m_composed->SetSelection(m_mapping.to_composed(from), m_mapping.to_composed(to));
|
||||
event.Skip();
|
||||
m_progress = false;
|
||||
}
|
||||
// Set the flag the decomposed text changed to trigger idle-time composition.
|
||||
m_decomposedChanged = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -120,37 +222,190 @@ void wxZRColaComposerPanel::OnComposedPaint(wxPaintEvent& event)
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selComposed.first = from;
|
||||
m_selComposed.second = to;
|
||||
m_decomposed->SetSelection(m_mapping.to_decomposed(from), m_mapping.to_decomposed(to));
|
||||
|
||||
m_composedHex->SetSelection(
|
||||
m_selComposedHex.first = m_mappingComposedHex.to_dst(from),
|
||||
m_selComposedHex.second = m_mappingComposedHex.to_dst(to ));
|
||||
|
||||
m_decomposed->SetSelection(
|
||||
m_selDecomposed.first = m_mapping1.to_src(m_mapping2.to_src(from)),
|
||||
m_selDecomposed.second = m_mapping1.to_src(m_mapping2.to_src(to )));
|
||||
|
||||
m_decomposedHex->SetSelection(
|
||||
m_selDecomposedHex.first = m_mappingDecomposedHex.to_dst(m_selDecomposed.first ),
|
||||
m_selDecomposedHex.second = m_mappingDecomposedHex.to_dst(m_selDecomposed.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnComposedHexPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
long from, to;
|
||||
m_composedHex->GetSelection(&from, &to);
|
||||
|
||||
if (m_selComposedHex.first != from || m_selComposedHex.second != to) {
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selComposedHex.first = from;
|
||||
m_selComposedHex.second = to;
|
||||
|
||||
m_composed->SetSelection(
|
||||
m_selComposed.first = m_mappingComposedHex.to_src(from),
|
||||
m_selComposed.second = m_mappingComposedHex.to_src(to ));
|
||||
|
||||
m_decomposed->SetSelection(
|
||||
m_selDecomposed.first = m_mapping1.to_src(m_mapping2.to_src(m_selComposed.first )),
|
||||
m_selDecomposed.second = m_mapping1.to_src(m_mapping2.to_src(m_selComposed.second)));
|
||||
|
||||
m_decomposedHex->SetSelection(
|
||||
m_selDecomposedHex.first = m_mappingDecomposedHex.to_dst(m_selDecomposed.first ),
|
||||
m_selDecomposedHex.second = m_mappingDecomposedHex.to_dst(m_selDecomposed.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnComposedText(wxCommandEvent& event)
|
||||
{
|
||||
if (m_progress) {
|
||||
// We are being updated by wxZRColaComposerPanel::OnDecomposedText()
|
||||
event.Skip();
|
||||
} else {
|
||||
#ifdef __WINDOWS__
|
||||
// Use Windows GetWindowTextLength() function to avoid line ending conversion incompletely imposed by wxWidgets.
|
||||
WXHWND hWnd = m_composed->GetHWND();
|
||||
std::vector<wchar_t> src((std::vector<wchar_t>::size_type)::GetWindowTextLengthW(hWnd) + 1);
|
||||
::GetWindowTextW(hWnd, src.data(), src.size());
|
||||
#else
|
||||
wxString src(m_composed->GetValue());
|
||||
#endif
|
||||
event.Skip();
|
||||
|
||||
std::wstring dst;
|
||||
m_t_db.Decompose(src.data(), src.size(), dst, &m_mapping);
|
||||
|
||||
long from, to;
|
||||
m_composed->GetSelection(&from, &to);
|
||||
|
||||
// Update decomposed text.
|
||||
m_progress = true;
|
||||
m_decomposed->SetValue(dst);
|
||||
m_decomposed->SetSelection(m_mapping.to_decomposed(from), m_mapping.to_decomposed(to));
|
||||
event.Skip();
|
||||
m_progress = false;
|
||||
}
|
||||
// Set the flag the composed text changed to trigger idle-time decomposition.
|
||||
m_composedChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnSaveTimer(wxTimerEvent& event)
|
||||
{
|
||||
wxString fileName(GetStateFileName());
|
||||
wxFFile file(fileName, wxT("wb"));
|
||||
if (file.IsOpened()) {
|
||||
wxString text;
|
||||
size_t len;
|
||||
|
||||
// Save decomposed text.
|
||||
len = GetValue(m_decomposed, text);
|
||||
file.Write(&len, sizeof(len));
|
||||
file.Write((const wchar_t*)text, sizeof(wchar_t)*len);
|
||||
|
||||
// Save composed text.
|
||||
len = GetValue(m_composed, text);
|
||||
file.Write(&len, sizeof(len));
|
||||
file.Write((const wchar_t*)text, sizeof(wchar_t)*len);
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
wxString wxZRColaComposerPanel::GetStateFileName()
|
||||
{
|
||||
wxString path;
|
||||
|
||||
path = wxFileName::GetTempDir();
|
||||
if (!wxEndsWithPathSeparator(path))
|
||||
path += wxFILE_SEP_PATH;
|
||||
|
||||
if (!wxDirExists(path))
|
||||
wxMkdir(path);
|
||||
|
||||
wxString fileName(path);
|
||||
fileName += wxT("ZRColaComposerPanel-state.tmp");
|
||||
|
||||
return fileName;
|
||||
}
|
||||
|
||||
|
||||
size_t wxZRColaComposerPanel::GetValue(wxTextCtrl *wnd, wxString &text)
|
||||
{
|
||||
#ifdef __WINDOWS__
|
||||
// Use Windows GetWindowText() function to avoid line ending conversion incompletely imposed by wxWidgets.
|
||||
WXHWND hWnd = wnd->GetHWND();
|
||||
size_t len = ::GetWindowTextLengthW(hWnd);
|
||||
if (len < 0x100) {
|
||||
WCHAR buf[0x100];
|
||||
::GetWindowTextW(hWnd, buf, len + 1);
|
||||
text.assign(buf, len);
|
||||
} else {
|
||||
LPWSTR buf = new WCHAR[len + 1];
|
||||
::GetWindowTextW(hWnd, buf, len + 1);
|
||||
text.assign(buf, len);
|
||||
delete [] buf;
|
||||
}
|
||||
|
||||
return len;
|
||||
#else
|
||||
text = wnd->GetValue();
|
||||
return text.Length();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::SetHexValue(wxTextCtrl *wnd, std::pair<long, long> &range, ZRCola::mapping_vector &mapping, const wchar_t *src, size_t len, long from, long to)
|
||||
{
|
||||
wxString hex;
|
||||
bool first = true;
|
||||
|
||||
mapping.clear();
|
||||
for (size_t i = 0; i < len && src[i]; i++) {
|
||||
wchar_t c = src[i];
|
||||
if (c == L'\n' || c == '\r') {
|
||||
hex += c;
|
||||
first = true;
|
||||
} else {
|
||||
hex += wxString::Format(first ? wxT("%04X") : wxT(" %04X"), src[i]);
|
||||
mapping.push_back(ZRCola::mapping(i + 1, hex.Length()));
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
|
||||
wnd->SetValue(hex);
|
||||
wnd->SetSelection(
|
||||
range.first = mapping.to_dst(from),
|
||||
range.second = mapping.to_dst(to ));
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaComposerPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaComposerPanel::wxPersistentZRColaComposerPanel(wxZRColaComposerPanel *wnd) : wxPersistentWindow<wxZRColaComposerPanel>(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxString wxPersistentZRColaComposerPanel::GetKind() const
|
||||
{
|
||||
return wxT(wxPERSIST_TLW_KIND);
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaComposerPanel::Save() const
|
||||
{
|
||||
const wxZRColaComposerPanel * const wnd = static_cast<const wxZRColaComposerPanel*>(GetWindow());
|
||||
|
||||
SaveValue(wxT("splitDecomposed"), wnd->m_splitterDecomposed->GetSashPosition());
|
||||
SaveValue(wxT("splitComposed" ), wnd->m_splitterComposed ->GetSashPosition());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaComposerPanel::Restore()
|
||||
{
|
||||
wxZRColaComposerPanel * const wnd = static_cast<wxZRColaComposerPanel*>(GetWindow());
|
||||
|
||||
int sashVal;
|
||||
|
||||
if (RestoreValue(wxT("splitDecomposed"), &sashVal)) {
|
||||
// wxFormBuilder sets initial splitter stash in idle event handler after GUI settles. Overriding our loaded value. Disconnect it's idle event handler.
|
||||
wnd->m_splitterDecomposed->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterDecomposedOnIdle ), NULL, wnd );
|
||||
wnd->m_splitterDecomposed->SetSashPosition(sashVal);
|
||||
}
|
||||
|
||||
if (RestoreValue(wxT("splitComposed"), &sashVal)) {
|
||||
// wxFormBuilder sets initial splitter stash in idle event handler after GUI settles. Overriding our loaded value. Disconnect it's idle event handler.
|
||||
wnd->m_splitterComposed->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterComposedOnIdle ), NULL, wnd );
|
||||
wnd->m_splitterComposed->SetSashPosition(sashVal);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ class wxZRColaComposerPanel;
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include "zrcolakeyhndlr.h"
|
||||
#include <zrcola/translate.h>
|
||||
#include <wx/persist/window.h>
|
||||
#include <wx/timer.h>
|
||||
#include <utility>
|
||||
|
||||
|
||||
@@ -40,20 +41,54 @@ public:
|
||||
wxZRColaComposerPanel(wxWindow* parent);
|
||||
virtual ~wxZRColaComposerPanel();
|
||||
|
||||
friend class wxZRColaFrame; // Allow main frame direct access to our members.
|
||||
void SynchronizePanels();
|
||||
|
||||
friend class wxPersistentZRColaComposerPanel; // Allow saving/restoring window state.
|
||||
|
||||
protected:
|
||||
virtual void OnDecomposedPaint(wxPaintEvent& event);
|
||||
virtual void OnDecomposedHexPaint(wxPaintEvent& event);
|
||||
virtual void OnDecomposedText(wxCommandEvent& event);
|
||||
virtual void OnComposedPaint(wxPaintEvent& event);
|
||||
virtual void OnComposedHexPaint(wxPaintEvent& event);
|
||||
virtual void OnComposedText(wxCommandEvent& event);
|
||||
virtual void OnSaveTimer(wxTimerEvent& event);
|
||||
|
||||
static wxString GetStateFileName();
|
||||
static size_t GetValue(wxTextCtrl *wnd, wxString &text);
|
||||
static void SetHexValue(wxTextCtrl *wnd, std::pair<long, long> &range, ZRCola::mapping_vector &mapping, const wchar_t *src, size_t len, long from, long to);
|
||||
|
||||
protected:
|
||||
ZRCola::translation_db m_t_db; ///< Translation database
|
||||
bool m_progress; ///< Boolean flag to avoid recursive updates of composed and decomposed text controls
|
||||
ZRCola::mapping_vector m_mapping; ///< Character index mapping vector between composed and decomposed text
|
||||
bool m_decomposedChanged; ///< Boolean flag to mark decomposed text "dirty" to trigger composition
|
||||
bool m_composedChanged; ///< Boolean flag to mark composed text "dirty" to trigger decomposition
|
||||
ZRCola::mapping_vector m_mapping1; ///< Character index mapping vector between decomposed and normalized text
|
||||
ZRCola::mapping_vector m_mapping2; ///< Character index mapping vector between normalized and composed text
|
||||
std::pair<long, long>
|
||||
m_selDecomposed, ///< Character index of selected text in decomposed text control
|
||||
m_selComposed; ///< Character index of selected text in composed text control
|
||||
wxZRColaKeyHandler m_keyhandler; ///< Key handler for decomposed window
|
||||
m_selDecomposed, ///< Character index of selected text in decomposed text control
|
||||
m_selDecomposedHex, ///< Character index of selected text in decomposed HEX dump text control
|
||||
m_selComposed, ///< Character index of selected text in composed text control
|
||||
m_selComposedHex; ///< Character index of selected text in composed HEX dump text control
|
||||
wxZRColaKeyHandler m_keyhandler; ///< Key handler for decomposed window
|
||||
ZRCola::mapping_vector m_mappingDecomposedHex; ///< Character index mapping vector between decomposed text and its HEX dump
|
||||
ZRCola::mapping_vector m_mappingComposedHex; ///< Character index mapping vector between composed text and its HEX dump
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaComposerPanel state
|
||||
///
|
||||
class wxPersistentZRColaComposerPanel : public wxPersistentWindow<wxZRColaComposerPanel>
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaComposerPanel(wxZRColaComposerPanel *wnd);
|
||||
|
||||
virtual wxString GetKind() const;
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaComposerPanel *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaComposerPanel(wnd);
|
||||
}
|
||||
|
||||
@@ -25,32 +25,117 @@
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxBEGIN_EVENT_TABLE(wxZRColaFrame, wxZRColaFrameBase)
|
||||
EVT_UPDATE_UI_RANGE(wxID_SEND_COMPOSED, wxID_SEND_ABORT, wxZRColaFrame::OnSendUpdate)
|
||||
EVT_MENU (wxID_EXIT , wxZRColaFrame::OnExit )
|
||||
|
||||
EVT_MENU(wxID_SEND_COMPOSED , wxZRColaFrame::OnSendComposed )
|
||||
EVT_MENU(wxID_SEND_DECOMPOSED, wxZRColaFrame::OnSendDecomposed )
|
||||
EVT_MENU(wxID_SEND_ABORT , wxZRColaFrame::OnSendAbort )
|
||||
EVT_MENU(wxID_EXIT , wxZRColaFrame::OnExit )
|
||||
EVT_MENU(wxID_ABOUT , wxZRColaFrame::OnAbout )
|
||||
EVT_UPDATE_UI_RANGE(wxID_CUT , wxID_CLEAR , wxZRColaFrame::OnForwardEventUpdate )
|
||||
EVT_MENU_RANGE (wxID_CUT , wxID_CLEAR , wxZRColaFrame::OnForwardEvent )
|
||||
EVT_UPDATE_UI (wxID_SELECTALL , wxZRColaFrame::OnForwardEventUpdate )
|
||||
EVT_MENU (wxID_SELECTALL , wxZRColaFrame::OnForwardEvent )
|
||||
|
||||
EVT_MENU (wxID_CHARACTER_SELECTOR , wxZRColaFrame::OnInsertCharacter )
|
||||
|
||||
EVT_UPDATE_UI_RANGE(wxID_SEND_COMPOSED , wxID_SEND_ABORT, wxZRColaFrame::OnSendUpdate )
|
||||
EVT_MENU (wxID_SEND_COMPOSED , wxZRColaFrame::OnSendComposed )
|
||||
EVT_MENU (wxID_SEND_DECOMPOSED , wxZRColaFrame::OnSendDecomposed )
|
||||
EVT_MENU (wxID_SEND_ABORT , wxZRColaFrame::OnSendAbort )
|
||||
|
||||
EVT_MENU (wxID_SETTINGS , wxZRColaFrame::OnSettings )
|
||||
|
||||
EVT_UPDATE_UI (wxID_TOOLBAR_EDIT , wxZRColaFrame::OnToolbarEditUpdate )
|
||||
EVT_MENU (wxID_TOOLBAR_EDIT , wxZRColaFrame::OnToolbarEdit )
|
||||
EVT_UPDATE_UI (wxID_TOOLBAR_COMPOSE , wxZRColaFrame::OnToolbarComposeUpdate )
|
||||
EVT_MENU (wxID_TOOLBAR_COMPOSE , wxZRColaFrame::OnToolbarCompose )
|
||||
EVT_UPDATE_UI (wxID_PANEL_CHRGRPS , wxZRColaFrame::OnPanelCharacterCatalogUpdate)
|
||||
EVT_MENU (wxID_PANEL_CHRGRPS , wxZRColaFrame::OnPanelCharacterCatalog )
|
||||
EVT_MENU (wxID_FOCUS_CHARACTER_CATALOG , wxZRColaFrame::OnPanelCharacterCatalogFocus )
|
||||
|
||||
EVT_MENU (wxID_HELP_INSTRUCTIONS , wxZRColaFrame::OnHelpInstructions )
|
||||
EVT_MENU (wxID_HELP_SHORTCUTS , wxZRColaFrame::OnHelpShortcuts )
|
||||
|
||||
EVT_MENU (wxID_HELP_REQCHAR , wxZRColaFrame::OnHelpReqChar )
|
||||
EVT_MENU (wxID_HELP_UPDATE , wxZRColaFrame::OnHelpUpdate )
|
||||
EVT_MENU (wxID_ABOUT , wxZRColaFrame::OnHelpAbout )
|
||||
wxEND_EVENT_TABLE()
|
||||
|
||||
|
||||
wxZRColaFrame::wxZRColaFrame() :
|
||||
m_hWndSource(NULL),
|
||||
m_chrSelect(NULL),
|
||||
m_settings(NULL),
|
||||
m_chrReq(NULL),
|
||||
wxZRColaFrameBase(NULL)
|
||||
{
|
||||
{
|
||||
// wxFrameBuilder 3.5 does not support wxAUI_TB_HORIZONTAL flag. Add it manually.
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarCompose);
|
||||
paneInfo.LeftDockable(false);
|
||||
paneInfo.RightDockable(false);
|
||||
m_toolbarCompose->SetWindowStyleFlag(m_toolbarCompose->GetWindowStyleFlag() | wxAUI_TB_HORIZONTAL);
|
||||
}
|
||||
|
||||
// Load main window icons.
|
||||
#ifdef __WINDOWS__
|
||||
wxIcon icon_small(wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));
|
||||
wxIconBundle icons;
|
||||
icons.AddIcon(wxIcon(wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON)));
|
||||
icons.AddIcon(icon_small);
|
||||
icons.AddIcon(wxIcon(wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, ::GetSystemMetrics(SM_CXICON ), ::GetSystemMetrics(SM_CYICON )));
|
||||
SetIcons(icons);
|
||||
#else
|
||||
SetIcon(wxICON(00_zrcola.ico));
|
||||
wxIcon icon_small(wxICON(00_zrcola.ico));
|
||||
SetIcon(icon_small);
|
||||
#endif
|
||||
|
||||
m_taskBarIcon = new wxTaskBarIcon();
|
||||
if (m_taskBarIcon->IsOk()) {
|
||||
m_taskBarIcon->SetIcon(icon_small, _("ZRCola"));
|
||||
m_taskBarIcon->Connect(wxEVT_TASKBAR_LEFT_DOWN, wxTaskBarIconEventHandler(wxZRColaFrame::OnTaskbarIconClick), NULL, this);
|
||||
} else {
|
||||
// Taskbar icon creation failed. Not the end of the world. No taskbar icon then.
|
||||
delete m_taskBarIcon;
|
||||
}
|
||||
|
||||
m_settings = new wxZRColaSettings(this);
|
||||
wxPersistentRegisterAndRestore<wxZRColaSettings>(m_settings);
|
||||
|
||||
m_chrSelect = new wxZRColaCharSelect(this);
|
||||
wxPersistentRegisterAndRestore<wxZRColaCharSelect>(m_chrSelect);
|
||||
|
||||
m_chrReq = new wxZRColaCharRequest(this);
|
||||
wxPersistentRegisterAndRestore<wxZRColaCharRequest>(m_chrReq);
|
||||
|
||||
// Set focus.
|
||||
m_panel->m_decomposed->SetFocus();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
// Register notification sink for language detection.
|
||||
m_ulRefCount = 1;
|
||||
m_tfSource = NULL;
|
||||
ITfInputProcessorProfiles *pProfiles;
|
||||
HRESULT hr = CoCreateInstance(CLSID_TF_InputProcessorProfiles, NULL, CLSCTX_INPROC_SERVER, IID_ITfInputProcessorProfiles, (LPVOID*)&pProfiles);
|
||||
if(SUCCEEDED(hr)) {
|
||||
hr = pProfiles->QueryInterface(IID_ITfSource, (LPVOID*)&m_tfSource);
|
||||
if(SUCCEEDED(hr)) {
|
||||
hr = m_tfSource->AdviseSink(IID_ITfLanguageProfileNotifySink, (ITfLanguageProfileNotifySink*)this, &m_dwCookie);
|
||||
if (FAILED(hr) || m_dwCookie == -1) {
|
||||
m_tfSource->Release();
|
||||
m_tfSource = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
pProfiles->Release();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Register frame specific hotkey(s).
|
||||
{
|
||||
wxAcceleratorEntry entries[1];
|
||||
entries[0].Set(wxACCEL_NORMAL, WXK_F4, wxID_FOCUS_CHARACTER_CATALOG);
|
||||
SetAcceleratorTable(wxAcceleratorTable(_countof(entries), entries));
|
||||
}
|
||||
|
||||
// Restore persistent state of wxAuiManager manually, since m_mgr is not on the heap.
|
||||
wxPersistentAuiManager(&m_mgr).Restore();
|
||||
|
||||
// Register global hotkey(s).
|
||||
if (!RegisterHotKey(wxZRColaHKID_INVOKE_COMPOSE, wxMOD_WIN, VK_F5))
|
||||
wxMessageBox(_("ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."), _("Warning"), wxOK | wxICON_WARNING);
|
||||
@@ -64,6 +149,72 @@ wxZRColaFrame::~wxZRColaFrame()
|
||||
// Unregister global hotkey(s).
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_DECOMPOSE);
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_COMPOSE);
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
if (m_tfSource) {
|
||||
m_tfSource->UnadviseSink(m_dwCookie);
|
||||
m_tfSource->Release();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_chrReq)
|
||||
delete m_chrReq;
|
||||
|
||||
if (m_chrSelect)
|
||||
delete m_chrSelect;
|
||||
|
||||
if (m_settings)
|
||||
delete m_settings;
|
||||
|
||||
if (m_taskBarIcon) {
|
||||
m_taskBarIcon->Disconnect(wxEVT_TASKBAR_LEFT_DOWN, wxTaskBarIconEventHandler(wxZRColaFrame::OnTaskbarIconClick), NULL, this);
|
||||
delete m_taskBarIcon;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnClose(wxCloseEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
// Save wxAuiManager's state before destructor.
|
||||
// Since the destructor calls m_mgr.UnInit() the regular persistence mechanism is useless to save wxAuiManager's state.
|
||||
wxPersistentAuiManager(&m_mgr).Save();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnExit(wxCommandEvent& event)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnForwardEventUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
wxControl *focusWnd = wxDynamicCast(FindFocus(), wxControl);
|
||||
if (focusWnd && focusWnd->IsKindOf(wxCLASSINFO(wxTextCtrl)))
|
||||
focusWnd->GetEventHandler()->ProcessEvent(event);
|
||||
else
|
||||
event.Enable(false);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnForwardEvent(wxCommandEvent& event)
|
||||
{
|
||||
wxControl *focusWnd = wxDynamicCast(FindFocus(), wxControl);
|
||||
if (focusWnd)
|
||||
focusWnd->GetEventHandler()->ProcessEvent(event);
|
||||
else
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnInsertCharacter(wxCommandEvent& event)
|
||||
{
|
||||
if (m_chrSelect->ShowModal() == wxID_OK && m_chrSelect->m_char) {
|
||||
m_panel->m_decomposed->WriteText(m_chrSelect->m_char);
|
||||
m_panel->m_decomposed->SetFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -108,18 +259,202 @@ void wxZRColaFrame::OnSendAbort(wxCommandEvent& event)
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnExit(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnSettings(wxCommandEvent& event)
|
||||
{
|
||||
Close();
|
||||
m_settings->ShowModal();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnAbout(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
wxMessageBox(wxString::Format(_("ZRCola v%s\nCopyright 2015-%s Amebis"), wxT(ZRCOLA_VERSION_STR), wxT(ZRCOLA_BUILD_YEAR_STR)), _("About ZRCola"), wxOK | wxICON_INFORMATION);
|
||||
m_panel->SynchronizePanels();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnTaskbarIconClick(wxTaskBarIconEvent& event)
|
||||
{
|
||||
Iconize(false);
|
||||
Show(true);
|
||||
Raise();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnIconize(wxIconizeEvent& event)
|
||||
{
|
||||
if (m_taskBarIcon)
|
||||
Show(!event.IsIconized());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnToolbarEditUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_mgr.GetPane(m_toolbarEdit).IsShown());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnToolbarEdit(wxCommandEvent& event)
|
||||
{
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarEdit);
|
||||
paneInfo.Show(!paneInfo.IsShown());
|
||||
m_mgr.Update();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnToolbarComposeUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_mgr.GetPane(m_toolbarCompose).IsShown());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnToolbarCompose(wxCommandEvent& event)
|
||||
{
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarCompose);
|
||||
paneInfo.Show(!paneInfo.IsShown());
|
||||
m_mgr.Update();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnPanelCharacterCatalogUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_mgr.GetPane(m_panelChrCat).IsShown());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnPanelCharacterCatalog(wxCommandEvent& event)
|
||||
{
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_panelChrCat);
|
||||
paneInfo.Show(!paneInfo.IsShown());
|
||||
m_mgr.Update();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnPanelCharacterCatalogFocus(wxCommandEvent& event)
|
||||
{
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_panelChrCat);
|
||||
if (!paneInfo.IsShown()) {
|
||||
paneInfo.Show(true);
|
||||
m_mgr.Update();
|
||||
}
|
||||
|
||||
m_panelChrCat->SetFocus();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpInstructions(wxCommandEvent& event)
|
||||
{
|
||||
wxLaunchDefaultBrowser(_("http://zrcola-2.amebis.si/en/info/instructions/"));
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpShortcuts(wxCommandEvent& event)
|
||||
{
|
||||
winstd::tstring pdf_path;
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// Search and try to launch installed PDF.
|
||||
INSTALLSTATE pdf_is = ::MsiGetComponentPath(_T(ZRCOLA_VERSION_GUID), _T("{68AC2C38-10E2-41A3-B92C-844C03FFDF6A}"), pdf_path);
|
||||
if ((pdf_is == INSTALLSTATE_LOCAL || pdf_is == INSTALLSTATE_SOURCE) &&
|
||||
wxFileExists(pdf_path) &&
|
||||
(int)::ShellExecute(GetHWND(), NULL, pdf_path.c_str(), NULL, NULL, SW_SHOWNORMAL) > 32) return;
|
||||
#endif
|
||||
|
||||
// Search and try to launch local PDF copy.
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
pdf_path = app->GetDatabasePath();
|
||||
pdf_path += _T("ZRCola_keyboard.pdf");
|
||||
if (wxFileExists(pdf_path) &&
|
||||
(int)::ShellExecute(GetHWND(), NULL, pdf_path.c_str(), NULL, NULL, SW_SHOWNORMAL) > 32) return;
|
||||
|
||||
// When everything else fail, try the online version.
|
||||
wxLaunchDefaultBrowser(_("http://zrcola-2.amebis.si/wp-content/uploads/2016/04/5_ZRCola-Tipkovnica_2009-06-21.pdf"));
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpReqChar(wxCommandEvent& event)
|
||||
{
|
||||
m_chrReq->ShowModal();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpUpdate(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaUpdater dlg(this);
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpAbout(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaAbout dlg(this);
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
|
||||
HRESULT STDMETHODCALLTYPE wxZRColaFrame::OnLanguageChange(LANGID langid, __RPC__out BOOL *pfAccept)
|
||||
{
|
||||
if (pfAccept) *pfAccept = TRUE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE wxZRColaFrame::OnLanguageChanged()
|
||||
{
|
||||
if (m_settings->m_lang_auto) {
|
||||
// Set keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), m_settings->m_lang);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE wxZRColaFrame::QueryInterface(REFIID riid, __RPC__deref_out void __RPC_FAR *__RPC_FAR *ppvObject)
|
||||
{
|
||||
if (!ppvObject)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (riid == IID_IUnknown)
|
||||
*ppvObject = static_cast<IUnknown*>(this);
|
||||
else if (riid == IID_ITfLanguageProfileNotifySink)
|
||||
*ppvObject = static_cast<ITfLanguageProfileNotifySink*>(this);
|
||||
else {
|
||||
*ppvObject = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
|
||||
ULONG STDMETHODCALLTYPE wxZRColaFrame::AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_ulRefCount);
|
||||
return m_ulRefCount;
|
||||
}
|
||||
|
||||
|
||||
ULONG STDMETHODCALLTYPE wxZRColaFrame::Release()
|
||||
{
|
||||
// Decrement the object's internal counter.
|
||||
ULONG ulRefCount = InterlockedDecrement(&m_ulRefCount);
|
||||
if (m_ulRefCount == 0)
|
||||
delete this;
|
||||
return ulRefCount;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void wxZRColaFrame::DoSend(const wxString& str)
|
||||
{
|
||||
// Prepare the INPUT table.
|
||||
@@ -154,6 +489,8 @@ void wxZRColaFrame::DoSend(const wxString& str)
|
||||
}
|
||||
|
||||
|
||||
#ifdef __WXMSW__
|
||||
|
||||
WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
if (message == WM_HOTKEY) {
|
||||
@@ -176,12 +513,10 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
|
||||
m_hWndSource = hWndSource;
|
||||
|
||||
//if (m_state == wxABS_FLOAT) {
|
||||
if (IsIconized()) {
|
||||
if (IsIconized())
|
||||
::SendMessage(m_hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
} else {
|
||||
::SetActiveWindow(m_hWnd);
|
||||
::SetForegroundWindow(m_hWnd);
|
||||
}
|
||||
::SetActiveWindow(m_hWnd);
|
||||
::SetForegroundWindow(m_hWnd);
|
||||
//} else if (wxAppBarIsDocked(m_state)) {
|
||||
// // ZRCola window is currently docked.
|
||||
|
||||
@@ -199,3 +534,38 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
|
||||
} else
|
||||
return wxZRColaFrameBase::MSWWindowProc(message, wParam, lParam);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaFrame
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaFrame::wxPersistentZRColaFrame(wxZRColaFrame *wnd) : wxPersistentTLW(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaFrame::Save() const
|
||||
{
|
||||
const wxZRColaFrame * const wnd = static_cast<const wxZRColaFrame*>(GetWindow());
|
||||
|
||||
wxPersistentZRColaComposerPanel(wnd->m_panel).Save();
|
||||
wxPersistentZRColaCharacterCatalogPanel(wnd->m_panelChrCat).Save();
|
||||
|
||||
wxPersistentTLW::Save();
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaFrame::Restore()
|
||||
{
|
||||
const bool r = wxPersistentTLW::Restore();
|
||||
|
||||
wxZRColaFrame * const wnd = static_cast<wxZRColaFrame*>(GetWindow());
|
||||
|
||||
wxPersistentZRColaCharacterCatalogPanel(wnd->m_panelChrCat).Restore();
|
||||
wxPersistentZRColaComposerPanel(wnd->m_panel).Restore();
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
@@ -27,6 +26,15 @@ class wxZRColaFrame;
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include "zrcolachrslct.h"
|
||||
#include "zrcolachrreq.h"
|
||||
#include "zrcolasettings.h"
|
||||
#include <zrcola/language.h>
|
||||
#include <wx/taskbar.h>
|
||||
#include <wx/persist/toplevel.h>
|
||||
#if defined(__WXMSW__)
|
||||
#include <msctf.h>
|
||||
#endif
|
||||
|
||||
|
||||
///
|
||||
@@ -39,27 +47,99 @@ class wxZRColaFrame;
|
||||
///
|
||||
/// ZRCola main frame
|
||||
///
|
||||
class wxZRColaFrame : public wxZRColaFrameBase
|
||||
class wxZRColaFrame :
|
||||
public wxZRColaFrameBase
|
||||
#if defined(__WXMSW__)
|
||||
, protected ITfLanguageProfileNotifySink
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
wxID_FOCUS_CHARACTER_CATALOG = 2000,
|
||||
};
|
||||
|
||||
wxZRColaFrame();
|
||||
virtual ~wxZRColaFrame();
|
||||
|
||||
friend class wxPersistentZRColaFrame;
|
||||
friend class wxZRColaComposerPanel;
|
||||
|
||||
protected:
|
||||
virtual void OnClose(wxCloseEvent& event);
|
||||
void OnExit(wxCommandEvent& event);
|
||||
void OnForwardEventUpdate(wxUpdateUIEvent& event);
|
||||
void OnForwardEvent(wxCommandEvent& event);
|
||||
void OnInsertCharacter(wxCommandEvent& event);
|
||||
void OnSendUpdate(wxUpdateUIEvent& event);
|
||||
void OnSendComposed(wxCommandEvent& event);
|
||||
void OnSendDecomposed(wxCommandEvent& event);
|
||||
void OnSendAbort(wxCommandEvent& event);
|
||||
void OnExit(wxCommandEvent& event);
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
void OnSettings(wxCommandEvent& event);
|
||||
virtual void OnIdle(wxIdleEvent& event);
|
||||
void OnTaskbarIconClick(wxTaskBarIconEvent& event);
|
||||
virtual void OnIconize(wxIconizeEvent& event);
|
||||
void OnToolbarEditUpdate(wxUpdateUIEvent& event);
|
||||
void OnToolbarEdit(wxCommandEvent& event);
|
||||
void OnToolbarComposeUpdate(wxUpdateUIEvent& event);
|
||||
void OnToolbarCompose(wxCommandEvent& event);
|
||||
void OnPanelCharacterCatalogUpdate(wxUpdateUIEvent& event);
|
||||
void OnPanelCharacterCatalog(wxCommandEvent& event);
|
||||
void OnPanelCharacterCatalogFocus(wxCommandEvent& event);
|
||||
void OnHelpInstructions(wxCommandEvent& event);
|
||||
void OnHelpShortcuts(wxCommandEvent& event);
|
||||
void OnHelpReqChar(wxCommandEvent& event);
|
||||
void OnHelpUpdate(wxCommandEvent& event);
|
||||
void OnHelpAbout(wxCommandEvent& event);
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
|
||||
protected:
|
||||
#if defined(__WXMSW__)
|
||||
ITfSource *m_tfSource; ///< Text Services install sink helper
|
||||
DWORD m_dwCookie; ///< Text Services installed sink cookie
|
||||
|
||||
// ITfLanguageProfileNotifySink implementation
|
||||
virtual HRESULT STDMETHODCALLTYPE OnLanguageChange(LANGID langid, __RPC__out BOOL *pfAccept);
|
||||
virtual HRESULT STDMETHODCALLTYPE OnLanguageChanged();
|
||||
|
||||
// IUnknown implementation
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, __RPC__deref_out void __RPC_FAR *__RPC_FAR *ppvObject);
|
||||
virtual ULONG STDMETHODCALLTYPE AddRef();
|
||||
virtual ULONG STDMETHODCALLTYPE Release();
|
||||
ULONG m_ulRefCount; ///< COM object reference count
|
||||
#endif
|
||||
|
||||
private:
|
||||
void DoSend(const wxString& str);
|
||||
|
||||
protected:
|
||||
#ifdef __WXMSW__
|
||||
virtual WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
WXHWND m_hWndSource; ///< handle of the active window, when the ZRCola hotkey was pressed
|
||||
WXHWND m_hWndSource; ///< Handle of the active window, when the ZRCola hotkey was pressed
|
||||
wxTaskBarIcon *m_taskBarIcon; ///< Taskbar icon
|
||||
wxZRColaCharSelect *m_chrSelect; ///< Character selection dialog
|
||||
wxZRColaCharRequest *m_chrReq; ///< Request a New Character dialog
|
||||
wxZRColaSettings *m_settings; ///< Configuration dialog
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaFrame GUI state
|
||||
///
|
||||
class wxPersistentZRColaFrame : public wxPersistentTLW
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaFrame(wxZRColaFrame *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaFrame *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaFrame(wnd);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 17 2015)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/cshelp.h>
|
||||
#include <wx/intl.h>
|
||||
class wxZRColaCharGrid;
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
@@ -21,13 +23,32 @@
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/toolbar.h>
|
||||
#include "zrcolacomppnl.h"
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/aui/aui.h>
|
||||
#include <wx/aui/auibar.h>
|
||||
class wxZRColaCharacterCatalogPanel;
|
||||
class wxZRColaComposerPanel;
|
||||
#include <wx/statusbr.h>
|
||||
#include <wx/frame.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/splitter.h>
|
||||
#include <wx/timer.h>
|
||||
#include <wx/choice.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/srchctrl.h>
|
||||
#include <wx/hyperlink.h>
|
||||
#include <wx/checklst.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/radiobut.h>
|
||||
#include <wx/listbox.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/listbook.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -41,27 +62,47 @@ class wxZRColaFrameBase : public wxFrame
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_SEND_COMPOSED = 1000,
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_SEND_COMPOSED,
|
||||
wxID_SEND_DECOMPOSED,
|
||||
wxID_SEND_ABORT
|
||||
wxID_SEND_ABORT,
|
||||
wxID_SETTINGS,
|
||||
wxID_TOOLBAR_EDIT,
|
||||
wxID_TOOLBAR_COMPOSE,
|
||||
wxID_PANEL_CHRGRPS,
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
wxMenu* m_menuProgram;
|
||||
wxMenu* m_menuEdit;
|
||||
wxMenu* m_menuView;
|
||||
wxMenu* m_menuHelp;
|
||||
wxToolBar* m_toolbar;
|
||||
wxToolBarToolBase* m_toolEditCut;
|
||||
wxToolBarToolBase* m_toolEditCopy;
|
||||
wxToolBarToolBase* m_toolEditPaste;
|
||||
wxToolBarToolBase* m_toolSendComposed;
|
||||
wxToolBarToolBase* m_toolSendDecomposed;
|
||||
wxZRColaComposerPanel* m_panel;
|
||||
wxAuiToolBar* m_toolbarEdit;
|
||||
wxAuiToolBarItem* m_toolEditCut;
|
||||
wxAuiToolBarItem* m_toolEditCopy;
|
||||
wxAuiToolBarItem* m_toolEditPaste;
|
||||
wxAuiToolBar* m_toolbarCompose;
|
||||
wxAuiToolBarItem* m_toolCharSelect;
|
||||
wxAuiToolBarItem* m_toolSendComposed;
|
||||
wxAuiToolBarItem* m_toolSendDecomposed;
|
||||
wxZRColaCharacterCatalogPanel* m_panelChrCat;
|
||||
wxStatusBar* m_statusBar;
|
||||
|
||||
// Virtual event handlers, overide 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(); }
|
||||
|
||||
|
||||
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") );
|
||||
wxAuiManager m_mgr;
|
||||
|
||||
~wxZRColaFrameBase();
|
||||
|
||||
@@ -75,20 +116,249 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxTextCtrl* m_decomposed;
|
||||
wxTextCtrl* m_composed;
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterDecomposed;
|
||||
wxPanel* m_panelDecomposedEdit;
|
||||
wxPanel* m_panelDecomposedHex;
|
||||
wxTextCtrl* m_decomposedHex;
|
||||
wxSplitterWindow* m_splitterComposed;
|
||||
wxPanel* m_panelComposedEdit;
|
||||
wxPanel* m_panelComposedHex;
|
||||
wxTextCtrl* m_composedHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnDecomposedPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnDecomposedText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnDecomposedHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnComposedPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnComposedText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnComposedHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSaveTimer( wxTimerEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
wxTextCtrl* m_decomposed;
|
||||
wxTextCtrl* m_composed;
|
||||
|
||||
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_splitterDecomposedOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterDecomposed->SetSashPosition( -5 );
|
||||
m_splitterDecomposed->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterDecomposedOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
void m_splitterComposedOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterComposed->SetSashPosition( -5 );
|
||||
m_splitterComposed->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterComposedOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaCharacterCatalogPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxChoice* m_choice;
|
||||
wxZRColaCharGrid* m_grid;
|
||||
|
||||
// Virtual event handlers, overide 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(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
|
||||
~wxZRColaComposerPanelBase();
|
||||
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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaCharSelectBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaCharSelectBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxSearchCtrl* m_search;
|
||||
wxHyperlinkCtrl* m_search_more;
|
||||
wxPanel* m_search_panel;
|
||||
wxCheckListBox* m_categories;
|
||||
wxHyperlinkCtrl* m_categoriesAll;
|
||||
wxHyperlinkCtrl* m_categoriesNone;
|
||||
wxHyperlinkCtrl* m_categoriesInvert;
|
||||
wxZRColaCharGrid* m_gridResults;
|
||||
wxZRColaCharGrid* m_gridRecent;
|
||||
wxStaticText* m_labelUnicode;
|
||||
wxTextCtrl* m_unicode;
|
||||
wxTextCtrl* m_shortcut;
|
||||
wxGrid* m_gridPreview;
|
||||
wxTextCtrl* m_description;
|
||||
wxTextCtrl* m_category;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide 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 OnResultCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultsKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnRecentCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnRecentSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnRecentKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnUnicodeText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnPreviewKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnNavigateBack( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnNavigateForward( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnRelatedSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaSettingsBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaSettingsBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxListbook* m_listbook;
|
||||
wxPanel* m_panelLanguage;
|
||||
wxStaticText* m_langLabel;
|
||||
wxRadioButton* m_langAuto;
|
||||
wxRadioButton* m_langManual;
|
||||
wxListBox* m_languages;
|
||||
wxPanel* m_panelAutoStart;
|
||||
wxStaticText* m_autoStartLabel;
|
||||
wxCheckBox* m_autoStart;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsApply;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnLangAuto( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLangManual( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnApplyButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaAboutBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaAboutBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticBitmap* m_bitmapIcon;
|
||||
wxStaticText* m_staticTextZRCola;
|
||||
wxStaticText* m_staticTextVersion;
|
||||
wxStaticText* m_staticTextColophone;
|
||||
wxStaticText* m_staticTextCopyright;
|
||||
wxHyperlinkCtrl* m_hyperlink;
|
||||
wxStaticText* m_staticTextDeclaration;
|
||||
wxTextCtrl* m_declaration;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
|
||||
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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaUpdaterBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaUpdaterBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxTextCtrl* m_log;
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonClose;
|
||||
|
||||
// Virtual event handlers, overide 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(); }
|
||||
|
||||
|
||||
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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaCharRequestBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaCharRequestBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_characterLbl;
|
||||
wxTextCtrl* m_character;
|
||||
wxStaticText* m_characterNote;
|
||||
wxStaticText* m_contextLbl;
|
||||
wxTextCtrl* m_context;
|
||||
wxStaticText* m_note;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide 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();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -24,29 +24,10 @@
|
||||
// wxZRColaKeyHandler
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaKeyHandler::wxZRColaKeyHandler() : wxEvtHandler()
|
||||
wxZRColaKeyHandler::wxZRColaKeyHandler() :
|
||||
m_is_insert(false),
|
||||
wxEvtHandler()
|
||||
{
|
||||
std::fstream dat((LPCTSTR)((ZRColaApp*)wxTheApp)->GetDatabasePath(), std::ios_base::in | std::ios_base::binary);
|
||||
if (dat.good()) {
|
||||
if (stdex::idrec::find<ZRCola::recordid_t, ZRCola::recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(ZRCola::recordid_t))) {
|
||||
ZRCola::recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(ZRCola::recordsize_t));
|
||||
if (dat.good()) {
|
||||
ZRCola::keyseq_rec rec(m_ks_db);
|
||||
if (rec.find(dat, size)) {
|
||||
dat >> rec;
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation data from ZRCola.zrcdb."));
|
||||
m_ks_db.idxChr.clear();
|
||||
m_ks_db.idxKey.clear();
|
||||
m_ks_db.data .clear();
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb has no translation data."));
|
||||
}
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb is not a valid ZRCola database."));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,62 +35,134 @@ bool wxZRColaKeyHandler::ProcessEvent(wxEvent& event)
|
||||
{
|
||||
if (event.GetEventType() == wxEVT_KEY_DOWN) {
|
||||
// The character event occured.
|
||||
ZRCola::keyseq_db::indexKey::size_type start, end;
|
||||
bool found;
|
||||
wxFrame *pFrame = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame);
|
||||
wxKeyEvent &e = (wxKeyEvent&)event;
|
||||
if (e.GetKeyCode() == WXK_INSERT) {
|
||||
// Insert key has been pressed.
|
||||
m_is_insert = true;
|
||||
wxFrame *pFrame = wxDynamicCast(((ZRColaApp*)wxTheApp)->m_mainWnd, wxFrame);
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(_("INS key is pressed. Type the Unicode code of desired character now (up to four hexadecimal digits: 0-9, A-F), then release INS."));
|
||||
} else if (m_is_insert) {
|
||||
wxChar chr = e.GetUnicodeKey();
|
||||
wxFrame *pFrame = wxDynamicCast(((ZRColaApp*)wxTheApp)->m_mainWnd, wxFrame);
|
||||
if (('0' <= chr && chr <= '9' || 'A' <= chr && chr <= 'F') && m_insert_seq.size() < 4) {
|
||||
// A hex-digit pressed. Save it.
|
||||
m_insert_seq.push_back((char)chr);
|
||||
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxString::Format(wxT("U+%s"), (const wxStringCharType*)wxString(m_insert_seq.data(), m_insert_seq.size())));
|
||||
|
||||
event.StopPropagation();
|
||||
return true;
|
||||
} else {
|
||||
// Not a hex-digit.
|
||||
m_is_insert = false;
|
||||
m_insert_seq.clear();
|
||||
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxEmptyString);
|
||||
}
|
||||
} else if ((e.GetUnicodeKey() || !e.HasAnyModifiers())
|
||||
#if defined(__WXMSW__)
|
||||
&& ::GetKeyState(VK_RMENU) >= 0
|
||||
#endif
|
||||
)
|
||||
{
|
||||
// Parse key event and save it at the end of the key sequence.
|
||||
wxKeyEvent &e = (wxKeyEvent&)event;
|
||||
ZRCola::keyseq_db::keyseq::key_t key;
|
||||
key.key = e.GetKeyCode(); //wxToupper(e.m_uniChar);
|
||||
key.modifiers =
|
||||
(e.ShiftDown() ? ZRCola::keyseq_db::keyseq::SHIFT : 0) |
|
||||
(e.ControlDown() ? ZRCola::keyseq_db::keyseq::CTRL : 0) |
|
||||
(e.AltDown() ? ZRCola::keyseq_db::keyseq::ALT : 0);
|
||||
m_seq.push_back(key);
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
bool found;
|
||||
wxFrame *pFrame = wxDynamicCast(app->m_mainWnd, wxFrame);
|
||||
|
||||
std::vector<ZRCola::keyseq_db::keyseq::key_t>::size_type n = m_seq.size();
|
||||
ZRCola::keyseq_db::keyseq *ks = (ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::keyseq_db::keyseq::key_t)*n];
|
||||
ks->chr = 0;
|
||||
ks->seq_len = n;
|
||||
memcpy(ks->seq, m_seq.data(), sizeof(ZRCola::keyseq_db::keyseq::key_t)*n);
|
||||
found = m_ks_db.idxKey.find(*ks, start, end);
|
||||
delete ks;
|
||||
{
|
||||
// Parse key event and save it at the end of the key sequence.
|
||||
ZRCola::keyseq_db::keyseq::key_t key;
|
||||
key.key = e.GetRawKeyCode();
|
||||
#if defined(__WXMSW__)
|
||||
// Translate from local keyboard to scan code.
|
||||
key.key = ::MapVirtualKey(key.key, MAPVK_VK_TO_VSC);
|
||||
|
||||
// Translate from scan code to U.S. Keyboard.
|
||||
static const HKL s_hkl = ::LoadKeyboardLayout(_T("00000409"), 0);
|
||||
key.key = ::MapVirtualKeyEx(key.key, MAPVK_VSC_TO_VK, s_hkl);
|
||||
#endif
|
||||
key.modifiers =
|
||||
(e.ShiftDown() ? ZRCola::keyseq_db::keyseq::SHIFT : 0) |
|
||||
(e.ControlDown() ? ZRCola::keyseq_db::keyseq::CTRL : 0) |
|
||||
(e.AltDown() ? ZRCola::keyseq_db::keyseq::ALT : 0);
|
||||
m_seq.push_back(key);
|
||||
|
||||
std::vector<ZRCola::keyseq_db::keyseq::key_t>::size_type n = m_seq.size();
|
||||
ZRCola::keyseq_db::keyseq *ks = (ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::keyseq_db::keyseq::key_t)*n];
|
||||
ks->chr = 0;
|
||||
ks->seq_len = n;
|
||||
memcpy(ks->seq, m_seq.data(), sizeof(ZRCola::keyseq_db::keyseq::key_t)*n);
|
||||
found = app->m_ks_db.idxKey.find(*ks, start);
|
||||
delete ks;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
// The exact key sequence found.
|
||||
const ZRCola::keyseq_db::keyseq &ks = app->m_ks_db.idxKey[start];
|
||||
m_seq.clear();
|
||||
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxEmptyString);
|
||||
|
||||
wxObject *obj = event.GetEventObject();
|
||||
if (obj && obj->IsKindOf(wxCLASSINFO(wxTextCtrl))) {
|
||||
// Push text to source control.
|
||||
((wxTextCtrl*)obj)->WriteText(ks.chr);
|
||||
|
||||
// Event is fully processed now.
|
||||
event.StopPropagation();
|
||||
return true;
|
||||
}
|
||||
} else if (start < app->m_ks_db.idxKey.size() &&
|
||||
ZRCola::keyseq_db::keyseq::CompareSequence(m_seq.data(), m_seq.size(), app->m_ks_db.idxKey[start].seq, std::min<unsigned __int16>(app->m_ks_db.idxKey[start].seq_len, m_seq.size())) == 0)
|
||||
{
|
||||
// The sequence is a partial match. Continue watching.
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(ZRCola::keyseq_db::GetSequenceAsText(m_seq.data(), m_seq.size()));
|
||||
|
||||
event.StopPropagation();
|
||||
return true;
|
||||
} else {
|
||||
// The key sequence has no future chance to match. Start all over again.
|
||||
m_seq.clear();
|
||||
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxEmptyString);
|
||||
}
|
||||
}
|
||||
|
||||
if (found) {
|
||||
// The exact key sequence found.
|
||||
const ZRCola::keyseq_db::keyseq &ks = m_ks_db.idxKey[start];
|
||||
m_seq.clear();
|
||||
|
||||
} else if (event.GetEventType() == wxEVT_KEY_UP) {
|
||||
wxKeyEvent &e = (wxKeyEvent&)event;
|
||||
if (m_is_insert && e.GetKeyCode() == WXK_INSERT) {
|
||||
// Insert key has been depressed.
|
||||
wxFrame *pFrame = wxDynamicCast(((ZRColaApp*)wxTheApp)->m_mainWnd, wxFrame);
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxEmptyString);
|
||||
|
||||
wxObject *obj = event.GetEventObject();
|
||||
if (obj && obj->IsKindOf(wxCLASSINFO(wxTextCtrl))) {
|
||||
// Push text to source control.
|
||||
((wxTextCtrl*)obj)->WriteText(ks.chr);
|
||||
std::vector<char>::size_type count = m_insert_seq.size();
|
||||
if (count) {
|
||||
// Zero terminate sequence and parse the Unicode value.
|
||||
m_insert_seq.push_back(0);
|
||||
wchar_t chr = strtoul(m_insert_seq.data(), NULL, 16);
|
||||
|
||||
// Event is fully processed now.
|
||||
event.StopPropagation();
|
||||
return true;
|
||||
if (chr) {
|
||||
wxObject *obj = event.GetEventObject();
|
||||
if (obj && obj->IsKindOf(wxCLASSINFO(wxTextCtrl))) {
|
||||
// Push text to source control.
|
||||
((wxTextCtrl*)obj)->WriteText(chr);
|
||||
}
|
||||
}
|
||||
|
||||
m_insert_seq.clear();
|
||||
}
|
||||
} else if (start < m_ks_db.idxKey.size() &&
|
||||
ZRCola::keyseq_db::keyseq::CompareSequence(m_seq.data(), m_seq.size(), m_ks_db.idxKey[start].seq, std::min<unsigned __int16>(m_ks_db.idxKey[start].seq_len, m_seq.size())) == 0)
|
||||
{
|
||||
// The sequence is a partial match. Continue watching.
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(ZRCola::keyseq_db::GetSequenceAsText(m_seq.data(), m_seq.size()));
|
||||
|
||||
m_is_insert = false;
|
||||
|
||||
event.StopPropagation();
|
||||
return true;
|
||||
} else {
|
||||
// The key sequence has no future chance to match. Start all over again.
|
||||
m_seq.clear();
|
||||
|
||||
if (pFrame && pFrame->GetStatusBar())
|
||||
pFrame->SetStatusText(wxEmptyString);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ class wxZRColaKeyHandler;
|
||||
#pragma once
|
||||
|
||||
#include <zrcolaui/keyboard.h>
|
||||
|
||||
#include <wx/event.h>
|
||||
#include <vector>
|
||||
|
||||
@@ -41,6 +42,7 @@ public:
|
||||
virtual bool ProcessEvent(wxEvent& event);
|
||||
|
||||
protected:
|
||||
ZRCola::keyseq_db m_ks_db; ///< Key sequence database
|
||||
std::vector<ZRCola::keyseq_db::keyseq::key_t> m_seq; ///< Key sequence
|
||||
bool m_is_insert; ///< Is Insert key pressed?
|
||||
std::vector<char> m_insert_seq; ///< The Insert char sequence
|
||||
};
|
||||
|
||||
190
ZRCola/zrcolasettings.cpp
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaSettings::wxZRColaSettings(wxWindow* parent) :
|
||||
m_lang_auto(true),
|
||||
m_lang(ZRCola::langid_t_blank),
|
||||
wxZRColaSettingsBase(parent)
|
||||
{
|
||||
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
|
||||
m_languages->Clear();
|
||||
for (size_t i = 0, n = app->m_lang_db.idxLng.size(); i < n; i++) {
|
||||
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[i];
|
||||
wxString
|
||||
label(lang.name, lang.name_len),
|
||||
label_tran(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_languages->Insert(label_tran, 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);
|
||||
|
||||
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
|
||||
char l[sizeof(ZRCola::language_db::language)] = {};
|
||||
((ZRCola::language_db::language*)l)->id = m_lang;
|
||||
ZRCola::language_db::indexLang::size_type start;
|
||||
m_languages->Select(app->m_lang_db.idxLng.find(*(ZRCola::language_db::language*)l, start) ? start : -1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLangAuto(wxCommandEvent& event)
|
||||
{
|
||||
m_languages->Enable(!event.IsChecked());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLangManual(wxCommandEvent& event)
|
||||
{
|
||||
m_languages->Enable(event.IsChecked());
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
|
||||
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
|
||||
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[m_languages->GetSelection()];
|
||||
|
||||
if (m_lang != lang.id) {
|
||||
m_lang = lang.id;
|
||||
|
||||
// Notify composed text something changed and should re-decompose.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
app->m_mainWnd->m_panel->m_composed->ProcessWindowEvent(event2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void wxZRColaSettings::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaSettings::OnApplyButtonClick(event);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaSettings::wxPersistentZRColaSettings(wxZRColaSettings *wnd) : wxPersistentDialog(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaSettings::Save() const
|
||||
{
|
||||
wxPersistentDialog::Save();
|
||||
|
||||
const wxZRColaSettings * const wnd = static_cast<const wxZRColaSettings*>(GetWindow());
|
||||
|
||||
SaveValue(wxT("langAuto"), wnd->m_lang_auto);
|
||||
SaveValue(wxT("lang" ), wxString::FromAscii(wnd->m_lang.data, _countof(wnd->m_lang.data)));
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaSettings::Restore()
|
||||
{
|
||||
wxZRColaSettings * const wnd = static_cast<wxZRColaSettings*>(GetWindow());
|
||||
|
||||
ZRColaApp *app = ((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.idxLng.empty()) {
|
||||
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[0];
|
||||
wnd->m_lang = lang.id;
|
||||
} else
|
||||
wnd->m_lang = ZRCola::langid_t_blank;
|
||||
|
||||
return wxPersistentDialog::Restore();
|
||||
}
|
||||
72
ZRCola/zrcolasettings.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaSettings;
|
||||
class wxPersistentZRColaSettings;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
#include <wxex/persist/dialog.h>
|
||||
|
||||
|
||||
///
|
||||
/// Configuration dialog
|
||||
///
|
||||
class wxZRColaSettings : public wxZRColaSettingsBase
|
||||
{
|
||||
public:
|
||||
wxZRColaSettings(wxWindow* parent);
|
||||
|
||||
friend class wxPersistentZRColaSettings; // Allow saving/restoring window state.
|
||||
|
||||
protected:
|
||||
virtual void OnInitDialog(wxInitDialogEvent& event);
|
||||
virtual void OnLangAuto(wxCommandEvent& event);
|
||||
virtual void OnLangManual(wxCommandEvent& event);
|
||||
virtual void OnApplyButtonClick(wxCommandEvent& event);
|
||||
virtual void OnOKButtonClick(wxCommandEvent& event);
|
||||
|
||||
public:
|
||||
bool m_lang_auto; ///< Is language for decomposing resolved using currently selected keyboard
|
||||
ZRCola::langid_t m_lang; ///< Language for decomposing
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaSettings state
|
||||
///
|
||||
class wxPersistentZRColaSettings : public wxPersistentDialog
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaSettings(wxZRColaSettings *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaSettings *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaSettings(wnd);
|
||||
}
|
||||
110
ZRCola/zrcolaupdater.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaUpdater
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaUpdater::wxZRColaUpdater(wxWindow* parent) :
|
||||
m_logLevelOrig(wxLOG_Warning),
|
||||
m_logOrig(NULL),
|
||||
m_updater(NULL),
|
||||
m_finished(false),
|
||||
wxZRColaUpdaterBase(parent)
|
||||
{
|
||||
// Setup logging.
|
||||
m_logOrig = wxLog::SetActiveTarget(new wxLogTextCtrl(m_log));
|
||||
m_logLevelOrig = wxLog::GetLogLevel();
|
||||
wxLog::SetLogLevel(wxLOG_Info);
|
||||
|
||||
//// Connect events.
|
||||
//Connect(wxID_ANY, wxEVT_UPDATER_CHECK_COMPLETE, wxThreadEventHandler(wxZRColaUpdater::OnCheckComplete), NULL, this);
|
||||
|
||||
// Prepare Updater.
|
||||
ZRColaApp *app = (ZRColaApp*)wxTheApp;
|
||||
m_updater = new wxUpdCheckThread(app->m_locale.GetCanonicalName(), this);
|
||||
//if (m_updater->Run() != wxTHREAD_NO_ERROR) {
|
||||
// wxFAIL_MSG(wxT("Can't create the thread!"));
|
||||
// delete m_updater;
|
||||
// m_updater = NULL;
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
wxZRColaUpdater::~wxZRColaUpdater()
|
||||
{
|
||||
if (m_updater) {
|
||||
// Terminate the Updater thread.
|
||||
//m_updater->Delete();
|
||||
delete m_updater;
|
||||
}
|
||||
|
||||
//// Disconnect events.
|
||||
//Disconnect(wxID_ANY, wxEVT_UPDATER_CHECK_COMPLETE, wxThreadEventHandler(wxZRColaUpdater::OnCheckComplete), NULL, this);
|
||||
|
||||
wxLog::SetLogLevel(m_logLevelOrig);
|
||||
if (m_logOrig) {
|
||||
// Return logging to previous state.
|
||||
delete wxLog::SetActiveTarget(m_logOrig);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//void wxZRColaUpdater::OnCheckComplete(wxThreadEvent& event)
|
||||
//{
|
||||
// event.Skip();
|
||||
//
|
||||
// m_buttonUpdate->Enable(event.GetInt() == wxUpdCheckThread::wxUpdUpdateAvailable);
|
||||
//}
|
||||
|
||||
|
||||
void wxZRColaUpdater::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
if (!m_finished) {
|
||||
m_buttonUpdate->Enable(m_updater->CheckForUpdate() == wxUpdCheckThread::wxUpdUpdateAvailable);
|
||||
m_finished = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaUpdater::OnUpdate(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_updater) {
|
||||
if (wxMessageBox(_("This program will now close and the upgrade will be launched.\nAre you sure?"), _("Product Update"), wxICON_QUESTION | wxYES_NO | wxNO_DEFAULT, this) == wxYES) {
|
||||
m_updater->LaunchUpdate();
|
||||
|
||||
Close(true);
|
||||
((ZRColaApp*)wxTheApp)->m_mainWnd->Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaUpdater::OnClose(wxCommandEvent& event)
|
||||
{
|
||||
if (m_updater)
|
||||
m_updater->Abort();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
55
ZRCola/zrcolaupdater.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
Copyright 2015-2016 Amebis
|
||||
|
||||
This file is part of ZRCola.
|
||||
|
||||
ZRCola is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ZRCola is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaUpdater;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zrcolagui.h"
|
||||
|
||||
#include <Updater/chkthread.h>
|
||||
|
||||
#include <wx/log.h>
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola updater dialog
|
||||
///
|
||||
class wxZRColaUpdater : public wxZRColaUpdaterBase
|
||||
{
|
||||
public:
|
||||
wxZRColaUpdater(wxWindow* parent);
|
||||
virtual ~wxZRColaUpdater();
|
||||
|
||||
protected:
|
||||
//void OnCheckComplete(wxThreadEvent& event);
|
||||
virtual void OnIdle(wxIdleEvent& event);
|
||||
virtual void OnUpdate(wxCommandEvent& event);
|
||||
virtual void OnClose(wxCommandEvent& event);
|
||||
|
||||
protected:
|
||||
wxLogLevel m_logLevelOrig; ///< Original log level
|
||||
wxLog *m_logOrig; ///< Original log
|
||||
wxUpdCheckThread *m_updater; ///< Updater thread
|
||||
bool m_finished; ///< Is Updater finished?
|
||||
};
|
||||
@@ -71,8 +71,13 @@
|
||||
<ResourceCompile Include="ZRColaCompile.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\de_DE.po" />
|
||||
<POCompile Include="locale\ru_RU.po" />
|
||||
<POCompile Include="locale\sl_SI.po" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="locale\ZRColaCompile.pot" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="..\include\xgettext.targets" />
|
||||
|
||||