Compare commits
648 Commits
ver/SDP201
...
2.5.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e07ce00938 | ||
|
|
7fb29aed80 | ||
|
|
6c3b2635f4 | ||
|
|
ad79961c33 | ||
|
|
454b02181e | ||
|
|
0b68cdedda | ||
|
|
a3f0662022 | ||
|
|
0e96b03be1 | ||
|
|
0c8c772bcd | ||
|
|
55b57c8d7b | ||
|
|
204565dd60 | ||
|
|
a7058daf69 | ||
|
|
f8e701a572 | ||
|
|
a0cc1221d2 | ||
|
|
ce76950b2d | ||
|
|
0d112cd90b | ||
|
|
e930d96090 | ||
|
|
8dc229d0d6 | ||
|
|
3bda60b340 | ||
|
|
ed49b3227e | ||
|
|
274534a34c | ||
|
|
453b78cbb6 | ||
|
|
467fff294c | ||
|
|
5bb48d899d | ||
|
|
feb68ce463 | ||
|
|
f6b3b4568a | ||
|
|
11924089d3 | ||
|
|
1a8884fcab | ||
|
|
fc7f9da219 | ||
|
|
980e5c6b2c | ||
|
|
2e68a27d18 | ||
|
|
c16ec014dd | ||
|
|
c9f059726e | ||
|
|
e173ed8aa2 | ||
|
|
e54e827a07 | ||
|
|
3d1a12c335 | ||
|
|
e97971ffb0 | ||
|
|
4995ea5a08 | ||
|
|
dbf3354a1a | ||
|
|
0891f44f33 | ||
|
|
771dd9f1f7 | ||
|
|
c4f2726256 | ||
|
|
bc4b6b30d1 | ||
|
|
34e409ef2f | ||
|
|
e43a5a0ef0 | ||
|
|
ddc8b00416 | ||
|
|
9f128a96d1 | ||
|
|
74e95b95b5 | ||
|
|
f3bb513545 | ||
|
|
72f8b179d7 | ||
|
|
fa2fb03cf8 | ||
|
|
12c2889ea3 | ||
|
|
2fce6f06bc | ||
|
|
89a33bc0ea | ||
|
|
445e0663e1 | ||
|
|
b837c5204c | ||
|
|
4dd9461c48 | ||
|
|
c7e29b1862 | ||
|
|
42daea5b5e | ||
|
|
41ad9cd134 | ||
|
|
435316eb79 | ||
|
|
aa7a8fa484 | ||
|
|
59493b998e | ||
|
|
0b586aa141 | ||
|
|
04ffd649ec | ||
|
|
0970997ab7 | ||
|
|
1434c9a2d3 | ||
|
|
9ebdafa272 | ||
|
|
ea76dc27b4 | ||
|
|
7d39d4756c | ||
|
|
a6e337a2a1 | ||
|
|
0e1a347b5f | ||
|
|
e28a146a39 | ||
|
|
dfedfc419e | ||
|
|
9f9e5addcc | ||
|
|
f0f3ce75d0 | ||
|
|
41c8cc01ed | ||
|
|
64ef4f5921 | ||
|
|
d6be99ed59 | ||
|
|
c00e9cbe1f | ||
|
|
867ab0f149 | ||
|
|
ebdbb84a29 | ||
|
|
62702a0194 | ||
|
|
b3702ed237 | ||
|
|
d3af51adf8 | ||
|
|
2363016a76 | ||
|
|
f8f20f3667 | ||
|
|
c2b96dbcc1 | ||
|
|
90a53fb139 | ||
|
|
ac2c225540 | ||
|
|
4a0bf118bf | ||
|
|
2e04726dd7 | ||
|
|
9c8ca4d7b1 | ||
|
|
0800f813ff | ||
|
|
dffc4bf9af | ||
|
|
91d5c77e02 | ||
|
|
94cbed643d | ||
|
|
be687497e8 | ||
|
|
495b490dc2 | ||
|
|
f54c048b74 | ||
|
|
81741eec8f | ||
|
|
ab065edda4 | ||
|
|
6799a1f8a6 | ||
|
|
84973a57d6 | ||
|
|
3b64c576fa | ||
|
|
0b777b89c2 | ||
|
|
b6567582e5 | ||
|
|
8f1b412c1f | ||
|
|
79ec7c51ba | ||
|
|
33aa840e50 | ||
|
|
63ff924b76 | ||
|
|
c790fff673 | ||
|
|
99283e806a | ||
|
|
893dbf5783 | ||
|
|
64e3735b12 | ||
|
|
c598fe4fe0 | ||
|
|
4393b02323 | ||
|
|
0dba3d4652 | ||
|
|
c9231078a6 | ||
|
|
d98987ec5f | ||
|
|
4900202d7e | ||
|
|
a3c73e1c4d | ||
|
|
a8436ee3d7 | ||
|
|
c8ea746474 | ||
|
|
039dae11bc | ||
|
|
ce11c7f4d4 | ||
|
|
ea5049172d | ||
|
|
1feebdbbf8 | ||
|
|
39708ad4cb | ||
|
|
e0e8401482 | ||
|
|
a5099d7424 | ||
|
|
c6d567edfd | ||
|
|
3d104d4292 | ||
|
|
07706db14e | ||
|
|
10e53e431a | ||
|
|
5e751eb23e | ||
|
|
30b2eb270b | ||
|
|
ed98e1d588 | ||
|
|
6c3b84b448 | ||
|
|
2d04361318 | ||
|
|
2d82904b13 | ||
|
|
640421be60 | ||
|
|
75941da5a7 | ||
|
|
974d6bd827 | ||
|
|
16dc9aff96 | ||
|
|
18f36e7fde | ||
|
|
5d0ea994d7 | ||
|
|
e86847f364 | ||
|
|
c295fcfc12 | ||
|
|
9f0c831fb5 | ||
|
|
ddae64ca6d | ||
|
|
bc48240e0a | ||
|
|
6a3fbc063c | ||
|
|
3672c8e87e | ||
|
|
dcabe36369 | ||
|
|
4b59582568 | ||
|
|
692a37651d | ||
|
|
59d06ae3dc | ||
|
|
4226774e21 | ||
|
|
3831012af9 | ||
|
|
073311be78 | ||
|
|
6636bf4211 | ||
|
|
7f0e2cca04 | ||
|
|
3976831d98 | ||
|
|
a22bbcb407 | ||
|
|
aafa984d7c | ||
|
|
707f57d6ae | ||
|
|
ef2d61cac1 | ||
|
|
7edf4f452e | ||
|
|
a3c6313f57 | ||
|
|
ab319af0b8 | ||
|
|
14de0cbd23 | ||
|
|
7bd5441c31 | ||
|
|
8358d3bf35 | ||
|
|
8f5cd8cae7 | ||
|
|
d301b6feed | ||
|
|
cc4baa3214 | ||
|
|
61d3369631 | ||
|
|
a40d021404 | ||
|
|
bb4331d6f6 | ||
|
|
9d8c7d87ed | ||
|
|
c0da04dcf4 | ||
|
|
44f00f0c40 | ||
|
|
48945e15d6 | ||
|
|
d0e367b881 | ||
|
|
72e8e4893e | ||
|
|
5502206810 | ||
|
|
35f6b33f54 | ||
|
|
c5c505e32e | ||
|
|
9ca82f02f8 | ||
|
|
9ff3f8c2ab | ||
|
|
0e50a733de | ||
|
|
7fbcbd17fb | ||
|
|
593392782a | ||
|
|
e19a98a249 | ||
|
|
a66128b8ca | ||
|
|
6121f7ee12 | ||
|
|
d9527fe70f | ||
|
|
937c263d56 | ||
|
|
6487507570 | ||
|
|
84fa35c9be | ||
|
|
b8be10390b | ||
|
|
de6d890ac1 | ||
|
|
31b6f1a3e8 | ||
|
|
4c6839e9fe | ||
|
|
397cfe71dd | ||
|
|
1834543564 | ||
|
|
8f4f20f2b4 | ||
|
|
9bba0ca557 | ||
|
|
435b5c4a10 | ||
|
|
bc5058f168 | ||
|
|
5ba870158e | ||
|
|
a6693673a5 | ||
|
|
ba55173f28 | ||
|
|
12a053a495 | ||
|
|
8da5f88e0d | ||
|
|
5a4a20a873 | ||
|
|
7e50ba5974 | ||
|
|
91fd26a51d | ||
|
|
1ea5e52208 | ||
|
|
2a18117b17 | ||
|
|
b7bef14746 | ||
|
|
4aacc4abc5 | ||
|
|
2f6c789fdf | ||
|
|
57ceeadbe7 | ||
|
|
3b297c8427 | ||
|
|
92374e57a8 | ||
|
|
ace7551281 | ||
|
|
15e5f2d9e2 | ||
|
|
08397415c4 | ||
|
|
6dff6eed4f | ||
|
|
acbae76737 | ||
|
|
cc4a150501 | ||
|
|
186dbee443 | ||
|
|
716dde0a84 | ||
|
|
155642a3f9 | ||
|
|
7cb0317544 | ||
|
|
87a2828ce0 | ||
|
|
806aa550a5 | ||
|
|
ca306345c2 | ||
|
|
03ff056898 | ||
|
|
9f083bb521 | ||
|
|
a224454b3c | ||
|
|
bd0fdba435 | ||
|
|
87814981db | ||
|
|
acf86e2ce0 | ||
|
|
1016d5f738 | ||
|
|
4d53785af7 | ||
|
|
8e2a3860e3 | ||
|
|
0c2e666d0f | ||
|
|
d6075327ef | ||
|
|
14e665fdf2 | ||
|
|
55e2ee8c4d | ||
|
|
f444355d6d | ||
|
|
feb3c7c150 | ||
|
|
f65634e285 | ||
|
|
62a67b6be7 | ||
|
|
5304402ec5 | ||
|
|
f14fa2911d | ||
|
|
db391d7023 | ||
|
|
0b5a6a7016 | ||
|
|
5cc72a6a96 | ||
|
|
4138f6a5a3 | ||
|
|
2b2b2656b3 | ||
|
|
6253f2c267 | ||
|
|
c9779c3772 | ||
|
|
f6019e361c | ||
|
|
3fd0aef27d | ||
|
|
49c9d33b97 | ||
|
|
b01d1c5409 | ||
|
|
b0b434fec2 | ||
|
|
d46557a367 | ||
|
|
0180cb6306 | ||
|
|
4ce3213b1a | ||
|
|
75b2758797 | ||
|
|
2e14bcf1ec | ||
|
|
cf49e3e401 | ||
|
|
0ed0cf8c49 | ||
|
|
38a77ca51b | ||
|
|
891bd624fc | ||
|
|
affe7b06a2 | ||
|
|
f51c4dbbec | ||
|
|
650ad13a30 | ||
|
|
f53779dbad | ||
|
|
a45115d5e7 | ||
|
|
b5ba1290f9 | ||
|
|
52689653d0 | ||
|
|
8d9af61d5e | ||
|
|
5f339d0d51 | ||
|
|
641d178248 | ||
|
|
67d3c6f3ac | ||
|
|
060ed729b3 | ||
|
|
f8eead6835 | ||
|
|
15693f643f | ||
|
|
916b466909 | ||
|
|
a112a46755 | ||
|
|
fba2181b32 | ||
|
|
d9bf31897e | ||
|
|
65b92f017b | ||
|
|
dddc2d5794 | ||
|
|
e4e8609a00 | ||
|
|
cee1ea7dbc | ||
|
|
87c41451ab | ||
|
|
ecefcecfd8 | ||
|
|
ba8254c097 | ||
|
|
dacca1409e | ||
|
|
8a3a539d5b | ||
|
|
bb2e5e256b | ||
|
|
6828887308 | ||
|
|
186bc61723 | ||
|
|
19a9d9c26d | ||
|
|
cca084be7d | ||
|
|
6710e0a21c | ||
|
|
b5cc0b8f2c | ||
|
|
ded987e4f8 | ||
|
|
957d530801 | ||
|
|
4c716f2ba3 | ||
|
|
7e3cf0bce7 | ||
|
|
7f97a20ba0 | ||
|
|
4b4bc1b371 | ||
|
|
f0b573f1a8 | ||
|
|
c2887f77b0 | ||
|
|
f056a4b0ec | ||
|
|
181778c981 | ||
|
|
ffb887b306 | ||
|
|
515a994ece | ||
|
|
ab28678227 | ||
|
|
b90ff2977f | ||
|
|
eab7bcb35f | ||
|
|
a7c6f2967f | ||
|
|
2316e5906c | ||
|
|
1866ace76f | ||
|
|
48d97742b1 | ||
|
|
96bde4740f | ||
|
|
333a415a66 | ||
|
|
26e81ac0a0 | ||
|
|
2b610e2804 | ||
|
|
ea4f85223c | ||
|
|
aff96d1efe | ||
|
|
f5eaf3c74b | ||
|
|
6e167b7344 | ||
|
|
acaae141de | ||
|
|
4a32a4b40c | ||
|
|
902fcf92a4 | ||
|
|
424a6762f7 | ||
|
|
41aa04abad | ||
|
|
8ae98bfb12 | ||
|
|
41dfe0c892 | ||
|
|
5cd454a757 | ||
|
|
a75b649f8b | ||
|
|
174f117770 | ||
|
|
19d1daf099 | ||
|
|
c4fe7c4370 | ||
|
|
7a7135ea81 | ||
|
|
2d97afded3 | ||
|
|
01e8ca5338 | ||
|
|
02f69e332c | ||
|
|
5ce2d209d2 | ||
|
|
088abe062b | ||
|
|
f264fdb211 | ||
|
|
0e9c6ab66e | ||
|
|
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 | ||
|
|
1b41ff7aab | ||
|
|
61af77e7b6 | ||
|
|
ee7f94d776 | ||
|
|
1cb4f470c6 | ||
|
|
8fd0437502 | ||
|
|
93361f0edb | ||
|
|
2007d04812 | ||
|
|
a4aff5151e | ||
|
|
ce43a99b30 | ||
|
|
06dae56c66 | ||
|
|
31869a9094 | ||
|
|
799ef2da6b | ||
|
|
80941d968f | ||
|
|
041ce03f09 | ||
|
|
06c0ee790d | ||
|
|
e9535d5ee4 | ||
|
|
7af2b3da0a | ||
|
|
30a2027707 | ||
|
|
39ec4750f4 | ||
|
|
d446c50ed0 | ||
|
|
9d6a4d2f1f | ||
|
|
1d46968076 | ||
|
|
c1e9819446 | ||
|
|
7b27a14505 | ||
|
|
b07ba1671c | ||
|
|
2308403400 | ||
|
|
b863abd319 | ||
|
|
fd36ffdc1f | ||
|
|
45ea582e59 | ||
|
|
111db1ef21 | ||
|
|
fa4460213d | ||
|
|
5c032295d5 | ||
|
|
301f218098 | ||
|
|
0ee6d6b4b2 | ||
|
|
4650f8244b | ||
|
|
f61d6f8a4b | ||
|
|
18b9bf3750 | ||
|
|
aa6ceacee1 | ||
|
|
64046a60c3 | ||
|
|
6bec2894ed | ||
|
|
e5711cc6b5 | ||
|
|
54802ec29a | ||
|
|
08808db8c8 | ||
|
|
4121239e9b | ||
|
|
3a0dc3a41a | ||
|
|
fdcc7c682a | ||
|
|
e92291de98 | ||
|
|
cb90f05ed2 | ||
|
|
dfd429d14c | ||
|
|
75ca79a466 | ||
|
|
50e49f9a8c | ||
|
|
f58d91bcc1 | ||
|
|
7f28cdecae | ||
|
|
4b40c0c31c | ||
|
|
044fdd331a | ||
|
|
17c63556ad | ||
|
|
41c1fd2328 | ||
|
|
b94d2b6b82 | ||
|
|
732b8afdf7 | ||
|
|
f46f38d0e3 | ||
|
|
f96213691b | ||
|
|
5edfe17fae | ||
|
|
3e3e311a62 | ||
|
|
690109c5a6 | ||
|
|
b82e4e9b22 | ||
|
|
5511625e5e | ||
|
|
8f66e85cee | ||
|
|
71b85d9213 | ||
|
|
96acb87852 | ||
|
|
417acc5418 | ||
|
|
d9e0489a34 | ||
|
|
a8c7c4ab89 | ||
|
|
8c0421c231 | ||
|
|
3d4bdb4453 | ||
|
|
04a89d9f86 | ||
|
|
d4c0d0ca12 | ||
|
|
f4531bdf20 | ||
|
|
18b71b6ee9 | ||
|
|
b9199f9a7b | ||
|
|
0e70075c78 | ||
|
|
e13133d0e4 | ||
|
|
4d72a5bc4c | ||
|
|
74d076861b | ||
|
|
87b80bb8c4 | ||
|
|
70990846e1 | ||
|
|
0ec73e44ca | ||
|
|
48e0fc9639 | ||
|
|
3e6c535f42 | ||
|
|
c6f1e8a251 | ||
|
|
72c03af0c5 | ||
|
|
775d6611b2 | ||
|
|
5398ccbd5e | ||
|
|
f3c0e83d04 | ||
|
|
0501a5c7ca | ||
|
|
4e5811803a | ||
|
|
c44b449a36 | ||
|
|
8e9a7d0fa9 | ||
|
|
8b86afeb5d | ||
|
|
6bb0cd7b89 | ||
|
|
ce89d26373 | ||
|
|
81e88a82e4 | ||
|
|
cf49ef6fb7 | ||
|
|
628c9b6884 | ||
|
|
215e03a705 | ||
|
|
7e6bc01b8a | ||
|
|
9d7cd76520 | ||
|
|
c32475c8ac | ||
|
|
a5454cb537 | ||
|
|
b31e796049 | ||
|
|
795bddcdc3 | ||
|
|
866fceb081 | ||
|
|
0e17c9d4dc | ||
|
|
1afc37c916 | ||
|
|
4c91b8582a | ||
|
|
811778bd4e |
12
.gitignore
vendored
@@ -1,13 +1,3 @@
|
||||
/ipch
|
||||
/output/Win32.Debug
|
||||
/output/Win32.Release
|
||||
/output/x64.Debug
|
||||
/output/x64.Release
|
||||
/*.sdf
|
||||
/*.suo
|
||||
/.vs
|
||||
*.user
|
||||
temp
|
||||
/*.opensdf
|
||||
/ZRCola/locale/*.mo
|
||||
/output/locale/sl/ZRCola.mo
|
||||
/output/locale/sl/wxExtend.mo
|
||||
|
||||
15
.gitmodules
vendored
@@ -1,3 +1,18 @@
|
||||
[submodule "lib/stdex"]
|
||||
path = lib/stdex
|
||||
url = https://github.com/Amebis/stdex.git
|
||||
[submodule "lib/WinStd"]
|
||||
path = lib/WinStd
|
||||
url = https://github.com/Amebis/WinStd.git
|
||||
[submodule "lib/wxExtend"]
|
||||
path = lib/wxExtend
|
||||
url = https://github.com/Amebis/wxExtend.git
|
||||
[submodule "MSI/MSIBuild"]
|
||||
path = MSI/MSIBuild
|
||||
url = https://github.com/Amebis/MSIBuild.git
|
||||
[submodule "MSI/MSICA"]
|
||||
path = MSI/MSICA
|
||||
url = https://github.com/Amebis/MSICA.git
|
||||
[submodule "Updater"]
|
||||
path = Updater
|
||||
url = https://github.com/Amebis/Updater.git
|
||||
|
||||
21
LOCALIZATION.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Localization of ZRCola
|
||||
|
||||
In order to get ZRCola experience in your language the following resources should be translated:
|
||||
|
||||
1. [ZRCola Application](https://www.transifex.com/amebis/zrcola/app/)
|
||||
2. [ZRCola Database](https://www.transifex.com/amebis/zrcola/database/)
|
||||
3. [ZRCola Core](https://www.transifex.com/amebis/zrcola/core/)
|
||||
4. [Updater](https://www.transifex.com/amebis/updater/updater/) and [Updater UpdCheck](https://www.transifex.com/amebis/updater/updcheck/)
|
||||
5. [wxExtend](https://www.transifex.com/amebis/wxextend/wxextend/)
|
||||
6. Setup
|
||||
- [ZRCola Setup](https://www.transifex.com/amebis/zrcola/setup/)
|
||||
- [MSIBuild UI](https://www.transifex.com/amebis/msibuild/ui/)
|
||||
- [MSIBuild Core](https://www.transifex.com/amebis/msibuild/core/)
|
||||
- [MSICALib](https://www.transifex.com/amebis/msicalib/msicalib/)
|
||||
- [MSICA](https://www.transifex.com/amebis/msica/msica/)
|
||||
|
||||
## General Guidelines
|
||||
|
||||
Please use the Windows "official" translations for terms published at [Microsoft Language Portal](https://www.microsoft.com/en-us/language). This will provide a consistent terminology experience on Windows.
|
||||
|
||||
Should you need any assistance to get started, please do not hesitate to contact project maintainer at [simon.rozman@amebis.si](mailto:simon.rozman@amebis.si).
|
||||
1
MSI/MSIBuild
Submodule
1
MSI/MSICA
Submodule
9
MSI/ZRCola/Main/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/*-1.idt
|
||||
/*-2.idt
|
||||
/*-2.idtx
|
||||
/*.Binary-1
|
||||
/*.Binary-2
|
||||
/*.Icon-1
|
||||
/*.Icon-2
|
||||
/*.lst
|
||||
/*.msm
|
||||
BIN
MSI/ZRCola/Main/Binary/UIHeader.bmp
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
1510
MSI/ZRCola/Main/Binary/UIHeader.pdf
Normal file
BIN
MSI/ZRCola/Main/Binary/fontsubst.bmp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
MSI/ZRCola/Main/Binary/fontsubst.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
MSI/ZRCola/Main/Icon/PDF.ico
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
MSI/ZRCola/Main/Makefile
Normal file
5
MSI/ZRCola/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# Copyright © 1991-2021 Amebis
|
||||
|
||||
!INCLUDE "..\..\include\MSIBuildCfg.mak"
|
||||
!INCLUDE "..\MSIBuild\Makefile"
|
||||
1
MSI/ZRCola/locale/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/*.mo
|
||||
162
MSI/ZRCola/locale/ZRCola.pot
Normal file
3619
MSI/ZRCola/locale/de_DE.po
Normal file
3642
MSI/ZRCola/locale/ru_RU.po
Normal file
3635
MSI/ZRCola/locale/sl_SI.po
Normal file
BIN
MakefileLang.mak
Normal file
BIN
MakefileLangPlat.mak
Normal file
BIN
MakefileLangPlatCfg.mak
Normal file
BIN
MakefilePlat.mak
Normal file
BIN
MakefilePlatCfg.mak
Normal file
66
README.md
@@ -1 +1,65 @@
|
||||
# ZRCola
|
||||
# ZRCola
|
||||
|
||||
A Microsoft Windows application for composing texts using a wide range of Slavic (and general) letters from or beyond Unicode.
|
||||
|
||||
## Project Website
|
||||
http://zrcola.zrc-sazu.si/en/
|
||||
|
||||
## Binaries for Download
|
||||
https://prenos.amebis.si/ZRCola/
|
||||
|
||||
## Building
|
||||
|
||||
### Building Environment Requirements
|
||||
- Microsoft Windows Vista or later
|
||||
- Microsoft Visual Studio 2017
|
||||
- _sed.exe_ and _grep.exe_
|
||||
- Command line utilities from Microsoft Windows SDK Bin folder: distributed with Visual Studio, add Bin folder to path manually.
|
||||
- Additional command line utilities from project's bin folder: add bin folder to path. The source code is provided on request.
|
||||
|
||||
### wxWidgets
|
||||
ZRCola is using wxWidgets static libraries. You have to compile static libraries yourself.
|
||||
|
||||
#### Compiling wxWidgets Win32 static libraries
|
||||
1. Start _x86 Native Tools Command Prompt for VS 2017_
|
||||
2. Change working folder to `build\msw`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 BUILD=release`
|
||||
|
||||
#### Compiling wxWidgets x64 static libraries
|
||||
1. Start _x64 Native Tools Command Prompt for VS 2017_
|
||||
2. Change working folder to `build\msw`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=X64`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=X64 BUILD=release`
|
||||
|
||||
#### Specifying wxWidgets path
|
||||
ZRCola compilation references wxWidgets libraries using `WXWIN` environment variable. Please set it to wxWidgets folder (e.g. `C:\SDK\wxWidgets`).
|
||||
|
||||
### Digital Signing of Build Outputs
|
||||
In order to have the build process digitally sign output files, one should provide the following:
|
||||
|
||||
1. A signing certificate installed in the current user's certificate store.
|
||||
2. The following variables in the environment:
|
||||
- `ManifestCertificateThumbprint` - set the value to certificate's SHA1 thumbprint (hexadecimal, without spaces, e.g. `f61b973226c502a732d24f41aa85e192b009e7c0`).
|
||||
- `ManifestTimestampRFC3161Url` - set the value to URL used to perform RFC3161 timestamp signature (e.g. `http://time.certum.pl`). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.
|
||||
|
||||
Please note that only Release builds are configured for timestamp signing. Debug configurations do not attempt to timestamp sign the resulting DLL and EXE files in order to speed up the building process and enable offline building.
|
||||
|
||||
### Building
|
||||
Use Microsoft NMAKE to build the project. The resulting files can be found in output subfolder. Open _x64 Native Tools Command Prompt for VS 2017_ for building.
|
||||
|
||||
- `nmake Clean` Delete all intermediate and output files.
|
||||
- `nmake Setup` Build a release version of project and release MSI setup files.
|
||||
- `nmake SetupDebug` Build a debug version of project and debug MSI setup files.
|
||||
- `nmake Register` Build a debug version of project, install fonts (reboot required), and Start Menu shortcuts. For development purposes only!
|
||||
- `nmake Unregister` Remove Start Menu shortcuts, and fonts. For development purposes only!
|
||||
|
||||
The `/ls` flag can be appended to the commands above to reduce NMAKE's verbosity. You can combine multiple targets (e.g. nmake Unregister Clean). Please, see NMAKE reference for further reading.
|
||||
|
||||
## Translating ZRCola
|
||||
Instructions how to translate ZRCola to your language can be found [here](LOCALIZATION.md).
|
||||
|
||||
## Contact Information
|
||||
Please contact the following addressee for further information and help:
|
||||
- ZRC SAZU, ZRCola@zrc-sazu.si
|
||||
- Amebis, info@amebis.si
|
||||
|
||||
1
Updater
Submodule
105
ZRCola.sln
@@ -1,57 +1,136 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29728.190
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZRCola", "ZRCola\ZRCola.vcxproj", "{CD9E4170-92DD-440E-980C-D15F62032249}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxExtend", "lib\wxExtend\build\wxExtend.vcxproj", "{A3A36689-AC35-4026-93DA-A3BA0C0E767C}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxExtend", "lib\wxExtend\build\wxExtendLib.vcxproj", "{D3E29951-D9F5-486D-A167-20AE8E90B1FA}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{CFEBC17E-C840-4507-BDE6-1EF5B52DDCC5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
include\zrcola.h = include\zrcola.h
|
||||
include\version.h = include\version.h
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRCola", "lib\libZRCola\build\libZRCola.vcxproj", "{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libZRColaUI", "lib\libZRColaUI\build\libZRColaUI.vcxproj", "{C0A84BD2-3870-4CD6-B281-0AB322E3C579}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdex", "lib\stdex\build\stdex.vcxproj", "{518777CC-0A59-4415-A12A-82751ED75343}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Updater", "Updater\Updater\build\Updater.vcxproj", "{990D8CF9-4457-4DC0-AA18-4968EF434741}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinStd", "lib\WinStd\build\WinStd.vcxproj", "{47399D91-7EB9-41DE-B521-514BA5DB0C43}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Debug|x64.Build.0 = Debug|x64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|Win32.Build.0 = Release|Win32
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|x64.ActiveCfg = Release|x64
|
||||
{CD9E4170-92DD-440E-980C-D15F62032249}.Release|x64.Build.0 = Release|x64
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Debug|x64.Build.0 = Debug|x64
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Release|Win32.Build.0 = Release|Win32
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Release|x64.ActiveCfg = Release|x64
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C}.Release|x64.Build.0 = Release|x64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Debug|x64.Build.0 = Debug|x64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|Win32.Build.0 = Release|Win32
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA}.Release|x64.Build.0 = Release|x64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Debug|x64.Build.0 = Debug|x64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|Win32.Build.0 = Release|Win32
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|x64.ActiveCfg = Release|x64
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8}.Release|x64.Build.0 = Release|x64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Debug|x64.Build.0 = Debug|x64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|Win32.Build.0 = Release|Win32
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|x64.ActiveCfg = Release|x64
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579}.Release|x64.Build.0 = Release|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Debug|x64.Build.0 = Debug|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|Win32.Build.0 = Release|Win32
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|x64.ActiveCfg = Release|x64
|
||||
{518777CC-0A59-4415-A12A-82751ED75343}.Release|x64.Build.0 = Release|x64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{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|ARM64.ActiveCfg = Release|ARM64
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{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|ARM64.ActiveCfg = Debug|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Debug|x64.Build.0 = Debug|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|Win32.Build.0 = Release|Win32
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|x64.ActiveCfg = Release|x64
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{A3A36689-AC35-4026-93DA-A3BA0C0E767C} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{D3E29951-D9F5-486D-A167-20AE8E90B1FA} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{3C61929E-7289-4101-8D0A-DA22D6E1AEA8} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{C0A84BD2-3870-4CD6-B281-0AB322E3C579} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{518777CC-0A59-4415-A12A-82751ED75343} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{990D8CF9-4457-4DC0-AA18-4968EF434741} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
{47399D91-7EB9-41DE-B521-514BA5DB0C43} = {6D85AD6A-69D6-40EB-BF0C-7495479DDCE5}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EECB5329-0607-4D77-8BC0-48BD8C08BEF9}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
9
ZRCola/MSIBuild/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/*-1.idt
|
||||
/*-2.idt
|
||||
/*-2.idtx
|
||||
/*.Binary-1
|
||||
/*.Binary-2
|
||||
/*.Icon-1
|
||||
/*.Icon-2
|
||||
/*.lst
|
||||
/*.msm
|
||||
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 |
BIN
ZRCola/MSIBuild/Makefile
Normal file
@@ -1,580 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="13" />
|
||||
<object class="Project" expanded="1">
|
||||
<property name="class_decoration"></property>
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="disconnect_events">1</property>
|
||||
<property name="disconnect_mode">source_name</property>
|
||||
<property name="disconnect_php_events">0</property>
|
||||
<property name="disconnect_python_events">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">ANSI</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">zrcolagui</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">wxHelpControllerHelpProvider</property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">ZRCola</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header">#include "stdafx.h"</property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="skip_lua_events">1</property>
|
||||
<property name="skip_php_events">1</property>
|
||||
<property name="skip_python_events">1</property>
|
||||
<property name="ui_table">UI</property>
|
||||
<property name="use_enum">1</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<object class="Frame" expanded="1">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<property name="bg"></property>
|
||||
<property name="center">wxBOTH</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="event_handler">impl_virtual</property>
|
||||
<property name="extra_style"></property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size">150,150</property>
|
||||
<property name="name">wxZRColaFrameBase</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">600,400</property>
|
||||
<property name="style">wxDEFAULT_FRAME_STYLE</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="title">ZRCola</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<property name="xrc_skip_sizer">1</property>
|
||||
<event name="OnActivate"></event>
|
||||
<event name="OnActivateApp"></event>
|
||||
<event name="OnAuiFindManager"></event>
|
||||
<event name="OnAuiPaneButton"></event>
|
||||
<event name="OnAuiPaneClose"></event>
|
||||
<event name="OnAuiPaneMaximize"></event>
|
||||
<event name="OnAuiPaneRestore"></event>
|
||||
<event name="OnAuiRender"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnClose"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnHibernate"></event>
|
||||
<event name="OnIconize"></event>
|
||||
<event name="OnIdle"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxMenuBar" expanded="1">
|
||||
<property name="bg"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Menu</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">m_menubar</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxMenu" expanded="1">
|
||||
<property name="label">&File</property>
|
||||
<property name="name">m_menuFile</property>
|
||||
<property name="permission">protected</property>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_EXIT</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">E&xit</property>
|
||||
<property name="name">m_menuItemExit</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut">Alt+F4</property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxMenu" expanded="1">
|
||||
<property name="label">&Accents</property>
|
||||
<property name="name">m_menuAccents</property>
|
||||
<property name="permission">protected</property>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_INSERT_GRAVE</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">Grave	&7</property>
|
||||
<property name="name">m_menuItemGrave</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_INSERT_ACUTE</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">Acute	&9</property>
|
||||
<property name="name">m_menuItemAcute</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_INSERT_CIRCUMFLEX</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">Circumflex	&3</property>
|
||||
<property name="name">m_menuItemCircumflex</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
<object class="separator" expanded="1">
|
||||
<property name="name">m_separator2</property>
|
||||
<property name="permission">none</property>
|
||||
</object>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_INSERT_INV_BREVE_BELOW</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">Inverted &breve</property>
|
||||
<property name="name">m_menuItemInvBreveBelow</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxMenu" expanded="1">
|
||||
<property name="label">&Help</property>
|
||||
<property name="name">m_menuHelp</property>
|
||||
<property name="permission">protected</property>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_ABOUT</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">&About</property>
|
||||
<property name="name">m_menuItemAbout</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizerMain</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">100</property>
|
||||
<object class="CustomControl" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="class">wxZRColaComposerPanel</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="construction">m_panel = new wxZRColaComposerPanel( this );
</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="declaration">wxZRColaComposerPanel* m_panel;</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="include">#include "zrcolacomppnl.h"</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_panel</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="settings"></property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="Panel" expanded="1">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<property name="bg"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="event_handler">impl_virtual</property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">wxZRColaComposerPanelBase</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">-1,-1</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<event name="OnAuiFindManager"></event>
|
||||
<event name="OnAuiPaneButton"></event>
|
||||
<event name="OnAuiPaneClose"></event>
|
||||
<event name="OnAuiPaneMaximize"></event>
|
||||
<event name="OnAuiPaneRestore"></event>
|
||||
<event name="OnAuiRender"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnInitDialog"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxBoxSizer" expanded="0">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizerEditor</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="0">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxEXPAND</property>
|
||||
<property name="proportion">50</property>
|
||||
<object class="wxTextCtrl" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font">00 ZRCola,90,90,20,70,0</property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_DECOMPOSED</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size">100,25</property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_decomposed</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style">wxTE_CENTRE|wxTE_MULTILINE</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint">OnDecomposedPaint</event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText">OnDecomposedText</event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="0">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxEXPAND</property>
|
||||
<property name="proportion">50</property>
|
||||
<object class="wxTextCtrl" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font">00 ZRCola,90,90,20,70,0</property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_COMPOSED</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size">100,25</property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_composed</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style">wxTE_CENTRE|wxTE_MULTILINE</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint">OnComposedPaint</event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText">OnComposedText</event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</wxFormBuilder_Project>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\lib\wxExtend\include;..\lib\libZRCola\include</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
||||
BIN
ZRCola/ZRCola.rc
@@ -1,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -9,6 +13,10 @@
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -23,92 +31,121 @@
|
||||
<RootNamespace>ZRCola</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Debug'">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release'">
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Platform)'=='ARM64'">
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\Win32.props" />
|
||||
<Import Project="..\include\Debug.props" />
|
||||
<Import Project="ZRCola.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\x64.props" />
|
||||
<Import Project="..\include\Debug.props" />
|
||||
<Import Project="ZRCola.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\Win32.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
<Import Project="ZRCola.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\x64.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
<Import Project="ZRCola.props" />
|
||||
<Import Project="..\include\$(Platform).props" />
|
||||
<Import Project="..\include\$(Configuration).props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<PropertyGroup>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\lib\wxExtend\include;..\Updater\Updater\include;..\lib\stdex\include;..\lib\WinStd\include;..\lib\libZRCola\include;..\lib\libZRColaUI\include</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>true</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\Updater\Updater\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader>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="zrcolatranseq.cpp" />
|
||||
<ClCompile Include="zrcolaupdater.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="pch.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="zrcolatranseq.h" />
|
||||
<ClInclude Include="zrcolaupdater.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\lib\libZRColaUI\build\libZRColaUI.vcxproj">
|
||||
<Project>{c0a84bd2-3870-4cd6-b281-0ab322e3c579}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\libZRCola\build\libZRCola.vcxproj">
|
||||
<Project>{3c61929e-7289-4101-8d0a-da22d6e1aea8}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtend.vcxproj">
|
||||
<Project>{a3a36689-ac35-4026-93da-a3ba0c0e767c}</Project>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib.vcxproj">
|
||||
<Project>{D3E29951-D9F5-486D-A167-20AE8E90B1FA}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Updater\Updater\build\Updater.vcxproj">
|
||||
<Project>{990d8cf9-4457-4dc0-aa18-4968ef434741}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\send.ico" />
|
||||
<None Include="locale\ZRCola.pot" />
|
||||
<None Include="res\char_select.ico" />
|
||||
<None Include="res\copy_composed_and_return.ico" />
|
||||
<None Include="res\copy_decomposed_and_return.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="res\ZRCola.fbp">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ZRCola.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\sl.po" />
|
||||
<POCompile Include="locale\de_DE.po" />
|
||||
<POCompile Include="locale\ru_RU.po" />
|
||||
<POCompile Include="locale\sl_SI.po" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="res\composition.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="zrcolaapp.cpp">
|
||||
@@ -34,9 +34,36 @@
|
||||
<ClCompile Include="zrcolafrm.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<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>
|
||||
<ClCompile Include="zrcolatranseq.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="zrcolaapp.h">
|
||||
@@ -51,12 +78,75 @@
|
||||
<ClInclude Include="zrcolafrm.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<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>
|
||||
<ClInclude Include="zrcolatranseq.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\send.ico">
|
||||
<None Include="res\zrcola.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\zrcola.ico">
|
||||
<None Include="res\send_abort.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\send_composed.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\send_decomposed.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\edit_copy.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\edit_cut.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\edit_paste.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\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>
|
||||
<None Include="res\copy_composed_and_return.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\copy_decomposed_and_return.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
@@ -66,8 +156,19 @@
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="locale\sl.po">
|
||||
<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>
|
||||
<ItemGroup>
|
||||
<Image Include="res\composition.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
1
ZRCola/locale/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/*.mo
|
||||
949
ZRCola/locale/ZRCola.pot
Normal file
@@ -0,0 +1,949 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:16+0100\n"
|
||||
"PO-Revision-Date: 2019-04-01 19:38+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"Language: sl_SI\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
#, fuzzy
|
||||
msgid "E&xit"
|
||||
msgstr "I&zhod"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
#, fuzzy
|
||||
msgid "Quit this program"
|
||||
msgstr "Zapri ta program"
|
||||
|
||||
#: res/zrcolagui.cpp:45 zrcolagui.cpp:45
|
||||
#, fuzzy
|
||||
msgid "&Program"
|
||||
msgstr "&Program"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
#, fuzzy
|
||||
msgid "Select &All"
|
||||
msgstr "Izberi &vse"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
#, fuzzy
|
||||
msgid "Select all text"
|
||||
msgstr "Izberi celotno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:84 zrcolagui.cpp:84
|
||||
#, fuzzy
|
||||
msgid "Find C&haracter..."
|
||||
msgstr "Poišči &znak ..."
|
||||
|
||||
#: res/zrcolagui.cpp:84 res/zrcolagui.cpp:224 zrcolagui.cpp:84
|
||||
#: zrcolagui.cpp:224
|
||||
#, fuzzy
|
||||
msgid "Toggle character search to select character to insert into text"
|
||||
msgstr "Prikaži/skrij iskalnik znakov za izbor znaka za vstavljanje v besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:90 zrcolagui.cpp:90
|
||||
#, fuzzy
|
||||
msgid "&Send Composed"
|
||||
msgstr "Pošlji &sestavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:90 res/zrcolagui.cpp:226 zrcolagui.cpp:90
|
||||
#: zrcolagui.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Send composed text to source window"
|
||||
msgstr "Pošlji sestavljeno besedilo izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
#, fuzzy
|
||||
msgid "Copy Composed and &Return"
|
||||
msgstr "Kopi&raj sestavljeno in se vrni"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
#, fuzzy
|
||||
msgid "Copy composed text to clipboard and return focus to source window"
|
||||
msgstr "Kopiraj sestavljeno besedilo na odložišče in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:108 zrcolagui.cpp:108
|
||||
#, fuzzy
|
||||
msgid "Send &Decomposed"
|
||||
msgstr "Pošlji &razstavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:108 res/zrcolagui.cpp:228 zrcolagui.cpp:108
|
||||
#: zrcolagui.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr "Pošlji razstavljeno besedilo izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
#, fuzzy
|
||||
msgid "Copy Decomposed and Re&turn"
|
||||
msgstr "Kopi&raj razstavljeno in se vrni"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
#, fuzzy
|
||||
msgid "Copy decomposed text to clipboard and return focus to source window"
|
||||
msgstr "Kopiraj razstavljeno besedilo na odložišče in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
#, fuzzy
|
||||
msgid "Abort (De)composition"
|
||||
msgstr "Prekini raz/sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
#, fuzzy
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr "Prekini sestavljanje in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:138 zrcolagui.cpp:138
|
||||
#, fuzzy
|
||||
msgid "(De)&composition"
|
||||
msgstr "(&Raz-)sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
#, fuzzy
|
||||
msgid "&None"
|
||||
msgstr "&Brez"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
#, fuzzy
|
||||
msgid "No character (De)composition"
|
||||
msgstr "Brez (raz-)sestavljanja znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
#, fuzzy
|
||||
msgid "&ZRCola"
|
||||
msgstr "&ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
#, fuzzy
|
||||
msgid "ZRCola character (De)composition"
|
||||
msgstr "(Raz-)sestavljanje znakov ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
#, fuzzy
|
||||
msgid "&Unicode"
|
||||
msgstr "&Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
#, fuzzy
|
||||
msgid "Unicode character (De)composition"
|
||||
msgstr "(Raz-)sestavljanje znakov Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:151 zrcolagui.cpp:151
|
||||
#, fuzzy
|
||||
msgid "Tra&nslation"
|
||||
msgstr "Tra&nsliteracija"
|
||||
|
||||
#: res/zrcolagui.cpp:156 zrcolagui.cpp:156
|
||||
#, fuzzy
|
||||
msgid "&PUA Warning"
|
||||
msgstr "O&pozorilo OZU"
|
||||
|
||||
#: res/zrcolagui.cpp:156 res/zrcolagui.cpp:243 zrcolagui.cpp:156
|
||||
#: zrcolagui.cpp:243
|
||||
#, fuzzy
|
||||
msgid "Highlight Private Use Area Characters"
|
||||
msgstr "Obarvaj znake iz območja zasebne uporabe"
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
#, fuzzy
|
||||
msgid "&Settings..."
|
||||
msgstr "Na&stavitve ..."
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
#, fuzzy
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr "Odpri nastavitveni dialog programa"
|
||||
|
||||
#: res/zrcolagui.cpp:165 zrcolagui.cpp:165
|
||||
#, fuzzy
|
||||
msgid "&Edit"
|
||||
msgstr "Ur&edi"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
#, fuzzy
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr "Orodna vrstica za ur&ejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
#, fuzzy
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr "Prikaži/skrij orodno vrstico za urejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
#, fuzzy
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr "Orodna vrsti&ca za sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
#, fuzzy
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr "Prikaži/skrij orodno vrstico za sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
#, fuzzy
|
||||
msgid "Character Catalo&g"
|
||||
msgstr "Katalo&g znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
#, fuzzy
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr "Prikaži/skrij katalog znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:182 zrcolagui.cpp:182
|
||||
#, fuzzy
|
||||
msgid "&View"
|
||||
msgstr "Po&gled"
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
#, fuzzy
|
||||
msgid "&Instructions..."
|
||||
msgstr "Navod&ila ..."
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
#, fuzzy
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr "Odpri spletno stran z navodili izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
#, fuzzy
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr "&Bližnjice na tipkovnici ..."
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
#, fuzzy
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr "Odpri seznam bližnjic na tipkovnici"
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
#, fuzzy
|
||||
msgid "&Request a new character..."
|
||||
msgstr "&Zahtevaj nov znak ..."
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
#, fuzzy
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr "Oddaj prošnjo za dodajanje novega znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
#, fuzzy
|
||||
msgid "Check for &Updates..."
|
||||
msgstr "Preveri &posodobitve ..."
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
#, fuzzy
|
||||
msgid "Check online for product update"
|
||||
msgstr "Preveri na spletu za posodobitev izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:206 zrcolagui.cpp:206
|
||||
#, fuzzy
|
||||
msgid "&About..."
|
||||
msgstr "O progr&amu ..."
|
||||
|
||||
#: res/zrcolagui.cpp:209 zrcolagui.cpp:209
|
||||
#, fuzzy
|
||||
msgid "&Help"
|
||||
msgstr "Po&moč"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
#, fuzzy
|
||||
msgid "Cut"
|
||||
msgstr "Izreži"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
#, fuzzy
|
||||
msgid "Cut selection"
|
||||
msgstr "Izreži izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
#, fuzzy
|
||||
msgid "Copy"
|
||||
msgstr "Kopiraj"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
#, fuzzy
|
||||
msgid "Copy selection"
|
||||
msgstr "Kopiraj izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
#, fuzzy
|
||||
msgid "Paste"
|
||||
msgstr "Prilepi"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
#, fuzzy
|
||||
msgid "Paste selection"
|
||||
msgstr "Prilepi izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:221 zrcolagui.cpp:221
|
||||
#, fuzzy
|
||||
msgid "Edit"
|
||||
msgstr "Urejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:224 zrcolagui.cpp:224
|
||||
#, fuzzy
|
||||
msgid "Find Character"
|
||||
msgstr "Poišči znak"
|
||||
|
||||
#: res/zrcolagui.cpp:226 zrcolagui.cpp:226
|
||||
#, fuzzy
|
||||
msgid "Send Composed"
|
||||
msgstr "Pošlji sestavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:228 zrcolagui.cpp:228
|
||||
#, fuzzy
|
||||
msgid "Send Decomposed"
|
||||
msgstr "Pošlji razstavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
#, fuzzy
|
||||
msgid "No (De)composition"
|
||||
msgstr "Brez (raz-)sestavljanja"
|
||||
|
||||
#: res/zrcolagui.cpp:232 res/zrcolagui.cpp:940 res/zrcolagui.h:119
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
#, fuzzy
|
||||
msgid "Unicode"
|
||||
msgstr "Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:243 zrcolagui.cpp:243
|
||||
#, fuzzy
|
||||
msgid "PUA Warning"
|
||||
msgstr "Opozorilo OZU"
|
||||
|
||||
#: res/zrcolagui.cpp:246 zrcolagui.cpp:246
|
||||
#, fuzzy
|
||||
msgid "Compose"
|
||||
msgstr "Sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:250 zrcolagui.cpp:250
|
||||
#, fuzzy
|
||||
msgid "Character Catalog"
|
||||
msgstr "Katalog znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:254 zrcolagui.cpp:254
|
||||
#, fuzzy
|
||||
msgid "(De)Composer"
|
||||
msgstr "Razstavljalnik/Sestavljalnik"
|
||||
|
||||
#: res/zrcolagui.cpp:297 zrcolagui.cpp:297
|
||||
#, fuzzy
|
||||
msgid "Decomposed Text"
|
||||
msgstr "Razstavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:317 zrcolagui.cpp:317
|
||||
#, fuzzy
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr "Unicode razstavljenega"
|
||||
|
||||
#: res/zrcolagui.cpp:344 zrcolagui.cpp:344
|
||||
#, fuzzy
|
||||
msgid "Composed Text"
|
||||
msgstr "Sestavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:364 zrcolagui.cpp:364
|
||||
#, fuzzy
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr "Unicode sestavljenega"
|
||||
|
||||
#: res/zrcolagui.cpp:418 zrcolagui.cpp:418
|
||||
#, fuzzy
|
||||
msgid "Select category to display"
|
||||
msgstr "Izberi kategorijo za prikaz"
|
||||
|
||||
#: res/zrcolagui.cpp:452 zrcolagui.cpp:452
|
||||
#, fuzzy
|
||||
msgid "Show &All"
|
||||
msgstr "Prik&aži vse"
|
||||
|
||||
#: res/zrcolagui.cpp:453 zrcolagui.cpp:453
|
||||
#, fuzzy
|
||||
msgid "Toggle display of less frequent characters"
|
||||
msgstr "Prikaži/skrij manj pogoste znake"
|
||||
|
||||
#: res/zrcolagui.cpp:493 zrcolagui.cpp:493
|
||||
#, fuzzy
|
||||
msgid "&Browse"
|
||||
msgstr "Pre&brskaj"
|
||||
|
||||
#: res/zrcolagui.cpp:500 zrcolagui.cpp:500
|
||||
#, fuzzy
|
||||
msgid "Full or partial terms from Unicode character description (in English) to search for"
|
||||
msgstr "Polne ali delne besede iz opisa znaka Unicode (v angleščini) za iskanje"
|
||||
|
||||
#: res/zrcolagui.cpp:504 zrcolagui.cpp:504
|
||||
#, fuzzy
|
||||
msgid "Search Options"
|
||||
msgstr "Možnosti iskanja"
|
||||
|
||||
#: res/zrcolagui.cpp:505 zrcolagui.cpp:505
|
||||
#, fuzzy
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr "Prikaže/skrije dodatne možnosti iskanja"
|
||||
|
||||
#: res/zrcolagui.cpp:517 zrcolagui.cpp:517
|
||||
#, fuzzy
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr "Seznam kategorij znaka Unicode za iskanje"
|
||||
|
||||
#: res/zrcolagui.cpp:524 zrcolagui.cpp:524
|
||||
#, fuzzy
|
||||
msgid "All"
|
||||
msgstr "Vse"
|
||||
|
||||
#: res/zrcolagui.cpp:525 zrcolagui.cpp:525
|
||||
#, fuzzy
|
||||
msgid "Select all categories"
|
||||
msgstr "Izberi vse kategorije"
|
||||
|
||||
#: res/zrcolagui.cpp:529 zrcolagui.cpp:529
|
||||
#, fuzzy
|
||||
msgid "None"
|
||||
msgstr "Nič"
|
||||
|
||||
#: res/zrcolagui.cpp:530 zrcolagui.cpp:530
|
||||
#, fuzzy
|
||||
msgid "Clear category selection"
|
||||
msgstr "Počisti izbor kategorij"
|
||||
|
||||
#: res/zrcolagui.cpp:534 zrcolagui.cpp:534
|
||||
#, fuzzy
|
||||
msgid "Invert"
|
||||
msgstr "Obrni"
|
||||
|
||||
#: res/zrcolagui.cpp:535 zrcolagui.cpp:535
|
||||
#, fuzzy
|
||||
msgid "Invert category selection"
|
||||
msgstr "Obrni izbor kategorij"
|
||||
|
||||
#: res/zrcolagui.cpp:574 zrcolagui.cpp:574
|
||||
#, fuzzy
|
||||
msgid "Character search results"
|
||||
msgstr "Rezultati iskanja znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:584 zrcolagui.cpp:584
|
||||
#, fuzzy
|
||||
msgid "Re¢ly Used"
|
||||
msgstr "Nedavno &uporabljeni"
|
||||
|
||||
#: res/zrcolagui.cpp:612 zrcolagui.cpp:612
|
||||
#, fuzzy
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr "Seznam nedavno vstavljenih znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:626 zrcolagui.cpp:626
|
||||
#, fuzzy
|
||||
msgid "Preview"
|
||||
msgstr "Predogled"
|
||||
|
||||
#: res/zrcolagui.cpp:631 zrcolagui.cpp:631
|
||||
#, fuzzy
|
||||
msgid "U+"
|
||||
msgstr "U+"
|
||||
|
||||
#: res/zrcolagui.cpp:636 zrcolagui.cpp:636
|
||||
#, fuzzy
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr "Šestnajstiška koda Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:641 zrcolagui.cpp:641
|
||||
#, fuzzy
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr "Bližnjica na tipkovnici v oknu sestavljalnika"
|
||||
|
||||
#: res/zrcolagui.cpp:676 zrcolagui.cpp:676
|
||||
#, fuzzy
|
||||
msgid "Character preview"
|
||||
msgstr "Predogled znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:681 zrcolagui.cpp:681
|
||||
#, fuzzy
|
||||
msgid "Unicode character description"
|
||||
msgstr "Opis znaka Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:686 zrcolagui.cpp:686
|
||||
#, fuzzy
|
||||
msgid "Character tags"
|
||||
msgstr "Oznake znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:691 zrcolagui.cpp:691
|
||||
#, fuzzy
|
||||
msgid "Unicode character category"
|
||||
msgstr "Kategorija znaka Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:698 zrcolagui.cpp:698
|
||||
#, fuzzy
|
||||
msgid "« Back"
|
||||
msgstr "« Nazaj"
|
||||
|
||||
#: res/zrcolagui.cpp:700 zrcolagui.cpp:700
|
||||
#, fuzzy
|
||||
msgid "To previously viewed character"
|
||||
msgstr "Na prejšnji prikazan znak"
|
||||
|
||||
#: res/zrcolagui.cpp:704 zrcolagui.cpp:704
|
||||
#, fuzzy
|
||||
msgid "Forward »"
|
||||
msgstr "Naprej »"
|
||||
|
||||
#: res/zrcolagui.cpp:706 zrcolagui.cpp:706
|
||||
#, fuzzy
|
||||
msgid "To following viewed character"
|
||||
msgstr "Na naslednji prikazan znak"
|
||||
|
||||
#: res/zrcolagui.cpp:717 zrcolagui.cpp:717
|
||||
#, fuzzy
|
||||
msgid "Re&lated"
|
||||
msgstr "&Sorodni"
|
||||
|
||||
#: res/zrcolagui.cpp:744 zrcolagui.cpp:744
|
||||
#, fuzzy
|
||||
msgid "List of related characters"
|
||||
msgstr "Seznam sorodnih znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:763 zrcolagui.cpp:763
|
||||
#, fuzzy
|
||||
msgid "&Insert"
|
||||
msgstr "Vstav&i"
|
||||
|
||||
#: res/zrcolagui.cpp:767 zrcolagui.cpp:767
|
||||
#, fuzzy
|
||||
msgid "Insert character into decomposed text"
|
||||
msgstr "Vstavi znak v razstavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:840 zrcolagui.cpp:843
|
||||
#, fuzzy
|
||||
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 ""
|
||||
"Nekateri znaki iz posameznih jezikov, s katerimi delate, se ne smejo razstavljati.\n"
|
||||
"Za optimalno razstavljanje izberite pravilni jezik."
|
||||
|
||||
#: res/zrcolagui.cpp:844 zrcolagui.cpp:847
|
||||
#, fuzzy
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr "S&amodejno izberi jezik glede na izbrano tipkovnico"
|
||||
|
||||
#: res/zrcolagui.cpp:847 zrcolagui.cpp:850
|
||||
#, fuzzy
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr "&Ročno izberi jezik s seznama spodaj:"
|
||||
|
||||
#: res/zrcolagui.cpp:858 zrcolagui.cpp:861
|
||||
#, fuzzy
|
||||
msgid "Text Language"
|
||||
msgstr "Jezik besedila"
|
||||
|
||||
#: res/zrcolagui.cpp:863 zrcolagui.cpp:866
|
||||
#, fuzzy
|
||||
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 ""
|
||||
"ZRCola se lahko zažene ob vsaki prijavi v vaš računalnik.\n"
|
||||
"Na voljo bo v vrstici za sistemska obvestila ter preko registriranih bližnjic Win+F5 in Win+F6."
|
||||
|
||||
#: res/zrcolagui.cpp:867 zrcolagui.cpp:870
|
||||
#, fuzzy
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr "S&amodejno zaženi ZRColo ob prijavi"
|
||||
|
||||
#: res/zrcolagui.cpp:873 zrcolagui.cpp:876
|
||||
#, fuzzy
|
||||
msgid "Startup"
|
||||
msgstr "Zagon"
|
||||
|
||||
#: res/zrcolagui.cpp:951 zrcolagui.cpp:954
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Translation into English: Janoš Ježovnik\n"
|
||||
"Translation into Russian language: Domen Krvina, Silvo Torkar, Anastasia Plotnikova\n"
|
||||
"Development and maintenance of the original program (2004–2015): Peter Weiss"
|
||||
msgstr ""
|
||||
"Urednik programa in spletne strani: Janoš Ježovnik\n"
|
||||
"Razvoj: Amebis, d. o. o., Kamnik\n"
|
||||
"Prevod v angleški jezik: Janoš Ježovnik\n"
|
||||
"Prevod v ruski jezik: Domen Krvina, Silvo Torkar, Anastasija Plotnikova\n"
|
||||
"Razvoj in vzdrževanje prvotnega programa (2004–2015): Peter Weiss"
|
||||
|
||||
#: res/zrcolagui.cpp:959 zrcolagui.cpp:962
|
||||
#, fuzzy
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr "zrcola.zrc-sazu.si"
|
||||
|
||||
#: res/zrcolagui.cpp:965 zrcolagui.cpp:968
|
||||
#, fuzzy
|
||||
msgid "Texts made using ZRCola have to include in a footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr "Besedilo, nastalo z uporabo ZRCole, mora biti v opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim zapisom:"
|
||||
|
||||
#: res/zrcolagui.cpp:969 zrcolagui.cpp:972
|
||||
#, fuzzy
|
||||
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 Peter Weiss."
|
||||
msgstr "Besedilo je bilo pripravljeno z vnašalnim sistemom ZRCola (http://zrcola.zrc-sazu.si), ki ga je na Znanstvenoraziskovalnem centru SAZU v Ljubljani (http://www.zrc-sazu.si) razvil Peter Weiss."
|
||||
|
||||
#: res/zrcolagui.cpp:1010 zrcolagui.cpp:1013
|
||||
#, fuzzy
|
||||
msgid "Log"
|
||||
msgstr "Dnevnik"
|
||||
|
||||
#: res/zrcolagui.cpp:1026 zrcolagui.cpp:1029
|
||||
#, fuzzy
|
||||
msgid "Quit and &Update..."
|
||||
msgstr "Za&ustavi in posodobi ..."
|
||||
|
||||
#: res/zrcolagui.cpp:1028 zrcolagui.cpp:1031
|
||||
#, fuzzy
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr "Zaustavi program in zaženi posodobitev izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:1032 zrcolagui.cpp:1035
|
||||
#, fuzzy
|
||||
msgid "&Close"
|
||||
msgstr "&Zapri"
|
||||
|
||||
#: res/zrcolagui.cpp:1033 zrcolagui.cpp:1036
|
||||
#, fuzzy
|
||||
msgid "Close this window"
|
||||
msgstr "Zapri to okno"
|
||||
|
||||
#: res/zrcolagui.cpp:1070 zrcolachrreq.cpp:35 zrcolagui.cpp:1073
|
||||
#, fuzzy
|
||||
msgid "Character"
|
||||
msgstr "Znak"
|
||||
|
||||
#: res/zrcolagui.cpp:1072 zrcolagui.cpp:1075
|
||||
#, fuzzy
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr "Vpišite &znak, ki ga želite zahtevati:"
|
||||
|
||||
#: res/zrcolagui.cpp:1086 zrcolagui.cpp:1089
|
||||
#, fuzzy
|
||||
msgid "Decomposed character to request"
|
||||
msgstr "Zahtevani znak v razstavljeni obliki"
|
||||
|
||||
#: res/zrcolagui.cpp:1090 zrcolagui.cpp:1093
|
||||
#, fuzzy
|
||||
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 ""
|
||||
"Uporabite razstavljeno obliko.\n"
|
||||
"Za vnos znaka lahko uporabite ZRColine bližnjice na tipkovnici ali ga kopirate in prilepite iz okna z razstavljenim besedilom."
|
||||
|
||||
#: res/zrcolagui.cpp:1098 zrcolachrreq.cpp:44 zrcolagui.cpp:1101
|
||||
#, fuzzy
|
||||
msgid "Context"
|
||||
msgstr "Kontekst"
|
||||
|
||||
#: res/zrcolagui.cpp:1100 zrcolagui.cpp:1103
|
||||
#, fuzzy
|
||||
msgid "The &context, examples or description why and where the character is required:"
|
||||
msgstr "&Kontekst, primeri oziroma opis, zakaj in kje potrebujete novi znak:"
|
||||
|
||||
#: res/zrcolagui.cpp:1106 zrcolagui.cpp:1109
|
||||
#, fuzzy
|
||||
msgid "Additional notes for character request"
|
||||
msgstr "Dodatne opombe za zahtevo znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:1113 zrcolagui.cpp:1116
|
||||
#, fuzzy
|
||||
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 the Editor will be able to read them correctly anyway."
|
||||
msgstr ""
|
||||
"Ko boste kliknili gumb V redu, se bo odprl vaš program za e-pošto, s katerim boste lahko oddali zahtevo za nov znak uredniku programa.\n"
|
||||
"Vsi znaki v sporočilu morda ne bodo prikazani pravilno, vendar jih bo urednik lahko kljub temu razbral."
|
||||
|
||||
#: res/zrcolagui.cpp:1155 zrcolagui.cpp:1158
|
||||
#, fuzzy
|
||||
msgid "Translation"
|
||||
msgstr "Pretvorba"
|
||||
|
||||
#: res/zrcolagui.cpp:1157 zrcolagui.cpp:1160
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"ZRCola offers multiple text translations that can be arranged in a sequence.\n"
|
||||
"Please select desired translations and the order they are applied."
|
||||
msgstr ""
|
||||
"ZRCola ponuja različne pretvorbe besedila, ki jih lahko uredimo v zaporedje.\n"
|
||||
"Prosimo, izberite želene pretvorbe in vrstni red, v katerem naj potečejo."
|
||||
|
||||
#: res/zrcolagui.cpp:1167 zrcolagui.cpp:1170
|
||||
#, fuzzy
|
||||
msgid "A&vailable:"
|
||||
msgstr "Na &voljo:"
|
||||
|
||||
#: res/zrcolagui.cpp:1182 zrcolagui.cpp:1185
|
||||
msgid "→"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1185 zrcolagui.cpp:1188
|
||||
msgid "←"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1194 zrcolagui.cpp:1197
|
||||
#, fuzzy
|
||||
msgid "&Selected:"
|
||||
msgstr "I&zbrano:"
|
||||
|
||||
#: res/zrcolagui.cpp:1212 zrcolagui.cpp:1215
|
||||
msgid "↑"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1215 zrcolagui.cpp:1218
|
||||
msgid "↓"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:260 zrcolagui.h:260
|
||||
#, fuzzy
|
||||
msgid "Character Search"
|
||||
msgstr "Poišči znak"
|
||||
|
||||
#: res/zrcolagui.h:296 zrcolagui.h:296
|
||||
#, fuzzy
|
||||
msgid "Settings"
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#: res/zrcolagui.h:322 zrcolagui.h:322
|
||||
#, fuzzy
|
||||
msgid "About ZRCola"
|
||||
msgstr "O ZRColi"
|
||||
|
||||
#: res/zrcolagui.h:347 zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
#, fuzzy
|
||||
msgid "Product Update"
|
||||
msgstr "Posodabljanje izdelka"
|
||||
|
||||
#: res/zrcolagui.h:376 zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
#, fuzzy
|
||||
msgid "Request a New Character"
|
||||
msgstr "Zahtevaj nov znak"
|
||||
|
||||
#: res/zrcolagui.h:418 zrcolagui.h:418
|
||||
#, fuzzy
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr "Zaporedje pretvorb po meri"
|
||||
|
||||
#: zrcolaabout.cpp:17
|
||||
#, fuzzy, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr "© 2004-%s ZRC SAZU"
|
||||
|
||||
#: zrcolachrslct.cpp:75
|
||||
#, fuzzy
|
||||
msgid "Too many digits in Unicode."
|
||||
msgstr "Preveč števk v zapisu Unicode."
|
||||
|
||||
#: zrcolachrslct.cpp:75 zrcolachrslct.cpp:93
|
||||
#, fuzzy
|
||||
msgid "Validation conflict"
|
||||
msgstr "Nesoglasje pri preverjanju"
|
||||
|
||||
#: zrcolachrslct.cpp:93
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr "Napačen znak v zapisu Unicode: %c"
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
#, fuzzy
|
||||
msgid "▸ Search Options"
|
||||
msgstr "▸ Možnosti iskanja"
|
||||
|
||||
#: zrcolachrslct.cpp:315
|
||||
msgid ", "
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
#, fuzzy
|
||||
msgid "▾ Search Options"
|
||||
msgstr "▾ Možnosti iskanja"
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
#, fuzzy
|
||||
msgid "No Translation"
|
||||
msgstr "Brez transliteracije"
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
#, fuzzy
|
||||
msgid "Custom Translation..."
|
||||
msgstr "Pretvorba po meri ..."
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
#, fuzzy
|
||||
msgid "ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."
|
||||
msgstr "ZRColine bližnjice na tipkovnici Win+F5 ni mogoče registrirati. Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
#, fuzzy
|
||||
msgid "Warning"
|
||||
msgstr "Opozorilo"
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
#, fuzzy
|
||||
msgid "ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."
|
||||
msgstr "ZRColine bližnjice na tipkovnici Win+F6 ni mogoče registrirati. Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
#, fuzzy
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
#, fuzzy
|
||||
msgid "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
msgstr "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
|
||||
#: zrcolakeyhndlr.cpp:30
|
||||
#, fuzzy
|
||||
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 "Pritisnili ste tipko INS. Vtipkajte kodo Unicode želenega znaka (do štiri šestnajstiške števke: 0–9, A–F), nato izpustite INS."
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
#, fuzzy
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr "Samodejno zaženi ZRColo ob prijavi"
|
||||
|
||||
#: zrcolatranseq.cpp:49
|
||||
#, fuzzy, c-format
|
||||
msgid "Unknown translation (%u)"
|
||||
msgstr "Neznana pretvorba (%u)"
|
||||
|
||||
#: zrcolaupdater.cpp:81
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
"Program se bo zdaj zaprl in zagnala se bo posodobitev.\n"
|
||||
"Ali ste prepričani, da želite nadaljevati?"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
#, fuzzy
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
#, fuzzy
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Zagon"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
#, fuzzy
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr "bintutorial1.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:7
|
||||
#, fuzzy
|
||||
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 "Če jo tako nastavimo, se ZRCola zažene samodejno in teče v ozadju. V ospredje jo prikličemo s pritiskom na bližnjico Win+F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:8
|
||||
#, fuzzy
|
||||
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 "POMEMBNO: Ob pritisku na Win+F5 si program zapomni mesto kurzorja v besedilu. Če ZRColo povečamo brez pritiska na ti dve tipki, program ne bo vedel, kam vstaviti želene znake!"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
#, fuzzy
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
#, fuzzy
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Sestavljanje"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
#, fuzzy
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr "bintutorial2.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:13
|
||||
#, fuzzy
|
||||
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 "Želeni niz osnovnih in nadomestnih znakov vnesemo v zgornjo vrstico v programu. V spodnji vrstici se prikažejo sestavljeni znaki. V besedilo jih vnesemo s pritiskom na tipko F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
#, fuzzy
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Vnos znakov"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
#, fuzzy
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr "bintutorial3.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:18
|
||||
#, fuzzy
|
||||
msgid "Characters can be entered using keyboard shortcuts, the character catalogue (F4) or the character finding tool (F8)."
|
||||
msgstr "Znake lahko v vnosno vrstico vstavljamo s pomočjo bližnjic na tipkovnici, iz kataloga znakov (F4) ali z iskalnikom znakov (F8)."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
#, fuzzy
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr "Vnašalni sistem za jezikoslovno rabo"
|
||||
782
ZRCola/locale/de_DE.po
Normal file
@@ -0,0 +1,782 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:17+0100\n"
|
||||
"PO-Revision-Date: 2021-12-21 14:17+0100\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "E&xit"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "Quit this program"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:45 zrcolagui.cpp:45
|
||||
msgid "&Program"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select all text"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:84 zrcolagui.cpp:84
|
||||
msgid "Find C&haracter..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:84 res/zrcolagui.cpp:224 zrcolagui.cpp:84
|
||||
#: zrcolagui.cpp:224
|
||||
msgid "Toggle character search to select character to insert into text"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:90 zrcolagui.cpp:90
|
||||
msgid "&Send Composed"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:90 res/zrcolagui.cpp:226 zrcolagui.cpp:90
|
||||
#: zrcolagui.cpp:226
|
||||
msgid "Send composed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy Composed and &Return"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy composed text to clipboard and return focus to source window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:108 zrcolagui.cpp:108
|
||||
msgid "Send &Decomposed"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:108 res/zrcolagui.cpp:228 zrcolagui.cpp:108
|
||||
#: zrcolagui.cpp:228
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy Decomposed and Re&turn"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy decomposed text to clipboard and return focus to source window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:138 zrcolagui.cpp:138
|
||||
msgid "(De)&composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
msgid "&None"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
msgid "No character (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
#, fuzzy
|
||||
#| msgid "ZRCola"
|
||||
msgid "&ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
msgid "ZRCola character (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
#, fuzzy
|
||||
msgid "&Unicode"
|
||||
msgstr "Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
msgid "Unicode character (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:151 zrcolagui.cpp:151
|
||||
msgid "Tra&nslation"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:156 zrcolagui.cpp:156
|
||||
msgid "&PUA Warning"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:156 res/zrcolagui.cpp:243 zrcolagui.cpp:156
|
||||
#: zrcolagui.cpp:243
|
||||
msgid "Highlight Private Use Area Characters"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "&Settings..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:165 zrcolagui.cpp:165
|
||||
msgid "&Edit"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Character Catalo&g"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:182 zrcolagui.cpp:182
|
||||
msgid "&View"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "&Instructions..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "&Request a new character..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check for &Updates..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check online for product update"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:206 zrcolagui.cpp:206
|
||||
msgid "&About..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:209 zrcolagui.cpp:209
|
||||
msgid "&Help"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut selection"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy selection"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste selection"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:221 zrcolagui.cpp:221
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:224 zrcolagui.cpp:224
|
||||
msgid "Find Character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:226 zrcolagui.cpp:226
|
||||
msgid "Send Composed"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:228 zrcolagui.cpp:228
|
||||
msgid "Send Decomposed"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
msgid "No (De)composition"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:232 res/zrcolagui.cpp:940 res/zrcolagui.h:119
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
#, fuzzy
|
||||
msgid "Unicode"
|
||||
msgstr "Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:243 zrcolagui.cpp:243
|
||||
msgid "PUA Warning"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:246 zrcolagui.cpp:246
|
||||
msgid "Compose"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:250 zrcolagui.cpp:250
|
||||
msgid "Character Catalog"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:254 zrcolagui.cpp:254
|
||||
msgid "(De)Composer"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:297 zrcolagui.cpp:297
|
||||
msgid "Decomposed Text"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:317 zrcolagui.cpp:317
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:344 zrcolagui.cpp:344
|
||||
msgid "Composed Text"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:364 zrcolagui.cpp:364
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:418 zrcolagui.cpp:418
|
||||
msgid "Select category to display"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:452 zrcolagui.cpp:452
|
||||
msgid "Show &All"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:453 zrcolagui.cpp:453
|
||||
msgid "Toggle display of less frequent characters"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:493 zrcolagui.cpp:493
|
||||
msgid "&Browse"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:500 zrcolagui.cpp:500
|
||||
msgid "Full or partial terms from Unicode character description (in English) to search for"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:504 zrcolagui.cpp:504
|
||||
msgid "Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:505 zrcolagui.cpp:505
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:517 zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:524 zrcolagui.cpp:524
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:525 zrcolagui.cpp:525
|
||||
msgid "Select all categories"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:529 zrcolagui.cpp:529
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:530 zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:534 zrcolagui.cpp:534
|
||||
msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:535 zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:574 zrcolagui.cpp:574
|
||||
msgid "Character search results"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:584 zrcolagui.cpp:584
|
||||
msgid "Re¢ly Used"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:612 zrcolagui.cpp:612
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:626 zrcolagui.cpp:626
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:631 zrcolagui.cpp:631
|
||||
msgid "U+"
|
||||
msgstr "U+"
|
||||
|
||||
#: res/zrcolagui.cpp:636 zrcolagui.cpp:636
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:641 zrcolagui.cpp:641
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:676 zrcolagui.cpp:676
|
||||
msgid "Character preview"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:681 zrcolagui.cpp:681
|
||||
msgid "Unicode character description"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:686 zrcolagui.cpp:686
|
||||
msgid "Character tags"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:691 zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:698 zrcolagui.cpp:698
|
||||
msgid "« Back"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:700 zrcolagui.cpp:700
|
||||
msgid "To previously viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:704 zrcolagui.cpp:704
|
||||
msgid "Forward »"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:706 zrcolagui.cpp:706
|
||||
msgid "To following viewed character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:717 zrcolagui.cpp:717
|
||||
msgid "Re&lated"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:744 zrcolagui.cpp:744
|
||||
msgid "List of related characters"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:763 zrcolagui.cpp:763
|
||||
msgid "&Insert"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:767 zrcolagui.cpp:767
|
||||
msgid "Insert character into decomposed text"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:840 zrcolagui.cpp:843
|
||||
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 ""
|
||||
|
||||
#: res/zrcolagui.cpp:844 zrcolagui.cpp:847
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:847 zrcolagui.cpp:850
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:858 zrcolagui.cpp:861
|
||||
msgid "Text Language"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:863 zrcolagui.cpp:866
|
||||
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 ""
|
||||
|
||||
#: res/zrcolagui.cpp:867 zrcolagui.cpp:870
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:873 zrcolagui.cpp:876
|
||||
msgid "Startup"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:951 zrcolagui.cpp:954
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Translation into English: Janoš Ježovnik\n"
|
||||
"Translation into Russian language: Domen Krvina, Silvo Torkar, Anastasia Plotnikova\n"
|
||||
"Development and maintenance of the original program (2004–2015): Peter Weiss"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:959 zrcolagui.cpp:962
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr "zrcola.zrc-sazu.si"
|
||||
|
||||
#: res/zrcolagui.cpp:965 zrcolagui.cpp:968
|
||||
msgid "Texts made using ZRCola have to include in a footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:969 zrcolagui.cpp:972
|
||||
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 Peter Weiss."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1010 zrcolagui.cpp:1013
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1026 zrcolagui.cpp:1029
|
||||
msgid "Quit and &Update..."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1028 zrcolagui.cpp:1031
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1032 zrcolagui.cpp:1035
|
||||
msgid "&Close"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1033 zrcolagui.cpp:1036
|
||||
msgid "Close this window"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1070 zrcolachrreq.cpp:35 zrcolagui.cpp:1073
|
||||
msgid "Character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1072 zrcolagui.cpp:1075
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1086 zrcolagui.cpp:1089
|
||||
msgid "Decomposed character to request"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1090 zrcolagui.cpp:1093
|
||||
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 ""
|
||||
|
||||
#: res/zrcolagui.cpp:1098 zrcolachrreq.cpp:44 zrcolagui.cpp:1101
|
||||
msgid "Context"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1100 zrcolagui.cpp:1103
|
||||
msgid "The &context, examples or description why and where the character is required:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1106 zrcolagui.cpp:1109
|
||||
msgid "Additional notes for character request"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1113 zrcolagui.cpp:1116
|
||||
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 the Editor will be able to read them correctly anyway."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1155 zrcolagui.cpp:1158
|
||||
msgid "Translation"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1157 zrcolagui.cpp:1160
|
||||
msgid ""
|
||||
"ZRCola offers multiple text translations that can be arranged in a sequence.\n"
|
||||
"Please select desired translations and the order they are applied."
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1167 zrcolagui.cpp:1170
|
||||
msgid "A&vailable:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1182 zrcolagui.cpp:1185
|
||||
msgid "→"
|
||||
msgstr "→"
|
||||
|
||||
#: res/zrcolagui.cpp:1185 zrcolagui.cpp:1188
|
||||
msgid "←"
|
||||
msgstr "←"
|
||||
|
||||
#: res/zrcolagui.cpp:1194 zrcolagui.cpp:1197
|
||||
msgid "&Selected:"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:1212 zrcolagui.cpp:1215
|
||||
msgid "↑"
|
||||
msgstr "↑"
|
||||
|
||||
#: res/zrcolagui.cpp:1215 zrcolagui.cpp:1218
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: res/zrcolagui.h:260 zrcolagui.h:260
|
||||
msgid "Character Search"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:296 zrcolagui.h:296
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:322 zrcolagui.h:322
|
||||
msgid "About ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:347 zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:376 zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
msgid "Request a New Character"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.h:418 zrcolagui.h:418
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaabout.cpp:17
|
||||
#, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:75
|
||||
msgid "Too many digits in Unicode."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:75 zrcolachrslct.cpp:93
|
||||
msgid "Validation conflict"
|
||||
msgstr "Fehler bei der Validierung"
|
||||
|
||||
#: zrcolachrslct.cpp:93
|
||||
#, c-format
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
msgid "▸ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:315
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
msgid "▾ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
msgid "No Translation"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
msgid "Custom Translation..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
msgid "ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
msgid "ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
msgid "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
msgstr "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
|
||||
#: zrcolakeyhndlr.cpp:30
|
||||
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:73
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolatranseq.cpp:49
|
||||
#, c-format
|
||||
msgid "Unknown translation (%u)"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaupdater.cpp:81
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr "bintutorial1.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.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 ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.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_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr "bintutorial2.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.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_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr "bintutorial3.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.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_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ">"
|
||||
#~ msgstr ">"
|
||||
|
||||
#~ msgid "<"
|
||||
#~ msgstr "<"
|
||||
828
ZRCola/locale/ru_RU.po
Normal file
@@ -0,0 +1,828 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Janoš Ježovnik, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:17+0100\n"
|
||||
"PO-Revision-Date: 2021-12-21 14:17+0100\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "E&xit"
|
||||
msgstr "Вы&ход"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "Quit this program"
|
||||
msgstr "Выйти из программы"
|
||||
|
||||
#: res/zrcolagui.cpp:45 zrcolagui.cpp:45
|
||||
msgid "&Program"
|
||||
msgstr "П&рограмма"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select &All"
|
||||
msgstr "Выделить в&се"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select all text"
|
||||
msgstr "Выделить весь текст"
|
||||
|
||||
#: res/zrcolagui.cpp:84 zrcolagui.cpp:84
|
||||
msgid "Find C&haracter..."
|
||||
msgstr "Поиск &знака ..."
|
||||
|
||||
#: res/zrcolagui.cpp:84 res/zrcolagui.cpp:224 zrcolagui.cpp:84
|
||||
#: zrcolagui.cpp:224
|
||||
msgid "Toggle character search to select character to insert into text"
|
||||
msgstr "Переключить поиск знаков для вставки выбранного знака в текст"
|
||||
|
||||
#: res/zrcolagui.cpp:90 zrcolagui.cpp:90
|
||||
msgid "&Send Composed"
|
||||
msgstr "&Послать составленное"
|
||||
|
||||
#: res/zrcolagui.cpp:90 res/zrcolagui.cpp:226 zrcolagui.cpp:90
|
||||
#: zrcolagui.cpp:226
|
||||
msgid "Send composed text to source window"
|
||||
msgstr "Послать составленный текст в исходное окно"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy Composed and &Return"
|
||||
msgstr "Копировать составленное и &возвратиться"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy composed text to clipboard and return focus to source window"
|
||||
msgstr "Копировать составленный текст в буфер обмена и возвратить фокус в исходное окно"
|
||||
|
||||
#: res/zrcolagui.cpp:108 zrcolagui.cpp:108
|
||||
msgid "Send &Decomposed"
|
||||
msgstr "Послать &разобранное"
|
||||
|
||||
#: res/zrcolagui.cpp:108 res/zrcolagui.cpp:228 zrcolagui.cpp:108
|
||||
#: zrcolagui.cpp:228
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr "Послать разобранный текст в исходное окно"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy Decomposed and Re&turn"
|
||||
msgstr "Копировать разобранное и возв&ратиться"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy decomposed text to clipboard and return focus to source window"
|
||||
msgstr "Копировать разобранный текст в буфер обмена и возвратить фокус в исходное окно"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort (De)composition"
|
||||
msgstr "Прервать составление/разборку"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr "Прервать составление и возвратить фокус в исходное окно"
|
||||
|
||||
#: res/zrcolagui.cpp:138 zrcolagui.cpp:138
|
||||
#, fuzzy
|
||||
#| msgid "Abort (De)composition"
|
||||
msgid "(De)&composition"
|
||||
msgstr "Переключить составление/разборку ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
#, fuzzy
|
||||
#| msgid "None"
|
||||
msgid "&None"
|
||||
msgstr "Ничего"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
#, fuzzy
|
||||
#| msgid "Toggle ZRCola character (De)composition"
|
||||
msgid "No character (De)composition"
|
||||
msgstr "Переключить составление/разборку ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
#, fuzzy
|
||||
#| msgid "ZRCola"
|
||||
msgid "&ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
#, fuzzy
|
||||
#| msgid "Toggle ZRCola character (De)composition"
|
||||
msgid "ZRCola character (De)composition"
|
||||
msgstr "Переключить составление/разборку ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
#, fuzzy
|
||||
msgid "&Unicode"
|
||||
msgstr "Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
#, fuzzy
|
||||
#| msgid "Unicode character description"
|
||||
msgid "Unicode character (De)composition"
|
||||
msgstr "Описание знака Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:151 zrcolagui.cpp:151
|
||||
msgid "Tra&nslation"
|
||||
msgstr "Тра&нслитерация"
|
||||
|
||||
#: res/zrcolagui.cpp:156 zrcolagui.cpp:156
|
||||
#, fuzzy
|
||||
#| msgid "Warning"
|
||||
msgid "&PUA Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#: res/zrcolagui.cpp:156 res/zrcolagui.cpp:243 zrcolagui.cpp:156
|
||||
#: zrcolagui.cpp:243
|
||||
msgid "Highlight Private Use Area Characters"
|
||||
msgstr ""
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "&Settings..."
|
||||
msgstr "&Настройки ..."
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr "Открыть диалог конфигурации программы"
|
||||
|
||||
#: res/zrcolagui.cpp:165 zrcolagui.cpp:165
|
||||
msgid "&Edit"
|
||||
msgstr "&Правка"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr "Панель инструментов для &правки"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr "Переключить панель инструментов для правки"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr "Панель инструментов для &составления"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr "Переключить панель инструментов для составления"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Character Catalo&g"
|
||||
msgstr "Список &знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr "Переключить список знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:182 zrcolagui.cpp:182
|
||||
msgid "&View"
|
||||
msgstr "&Вид"
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "&Instructions..."
|
||||
msgstr "&Инструкции ..."
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr "Открыть сайт с инструкциями по продукту"
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr "Сочетания &клавиш ..."
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr "Открыть список сочетаний клавиш"
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "&Request a new character..."
|
||||
msgstr "&Запрос нового знака ..."
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr "Отправить запрос нового знака"
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check for &Updates..."
|
||||
msgstr "Проверить наличие &обновлений ..."
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check online for product update"
|
||||
msgstr "Проверить наличие обновлений онлайн"
|
||||
|
||||
#: res/zrcolagui.cpp:206 zrcolagui.cpp:206
|
||||
msgid "&About..."
|
||||
msgstr "О прогр&амме ..."
|
||||
|
||||
#: res/zrcolagui.cpp:209 zrcolagui.cpp:209
|
||||
msgid "&Help"
|
||||
msgstr "&Справка"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut"
|
||||
msgstr "Вырезать"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut selection"
|
||||
msgstr "Вырезать выбор"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy"
|
||||
msgstr "Копировать"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy selection"
|
||||
msgstr "Копировать выбор"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste"
|
||||
msgstr "Вставить"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste selection"
|
||||
msgstr "Вставить выбор"
|
||||
|
||||
#: res/zrcolagui.cpp:221 zrcolagui.cpp:221
|
||||
msgid "Edit"
|
||||
msgstr "Правка"
|
||||
|
||||
#: res/zrcolagui.cpp:224 zrcolagui.cpp:224
|
||||
msgid "Find Character"
|
||||
msgstr "Поиск знака"
|
||||
|
||||
#: res/zrcolagui.cpp:226 zrcolagui.cpp:226
|
||||
msgid "Send Composed"
|
||||
msgstr "Послать составленное (F5)"
|
||||
|
||||
#: res/zrcolagui.cpp:228 zrcolagui.cpp:228
|
||||
msgid "Send Decomposed"
|
||||
msgstr "Послать разобранное (F6)"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
#, fuzzy
|
||||
#| msgid "Abort (De)composition"
|
||||
msgid "No (De)composition"
|
||||
msgstr "Прервать составление/разборку"
|
||||
|
||||
#: res/zrcolagui.cpp:232 res/zrcolagui.cpp:940 res/zrcolagui.h:119
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
#, fuzzy
|
||||
msgid "Unicode"
|
||||
msgstr "Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:243 zrcolagui.cpp:243
|
||||
#, fuzzy
|
||||
#| msgid "Warning"
|
||||
msgid "PUA Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#: res/zrcolagui.cpp:246 zrcolagui.cpp:246
|
||||
msgid "Compose"
|
||||
msgstr "Составить"
|
||||
|
||||
#: res/zrcolagui.cpp:250 zrcolagui.cpp:250
|
||||
msgid "Character Catalog"
|
||||
msgstr "Список знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:254 zrcolagui.cpp:254
|
||||
msgid "(De)Composer"
|
||||
msgstr "(Де)Композитор"
|
||||
|
||||
#: res/zrcolagui.cpp:297 zrcolagui.cpp:297
|
||||
msgid "Decomposed Text"
|
||||
msgstr "Разобранний текст"
|
||||
|
||||
#: res/zrcolagui.cpp:317 zrcolagui.cpp:317
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr "Дамп разобранного Юнукода"
|
||||
|
||||
#: res/zrcolagui.cpp:344 zrcolagui.cpp:344
|
||||
msgid "Composed Text"
|
||||
msgstr "Составленный текст"
|
||||
|
||||
#: res/zrcolagui.cpp:364 zrcolagui.cpp:364
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr "Дамп составленного Юникода"
|
||||
|
||||
#: res/zrcolagui.cpp:418 zrcolagui.cpp:418
|
||||
msgid "Select category to display"
|
||||
msgstr "Выделить категории для отображения"
|
||||
|
||||
#: res/zrcolagui.cpp:452 zrcolagui.cpp:452
|
||||
msgid "Show &All"
|
||||
msgstr "Показать &все"
|
||||
|
||||
#: res/zrcolagui.cpp:453 zrcolagui.cpp:453
|
||||
msgid "Toggle display of less frequent characters"
|
||||
msgstr "Переключить отображение редко использованных знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:493 zrcolagui.cpp:493
|
||||
msgid "&Browse"
|
||||
msgstr "&Обзор"
|
||||
|
||||
#: res/zrcolagui.cpp:500 zrcolagui.cpp:500
|
||||
msgid "Full or partial terms from Unicode character description (in English) to search for"
|
||||
msgstr "Полное либо частичное описание знака Юникод (на английском) для поиска"
|
||||
|
||||
#: res/zrcolagui.cpp:504 zrcolagui.cpp:504
|
||||
msgid "Search Options"
|
||||
msgstr "Опции поиска"
|
||||
|
||||
#: res/zrcolagui.cpp:505 zrcolagui.cpp:505
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr "Показать/скрыть дополнительные опции поиска"
|
||||
|
||||
#: res/zrcolagui.cpp:517 zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr "Список категории Юникод для проведения поиска"
|
||||
|
||||
#: res/zrcolagui.cpp:524 zrcolagui.cpp:524
|
||||
msgid "All"
|
||||
msgstr "Все"
|
||||
|
||||
#: res/zrcolagui.cpp:525 zrcolagui.cpp:525
|
||||
msgid "Select all categories"
|
||||
msgstr "Выбрать все категории"
|
||||
|
||||
#: res/zrcolagui.cpp:529 zrcolagui.cpp:529
|
||||
msgid "None"
|
||||
msgstr "Ничего"
|
||||
|
||||
#: res/zrcolagui.cpp:530 zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgstr "Очистить выбор категории"
|
||||
|
||||
#: res/zrcolagui.cpp:534 zrcolagui.cpp:534
|
||||
msgid "Invert"
|
||||
msgstr "Обратить"
|
||||
|
||||
#: res/zrcolagui.cpp:535 zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgstr "Обратить выбор категории"
|
||||
|
||||
#: res/zrcolagui.cpp:574 zrcolagui.cpp:574
|
||||
msgid "Character search results"
|
||||
msgstr "Результаты поиска знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:584 zrcolagui.cpp:584
|
||||
msgid "Re¢ly Used"
|
||||
msgstr "&Недавно использованное"
|
||||
|
||||
#: res/zrcolagui.cpp:612 zrcolagui.cpp:612
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr "Список недавно вставленных знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:626 zrcolagui.cpp:626
|
||||
msgid "Preview"
|
||||
msgstr "Просмотр"
|
||||
|
||||
#: res/zrcolagui.cpp:631 zrcolagui.cpp:631
|
||||
msgid "U+"
|
||||
msgstr "U+"
|
||||
|
||||
#: res/zrcolagui.cpp:636 zrcolagui.cpp:636
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr "Шестнадцатеричный код Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:641 zrcolagui.cpp:641
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr "Сочетание клавиш в окне композитора"
|
||||
|
||||
#: res/zrcolagui.cpp:676 zrcolagui.cpp:676
|
||||
msgid "Character preview"
|
||||
msgstr "Просмотр знака"
|
||||
|
||||
#: res/zrcolagui.cpp:681 zrcolagui.cpp:681
|
||||
msgid "Unicode character description"
|
||||
msgstr "Описание знака Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:686 zrcolagui.cpp:686
|
||||
msgid "Character tags"
|
||||
msgstr "Ключевые слова"
|
||||
|
||||
#: res/zrcolagui.cpp:691 zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgstr "Категория знака Юникод"
|
||||
|
||||
#: res/zrcolagui.cpp:698 zrcolagui.cpp:698
|
||||
msgid "« Back"
|
||||
msgstr "« Назад"
|
||||
|
||||
#: res/zrcolagui.cpp:700 zrcolagui.cpp:700
|
||||
msgid "To previously viewed character"
|
||||
msgstr "К предыдущему знаку"
|
||||
|
||||
#: res/zrcolagui.cpp:704 zrcolagui.cpp:704
|
||||
msgid "Forward »"
|
||||
msgstr "Далее »"
|
||||
|
||||
#: res/zrcolagui.cpp:706 zrcolagui.cpp:706
|
||||
msgid "To following viewed character"
|
||||
msgstr "К следующему знаку"
|
||||
|
||||
#: res/zrcolagui.cpp:717 zrcolagui.cpp:717
|
||||
msgid "Re&lated"
|
||||
msgstr "&Связанное"
|
||||
|
||||
#: res/zrcolagui.cpp:744 zrcolagui.cpp:744
|
||||
msgid "List of related characters"
|
||||
msgstr "Список связанных знаков"
|
||||
|
||||
#: res/zrcolagui.cpp:763 zrcolagui.cpp:763
|
||||
msgid "&Insert"
|
||||
msgstr "&Вставить"
|
||||
|
||||
#: res/zrcolagui.cpp:767 zrcolagui.cpp:767
|
||||
msgid "Insert character into decomposed text"
|
||||
msgstr "Вставка знака в разобранный текст"
|
||||
|
||||
#: res/zrcolagui.cpp:840 zrcolagui.cpp:843
|
||||
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 ""
|
||||
"Некоторые знаки использованного языка нельзя разбирать.\n"
|
||||
"Для оптимальной разборки вы должны настроить правильный язык."
|
||||
|
||||
#: res/zrcolagui.cpp:844 zrcolagui.cpp:847
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr "&Автоматически установить язык на основе выбранной клавиатуры"
|
||||
|
||||
#: res/zrcolagui.cpp:847 zrcolagui.cpp:850
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr "&Вручную выбрать язык со списка:"
|
||||
|
||||
#: res/zrcolagui.cpp:858 zrcolagui.cpp:861
|
||||
msgid "Text Language"
|
||||
msgstr "Язык текста"
|
||||
|
||||
#: res/zrcolagui.cpp:863 zrcolagui.cpp:866
|
||||
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 ""
|
||||
"Запуск системы ZRCola возможен при каждом запуске компьютера.\n"
|
||||
"После запуска система ZRCola доступна на панели задач либо через нажатие сочетания клавиш Win+F5 и Win+F6."
|
||||
|
||||
#: res/zrcolagui.cpp:867 zrcolagui.cpp:870
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr "&Автоматически запустить систему ZRCola при запуске компьютера"
|
||||
|
||||
#: res/zrcolagui.cpp:873 zrcolagui.cpp:876
|
||||
msgid "Startup"
|
||||
msgstr "Запуск"
|
||||
|
||||
#: res/zrcolagui.cpp:951 zrcolagui.cpp:954
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Translation into English: Janoš Ježovnik\n"
|
||||
"Translation into Russian language: Domen Krvina, Silvo Torkar, Anastasia Plotnikova\n"
|
||||
"Development and maintenance of the original program (2004–2015): Peter Weiss"
|
||||
msgstr ""
|
||||
"Администратор программы и сайта: Янош Ежовник (Janoš Ježovnik)\n"
|
||||
"Разработка: Amebis, d. o. o., Kamnik\n"
|
||||
"Перевод на английский яазык: Янош Ежовник (Janoš Ježovnik)\n"
|
||||
"Перевод на русский язык: Домен Крвина (Domen Krvina), Силво Торкар (Silvo Torkar), Анастасия Плотникова\n"
|
||||
"Разработка in техническая поддержка первоначальной программы (2004–2015): Петер Вейсс (Peter Weiss)"
|
||||
|
||||
#: res/zrcolagui.cpp:959 zrcolagui.cpp:962
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr "zrcola.zrc-sazu.si"
|
||||
|
||||
#: res/zrcolagui.cpp:965 zrcolagui.cpp:968
|
||||
msgid "Texts made using ZRCola have to include in a footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr "Текст, созданный с помощью системы ZRCola, должен в примечании или другом соответствующем месте в публикации сопровождаться следующей записью:"
|
||||
|
||||
#: res/zrcolagui.cpp:969 zrcolagui.cpp:972
|
||||
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 Peter Weiss."
|
||||
msgstr "Текст подготовлен с помощью системы ввода ZRCola (http://zrcola.zrc-sazu.si), разработанной в Научно-исследовательском центре Словенской академии наук и искусств в Любляне (http://www.zrc-sazu.si) Петром Вейссoм."
|
||||
|
||||
#: res/zrcolagui.cpp:1010 zrcolagui.cpp:1013
|
||||
msgid "Log"
|
||||
msgstr "Журнал"
|
||||
|
||||
#: res/zrcolagui.cpp:1026 zrcolagui.cpp:1029
|
||||
msgid "Quit and &Update..."
|
||||
msgstr "Выйти и &обновить ..."
|
||||
|
||||
#: res/zrcolagui.cpp:1028 zrcolagui.cpp:1031
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr "Выйти из программы и запустить обновление"
|
||||
|
||||
#: res/zrcolagui.cpp:1032 zrcolagui.cpp:1035
|
||||
msgid "&Close"
|
||||
msgstr "&Закрыть"
|
||||
|
||||
#: res/zrcolagui.cpp:1033 zrcolagui.cpp:1036
|
||||
msgid "Close this window"
|
||||
msgstr "Закрыть это окно"
|
||||
|
||||
#: res/zrcolagui.cpp:1070 zrcolachrreq.cpp:35 zrcolagui.cpp:1073
|
||||
msgid "Character"
|
||||
msgstr "Знак"
|
||||
|
||||
#: res/zrcolagui.cpp:1072 zrcolagui.cpp:1075
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr "Ввести запрашиваемый &знак:"
|
||||
|
||||
#: res/zrcolagui.cpp:1086 zrcolagui.cpp:1089
|
||||
msgid "Decomposed character to request"
|
||||
msgstr "Запрашиваемый разобранный знак"
|
||||
|
||||
#: res/zrcolagui.cpp:1090 zrcolagui.cpp:1093
|
||||
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 ""
|
||||
"Пожалуйста, используйте разобранный формат.\n"
|
||||
"Для ввода запрашиваемого знака можно использовать сочетания клавиш системы ZRCola либо копировать и вставить знаки из окна для разборки."
|
||||
|
||||
#: res/zrcolagui.cpp:1098 zrcolachrreq.cpp:44 zrcolagui.cpp:1101
|
||||
msgid "Context"
|
||||
msgstr "Контекст"
|
||||
|
||||
#: res/zrcolagui.cpp:1100 zrcolagui.cpp:1103
|
||||
msgid "The &context, examples or description why and where the character is required:"
|
||||
msgstr "&Контекст, примеры либо описание запрашиваемого знака или объяснение, зачем он нужен:"
|
||||
|
||||
#: res/zrcolagui.cpp:1106 zrcolagui.cpp:1109
|
||||
msgid "Additional notes for character request"
|
||||
msgstr "Дополнительные примечания"
|
||||
|
||||
#: res/zrcolagui.cpp:1113 zrcolagui.cpp:1116
|
||||
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 the Editor will be able to read them correctly anyway."
|
||||
msgstr ""
|
||||
"После нажатия на кнопку «OK» ваша почтовая программа должна открытся для отправки запроса нового знака администратору системы ZRCola.\n"
|
||||
"Возможно, не все знаки будут отображены правильно, но все информации будут закодированны таким образом, что администратор сможет их правильно прочитать."
|
||||
|
||||
#: res/zrcolagui.cpp:1155 zrcolagui.cpp:1158
|
||||
msgid "Translation"
|
||||
msgstr "Преобразование"
|
||||
|
||||
#: res/zrcolagui.cpp:1157 zrcolagui.cpp:1160
|
||||
msgid ""
|
||||
"ZRCola offers multiple text translations that can be arranged in a sequence.\n"
|
||||
"Please select desired translations and the order they are applied."
|
||||
msgstr ""
|
||||
"ZRCola предоставляет различные преобразования текста, последовательность которых можно свободно изменять.\n"
|
||||
"Пожалуйста, выбрать желаемые преобразования и порядок их применения."
|
||||
|
||||
#: res/zrcolagui.cpp:1167 zrcolagui.cpp:1170
|
||||
msgid "A&vailable:"
|
||||
msgstr "&Доступное:"
|
||||
|
||||
#: res/zrcolagui.cpp:1182 zrcolagui.cpp:1185
|
||||
msgid "→"
|
||||
msgstr "→"
|
||||
|
||||
#: res/zrcolagui.cpp:1185 zrcolagui.cpp:1188
|
||||
msgid "←"
|
||||
msgstr "←"
|
||||
|
||||
#: res/zrcolagui.cpp:1194 zrcolagui.cpp:1197
|
||||
msgid "&Selected:"
|
||||
msgstr "&Выбранное:"
|
||||
|
||||
#: res/zrcolagui.cpp:1212 zrcolagui.cpp:1215
|
||||
msgid "↑"
|
||||
msgstr "↑"
|
||||
|
||||
#: res/zrcolagui.cpp:1215 zrcolagui.cpp:1218
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: res/zrcolagui.h:260 zrcolagui.h:260
|
||||
msgid "Character Search"
|
||||
msgstr "Поиск знака"
|
||||
|
||||
#: res/zrcolagui.h:296 zrcolagui.h:296
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: res/zrcolagui.h:322 zrcolagui.h:322
|
||||
msgid "About ZRCola"
|
||||
msgstr "О системе ZRCola"
|
||||
|
||||
#: res/zrcolagui.h:347 zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr "Обновление продукта"
|
||||
|
||||
#: res/zrcolagui.h:376 zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
msgid "Request a New Character"
|
||||
msgstr "Запрос нового знака"
|
||||
|
||||
#: res/zrcolagui.h:418 zrcolagui.h:418
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr "Настраиваемая последовательность преобразований"
|
||||
|
||||
#: zrcolaabout.cpp:17
|
||||
#, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr "© 2004–%s ZRC SAZU"
|
||||
|
||||
#: zrcolachrslct.cpp:75
|
||||
msgid "Too many digits in Unicode."
|
||||
msgstr "Слишком много цифр в записи Unicode."
|
||||
|
||||
#: zrcolachrslct.cpp:75 zrcolachrslct.cpp:93
|
||||
msgid "Validation conflict"
|
||||
msgstr "Конфликт проверки"
|
||||
|
||||
#: zrcolachrslct.cpp:93
|
||||
#, c-format
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr "Недействительный знак в записи Unicode: %c"
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
msgid "▸ Search Options"
|
||||
msgstr "▸ Опции поиска"
|
||||
|
||||
#: zrcolachrslct.cpp:315
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
msgid "▾ Search Options"
|
||||
msgstr "▾ Опции поиска"
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
msgid "No Translation"
|
||||
msgstr "Без транслитерации"
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
msgid "Custom Translation..."
|
||||
msgstr "Настраиваемое преобразование ..."
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
msgid "ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."
|
||||
msgstr "Сочетание клавиш Win+F5 регистрировать. Некоторые функциональности не будут доступны."
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
msgid "Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
msgid "ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."
|
||||
msgstr "Сочетание клавиш Win+F6 невозможно регистрировать. Некоторые функциональности не будут доступны."
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
msgid "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
msgstr "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
|
||||
#: zrcolakeyhndlr.cpp:30
|
||||
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 "Нажата клавиша INS. Введите код Юникод желаемого знака (максимум четыре шестнадцатеричныe цифры: 0-9, A-F), затем отпустите клавишу INS."
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr "Автоматически запустить систему ZRCola при запуске компьютера"
|
||||
|
||||
#: zrcolatranseq.cpp:49
|
||||
#, c-format
|
||||
msgid "Unknown translation (%u)"
|
||||
msgstr "Неизвестное преобразование (%u)"
|
||||
|
||||
#: zrcolaupdater.cpp:81
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
"Программа будет закрыта и обновлена.\n"
|
||||
"Вы уверены?"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по запуску системы"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr "bintutorial1.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.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 "Если так настроено, система ZRCola запускается при запуске компьютера и работает в фоновом режиме. Если потребуется, пользователь может вывести программу на экран, нажав на сочетание клавиш Win+F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.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 "Внимание: При нажатии сочетание клавиш Win+F5 программа запомнить местонахождение курсора в тексте. Если система ZRCola выведена на экран без использования упомянутого сочетания клавиш, программа не знает, куда ввести желаемые знаки!"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr "&Продолжить"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по составлению"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr "bintutorial2.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.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 "Строка основных и замещающих знаков вводится в верхнее окно для ввода. После того, в нижнем окне появляются соответствующие специальные знаки. Для их ввода в текст нужно нажать клавишу F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по вводу знаков"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr "bintutorial3.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.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 "Знак можно ввести, употребляя сочетания клавиш на клавиатуре, список знаков (F4) или функцию \"Поиск знака\" (F8)."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr "Система ввода ZRCola для лингвистического применения"
|
||||
|
||||
#~ msgid "&ZRCola (De)composition"
|
||||
#~ msgstr "Составление/разборка &ZRCola "
|
||||
|
||||
#~ msgid "ZRCola (De)composition"
|
||||
#~ msgstr "ZRCola составление/разборка"
|
||||
|
||||
#~ msgid ">"
|
||||
#~ msgstr ">"
|
||||
|
||||
#~ msgid "<"
|
||||
#~ msgstr "<"
|
||||
|
||||
#~ msgid "Up"
|
||||
#~ msgstr "Up"
|
||||
|
||||
#~ msgid "Down"
|
||||
#~ msgstr "Down"
|
||||
@@ -1,121 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2016-02-09 18:56+0100\n"
|
||||
"PO-Revision-Date: 2016-02-09 18:56+0100\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"Language: sl_SI\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.6\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
|
||||
"%100==4 ? 2 : 3);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: zrcolafrm.cpp:62
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Ctrl+Alt+Z could not be registered. Some "
|
||||
"functionality will not be available."
|
||||
msgstr ""
|
||||
"ZRColine bližnjice na tipkovnici Ctrl+Alt+Z ni mogoče registrirati. Nekaj "
|
||||
"funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:62 zrcolafrm.cpp:64
|
||||
msgid "Warning"
|
||||
msgstr "Opozorilo"
|
||||
|
||||
#: zrcolafrm.cpp:64
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Ctrl+Alt+Shift+Z could not be registered. Some "
|
||||
"functionality will not be available."
|
||||
msgstr ""
|
||||
"ZRColine bližnjice na tipkovnici Ctrl+Alt+Shift+Z ni mogoče registrirati. "
|
||||
"Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:222
|
||||
#, c-format
|
||||
msgid ""
|
||||
"ZRCola v%s\n"
|
||||
"Copyright 2015-%s Amebis"
|
||||
msgstr ""
|
||||
"ZRCola v%s\n"
|
||||
"Vse pravice pridržane 2015-%s Amebis"
|
||||
|
||||
#: zrcolafrm.cpp:222
|
||||
msgid "About ZRCola"
|
||||
msgstr "O ZRColi"
|
||||
|
||||
#: zrcolagui.cpp:32
|
||||
msgid "E&xit"
|
||||
msgstr "I&zhod"
|
||||
|
||||
#: zrcolagui.cpp:35
|
||||
msgid "&File"
|
||||
msgstr "&Datoteka"
|
||||
|
||||
#: zrcolagui.cpp:39
|
||||
msgid "Grave\t&7"
|
||||
msgstr "Krativec\t&7"
|
||||
|
||||
#: zrcolagui.cpp:43
|
||||
msgid "Acute\t&9"
|
||||
msgstr "Ostrivec\t&9"
|
||||
|
||||
#: zrcolagui.cpp:47
|
||||
msgid "Circumflex\t&3"
|
||||
msgstr "Cirkumfleks\t&3"
|
||||
|
||||
#: zrcolagui.cpp:53
|
||||
msgid "Inverted &breve"
|
||||
msgstr "O&brnjen polkrog"
|
||||
|
||||
#: zrcolagui.cpp:56
|
||||
msgid "&Accents"
|
||||
msgstr "N&aglasi"
|
||||
|
||||
#: zrcolagui.cpp:60
|
||||
msgid "&About"
|
||||
msgstr "O progr&amu"
|
||||
|
||||
#: zrcolagui.cpp:63
|
||||
msgid "&Help"
|
||||
msgstr "&Pomoč"
|
||||
|
||||
#: zrcolagui.h:56
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#~ 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!"
|
||||
819
ZRCola/locale/sl_SI.po
Normal file
@@ -0,0 +1,819 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:17+0100\n"
|
||||
"PO-Revision-Date: 2021-12-21 14:17+0100\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Language: sl_SI\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "E&xit"
|
||||
msgstr "I&zhod"
|
||||
|
||||
#: res/zrcolagui.cpp:42 zrcolagui.cpp:42
|
||||
msgid "Quit this program"
|
||||
msgstr "Zapri ta program"
|
||||
|
||||
#: res/zrcolagui.cpp:45 zrcolagui.cpp:45
|
||||
msgid "&Program"
|
||||
msgstr "&Program"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select &All"
|
||||
msgstr "Izberi &vse"
|
||||
|
||||
#: res/zrcolagui.cpp:78 zrcolagui.cpp:78
|
||||
msgid "Select all text"
|
||||
msgstr "Izberi celotno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:84 zrcolagui.cpp:84
|
||||
msgid "Find C&haracter..."
|
||||
msgstr "Poišči &znak ..."
|
||||
|
||||
#: res/zrcolagui.cpp:84 res/zrcolagui.cpp:224 zrcolagui.cpp:84
|
||||
#: zrcolagui.cpp:224
|
||||
msgid "Toggle character search to select character to insert into text"
|
||||
msgstr "Prikaži/skrij iskalnik znakov za izbor znaka za vstavljanje v besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:90 zrcolagui.cpp:90
|
||||
msgid "&Send Composed"
|
||||
msgstr "Pošlji &sestavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:90 res/zrcolagui.cpp:226 zrcolagui.cpp:90
|
||||
#: zrcolagui.cpp:226
|
||||
msgid "Send composed text to source window"
|
||||
msgstr "Pošlji sestavljeno besedilo izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy Composed and &Return"
|
||||
msgstr "Kopi&raj sestavljeno in se vrni"
|
||||
|
||||
#: res/zrcolagui.cpp:99 zrcolagui.cpp:99
|
||||
msgid "Copy composed text to clipboard and return focus to source window"
|
||||
msgstr "Kopiraj sestavljeno besedilo na odložišče in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:108 zrcolagui.cpp:108
|
||||
msgid "Send &Decomposed"
|
||||
msgstr "Pošlji &razstavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:108 res/zrcolagui.cpp:228 zrcolagui.cpp:108
|
||||
#: zrcolagui.cpp:228
|
||||
msgid "Send decomposed text to source window"
|
||||
msgstr "Pošlji razstavljeno besedilo izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy Decomposed and Re&turn"
|
||||
msgstr "Kopi&raj razstavljeno in se vrni"
|
||||
|
||||
#: res/zrcolagui.cpp:117 zrcolagui.cpp:117
|
||||
msgid "Copy decomposed text to clipboard and return focus to source window"
|
||||
msgstr "Kopiraj razstavljeno besedilo na odložišče in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort (De)composition"
|
||||
msgstr "Prekini raz/sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:126 zrcolagui.cpp:126
|
||||
msgid "Abort composition and return focus to source window"
|
||||
msgstr "Prekini sestavljanje in vrni fokus nazaj izvornemu oknu"
|
||||
|
||||
#: res/zrcolagui.cpp:138 zrcolagui.cpp:138
|
||||
msgid "(De)&composition"
|
||||
msgstr "(&Raz-)sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
msgid "&None"
|
||||
msgstr "&Brez"
|
||||
|
||||
#: res/zrcolagui.cpp:139 zrcolagui.cpp:139
|
||||
msgid "No character (De)composition"
|
||||
msgstr "Brez (raz-)sestavljanja znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
msgid "&ZRCola"
|
||||
msgstr "&ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:142 zrcolagui.cpp:142
|
||||
msgid "ZRCola character (De)composition"
|
||||
msgstr "(Raz-)sestavljanje znakov ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
msgid "&Unicode"
|
||||
msgstr "&Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:145 zrcolagui.cpp:145
|
||||
msgid "Unicode character (De)composition"
|
||||
msgstr "(Raz-)sestavljanje znakov Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:151 zrcolagui.cpp:151
|
||||
msgid "Tra&nslation"
|
||||
msgstr "Tra&nsliteracija"
|
||||
|
||||
#: res/zrcolagui.cpp:156 zrcolagui.cpp:156
|
||||
msgid "&PUA Warning"
|
||||
msgstr "O&pozorilo OZU"
|
||||
|
||||
#: res/zrcolagui.cpp:156 res/zrcolagui.cpp:243 zrcolagui.cpp:156
|
||||
#: zrcolagui.cpp:243
|
||||
msgid "Highlight Private Use Area Characters"
|
||||
msgstr "Obarvaj znake iz območja zasebne uporabe"
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "&Settings..."
|
||||
msgstr "Na&stavitve ..."
|
||||
|
||||
#: res/zrcolagui.cpp:162 zrcolagui.cpp:162
|
||||
msgid "Open program configuration dialog"
|
||||
msgstr "Odpri nastavitveni dialog programa"
|
||||
|
||||
#: res/zrcolagui.cpp:165 zrcolagui.cpp:165
|
||||
msgid "&Edit"
|
||||
msgstr "Ur&edi"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "&Edit Toolbar"
|
||||
msgstr "Orodna vrstica za ur&ejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:169 zrcolagui.cpp:169
|
||||
msgid "Toggle edit toolbar"
|
||||
msgstr "Prikaži/skrij orodno vrstico za urejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "&Compose Toolbar"
|
||||
msgstr "Orodna vrsti&ca za sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:173 zrcolagui.cpp:173
|
||||
msgid "Toggle compose toolbar"
|
||||
msgstr "Prikaži/skrij orodno vrstico za sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Character Catalo&g"
|
||||
msgstr "Katalo&g znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:179 zrcolagui.cpp:179
|
||||
msgid "Toggle character catalog panel"
|
||||
msgstr "Prikaži/skrij katalog znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:182 zrcolagui.cpp:182
|
||||
msgid "&View"
|
||||
msgstr "Po&gled"
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "&Instructions..."
|
||||
msgstr "Navod&ila ..."
|
||||
|
||||
#: res/zrcolagui.cpp:186 zrcolagui.cpp:186
|
||||
msgid "Open a web site with product instructions"
|
||||
msgstr "Odpri spletno stran z navodili izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Keyboard &Shortcuts..."
|
||||
msgstr "&Bližnjice na tipkovnici ..."
|
||||
|
||||
#: res/zrcolagui.cpp:190 zrcolagui.cpp:190
|
||||
msgid "Open a list of keyboard shortcuts"
|
||||
msgstr "Odpri seznam bližnjic na tipkovnici"
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "&Request a new character..."
|
||||
msgstr "&Zahtevaj nov znak ..."
|
||||
|
||||
#: res/zrcolagui.cpp:196 zrcolagui.cpp:196
|
||||
msgid "Submit a request to ZRC to add a new character"
|
||||
msgstr "Oddaj prošnjo za dodajanje novega znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check for &Updates..."
|
||||
msgstr "Preveri &posodobitve ..."
|
||||
|
||||
#: res/zrcolagui.cpp:200 zrcolagui.cpp:200
|
||||
msgid "Check online for product update"
|
||||
msgstr "Preveri na spletu za posodobitev izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:206 zrcolagui.cpp:206
|
||||
msgid "&About..."
|
||||
msgstr "O progr&amu ..."
|
||||
|
||||
#: res/zrcolagui.cpp:209 zrcolagui.cpp:209
|
||||
msgid "&Help"
|
||||
msgstr "Po&moč"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut"
|
||||
msgstr "Izreži"
|
||||
|
||||
#: res/zrcolagui.cpp:214 zrcolagui.cpp:214
|
||||
msgid "Cut selection"
|
||||
msgstr "Izreži izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy"
|
||||
msgstr "Kopiraj"
|
||||
|
||||
#: res/zrcolagui.cpp:216 zrcolagui.cpp:216
|
||||
msgid "Copy selection"
|
||||
msgstr "Kopiraj izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste"
|
||||
msgstr "Prilepi"
|
||||
|
||||
#: res/zrcolagui.cpp:218 zrcolagui.cpp:218
|
||||
msgid "Paste selection"
|
||||
msgstr "Prilepi izbor"
|
||||
|
||||
#: res/zrcolagui.cpp:221 zrcolagui.cpp:221
|
||||
msgid "Edit"
|
||||
msgstr "Urejanje"
|
||||
|
||||
#: res/zrcolagui.cpp:224 zrcolagui.cpp:224
|
||||
msgid "Find Character"
|
||||
msgstr "Poišči znak"
|
||||
|
||||
#: res/zrcolagui.cpp:226 zrcolagui.cpp:226
|
||||
msgid "Send Composed"
|
||||
msgstr "Pošlji sestavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:228 zrcolagui.cpp:228
|
||||
msgid "Send Decomposed"
|
||||
msgstr "Pošlji razstavljeno"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
msgid "No (De)composition"
|
||||
msgstr "Brez (raz-)sestavljanja"
|
||||
|
||||
#: res/zrcolagui.cpp:232 res/zrcolagui.cpp:940 res/zrcolagui.h:119
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: res/zrcolagui.cpp:232 zrcolagui.cpp:232
|
||||
msgid "Unicode"
|
||||
msgstr "Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:243 zrcolagui.cpp:243
|
||||
msgid "PUA Warning"
|
||||
msgstr "Opozorilo OZU"
|
||||
|
||||
#: res/zrcolagui.cpp:246 zrcolagui.cpp:246
|
||||
msgid "Compose"
|
||||
msgstr "Sestavljanje"
|
||||
|
||||
#: res/zrcolagui.cpp:250 zrcolagui.cpp:250
|
||||
msgid "Character Catalog"
|
||||
msgstr "Katalog znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:254 zrcolagui.cpp:254
|
||||
msgid "(De)Composer"
|
||||
msgstr "Razstavljalnik/Sestavljalnik"
|
||||
|
||||
#: res/zrcolagui.cpp:297 zrcolagui.cpp:297
|
||||
msgid "Decomposed Text"
|
||||
msgstr "Razstavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:317 zrcolagui.cpp:317
|
||||
msgid "Decomposed Unicode Dump"
|
||||
msgstr "Unicode razstavljenega"
|
||||
|
||||
#: res/zrcolagui.cpp:344 zrcolagui.cpp:344
|
||||
msgid "Composed Text"
|
||||
msgstr "Sestavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:364 zrcolagui.cpp:364
|
||||
msgid "Composed Unicode Dump"
|
||||
msgstr "Unicode sestavljenega"
|
||||
|
||||
#: res/zrcolagui.cpp:418 zrcolagui.cpp:418
|
||||
msgid "Select category to display"
|
||||
msgstr "Izberi kategorijo za prikaz"
|
||||
|
||||
#: res/zrcolagui.cpp:452 zrcolagui.cpp:452
|
||||
msgid "Show &All"
|
||||
msgstr "Prik&aži vse"
|
||||
|
||||
#: res/zrcolagui.cpp:453 zrcolagui.cpp:453
|
||||
msgid "Toggle display of less frequent characters"
|
||||
msgstr "Prikaži/skrij manj pogoste znake"
|
||||
|
||||
#: res/zrcolagui.cpp:493 zrcolagui.cpp:493
|
||||
msgid "&Browse"
|
||||
msgstr "Pre&brskaj"
|
||||
|
||||
#: res/zrcolagui.cpp:500 zrcolagui.cpp:500
|
||||
msgid "Full or partial terms from Unicode character description (in English) to search for"
|
||||
msgstr "Polne ali delne besede iz opisa znaka Unicode (v angleščini) za iskanje"
|
||||
|
||||
#: res/zrcolagui.cpp:504 zrcolagui.cpp:504
|
||||
msgid "Search Options"
|
||||
msgstr "Možnosti iskanja"
|
||||
|
||||
#: res/zrcolagui.cpp:505 zrcolagui.cpp:505
|
||||
msgid "Shows/hides additional search options"
|
||||
msgstr "Prikaže/skrije dodatne možnosti iskanja"
|
||||
|
||||
#: res/zrcolagui.cpp:517 zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr "Seznam kategorij znaka Unicode za iskanje"
|
||||
|
||||
#: res/zrcolagui.cpp:524 zrcolagui.cpp:524
|
||||
msgid "All"
|
||||
msgstr "Vse"
|
||||
|
||||
#: res/zrcolagui.cpp:525 zrcolagui.cpp:525
|
||||
msgid "Select all categories"
|
||||
msgstr "Izberi vse kategorije"
|
||||
|
||||
#: res/zrcolagui.cpp:529 zrcolagui.cpp:529
|
||||
msgid "None"
|
||||
msgstr "Nič"
|
||||
|
||||
#: res/zrcolagui.cpp:530 zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgstr "Počisti izbor kategorij"
|
||||
|
||||
#: res/zrcolagui.cpp:534 zrcolagui.cpp:534
|
||||
msgid "Invert"
|
||||
msgstr "Obrni"
|
||||
|
||||
#: res/zrcolagui.cpp:535 zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgstr "Obrni izbor kategorij"
|
||||
|
||||
#: res/zrcolagui.cpp:574 zrcolagui.cpp:574
|
||||
msgid "Character search results"
|
||||
msgstr "Rezultati iskanja znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:584 zrcolagui.cpp:584
|
||||
msgid "Re¢ly Used"
|
||||
msgstr "Nedavno &uporabljeni"
|
||||
|
||||
#: res/zrcolagui.cpp:612 zrcolagui.cpp:612
|
||||
msgid "List of recently inserted characters"
|
||||
msgstr "Seznam nedavno vstavljenih znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:626 zrcolagui.cpp:626
|
||||
msgid "Preview"
|
||||
msgstr "Predogled"
|
||||
|
||||
#: res/zrcolagui.cpp:631 zrcolagui.cpp:631
|
||||
msgid "U+"
|
||||
msgstr "U+"
|
||||
|
||||
#: res/zrcolagui.cpp:636 zrcolagui.cpp:636
|
||||
msgid "Unicode hexadecimal code"
|
||||
msgstr "Šestnajstiška koda Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:641 zrcolagui.cpp:641
|
||||
msgid "Keyboard shortcut in Composer window"
|
||||
msgstr "Bližnjica na tipkovnici v oknu sestavljalnika"
|
||||
|
||||
#: res/zrcolagui.cpp:676 zrcolagui.cpp:676
|
||||
msgid "Character preview"
|
||||
msgstr "Predogled znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:681 zrcolagui.cpp:681
|
||||
msgid "Unicode character description"
|
||||
msgstr "Opis znaka Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:686 zrcolagui.cpp:686
|
||||
msgid "Character tags"
|
||||
msgstr "Oznake znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:691 zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgstr "Kategorija znaka Unicode"
|
||||
|
||||
#: res/zrcolagui.cpp:698 zrcolagui.cpp:698
|
||||
msgid "« Back"
|
||||
msgstr "« Nazaj"
|
||||
|
||||
#: res/zrcolagui.cpp:700 zrcolagui.cpp:700
|
||||
msgid "To previously viewed character"
|
||||
msgstr "Na prejšnji prikazan znak"
|
||||
|
||||
#: res/zrcolagui.cpp:704 zrcolagui.cpp:704
|
||||
msgid "Forward »"
|
||||
msgstr "Naprej »"
|
||||
|
||||
#: res/zrcolagui.cpp:706 zrcolagui.cpp:706
|
||||
msgid "To following viewed character"
|
||||
msgstr "Na naslednji prikazan znak"
|
||||
|
||||
#: res/zrcolagui.cpp:717 zrcolagui.cpp:717
|
||||
msgid "Re&lated"
|
||||
msgstr "&Sorodni"
|
||||
|
||||
#: res/zrcolagui.cpp:744 zrcolagui.cpp:744
|
||||
msgid "List of related characters"
|
||||
msgstr "Seznam sorodnih znakov"
|
||||
|
||||
#: res/zrcolagui.cpp:763 zrcolagui.cpp:763
|
||||
msgid "&Insert"
|
||||
msgstr "Vstav&i"
|
||||
|
||||
#: res/zrcolagui.cpp:767 zrcolagui.cpp:767
|
||||
msgid "Insert character into decomposed text"
|
||||
msgstr "Vstavi znak v razstavljeno besedilo"
|
||||
|
||||
#: res/zrcolagui.cpp:840 zrcolagui.cpp:843
|
||||
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 ""
|
||||
"Nekateri znaki iz posameznih jezikov, s katerimi delate, se ne smejo razstavljati.\n"
|
||||
"Za optimalno razstavljanje izberite pravilni jezik."
|
||||
|
||||
#: res/zrcolagui.cpp:844 zrcolagui.cpp:847
|
||||
msgid "Select language &automatically according to selected keyboard"
|
||||
msgstr "S&amodejno izberi jezik glede na izbrano tipkovnico"
|
||||
|
||||
#: res/zrcolagui.cpp:847 zrcolagui.cpp:850
|
||||
msgid "&Manually select the language from the list below:"
|
||||
msgstr "&Ročno izberi jezik s seznama spodaj:"
|
||||
|
||||
#: res/zrcolagui.cpp:858 zrcolagui.cpp:861
|
||||
msgid "Text Language"
|
||||
msgstr "Jezik besedila"
|
||||
|
||||
#: res/zrcolagui.cpp:863 zrcolagui.cpp:866
|
||||
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 ""
|
||||
"ZRCola se lahko zažene ob vsaki prijavi v vaš računalnik.\n"
|
||||
"Na voljo bo v vrstici za sistemska obvestila ter preko registriranih bližnjic Win+F5 in Win+F6."
|
||||
|
||||
#: res/zrcolagui.cpp:867 zrcolagui.cpp:870
|
||||
msgid "Start ZRCola &automatically on logon"
|
||||
msgstr "S&amodejno zaženi ZRColo ob prijavi"
|
||||
|
||||
#: res/zrcolagui.cpp:873 zrcolagui.cpp:876
|
||||
msgid "Startup"
|
||||
msgstr "Zagon"
|
||||
|
||||
#: res/zrcolagui.cpp:951 zrcolagui.cpp:954
|
||||
msgid ""
|
||||
"Program and Website Editor: Janoš Ježovnik\n"
|
||||
"Development: Amebis, d. o. o., Kamnik\n"
|
||||
"Translation into English: Janoš Ježovnik\n"
|
||||
"Translation into Russian language: Domen Krvina, Silvo Torkar, Anastasia Plotnikova\n"
|
||||
"Development and maintenance of the original program (2004–2015): Peter Weiss"
|
||||
msgstr ""
|
||||
"Urednik programa in spletne strani: Janoš Ježovnik\n"
|
||||
"Razvoj: Amebis, d. o. o., Kamnik\n"
|
||||
"Prevod v angleški jezik: Janoš Ježovnik\n"
|
||||
"Prevod v ruski jezik: Domen Krvina, Silvo Torkar, Anastasija Plotnikova\n"
|
||||
"Razvoj in vzdrževanje prvotnega programa (2004–2015): Peter Weiss"
|
||||
|
||||
#: res/zrcolagui.cpp:959 zrcolagui.cpp:962
|
||||
msgid "zrcola.zrc-sazu.si"
|
||||
msgstr "zrcola.zrc-sazu.si"
|
||||
|
||||
#: res/zrcolagui.cpp:965 zrcolagui.cpp:968
|
||||
msgid "Texts made using ZRCola have to include in a footnote or some other appropriate part of the publication the note below:"
|
||||
msgstr "Besedilo, nastalo z uporabo ZRCole, mora biti v opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim zapisom:"
|
||||
|
||||
#: res/zrcolagui.cpp:969 zrcolagui.cpp:972
|
||||
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 Peter Weiss."
|
||||
msgstr "Besedilo je bilo pripravljeno z vnašalnim sistemom ZRCola (http://zrcola.zrc-sazu.si), ki ga je na Znanstvenoraziskovalnem centru SAZU v Ljubljani (http://www.zrc-sazu.si) razvil Peter Weiss."
|
||||
|
||||
#: res/zrcolagui.cpp:1010 zrcolagui.cpp:1013
|
||||
msgid "Log"
|
||||
msgstr "Dnevnik"
|
||||
|
||||
#: res/zrcolagui.cpp:1026 zrcolagui.cpp:1029
|
||||
msgid "Quit and &Update..."
|
||||
msgstr "Za&ustavi in posodobi ..."
|
||||
|
||||
#: res/zrcolagui.cpp:1028 zrcolagui.cpp:1031
|
||||
msgid "Exit this program and launch product update"
|
||||
msgstr "Zaustavi program in zaženi posodobitev izdelka"
|
||||
|
||||
#: res/zrcolagui.cpp:1032 zrcolagui.cpp:1035
|
||||
msgid "&Close"
|
||||
msgstr "&Zapri"
|
||||
|
||||
#: res/zrcolagui.cpp:1033 zrcolagui.cpp:1036
|
||||
msgid "Close this window"
|
||||
msgstr "Zapri to okno"
|
||||
|
||||
#: res/zrcolagui.cpp:1070 zrcolachrreq.cpp:35 zrcolagui.cpp:1073
|
||||
msgid "Character"
|
||||
msgstr "Znak"
|
||||
|
||||
#: res/zrcolagui.cpp:1072 zrcolagui.cpp:1075
|
||||
msgid "Enter the &character you would like to request:"
|
||||
msgstr "Vpišite &znak, ki ga želite zahtevati:"
|
||||
|
||||
#: res/zrcolagui.cpp:1086 zrcolagui.cpp:1089
|
||||
msgid "Decomposed character to request"
|
||||
msgstr "Zahtevani znak v razstavljeni obliki"
|
||||
|
||||
#: res/zrcolagui.cpp:1090 zrcolagui.cpp:1093
|
||||
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 ""
|
||||
"Uporabite razstavljeno obliko.\n"
|
||||
"Za vnos znaka lahko uporabite ZRColine bližnjice na tipkovnici ali ga kopirate in prilepite iz okna z razstavljenim besedilom."
|
||||
|
||||
#: res/zrcolagui.cpp:1098 zrcolachrreq.cpp:44 zrcolagui.cpp:1101
|
||||
msgid "Context"
|
||||
msgstr "Kontekst"
|
||||
|
||||
#: res/zrcolagui.cpp:1100 zrcolagui.cpp:1103
|
||||
msgid "The &context, examples or description why and where the character is required:"
|
||||
msgstr "&Kontekst, primeri oziroma opis, zakaj in kje potrebujete novi znak:"
|
||||
|
||||
#: res/zrcolagui.cpp:1106 zrcolagui.cpp:1109
|
||||
msgid "Additional notes for character request"
|
||||
msgstr "Dodatne opombe za zahtevo znaka"
|
||||
|
||||
#: res/zrcolagui.cpp:1113 zrcolagui.cpp:1116
|
||||
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 the Editor will be able to read them correctly anyway."
|
||||
msgstr ""
|
||||
"Ko boste kliknili gumb V redu, se bo odprl vaš program za e-pošto, s katerim boste lahko oddali zahtevo za nov znak uredniku programa.\n"
|
||||
"Vsi znaki v sporočilu morda ne bodo prikazani pravilno, vendar jih bo urednik lahko kljub temu razbral."
|
||||
|
||||
#: res/zrcolagui.cpp:1155 zrcolagui.cpp:1158
|
||||
msgid "Translation"
|
||||
msgstr "Pretvorba"
|
||||
|
||||
#: res/zrcolagui.cpp:1157 zrcolagui.cpp:1160
|
||||
msgid ""
|
||||
"ZRCola offers multiple text translations that can be arranged in a sequence.\n"
|
||||
"Please select desired translations and the order they are applied."
|
||||
msgstr ""
|
||||
"ZRCola ponuja različne pretvorbe besedila, ki jih lahko uredimo v zaporedje.\n"
|
||||
"Prosimo, izberite želene pretvorbe in vrstni red, v katerem naj potečejo."
|
||||
|
||||
#: res/zrcolagui.cpp:1167 zrcolagui.cpp:1170
|
||||
msgid "A&vailable:"
|
||||
msgstr "Na &voljo:"
|
||||
|
||||
#: res/zrcolagui.cpp:1182 zrcolagui.cpp:1185
|
||||
msgid "→"
|
||||
msgstr "→"
|
||||
|
||||
#: res/zrcolagui.cpp:1185 zrcolagui.cpp:1188
|
||||
msgid "←"
|
||||
msgstr "←"
|
||||
|
||||
#: res/zrcolagui.cpp:1194 zrcolagui.cpp:1197
|
||||
msgid "&Selected:"
|
||||
msgstr "I&zbrano:"
|
||||
|
||||
#: res/zrcolagui.cpp:1212 zrcolagui.cpp:1215
|
||||
msgid "↑"
|
||||
msgstr "↑"
|
||||
|
||||
#: res/zrcolagui.cpp:1215 zrcolagui.cpp:1218
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: res/zrcolagui.h:260 zrcolagui.h:260
|
||||
msgid "Character Search"
|
||||
msgstr "Poišči znak"
|
||||
|
||||
#: res/zrcolagui.h:296 zrcolagui.h:296
|
||||
msgid "Settings"
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#: res/zrcolagui.h:322 zrcolagui.h:322
|
||||
msgid "About ZRCola"
|
||||
msgstr "O ZRColi"
|
||||
|
||||
#: res/zrcolagui.h:347 zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr "Posodabljanje izdelka"
|
||||
|
||||
#: res/zrcolagui.h:376 zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
msgid "Request a New Character"
|
||||
msgstr "Zahtevaj nov znak"
|
||||
|
||||
#: res/zrcolagui.h:418 zrcolagui.h:418
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr "Zaporedje pretvorb po meri"
|
||||
|
||||
#: zrcolaabout.cpp:17
|
||||
#, c-format
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr "© 2004-%s ZRC SAZU"
|
||||
|
||||
#: zrcolachrslct.cpp:75
|
||||
msgid "Too many digits in Unicode."
|
||||
msgstr "Preveč števk v zapisu Unicode."
|
||||
|
||||
#: zrcolachrslct.cpp:75 zrcolachrslct.cpp:93
|
||||
msgid "Validation conflict"
|
||||
msgstr "Nesoglasje pri preverjanju"
|
||||
|
||||
#: zrcolachrslct.cpp:93
|
||||
#, c-format
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr "Napačen znak v zapisu Unicode: %c"
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
msgid "▸ Search Options"
|
||||
msgstr "▸ Možnosti iskanja"
|
||||
|
||||
#: zrcolachrslct.cpp:315
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
msgid "▾ Search Options"
|
||||
msgstr "▾ Možnosti iskanja"
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
msgid "No Translation"
|
||||
msgstr "Brez transliteracije"
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
msgid "Custom Translation..."
|
||||
msgstr "Pretvorba po meri ..."
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
msgid "ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."
|
||||
msgstr "ZRColine bližnjice na tipkovnici Win+F5 ni mogoče registrirati. Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
msgid "Warning"
|
||||
msgstr "Opozorilo"
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
msgid "ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."
|
||||
msgstr "ZRColine bližnjice na tipkovnici Win+F6 ni mogoče registrirati. Nekaj funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
msgid "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
msgstr "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
|
||||
#: zrcolakeyhndlr.cpp:30
|
||||
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 "Pritisnili ste tipko INS. Vtipkajte kodo Unicode želenega znaka (do štiri šestnajstiške števke: 0–9, A–F), nato izpustite INS."
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr "Samodejno zaženi ZRColo ob prijavi"
|
||||
|
||||
#: zrcolatranseq.cpp:49
|
||||
#, c-format
|
||||
msgid "Unknown translation (%u)"
|
||||
msgstr "Neznana pretvorba (%u)"
|
||||
|
||||
#: zrcolaupdater.cpp:81
|
||||
msgid ""
|
||||
"This program will now close and the upgrade will be launched.\n"
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
"Program se bo zdaj zaprl in zagnala se bo posodobitev.\n"
|
||||
"Ali ste prepričani, da želite nadaljevati?"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "binUIHeader.bmp"
|
||||
msgstr "binUIHeader.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Zagon"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "bintutorial1.bmp"
|
||||
msgstr "bintutorial1.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.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 "Če jo tako nastavimo, se ZRCola zažene samodejno in teče v ozadju. V ospredje jo prikličemo s pritiskom na bližnjico Win+F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.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 "POMEMBNO: Ob pritisku na Win+F5 si program zapomni mesto kurzorja v besedilu. Če ZRColo povečamo brez pritiska na ti dve tipki, program ne bo vedel, kam vstaviti želene znake!"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Sestavljanje"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "bintutorial2.bmp"
|
||||
msgstr "bintutorial2.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.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 "Želeni niz osnovnih in nadomestnih znakov vnesemo v zgornjo vrstico v programu. V spodnji vrstici se prikažejo sestavljeni znaki. V besedilo jih vnesemo s pritiskom na tipko F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Vnos znakov"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "bintutorial3.bmp"
|
||||
msgstr "bintutorial3.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.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 "Znake lahko v vnosno vrstico vstavljamo s pomočjo bližnjic na tipkovnici, iz kataloga znakov (F4) ali z iskalnikom znakov (F8)."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
msgstr "Vnašalni sistem za jezikoslovno rabo"
|
||||
|
||||
#~ msgid "&ZRCola (De)composition"
|
||||
#~ msgstr "(Raz-)Sestavljanje &ZRCola"
|
||||
|
||||
#~ msgid "ZRCola (De)composition"
|
||||
#~ msgstr "(Raz-)Sestavljanje ZRCola"
|
||||
|
||||
#~ msgid "Composed Text &Font..."
|
||||
#~ msgstr "&Pisava sestavljenega besedila ..."
|
||||
|
||||
#~ msgid "Select font for composed text"
|
||||
#~ msgstr "Izberi pisavo za sestavljeno besedilo"
|
||||
|
||||
#~ msgid "Composed &Text Toolbar"
|
||||
#~ msgstr "Orodna vrs&tica sestavljenega besedila"
|
||||
|
||||
#~ msgid "Toggle composed text toolbar"
|
||||
#~ msgstr "Prikaži/skrij orodno vrstico sestavljenega besedila"
|
||||
|
||||
#~ msgid ">"
|
||||
#~ msgstr ">"
|
||||
|
||||
#~ msgid "<"
|
||||
#~ msgstr "<"
|
||||
|
||||
#~ msgid "Up"
|
||||
#~ msgstr "Gor"
|
||||
|
||||
#~ msgid "Down"
|
||||
#~ msgstr "Dol"
|
||||
6
ZRCola/pch.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
55
ZRCola/pch.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.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 "zrcolatranseq.h"
|
||||
#include "zrcolaupdater.h"
|
||||
|
||||
#include <Updater/chkthread.h>
|
||||
|
||||
#include <wxex/common.h>
|
||||
#include <wxex/url.h>
|
||||
#include <wxex/persist/auimanager.h>
|
||||
#include <wxex/persist/toplevel.h>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/clipbrd.h>
|
||||
#include <wx/dcclient.h>
|
||||
#include <wx/ffile.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/persist.h>
|
||||
#include <wx/persist/toplevel.h>
|
||||
#include <wx/socket.h>
|
||||
#include <wx/tokenzr.h>
|
||||
#include <wx/utils.h>
|
||||
#include <wx/valtext.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#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
|
||||
6155
ZRCola/res/ZRCola.fbp
Normal file
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/composition.ico
Normal file
|
After Width: | Height: | Size: 42 KiB |
2070
ZRCola/res/composition.pdf
Normal file
BIN
ZRCola/res/copy_destination_and_return.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1698
ZRCola/res/copy_destination_and_return.pdf
Normal file
BIN
ZRCola/res/copy_source_and_return.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1718
ZRCola/res/copy_source_and_return.pdf
Normal file
4
ZRCola/res/desktop.ini
Normal file
@@ -0,0 +1,4 @@
|
||||
[ViewState]
|
||||
Mode=
|
||||
Vid=
|
||||
FolderType=Pictures
|
||||
BIN
ZRCola/res/edit_copy.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1593
ZRCola/res/edit_copy.pdf
Normal file
BIN
ZRCola/res/edit_cut.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1707
ZRCola/res/edit_cut.pdf
Normal file
BIN
ZRCola/res/edit_paste.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1727
ZRCola/res/edit_paste.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
|
Before Width: | Height: | Size: 52 KiB |
BIN
ZRCola/res/send_abort.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1702
ZRCola/res/send_abort.pdf
Normal file
BIN
ZRCola/res/send_destination.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1783
ZRCola/res/send_destination.pdf
Normal file
BIN
ZRCola/res/send_source.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
1891
ZRCola/res/send_source.pdf
Normal file
BIN
ZRCola/res/warn_pua.ico
Normal file
|
After Width: | Height: | Size: 51 KiB |
1690
ZRCola/res/warn_pua.pdf
Normal file
1272
ZRCola/res/zrcolagui.cpp
Normal file
422
ZRCola/res/zrcolagui.h
Normal file
@@ -0,0 +1,422 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#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>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/aui/aui.h>
|
||||
#include <wx/aui/auibar.h>
|
||||
#include <wx/choice.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/grid.h>
|
||||
#include <wx/checkbox.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/listbook.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaFrameBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaFrameBase : public wxFrame
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
wxID_COPY_SOURCE_AND_RETURN,
|
||||
wxID_SEND_ABORT,
|
||||
wxID_COMPOSITION_NONE,
|
||||
wxID_COMPOSITION_ZRCOLA,
|
||||
wxID_COMPOSITION_UNICODE,
|
||||
wxID_WARN_PUA,
|
||||
wxID_SETTINGS,
|
||||
wxID_TOOLBAR_EDIT,
|
||||
wxID_TOOLBAR_TRANSLATE,
|
||||
wxID_PANEL_CHRGRPS,
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
wxMenu* m_menuProgram;
|
||||
wxMenu* m_menuEdit;
|
||||
wxMenuItem* m_menuItemCompositionNone;
|
||||
wxMenuItem* m_menuItemCompositionZRCola;
|
||||
wxMenuItem* m_menuItemCompositionUnicode;
|
||||
wxMenu* m_menuTranslationSeq;
|
||||
wxMenuItem* m_menuItemWarnPUA;
|
||||
wxMenu* m_menuView;
|
||||
wxMenu* m_menuHelp;
|
||||
wxAuiToolBar* m_toolbarEdit;
|
||||
wxAuiToolBarItem* m_toolEditCut;
|
||||
wxAuiToolBarItem* m_toolEditCopy;
|
||||
wxAuiToolBarItem* m_toolEditPaste;
|
||||
wxAuiToolBar* m_toolbarTranslate;
|
||||
wxAuiToolBarItem* m_toolCharSelect;
|
||||
wxAuiToolBarItem* m_toolSendDestination;
|
||||
wxAuiToolBarItem* m_toolSendSource;
|
||||
wxChoice* m_toolComposition;
|
||||
wxChoice* m_toolTranslationSeq;
|
||||
wxAuiToolBarItem* m_toolWarnPUA;
|
||||
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(); }
|
||||
virtual void OnCompositionChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnTranslationSeqChoice( wxCommandEvent& 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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaComposerPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaComposerPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
wxPanel* m_panelSourceEdit;
|
||||
wxPanel* m_panelSourceHex;
|
||||
wxTextCtrl* m_sourceHex;
|
||||
wxSplitterWindow* m_splitterDestination;
|
||||
wxPanel* m_panelDestinationEdit;
|
||||
wxPanel* m_panelDestinationHex;
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSaveTimer( wxTimerEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
wxTextCtrl* m_source;
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterSource->SetSashPosition( -5 );
|
||||
m_splitterSource->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterSourceOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
void m_splitterDestinationOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterDestination->SetSashPosition( -5 );
|
||||
m_splitterDestination->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterDestinationOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaCharacterCatalogPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxChoice* m_choice;
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// 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(); }
|
||||
virtual void OnShowAll( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// 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_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// 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 OnInsert( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnInsertUpdateUI( wxUpdateUIEvent& 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 OnLanguageUpdate( wxUpdateUIEvent& 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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaTranslationSeqBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaTranslationSeqBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_transLbl;
|
||||
wxStaticText* m_availableLbl;
|
||||
wxListBox* m_available;
|
||||
wxButton* m_add;
|
||||
wxButton* m_remove;
|
||||
wxStaticText* m_selectedLbl;
|
||||
wxListBox* m_selected;
|
||||
wxButton* m_selectedUp;
|
||||
wxButton* m_selectedDown;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableDClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnAdd( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRemove( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedDClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedUp( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedDown( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
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"
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/zrcola.h"
|
||||
#include "zrcolaapp.h"
|
||||
#include "zrcolacomppnl.h"
|
||||
#include "zrcolafrm.h"
|
||||
|
||||
#include <zrcola/compose.h>
|
||||
#include <zrcola/decompose.h>
|
||||
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wxex/common.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
18
ZRCola/zrcolaabout.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaAbout
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaAbout::wxZRColaAbout(wxWindow* parent) : wxZRColaAboutBase(parent)
|
||||
{
|
||||
m_staticTextVersion->SetLabelText(wxT(PRODUCT_VERSION_STR));
|
||||
|
||||
m_staticTextCopyright->SetLabelText(wxString::Format(_("© 2004-%s ZRC SAZU"), wxT(PRODUCT_BUILD_YEAR_STR)));
|
||||
}
|
||||
28
ZRCola/zrcolaabout.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaAbout;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
///
|
||||
/// About ZRCola dialog
|
||||
///
|
||||
class wxZRColaAbout : public wxZRColaAboutBase
|
||||
{
|
||||
public:
|
||||
wxZRColaAbout(wxWindow* parent);
|
||||
};
|
||||
@@ -1,43 +1,187 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "pch.h"
|
||||
#if defined(__WXMSW__)
|
||||
#pragma comment(lib, "msi.lib")
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// ZRColaApp
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma warning(suppress: 28251) // wxWidgets implement WinMain without code analysis annotations.
|
||||
wxIMPLEMENT_APP(ZRColaApp);
|
||||
|
||||
|
||||
ZRColaApp::ZRColaApp() :
|
||||
m_mainWnd(NULL),
|
||||
#pragma warning(suppress: 26812) // wxLanguage is unscoped
|
||||
m_lang_ui(wxLANGUAGE_DEFAULT),
|
||||
wxApp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool ZRColaApp::OnInit()
|
||||
{
|
||||
if (!wxAppEx::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(PRODUCT_VERSION_GUID), _T("featZRCola")) != INSTALLSTATE_UNKNOWN)
|
||||
::MsiUseFeature(_T(PRODUCT_VERSION_GUID), _T("featZRCola"));
|
||||
#endif
|
||||
|
||||
// Initialize configuration.
|
||||
wxConfigBase *cfgPrev = wxConfigBase::Set(new wxConfig(wxT(PRODUCT_CFG_APPLICATION), wxT(PRODUCT_CFG_VENDOR)));
|
||||
if (cfgPrev) wxDELETE(cfgPrev);
|
||||
|
||||
if (!wxApp::OnInit())
|
||||
return false;
|
||||
|
||||
if (wxLocale::IsAvailable(wxLANGUAGE_SLOVENIAN))
|
||||
// Initialize locale.
|
||||
if (wxInitializeLocale(m_locale, &m_lang_ui)) {
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("wxExtend") wxT(wxExtendVersion)));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("UpdaterZRCola")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("libZRColaUI")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("ZRCola")));
|
||||
wxVERIFY(m_locale.AddCatalog(wxT("ZRCola-zrcdb")));
|
||||
}
|
||||
|
||||
wxZRColaFrame* mainFrame = new wxZRColaFrame();
|
||||
#ifdef __WXMSW__
|
||||
// Create global event.
|
||||
m_running.attach(::CreateEvent(NULL, FALSE, FALSE, _T(PRODUCT_CFG_APPLICATION) _T("{BBDE7AAD-29B6-4B83-ADA1-92AFA81A0883}")));
|
||||
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);
|
||||
|
||||
mainFrame->Show();
|
||||
// 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.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transet_rec::id) {
|
||||
dat >> ZRCola::transet_rec(m_ts_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation set data from ZRCola.zrcdb."));
|
||||
m_ts_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transeq_rec::id) {
|
||||
dat >> ZRCola::transeq_rec(m_tsq_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation sequence data from ZRCola.zrcdb."));
|
||||
m_tsq_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::langchar_rec::id) {
|
||||
dat >> ZRCola::langchar_rec(m_lc_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lc_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::language_rec::id) {
|
||||
dat >> ZRCola::language_rec(m_lang_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lang_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::keyseq_rec::id) {
|
||||
dat >> ZRCola::keyseq_rec(m_ks_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading key sequences data from ZRCola.zrcdb."));
|
||||
m_ks_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::character_rec::id) {
|
||||
dat >> ZRCola::character_rec(m_chr_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character data from ZRCola.zrcdb."));
|
||||
m_chr_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrcat_rec::id) {
|
||||
dat >> ZRCola::chrcat_rec(m_cc_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character category data from ZRCola.zrcdb."));
|
||||
m_cc_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrtag_rec::id) {
|
||||
dat >> ZRCola::chrtag_rec(m_ct_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character tag data from ZRCola.zrcdb."));
|
||||
m_ct_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::tagname_rec::id) {
|
||||
dat >> ZRCola::tagname_rec(m_tn_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading tag name data from ZRCola.zrcdb."));
|
||||
m_tn_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::highlight_rec::id) {
|
||||
dat >> ZRCola::highlight_rec(m_h_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading highlight data from ZRCola.zrcdb."));
|
||||
m_h_db.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."));
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb not found or cannot be opened."));
|
||||
|
||||
// Initialize sockets. Otherwise Updater thread will not work.
|
||||
wxSocketBase::Initialize();
|
||||
|
||||
m_mainWnd = new wxZRColaFrame();
|
||||
m_mainWnd->m_panel->RestoreFromStateFile();
|
||||
m_mainWnd->Show();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int ZRColaApp::OnExit()
|
||||
{
|
||||
wxSocketBase::Shutdown();
|
||||
|
||||
int res = wxApp::OnExit();
|
||||
|
||||
#ifdef __WXMSW__
|
||||
m_running.free();
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
@@ -25,20 +11,101 @@ class ZRColaApp;
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/appex.h>
|
||||
#include "zrcolafrm.h"
|
||||
#include <WinStd/Win.h>
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/app.h>
|
||||
#include <wx/config.h>
|
||||
#include <wx/intl.h>
|
||||
#pragma warning(pop)
|
||||
#include <zrcola/character.h>
|
||||
#include <zrcola/highlight.h>
|
||||
#include <zrcola/language.h>
|
||||
#include <zrcola/translate.h>
|
||||
#include <zrcola/tag.h>
|
||||
#include <zrcolaui/keyboard.h>
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola application
|
||||
///
|
||||
class ZRColaApp : public wxAppEx
|
||||
class ZRColaApp : public wxApp
|
||||
{
|
||||
public:
|
||||
ZRColaApp();
|
||||
|
||||
///
|
||||
/// 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 GetDatabaseFilePath() const;
|
||||
|
||||
public:
|
||||
ZRCola::translation_db m_t_db; ///< Translation database
|
||||
ZRCola::transet_db m_ts_db; ///< Translation set database
|
||||
ZRCola::transeq_db m_tsq_db; ///< Translation sequence 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
|
||||
ZRCola::chrtag_db m_ct_db; ///< Character tag database
|
||||
ZRCola::tagname_db m_tn_db; ///< Tag name database
|
||||
ZRCola::highlight_db m_h_db; ///< Highlight database
|
||||
|
||||
wxZRColaFrame *m_mainWnd; ///< Main window
|
||||
|
||||
wxLocale m_locale; ///< Current locale
|
||||
wxLanguage m_lang_ui; ///< Translation language (language of User Interface, wxLANGUAGE_DEFAULT = English)
|
||||
|
||||
protected:
|
||||
#ifdef __WXMSW__
|
||||
winstd::win_handle<NULL> m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
wxDECLARE_APP(ZRColaApp);
|
||||
|
||||
|
||||
inline wxString ZRColaApp::GetDatabasePath() const
|
||||
{
|
||||
wxString sPath;
|
||||
if (wxConfigBase::Get()->Read(wxT("DatabasePath"), &sPath)) {
|
||||
if (!wxEndsWithPathSeparator(sPath))
|
||||
sPath += wxFILE_SEP_PATH;
|
||||
} else {
|
||||
sPath = wxPathOnly(argv[0]);
|
||||
sPath += wxT("\\..\\data\\");
|
||||
}
|
||||
|
||||
return sPath;
|
||||
}
|
||||
|
||||
|
||||
inline wxString ZRColaApp::GetDatabaseFilePath() const
|
||||
{
|
||||
return GetDatabasePath() + wxT("ZRCola.zrcdb");
|
||||
}
|
||||
|
||||
228
ZRCola/zrcolachrcatpnl.cpp
Normal file
@@ -0,0 +1,228 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharacterCatalogPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(wxZRColaCharacterCatalogPanel, wxZRColaCharacterCatalogPanelBase)
|
||||
EVT_MENU(wxZRColaCharacterCatalogPanel::wxID_FOCUS_SOURCE, wxZRColaCharacterCatalogPanel::OnFocusSource)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
wxZRColaCharacterCatalogPanel::wxZRColaCharacterCatalogPanel(wxWindow* parent) :
|
||||
m_cg_id(0),
|
||||
wxZRColaCharacterCatalogPanelBase(parent)
|
||||
{
|
||||
std::fstream dat((LPCTSTR)dynamic_cast<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.idxRank.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."));
|
||||
} else
|
||||
wxFAIL_MSG(wxT("ZRCola.zrcdb not found or cannot be opened."));
|
||||
|
||||
if (!m_cg_db.idxRank.empty()) {
|
||||
// Populate character group list.
|
||||
for (size_t i = 0, n = m_cg_db.idxRank.size(); i < n; i++) {
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = m_cg_db.idxRank[i];
|
||||
wxString
|
||||
label(cg.name(), cg.name_len()),
|
||||
label_tran2(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_choice->Insert(label_tran2, (unsigned int)i);
|
||||
}
|
||||
m_cg_id = m_cg_db.idxRank[0].grp;
|
||||
m_choice->Select(0);
|
||||
|
||||
Update();
|
||||
}
|
||||
|
||||
// Register frame specific hotkey(s).
|
||||
{
|
||||
wxAcceleratorEntry entries[1];
|
||||
entries[0].Set(wxACCEL_NORMAL, WXK_ESCAPE, wxID_FOCUS_SOURCE);
|
||||
SetAcceleratorTable(wxAcceleratorTable(_countof(entries), entries));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxZRColaCharacterCatalogPanel::~wxZRColaCharacterCatalogPanel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnChoice(wxCommandEvent& event)
|
||||
{
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = m_cg_db.idxRank[event.GetSelection()];
|
||||
|
||||
if (m_cg_id != cg.grp) {
|
||||
m_cg_id = cg.grp;
|
||||
Update();
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnGridClick(wxGridEvent& event)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_source->WriteText(m_grid->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
app->m_mainWnd->m_panel->m_source->SetFocus();
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnGridKeyDown(wxKeyEvent& event)
|
||||
{
|
||||
switch (event.GetKeyCode()) {
|
||||
case WXK_RETURN:
|
||||
case WXK_NUMPAD_ENTER:
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_source->WriteText(m_grid->GetCellValue(m_grid->GetGridCursorRow(), m_grid->GetGridCursorCol()));
|
||||
app->m_mainWnd->m_panel->m_source->SetFocus();
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnShowAll(wxCommandEvent& event)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(event);
|
||||
|
||||
Update();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::OnFocusSource(wxCommandEvent& event)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_source->SetFocus();
|
||||
|
||||
event.StopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharacterCatalogPanel::Update()
|
||||
{
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = m_cg_db.idxRank[m_choice->GetSelection()];
|
||||
|
||||
if (m_show_all->GetValue()) {
|
||||
m_grid->SetCharacters(
|
||||
wxString(cg.chrlst(), cg.chrlst_end()),
|
||||
wxArrayShort(reinterpret_cast<const short*>(cg.chrshow()), reinterpret_cast<const short*>(cg.chrshow_end())));
|
||||
} else {
|
||||
// Select frequently used characters only.
|
||||
const wchar_t *src = cg.chrlst();
|
||||
const unsigned __int16 *shown = cg.chrshow();
|
||||
wxArrayString chars;
|
||||
for (size_t i = 0, i_end = cg.chrlst_len(), j = 0; i < i_end; j++) {
|
||||
for (unsigned __int16 k = 0, mask = shown[j]; k < 16 && i < i_end; k++, mask >>= 1) {
|
||||
size_t len = wcsnlen(src + i, i_end - i);
|
||||
if (mask & 1)
|
||||
chars.Add(wxString(src + i, len));
|
||||
i += len + 1;
|
||||
}
|
||||
}
|
||||
m_grid->SetCharacters(chars);
|
||||
}
|
||||
|
||||
// As size of the grid might have changed, relayout the panel.
|
||||
Layout();
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaCharacterCatalogPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxPersistentZRColaCharacterCatalogPanel::wxPersistentZRColaCharacterCatalogPanel(wxZRColaCharacterCatalogPanel *wnd) : wxPersistentWindow<wxZRColaCharacterCatalogPanel>(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxString wxPersistentZRColaCharacterCatalogPanel::GetKind() const
|
||||
{
|
||||
return wxT(wxPERSIST_TLW_KIND);
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharacterCatalogPanel::Save() const
|
||||
{
|
||||
auto wnd = static_cast<const wxZRColaCharacterCatalogPanel*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("charGroup"), wnd->m_cg_id);
|
||||
SaveValue(wxT("showAll" ), wnd->m_show_all->GetValue());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharacterCatalogPanel::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaCharacterCatalogPanel*>(GetWindow());
|
||||
bool update = false;
|
||||
|
||||
// Restore selected character group.
|
||||
int cg_id;
|
||||
if (RestoreValue(wxT("charGroup"), &cg_id)) {
|
||||
for (size_t i = 0, n = wnd->m_cg_db.idxRank.size(); i < n; i++) {
|
||||
const ZRCola::chrgrp_db::chrgrp &cg = wnd->m_cg_db.idxRank[i];
|
||||
if (cg.grp == cg_id) {
|
||||
if (wnd->m_cg_id != cg.grp) {
|
||||
wnd->m_cg_id = cg.grp;
|
||||
wnd->m_choice->Select((int)i);
|
||||
update = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool show_all;
|
||||
if (RestoreValue(wxT("showAll"), &show_all)) {
|
||||
if (wnd->m_show_all->GetValue() != show_all) {
|
||||
wnd->m_show_all->SetValue(show_all);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (update)
|
||||
wnd->Update();
|
||||
|
||||
return true;
|
||||
}
|
||||
75
ZRCola/zrcolachrcatpnl.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharacterCatalogPanel;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#pragma warning(pop)
|
||||
#include <zrcolaui/chargroup.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/persist/window.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola character groups panel
|
||||
///
|
||||
class wxZRColaCharacterCatalogPanel : public wxZRColaCharacterCatalogPanelBase
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
wxID_FOCUS_SOURCE = 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);
|
||||
virtual void OnShowAll(wxCommandEvent& event);
|
||||
void OnFocusSource(wxCommandEvent& event);
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
void Update();
|
||||
|
||||
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);
|
||||
}
|
||||
260
ZRCola/zrcolachrgrid.cpp
Normal file
@@ -0,0 +1,260 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.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(FromDIP(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.Clear();
|
||||
const wxCStrData chr = chars.GetData();
|
||||
for (size_t i = 0, i_end = chars.Length(), i_next; i < i_end; i = i_next + 1) {
|
||||
i_next = i + _tcsnlen(chr + i, i_end - i);
|
||||
m_chars.Add(wxString(chr + i, chr + i_next));
|
||||
};
|
||||
m_relevance.Clear();
|
||||
m_regenerate = true;
|
||||
|
||||
// Invoke OnSize(), which will populate the grid.
|
||||
wxSizeEvent e(GetSize(), m_windowId);
|
||||
e.SetEventObject(this);
|
||||
HandleWindowEvent(e);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::SetCharacters(const wxArrayString &chars)
|
||||
{
|
||||
m_chars = chars;
|
||||
m_relevance.Clear();
|
||||
m_regenerate = true;
|
||||
|
||||
// Invoke OnSize(), which will populate the grid.
|
||||
wxSizeEvent e(GetSize(), m_windowId);
|
||||
e.SetEventObject(this);
|
||||
HandleWindowEvent(e);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharGrid::SetCharacters(const wxString &chars, const wxArrayShort &relevance)
|
||||
{
|
||||
m_chars.Clear();
|
||||
const wxCStrData chr = chars.GetData();
|
||||
for (size_t i = 0, i_end = chars.Length(), i_next; i < i_end; i = i_next + 1) {
|
||||
i_next = i + _tcsnlen(chr + i, i_end - i);
|
||||
m_chars.Add(wxString(chr + i, chr + i_next));
|
||||
};
|
||||
m_relevance = relevance;
|
||||
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.GetCount(), wxT("index out of bounds"));
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
const auto &chr = m_chars[idx];
|
||||
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*chr.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, chr.data(), chr.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, start)) {
|
||||
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+%s (%s)"), ZRCola::GetUnicodeDump(chr.data(), chr.length(), _T("+")).c_str(), ks_str.c_str());
|
||||
}
|
||||
|
||||
return wxString::Format(wxT("U+%s"), ZRCola::GetUnicodeDump(chr.data(), chr.length(), _T("+")).c_str());
|
||||
}
|
||||
|
||||
|
||||
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_count = m_chars.GetCount();
|
||||
int
|
||||
col_width = FromDIP(wxZRColaCharacterGridColumnWidth),
|
||||
row_height = FromDIP(wxZRColaCharacterGridRowHeight),
|
||||
width = size.GetWidth() - m_rowLabelWidth - m_extraWidth,
|
||||
cols = std::max<int>(width / col_width, 1),
|
||||
rows = std::max<int>((int)((char_count + cols - 1) / cols), 1);
|
||||
|
||||
if (m_colLabelHeight + rows*row_height + 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 / col_width, 1);
|
||||
rows = std::max<int>((int)((char_count + 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_count ? m_chars[i] : wxEmptyString);
|
||||
SetTable(table, true);
|
||||
if (!m_relevance.IsEmpty()) {
|
||||
const wxColour colour_def;
|
||||
const wxColour colour_irr = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT);
|
||||
for (int r = 0, i = 0; r < rows; r++)
|
||||
for (int c = 0; c < cols; c++, i++)
|
||||
SetCellBackgroundColour(r, c, i >= (int)char_count || ((unsigned short)(m_relevance[i/16]) & (1<<(i%16))) ? colour_def : colour_irr);
|
||||
} else {
|
||||
for (int r = 0, i = 0; r < rows; r++)
|
||||
for (int c = 0; c < cols; c++, i++)
|
||||
SetAttr(r, c, NULL);
|
||||
}
|
||||
m_regenerate = false;
|
||||
}
|
||||
|
||||
for (int c = 0; c < cols; c++)
|
||||
SetColSize(c, col_width);
|
||||
|
||||
//// 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 = (size_t)row*m_numCols + col;
|
||||
if (toolTipIdx >= m_chars.GetCount()) {
|
||||
// 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((int)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.GetCount())
|
||||
return;
|
||||
|
||||
GetGridWindow()->SetToolTip(GetToolTipText((int)m_toolTipIdx));
|
||||
}
|
||||
114
ZRCola/zrcolachrgrid.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharGrid;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/grid.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
///
|
||||
/// 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 (zero delimited)
|
||||
///
|
||||
void SetCharacters(const wxString &chars);
|
||||
|
||||
///
|
||||
/// Sets new array of characters to display
|
||||
///
|
||||
/// \param[in] chars The array of characters to display
|
||||
///
|
||||
void SetCharacters(const wxArrayString &chars);
|
||||
|
||||
///
|
||||
/// Sets new array of characters to display
|
||||
///
|
||||
/// \param[in] chars The string containing characters to display (zero delimited)
|
||||
/// \param[in] relevance Bit-array of \p chars relevance (1=more relevant, 0=less relevant)
|
||||
///
|
||||
void SetCharacters(const wxString &chars, const wxArrayShort &relevance);
|
||||
|
||||
///
|
||||
/// Returns displayed characters
|
||||
///
|
||||
/// \returns The string containing displayed characters
|
||||
///
|
||||
inline const wxArrayString& 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(const wxString &c) const
|
||||
{
|
||||
for (size_t i = 0, n = m_chars.GetCount(); ; i++) {
|
||||
if (i >= n)
|
||||
return wxGridCellCoords(-1, -1);
|
||||
else if (m_chars[i] == c)
|
||||
return wxGridCellCoords((int)(i / m_numCols), i % m_numCols);
|
||||
}
|
||||
}
|
||||
|
||||
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:
|
||||
wxArrayString m_chars; ///< Array of Unicode characters to display in the grid
|
||||
wxArrayShort m_relevance; ///< Bit-array of `m_chars` relevance
|
||||
|
||||
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
|
||||
};
|
||||
92
ZRCola/zrcolachrreq.cpp
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.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
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaCharRequest::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaCharRequest::wxPersistentZRColaCharRequest(wxZRColaCharRequest *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharRequest::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaCharRequest*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("character"), wnd->m_character->GetValue());
|
||||
SaveValue(wxT("context"), wnd->m_context->GetValue());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharRequest::Restore()
|
||||
{
|
||||
auto wnd = dynamic_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);
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
60
ZRCola/zrcolachrreq.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharRequest;
|
||||
class wxPersistentZRColaCharRequest;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#pragma warning(pop)
|
||||
#include "zrcolakeyhndlr.h"
|
||||
#include <wxex/persist/toplevel.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 wxPersistentTLWEx
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaCharRequest(wxZRColaCharRequest *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
|
||||
protected:
|
||||
static const int s_guiLevel; ///< Persisted placements/sizing are considered incompatible between different GUI levels
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaCharRequest *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaCharRequest(wnd);
|
||||
}
|
||||
882
ZRCola/zrcolachrslct.cpp
Normal file
@@ -0,0 +1,882 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaUTF16CharValidator
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxZRColaUTF16CharValidator, wxValidator);
|
||||
|
||||
|
||||
wxZRColaUTF16CharValidator::wxZRColaUTF16CharValidator(wchar_t *val) :
|
||||
m_val(val),
|
||||
wxValidator()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxObject* wxZRColaUTF16CharValidator::Clone() const
|
||||
{
|
||||
return new wxZRColaUTF16CharValidator(*this);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::Validate(wxWindow *parent)
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
wxTextCtrl *ctrl = (wxTextCtrl*)GetWindow();
|
||||
if (!ctrl->IsEnabled()) return true;
|
||||
|
||||
wxString val(ctrl->GetValue());
|
||||
return Parse(val, 0, val.Length(), ctrl, parent);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::TransferToWindow()
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
|
||||
if (m_val)
|
||||
((wxTextCtrl*)GetWindow())->SetValue(wxString::Format(wxT("%04X"), *m_val));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::TransferFromWindow()
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
wxTextCtrl *ctrl = (wxTextCtrl*)GetWindow();
|
||||
|
||||
wxString val(ctrl->GetValue());
|
||||
return Parse(val, 0, val.Length(), ctrl, NULL, m_val);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wchar_t *val_out)
|
||||
{
|
||||
const wxStringCharType *buf = val_in;
|
||||
|
||||
wchar_t chr = 0;
|
||||
for (size_t i = i_start;;) {
|
||||
if (i >= i_end) {
|
||||
// End of Unicode found.
|
||||
if (val_out) *val_out = chr;
|
||||
return true;
|
||||
} else if (i >= i_start + 4) {
|
||||
// Maximum characters exceeded.
|
||||
ctrl->SetFocus();
|
||||
ctrl->SetSelection((int)i, (int)i_end);
|
||||
wxMessageBox(_("Too many digits in Unicode."), _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent);
|
||||
return false;
|
||||
} else if (_T('0') <= buf[i] && buf[i] <= _T('9')) {
|
||||
// Digit found.
|
||||
chr = (chr << 4) | (buf[i] - _T('0'));
|
||||
i++;
|
||||
} else if (_T('A') <= buf[i] && buf[i] <= _T('F')) {
|
||||
// Capital letter found.
|
||||
chr = (chr << 4) | (buf[i] - _T('A') + 10);
|
||||
i++;
|
||||
} else if (_T('a') <= buf[i] && buf[i] <= _T('f')) {
|
||||
// Lower letter found.
|
||||
chr = (chr << 4) | (buf[i] - _T('a') + 10);
|
||||
i++;
|
||||
} else {
|
||||
// Invalid character found.
|
||||
ctrl->SetFocus();
|
||||
ctrl->SetSelection((long)i, (long)(i + 1));
|
||||
wxMessageBox(wxString::Format(_("Invalid character in Unicode found: %c"), buf[i]), _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaUnicodeDumpValidator
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxZRColaUnicodeDumpValidator, wxValidator);
|
||||
|
||||
|
||||
wxZRColaUnicodeDumpValidator::wxZRColaUnicodeDumpValidator(wxString *val) :
|
||||
m_val(val),
|
||||
wxValidator()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxObject* wxZRColaUnicodeDumpValidator::Clone() const
|
||||
{
|
||||
return new wxZRColaUnicodeDumpValidator(*this);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUnicodeDumpValidator::Validate(wxWindow *parent)
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
wxTextCtrl *ctrl = (wxTextCtrl*)GetWindow();
|
||||
if (!ctrl->IsEnabled()) return true;
|
||||
|
||||
wxString val(ctrl->GetValue());
|
||||
return Parse(val, 0, val.Length(), ctrl, parent);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUnicodeDumpValidator::TransferToWindow()
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
|
||||
if (m_val)
|
||||
((wxTextCtrl*)GetWindow())->SetValue(ZRCola::GetUnicodeDumpW(m_val->c_str(), m_val->length(), L"+"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUnicodeDumpValidator::TransferFromWindow()
|
||||
{
|
||||
wxASSERT(GetWindow()->IsKindOf(CLASSINFO(wxTextCtrl)));
|
||||
wxTextCtrl *ctrl = (wxTextCtrl*)GetWindow();
|
||||
|
||||
wxString val(ctrl->GetValue());
|
||||
return Parse(val, 0, val.Length(), ctrl, NULL, m_val);
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUnicodeDumpValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wxString *val_out)
|
||||
{
|
||||
const wxStringCharType *buf = val_in;
|
||||
|
||||
wxString str;
|
||||
for (size_t i = i_start;;) {
|
||||
const wxStringCharType *buf_next;
|
||||
wchar_t chr;
|
||||
if ((buf_next = wmemchr(buf + i, L'+', i_end - i)) != NULL) {
|
||||
// Unicode dump separator found.
|
||||
if (!wxZRColaUTF16CharValidator::Parse(val_in, i, buf_next - buf, ctrl, parent, &chr))
|
||||
return false;
|
||||
str += chr;
|
||||
i = buf_next - buf + 1;
|
||||
} else if (wxZRColaUTF16CharValidator::Parse(val_in, i, i_end, ctrl, parent, &chr)) {
|
||||
// The rest of the FQDN parsed succesfully.
|
||||
if (chr) str += chr;
|
||||
if (val_out) *val_out = str;
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaCharSelect
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxDEFINE_EVENT(wxEVT_SEARCH_COMPLETE, wxThreadEvent);
|
||||
|
||||
|
||||
wxZRColaCharSelect::wxZRColaCharSelect(wxWindow* parent) :
|
||||
m_searchChanged(false),
|
||||
m_unicodeChanged(false),
|
||||
m_searchThread(NULL),
|
||||
wxZRColaCharSelectBase(parent)
|
||||
{
|
||||
// Set tag lookup locale.
|
||||
#pragma warning(suppress: 26812) // wxLanguage is unscoped
|
||||
wxLanguage language = dynamic_cast<ZRColaApp*>(wxTheApp)->m_lang_ui;
|
||||
if (wxLANGUAGE_DEFAULT == language ||
|
||||
wxLANGUAGE_ENGLISH <= language && language <= wxLANGUAGE_ENGLISH_ZIMBABWE) m_locale = MAKELCID(MAKELANGID(LANG_ENGLISH , SUBLANG_DEFAULT), SORT_DEFAULT);
|
||||
else if (wxLANGUAGE_RUSSIAN <= language && language <= wxLANGUAGE_RUSSIAN_UKRAINE ) m_locale = MAKELCID(MAKELANGID(LANG_RUSSIAN , SUBLANG_DEFAULT), SORT_DEFAULT);
|
||||
else if (wxLANGUAGE_SLOVENIAN == language ) m_locale = MAKELCID(MAKELANGID(LANG_SLOVENIAN, SUBLANG_DEFAULT), SORT_DEFAULT);
|
||||
else m_locale = MAKELCID(MAKELANGID(LANG_ENGLISH , SUBLANG_DEFAULT), SORT_DEFAULT);
|
||||
|
||||
Connect(wxID_ANY, wxEVT_SEARCH_COMPLETE, wxThreadEventHandler(wxZRColaCharSelect::OnSearchComplete), NULL, this);
|
||||
|
||||
m_search_more->SetLabel(_(L"▸ Search Options"));
|
||||
|
||||
m_unicode->SetValidator(wxZRColaUnicodeDumpValidator(&m_char));
|
||||
|
||||
// Fill categories.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
int idx = m_categories->Insert(wxGetTranslation(wxString(cc.name(), cc.name_len()), wxT("ZRCola-zrcdb")), (unsigned int)i);
|
||||
m_categories->Check(idx);
|
||||
m_ccOrder.insert(std::make_pair(cc.cat, idx));
|
||||
}
|
||||
|
||||
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) {
|
||||
#pragma warning(suppress: 26812) // wxThreadError is unscoped.
|
||||
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()) {
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
m_gridPreview->SetCellValue(0, 0, m_char);
|
||||
|
||||
std::unique_ptr<ZRCola::character_db::character> ch((ZRCola::character_db::character*)new char[sizeof(ZRCola::character_db::character) + sizeof(wchar_t)*m_char.length()]);
|
||||
ch->ZRCola::character_db::character::character(m_char.data(), m_char.length());
|
||||
ZRCola::character_db::indexChr::size_type ch_start;
|
||||
if (app->m_chr_db.idxChr.find(*ch, ch_start)) {
|
||||
const auto &chr = app->m_chr_db.idxChr[ch_start];
|
||||
// Update character description.
|
||||
m_description->SetValue(wxString(chr.desc(), chr.desc_len()));
|
||||
{
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*m_char.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, m_char.data(), m_char.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type ks_start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, ks_start)) {
|
||||
const auto &seq = app->m_ks_db.idxChr[ks_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);
|
||||
}
|
||||
{
|
||||
// Update character category.
|
||||
ZRCola::chrcat_db::indexChrCat::size_type cc_start;
|
||||
if (app->m_cc_db.idxChrCat.find(ZRCola::chrcat_db::chrcat(chr.cat), cc_start)) {
|
||||
const auto &cat = app->m_cc_db.idxChrCat[cc_start];
|
||||
m_category->SetValue(wxGetTranslation(wxString(cat.name(), cat.name_len()), wxT("ZRCola-zrcdb")));
|
||||
} else
|
||||
m_category->SetValue(wxEmptyString);
|
||||
}
|
||||
// Update related characters.
|
||||
m_gridRelated->SetCharacters(wxString(chr.rel(), chr.rel_end()));
|
||||
} else {
|
||||
m_description->SetValue(wxEmptyString);
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_gridRelated->ClearGrid();
|
||||
}
|
||||
|
||||
// Find character tags.
|
||||
std::list<std::wstring> tag_names;
|
||||
std::unique_ptr<ZRCola::chrtag_db::chrtag> ct((ZRCola::chrtag_db::chrtag*)new char[sizeof(ZRCola::chrtag_db::chrtag) + sizeof(wchar_t)*m_char.length()]);
|
||||
ct->ZRCola::chrtag_db::chrtag::chrtag(m_char.data(), m_char.length());
|
||||
ZRCola::chrtag_db::indexChr::size_type ct_start, ct_end;
|
||||
if (app->m_ct_db.idxChr.find(*ct, ct_start, ct_end)) {
|
||||
for (auto i = ct_start; i < ct_end; i++) {
|
||||
// Find tag names.
|
||||
ZRCola::tagname_db::indexTag::size_type tn_start, tn_end;
|
||||
if (app->m_tn_db.idxTag.find(ZRCola::tagname_db::tagname(app->m_ct_db.idxChr[i].tag, m_locale), tn_start, tn_end)) {
|
||||
for (auto j = tn_start; j < tn_end; j++) {
|
||||
const auto &tn = app->m_tn_db.idxTag[j];
|
||||
|
||||
// Add tag name to the list (prevent duplicates).
|
||||
for (auto name = tag_names.cbegin(), name_end = tag_names.cend();; ++name) {
|
||||
if (name == name_end) {
|
||||
// Add name to the list.
|
||||
tag_names.push_back(std::wstring(tn.name(), tn.name_end()));
|
||||
break;
|
||||
} else if (ZRCola::tagname_db::tagname::CompareName(m_locale, name->data(), (unsigned __int16)name->length(), tn.name(), tn.name_len()) == 0)
|
||||
// Name is already on the list.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
wxString tags;
|
||||
for (auto name = tag_names.cbegin(), name_end = tag_names.cend(); name != name_end; ++name) {
|
||||
if (!tags.empty())
|
||||
tags += _(", ");
|
||||
tags += *name;
|
||||
}
|
||||
m_tags->SetValue(tags);
|
||||
|
||||
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()) {
|
||||
auto app = dynamic_cast<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.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
if (m_categories->IsChecked((unsigned int)i))
|
||||
m_searchThread->m_cats.insert(cc.cat);
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, true);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesNone(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, false);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesInvert(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, !m_categories->IsChecked((unsigned int)i));
|
||||
|
||||
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.
|
||||
wxArrayString chars;
|
||||
chars.reserve(m_searchThread->m_hits.size());
|
||||
for (auto i = m_searchThread->m_hits.cbegin(), i_end = m_searchThread->m_hits.cend(); i != i_end; ++i)
|
||||
chars.Add(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);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnResultCellDClick(wxGridEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxString val(m_gridResults->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_buttonInsert->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->GetGridCursorRow(), m_gridResults->GetGridCursorCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_buttonInsert->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);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnRecentCellDClick(wxGridEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
wxString val(m_gridRecent->GetCellValue(event.GetRow(), event.GetCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_buttonInsert->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->GetGridCursorRow(), m_gridRecent->GetGridCursorCol()));
|
||||
if (!val.IsEmpty()) {
|
||||
NavigateTo(val);
|
||||
wxCommandEvent e(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
m_buttonInsert->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);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnInsertUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Enable(!m_char.empty());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnInsert(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
const wxArrayString &recent = m_gridRecent->GetCharacters();
|
||||
wxArrayString val;
|
||||
val.reserve(recent.GetCount() + 1);
|
||||
val.Add(m_char);
|
||||
for (size_t i = 0, n = recent.GetCount(); i < n; i++) {
|
||||
const wxString &c = recent[i];
|
||||
if (c != m_char)
|
||||
val.Add(c);
|
||||
}
|
||||
m_gridRecent->SetCharacters(val);
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
if (app->m_mainWnd) {
|
||||
app->m_mainWnd->m_panel->m_source->WriteText(m_char);
|
||||
app->m_mainWnd->m_panel->m_source->SetFocus();
|
||||
}
|
||||
|
||||
Show(false);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::ResetResults()
|
||||
{
|
||||
// Fill the results.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
size_t i, n = app->m_chr_db.idxChr.size();
|
||||
wxArrayString val;
|
||||
val.reserve(n);
|
||||
for (i = 0; i < n; i++) {
|
||||
const auto &chr = app->m_chr_db.idxChr[i];
|
||||
auto idx = m_ccOrder.find(chr.cat);
|
||||
if (idx == m_ccOrder.end() || m_categories->IsChecked(idx->second))
|
||||
val.Add(wxString(chr.chr(), chr.chr_len()));
|
||||
}
|
||||
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());
|
||||
auto cursor_next = m_historyCursor;
|
||||
++cursor_next;
|
||||
m_navigateForward->Enable(cursor_next != m_history.end());
|
||||
|
||||
if (m_unicodeChanged)
|
||||
m_unicode->GetValidator()->TransferToWindow();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::NavigateTo(const wxString &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.
|
||||
auto 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()
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
std::map<std::wstring, ZRCola::charrank_t> hits;
|
||||
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
|
||||
{
|
||||
// Search by tags: Get tags with given names. Then, get characters of found tags.
|
||||
std::map<ZRCola::tagid_t, unsigned __int16> hits_tag;
|
||||
if (!app->m_tn_db.Search(m_search.c_str(), m_parent->m_locale, hits_tag, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_ct_db.Search(hits_tag, app->m_chr_db, m_cats, hits, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
}
|
||||
|
||||
{
|
||||
// Search by description and merge results.
|
||||
std::map<std::wstring, ZRCola::charrank_t> hits_sub;
|
||||
if (!app->m_chr_db.Search(m_search.c_str(), m_cats, hits, hits_sub, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
for (auto i = hits_sub.cbegin(), i_end = hits_sub.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
auto idx = hits.find(i->first);
|
||||
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 (auto 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 (auto 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, std::wstring>), 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
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaCharSelect::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaCharSelect::wxPersistentZRColaCharSelect(wxZRColaCharSelect *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaCharSelect::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaCharSelect*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
wxString str, str2;
|
||||
auto &recent = wnd->m_gridRecent->GetCharacters();
|
||||
for (size_t i = 0, n = recent.GetCount(); i < n; i++) {
|
||||
if (i) str2 += wxT('|');
|
||||
auto &chr = recent[i];
|
||||
for (size_t j = 0, m = chr.Length(); j < m; j++) {
|
||||
if (j) str2 += wxT('+');
|
||||
str2 += wxString::Format(wxT("%04X"), chr[j]);
|
||||
}
|
||||
if (chr.Length() == 1)
|
||||
str += chr[0];
|
||||
}
|
||||
SaveValue(wxT("recentChars" ), str ); // Save in legacy format for backward compatibility.
|
||||
SaveValue(wxT("recentChars2"), str2); // Save in native format
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
SaveValue(name, wnd->m_categories->IsChecked((unsigned int)i));
|
||||
}
|
||||
|
||||
SaveValue(wxT("searchPanel"), wnd->m_search_panel->IsShown());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaCharSelect::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaCharSelect*>(GetWindow());
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
wxString str;
|
||||
if (RestoreValue(wxT("recentChars2"), &str)) {
|
||||
// Native format found.
|
||||
wxArrayString val;
|
||||
for (wxStringTokenizer tok(str, wxT("|")); tok.HasMoreTokens(); ) {
|
||||
wxString chr;
|
||||
for (wxStringTokenizer tok_chr(tok.GetNextToken(), wxT("+")); tok_chr.HasMoreTokens(); )
|
||||
chr += (wchar_t)_tcstoul(tok_chr.GetNextToken().c_str(), NULL, 16);
|
||||
val.Add(chr);
|
||||
}
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
} else if (RestoreValue(wxT("recentChars"), &str)) {
|
||||
// Legacy value found.
|
||||
wxArrayString val;
|
||||
for (size_t i = 0, n = str.Length(); i < n; i++)
|
||||
val.Add(wxString(1, str[i]));
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
}
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
bool val;
|
||||
if (RestoreValue(name, &val))
|
||||
wnd->m_categories->Check((unsigned int)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();
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
234
ZRCola/zrcolachrslct.h
Normal file
@@ -0,0 +1,234 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaCharSelect;
|
||||
class wxPersistentZRColaCharSelect;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#pragma warning(pop)
|
||||
#include <zrcola/character.h>
|
||||
#include <wxex/persist/toplevel.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/validate.h>
|
||||
#include <wx/event.h>
|
||||
#include <wx/thread.h>
|
||||
#pragma warning(pop)
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
||||
///
|
||||
/// Validator for Unicode character
|
||||
///
|
||||
class wxZRColaUTF16CharValidator : public wxValidator
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Construct the validator with a value to store data
|
||||
///
|
||||
wxZRColaUTF16CharValidator(wchar_t *val = NULL);
|
||||
|
||||
///
|
||||
/// Copies this validator
|
||||
///
|
||||
virtual wxObject* Clone() const;
|
||||
|
||||
///
|
||||
/// Validates the value
|
||||
///
|
||||
virtual bool Validate(wxWindow *parent);
|
||||
|
||||
///
|
||||
/// Transfers the value to the window
|
||||
///
|
||||
virtual bool TransferToWindow();
|
||||
|
||||
///
|
||||
/// Transfers the value from the window
|
||||
///
|
||||
virtual bool TransferFromWindow();
|
||||
|
||||
///
|
||||
/// Parses FQDN value
|
||||
///
|
||||
static bool Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wchar_t *val_out = NULL);
|
||||
|
||||
protected:
|
||||
wchar_t *m_val; ///< Pointer to variable to receive control's parsed value
|
||||
|
||||
private:
|
||||
wxDECLARE_DYNAMIC_CLASS(wxZRColaUTF16CharValidator);
|
||||
wxDECLARE_NO_ASSIGN_CLASS(wxZRColaUTF16CharValidator);
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Validator for Unicode dump
|
||||
///
|
||||
class wxZRColaUnicodeDumpValidator : public wxValidator
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Construct the validator with a value to store data
|
||||
///
|
||||
wxZRColaUnicodeDumpValidator(wxString *val = NULL);
|
||||
|
||||
///
|
||||
/// Copies this validator
|
||||
///
|
||||
virtual wxObject* Clone() const;
|
||||
|
||||
///
|
||||
/// Validates the value
|
||||
///
|
||||
virtual bool Validate(wxWindow *parent);
|
||||
|
||||
///
|
||||
/// Transfers the value to the window
|
||||
///
|
||||
virtual bool TransferToWindow();
|
||||
|
||||
///
|
||||
/// Transfers the value from the window
|
||||
///
|
||||
virtual bool TransferFromWindow();
|
||||
|
||||
///
|
||||
/// Parses Unicode dump value
|
||||
///
|
||||
static bool Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wxString *val_out = NULL);
|
||||
|
||||
protected:
|
||||
wxString *m_val; ///< Pointer to variable to receive control's parsed value
|
||||
|
||||
private:
|
||||
wxDECLARE_DYNAMIC_CLASS(wxZRColaUnicodeDumpValidator);
|
||||
wxDECLARE_NO_ASSIGN_CLASS(wxZRColaUnicodeDumpValidator);
|
||||
};
|
||||
|
||||
|
||||
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 OnInsertUpdateUI(wxUpdateUIEvent& event);
|
||||
virtual void OnInsert(wxCommandEvent& event);
|
||||
|
||||
void ResetResults();
|
||||
void NavigateBy(int offset);
|
||||
void NavigateTo(const wxString &c);
|
||||
|
||||
public:
|
||||
wxString m_char; ///< Currently selected character (empty when none)
|
||||
|
||||
protected:
|
||||
LCID m_locale; ///< Locale for tag lookup
|
||||
bool m_searchChanged; ///< Did Search field or category selection change?
|
||||
std::map<ZRCola::chrcatid_t, int> m_ccOrder; ///< Character category order
|
||||
bool m_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, std::wstring> > m_hits; ///< Search results
|
||||
|
||||
protected:
|
||||
wxZRColaCharSelect *m_parent; ///< Thread owner
|
||||
} *m_searchThread; ///< Search thread
|
||||
|
||||
|
||||
///
|
||||
/// Navigation state
|
||||
///
|
||||
struct NavigationState
|
||||
{
|
||||
std::wstring 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 wxPersistentTLWEx
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaCharSelect(wxZRColaCharSelect *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
|
||||
protected:
|
||||
static const int s_guiLevel; ///< Persisted placements/sizing are considered incompatible between different GUI levels
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaCharSelect *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaCharSelect(wnd);
|
||||
}
|
||||
@@ -1,23 +1,9 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -25,108 +11,463 @@
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaComposerPanel::wxZRColaComposerPanel(wxWindow* parent) :
|
||||
m_progress(false),
|
||||
m_selDecomposed(0, 0),
|
||||
m_selComposed(0, 0),
|
||||
m_sourceChanged(false),
|
||||
m_destinationChanged(false),
|
||||
m_sourceRestyled(false),
|
||||
m_destinationRestyled(false),
|
||||
m_styleNormal(*wxBLACK, *wxWHITE, wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("ZRCola"))),
|
||||
m_stylePUA(*wxBLUE, *wxWHITE, wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("ZRCola"))),
|
||||
m_styleZRColaUnicodeComposedIssues(*wxRED, *wxWHITE, wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("ZRCola"))),
|
||||
m_selSource(0, 0),
|
||||
m_selDestination(0, 0),
|
||||
wxZRColaComposerPanelBase(parent)
|
||||
{
|
||||
// RichEdit control has no inner margins by default.
|
||||
m_source->SetMargins(FromDIP(wxPoint(5, 2)));
|
||||
m_destination->SetMargins(FromDIP(wxPoint(5, 2)));
|
||||
|
||||
m_source->PushEventHandler(&m_keyhandler);
|
||||
}
|
||||
|
||||
|
||||
wxZRColaComposerPanel::~wxZRColaComposerPanel()
|
||||
{
|
||||
m_source->PopEventHandler();
|
||||
|
||||
// This is a controlled exit. Purge saved state.
|
||||
wxString fileName(GetStateFileName());
|
||||
if (wxFileExists(fileName))
|
||||
wxRemoveFile(fileName);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDecomposedPaint(wxPaintEvent& event)
|
||||
void wxZRColaComposerPanel::RestoreFromStateFile()
|
||||
{
|
||||
// Restore the previously saved state (if exists).
|
||||
wxString fileName(GetStateFileName());
|
||||
if (wxFileExists(fileName)) {
|
||||
wxFFile file(fileName, wxT("rb"));
|
||||
if (file.IsOpened()) {
|
||||
// Load source text.
|
||||
unsigned __int64 n;
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString source;
|
||||
file.Read(wxStringBuffer(source, (size_t)n), sizeof(wchar_t)*(size_t)n);
|
||||
if (!file.Error()) {
|
||||
// Load destination text.
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString destination;
|
||||
file.Read(wxStringBuffer(destination, (size_t)n), sizeof(wchar_t)*(size_t)n);
|
||||
if (!file.Error()) {
|
||||
// Restore state.
|
||||
m_source->SetValue(source);
|
||||
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
||||
SetHexValue(m_sourceHex, m_selSourceHex, m_mappingSourceHex, source.GetData(), source.Length(), m_selSource.first, m_selSource.second);
|
||||
m_sourceChanged = false;
|
||||
|
||||
m_destination->SetValue(destination);
|
||||
m_destination->GetSelection(&m_selDestination.first, &m_selDestination.second);
|
||||
SetHexValue(m_destinationHex, m_selDestinationHex, m_mappingDestinationHex, destination.GetData(), destination.Length(), m_selDestination.first, m_selDestination.second);
|
||||
m_destinationChanged = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::SynchronizePanels()
|
||||
{
|
||||
if (m_sourceChanged) {
|
||||
m_timerSave.Stop();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
wxString src = m_source->GetValue();
|
||||
size_t len = src.Length();
|
||||
std::wstring dst(src.data(), len), dst2;
|
||||
ZRCola::mapping_vector map;
|
||||
|
||||
m_mapping.clear();
|
||||
|
||||
if (app->m_mainWnd->m_composition) {
|
||||
// ZRCola decompose first, then re-compose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
|
||||
app->m_t_db.Translate(app->m_mainWnd->m_composition_id, dst2.data(), dst2.size(), dst, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
}
|
||||
|
||||
// Other translations
|
||||
const ZRCola::transetid_t *sets_begin, *sets_end;
|
||||
GetTranslationSeq(sets_begin, sets_end);
|
||||
for (auto s = sets_begin; s != sets_end; ++s) {
|
||||
app->m_t_db.Translate(*s, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
dst = std::move(dst2);
|
||||
}
|
||||
|
||||
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
||||
|
||||
// Update source HEX dump.
|
||||
SetHexValue(m_sourceHex, m_selSourceHex, m_mappingSourceHex, src.data(), len, m_selSource.first, m_selSource.second);
|
||||
|
||||
// Update destination text, and its HEX dump.
|
||||
m_destination->SetValue(dst);
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(m_selSource.first ),
|
||||
m_selDestination.second = (long)MapToDestination(m_selSource.second));
|
||||
SetHexValue(m_destinationHex, m_selDestinationHex, m_mappingDestinationHex, dst.data(), dst.length(), m_selDestination.first, m_selDestination.second);
|
||||
|
||||
// Schedule state save after 3s.
|
||||
m_timerSave.Start(3000, true);
|
||||
} else if (m_destinationChanged) {
|
||||
m_timerSave.Stop();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
wxString src = m_destination->GetValue();
|
||||
size_t len = src.Length();
|
||||
std::wstring dst(src.data(), len), dst2;
|
||||
ZRCola::mapping_vector map;
|
||||
|
||||
m_mapping.clear();
|
||||
|
||||
// Other translations
|
||||
const ZRCola::transetid_t *sets_begin, *sets_end;
|
||||
GetTranslationSeq(sets_begin, sets_end);
|
||||
for (auto s = sets_end; (s--) != sets_begin;) {
|
||||
app->m_t_db.TranslateInv(*s, dst.data(), dst.size(), dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
|
||||
map.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
}
|
||||
|
||||
if (app->m_mainWnd->m_composition) {
|
||||
// ZRCola decompose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), &app->m_lc_db, app->m_mainWnd->m_settings->m_lang, dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
|
||||
map.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
}
|
||||
|
||||
m_destination->GetSelection(&m_selDestination.first, &m_selDestination.second);
|
||||
|
||||
// Update destination HEX dump.
|
||||
SetHexValue(m_destinationHex, m_selDestinationHex, m_mappingDestinationHex, src.data(), len, m_selDestination.first, m_selDestination.second);
|
||||
|
||||
// Update source text, and its HEX dump.
|
||||
m_source->SetValue(dst);
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(m_selDestination.first ),
|
||||
m_selSource.second = (long)MapToSource(m_selDestination.second));
|
||||
SetHexValue(m_sourceHex, m_selSourceHex, m_mappingSourceHex, dst.data(), dst.length(), m_selSource.first, m_selSource.second);
|
||||
|
||||
// Schedule state save after 3s.
|
||||
m_timerSave.Start(3000, true);
|
||||
}
|
||||
|
||||
m_sourceChanged = false;
|
||||
m_destinationChanged = false;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnSourcePaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_sourceRestyled)
|
||||
return;
|
||||
|
||||
long from, to;
|
||||
m_source->GetSelection(&from, &to);
|
||||
|
||||
if (m_selSource.first != from || m_selSource.second != to) {
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selSource.first = from;
|
||||
m_selSource.second = to;
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(from),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(from),
|
||||
m_selDestination.second = (long)MapToDestination(to ));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnSourceHexPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
long from, to;
|
||||
m_decomposed->GetSelection(&from, &to);
|
||||
m_sourceHex->GetSelection(&from, &to);
|
||||
|
||||
if (m_selDecomposed.first != from || m_selDecomposed.second != to) {
|
||||
if (m_selSourceHex.first != from || m_selSourceHex.second != to) {
|
||||
// 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_selSourceHex.first = from;
|
||||
m_selSourceHex.second = to;
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)m_mappingSourceHex.to_src(from),
|
||||
m_selSource.second = (long)m_mappingSourceHex.to_src(to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(m_selSource.first ),
|
||||
m_selDestination.second = (long)MapToDestination(m_selSource.second));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDecomposedText(wxCommandEvent& event)
|
||||
void wxZRColaComposerPanel::OnSourceText(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;
|
||||
ZRCola::Compose(src.data(), src.size(), dst, &m_mapping);
|
||||
if (m_sourceRestyled)
|
||||
return;
|
||||
|
||||
long from, to;
|
||||
m_decomposed->GetSelection(&from, &to);
|
||||
// Set the flag the source text changed to trigger idle-time translation.
|
||||
m_sourceChanged = true;
|
||||
|
||||
// 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;
|
||||
m_sourceRestyled = true;
|
||||
m_source->SetStyle(0, GetWindowTextLength(m_source->GetHWND()), m_styleNormal);
|
||||
m_sourceRestyled = false;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnDestinationPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
if (m_destinationRestyled)
|
||||
return;
|
||||
|
||||
long from, to;
|
||||
m_destination->GetSelection(&from, &to);
|
||||
|
||||
if (m_selDestination.first != from || m_selDestination.second != to) {
|
||||
// Save new selection first, to avoid loop.
|
||||
m_selDestination.first = from;
|
||||
m_selDestination.second = to;
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(from),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(from),
|
||||
m_selSource.second = (long)MapToSource(to ));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnComposedPaint(wxPaintEvent& event)
|
||||
void wxZRColaComposerPanel::OnDestinationHexPaint(wxPaintEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
long from, to;
|
||||
m_composed->GetSelection(&from, &to);
|
||||
m_destinationHex->GetSelection(&from, &to);
|
||||
|
||||
if (m_selComposed.first != from || m_selComposed.second != to) {
|
||||
if (m_selDestinationHex.first != from || m_selDestinationHex.second != to) {
|
||||
// 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_selDestinationHex.first = from;
|
||||
m_selDestinationHex.second = to;
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)m_mappingDestinationHex.to_src(from),
|
||||
m_selDestination.second = (long)m_mappingDestinationHex.to_src(to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(m_selDestination.first ),
|
||||
m_selSource.second = (long)MapToSource(m_selDestination.second));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnComposedText(wxCommandEvent& event)
|
||||
void wxZRColaComposerPanel::OnDestinationText(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;
|
||||
ZRCola::Decompose(src.data(), src.size(), dst, &m_mapping);
|
||||
if (m_destinationRestyled)
|
||||
return;
|
||||
|
||||
long from, to;
|
||||
m_composed->GetSelection(&from, &to);
|
||||
// Set the flag the destination text changed to trigger idle-time inverse translation.
|
||||
m_destinationChanged = true;
|
||||
|
||||
// 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;
|
||||
}
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_destinationRestyled = true;
|
||||
wxString src = m_destination->GetValue();
|
||||
app->m_h_db.Highlight(src, src.Length(), [this, app, src](ZRCola::hlghtsetid_t set, size_t start, size_t end) {
|
||||
switch (set) {
|
||||
case ZRCOLA_HLGHTSETID_ZRCOLA_UNICODE_COMPOSED_ISSUES:
|
||||
m_destination->SetStyle((long)start, (long)end, m_styleZRColaUnicodeComposedIssues);
|
||||
break;
|
||||
|
||||
default:
|
||||
if (app->m_mainWnd->m_warnPUA) {
|
||||
for (size_t i = start, j; i < end;) {
|
||||
bool pua_i = ZRCola::ispua(src[i]);
|
||||
for (j = i + 1; j < end && pua_i == ZRCola::ispua(src[j]); j++);
|
||||
m_destination->SetStyle((long)i, (long)j, pua_i ? m_stylePUA : m_styleNormal);
|
||||
i = j;
|
||||
}
|
||||
} else
|
||||
m_destination->SetStyle((long)start, (long)end, m_styleNormal);
|
||||
}
|
||||
});
|
||||
m_destinationRestyled = false;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaComposerPanel::OnSaveTimer(wxTimerEvent& event)
|
||||
{
|
||||
wxString fileName(GetStateFileName());
|
||||
wxFFile file(fileName, wxT("wb"));
|
||||
if (file.IsOpened()) {
|
||||
{
|
||||
// Save source text.
|
||||
wxString text = m_source->GetValue();
|
||||
size_t len = text.Length();
|
||||
file.Write(&len, sizeof(len));
|
||||
file.Write((const wchar_t*)text, sizeof(wchar_t)*len);
|
||||
}
|
||||
|
||||
{
|
||||
// Save destination text.
|
||||
wxString text = m_destination->GetValue();
|
||||
size_t len = text.Length();
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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') {
|
||||
hex += L"\r\n";
|
||||
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 = (long)mapping.to_dst(from),
|
||||
range.second = (long)mapping.to_dst(to ));
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaComposerPanel
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaComposerPanel::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaComposerPanel::wxPersistentZRColaComposerPanel(wxZRColaComposerPanel *wnd) : wxPersistentWindow<wxZRColaComposerPanel>(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxString wxPersistentZRColaComposerPanel::GetKind() const
|
||||
{
|
||||
return wxT(wxPERSIST_TLW_KIND);
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaComposerPanel::Save() const
|
||||
{
|
||||
auto wnd = static_cast<wxZRColaComposerPanel*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("guiLevel" ), s_guiLevel);
|
||||
SaveValue(wxT("dpiX" ), wxClientDC(wnd).GetPPI().x);
|
||||
SaveValue(wxT("splitDecomposed"), wnd->m_splitterSource ->GetSashPosition());
|
||||
SaveValue(wxT("splitComposed" ), wnd->m_splitterDestination->GetSashPosition());
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaComposerPanel::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaComposerPanel*>(GetWindow());
|
||||
|
||||
int guiLevel;
|
||||
if (!RestoreValue(wxT("guiLevel"), &guiLevel) || guiLevel != s_guiLevel)
|
||||
return true;
|
||||
|
||||
int dpiHorz = wxClientDC(wnd).GetPPI().x;
|
||||
int dpiHorzVal;
|
||||
int sashVal;
|
||||
|
||||
if (!RestoreValue(wxT("dpiX"), &dpiHorzVal))
|
||||
dpiHorzVal = 96;
|
||||
|
||||
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_splitterSource->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterSourceOnIdle ), NULL, wnd );
|
||||
wnd->m_splitterSource->SetSashPosition(wxMulDivInt32(sashVal, dpiHorz, dpiHorzVal));
|
||||
}
|
||||
|
||||
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_splitterDestination->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterDestinationOnIdle ), NULL, wnd );
|
||||
wnd->m_splitterDestination->SetSashPosition(wxMulDivInt32(sashVal, dpiHorz, dpiHorzVal));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
///
|
||||
@@ -25,9 +11,19 @@ class wxZRColaComposerPanel;
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#include <zrcola/common.h>
|
||||
#pragma warning(pop)
|
||||
#include "zrcolakeyhndlr.h"
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/persist/window.h>
|
||||
#include <wx/timer.h>
|
||||
#pragma warning(pop)
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
|
||||
///
|
||||
@@ -39,19 +35,108 @@ public:
|
||||
wxZRColaComposerPanel(wxWindow* parent);
|
||||
virtual ~wxZRColaComposerPanel();
|
||||
|
||||
// Allow main frame direct access to our members.
|
||||
friend class wxZRColaFrame;
|
||||
void RestoreFromStateFile();
|
||||
void SynchronizePanels();
|
||||
|
||||
friend class wxPersistentZRColaComposerPanel; // Allow saving/restoring window state.
|
||||
|
||||
protected:
|
||||
virtual void OnDecomposedPaint(wxPaintEvent& event);
|
||||
virtual void OnDecomposedText(wxCommandEvent& event);
|
||||
virtual void OnComposedPaint(wxPaintEvent& event);
|
||||
virtual void OnComposedText(wxCommandEvent& event);
|
||||
virtual void OnSourcePaint(wxPaintEvent& event);
|
||||
virtual void OnSourceHexPaint(wxPaintEvent& event);
|
||||
virtual void OnSourceText(wxCommandEvent& event);
|
||||
virtual void OnDestinationPaint(wxPaintEvent& event);
|
||||
virtual void OnDestinationHexPaint(wxPaintEvent& event);
|
||||
virtual void OnDestinationText(wxCommandEvent& event);
|
||||
virtual void OnSaveTimer(wxTimerEvent& event);
|
||||
inline size_t MapToDestination(_In_ size_t src) const;
|
||||
inline size_t MapToSource(_In_ size_t dst) const;
|
||||
inline void GetTranslationSeq(_Out_ const ZRCola::transetid_t *&sets_begin, _Out_ const ZRCola::transetid_t *&sets_end) const;
|
||||
|
||||
static wxString GetStateFileName();
|
||||
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:
|
||||
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_sourceChanged; ///< Boolean flag to mark source text "dirty" to trigger translation
|
||||
bool m_destinationChanged; ///< Boolean flag to mark destination text "dirty" to trigger inverse translation
|
||||
volatile bool
|
||||
m_sourceRestyled, ///< Boolean flag to mark source text is being restyled
|
||||
m_destinationRestyled; ///< Boolean flag to mark destination text is being restyled
|
||||
wxTextAttr
|
||||
m_styleNormal, ///< Normal text style
|
||||
m_stylePUA, ///< PUA character text style
|
||||
m_styleZRColaUnicodeComposedIssues; ///< ZRCola Unicode Composed issues character text style
|
||||
std::vector<ZRCola::mapping_vector> m_mapping; ///< Character index mapping vector between source and normalized 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
|
||||
m_selSource, ///< Character index of selected text in source text control
|
||||
m_selSourceHex, ///< Character index of selected text in source HEX dump text control
|
||||
m_selDestination, ///< Character index of selected text in destination text control
|
||||
m_selDestinationHex; ///< Character index of selected text in destination HEX dump text control
|
||||
wxZRColaKeyHandler m_keyhandler; ///< Key handler for source window
|
||||
ZRCola::mapping_vector m_mappingSourceHex; ///< Character index mapping vector between source text and its HEX dump
|
||||
ZRCola::mapping_vector m_mappingDestinationHex; ///< Character index mapping vector between destination 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();
|
||||
|
||||
protected:
|
||||
static const int s_guiLevel; ///< Persisted placements/sizing are considered incompatible between different GUI levels
|
||||
};
|
||||
|
||||
|
||||
inline size_t wxZRColaComposerPanel::MapToDestination(_In_ size_t src) const
|
||||
{
|
||||
for (auto m = m_mapping.cbegin(), m_end = m_mapping.cend(); m != m_end; ++m)
|
||||
src = m->to_dst(src);
|
||||
|
||||
return src;
|
||||
}
|
||||
|
||||
|
||||
inline size_t wxZRColaComposerPanel::MapToSource(_In_ size_t dst) const
|
||||
{
|
||||
for (auto m = m_mapping.crbegin(), m_end = m_mapping.crend(); m != m_end; ++m)
|
||||
dst = m->to_src(dst);
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
||||
inline void wxZRColaComposerPanel::GetTranslationSeq(_Out_ const ZRCola::transetid_t *&sets_begin, _Out_ const ZRCola::transetid_t *&sets_end) const
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
|
||||
if (app->m_mainWnd->m_transeq_id == ZRCOLA_TRANSEQID_DEFAULT) {
|
||||
sets_begin = NULL;
|
||||
sets_end = NULL;
|
||||
} else if (app->m_mainWnd->m_transeq_id == ZRCOLA_TRANSEQID_CUSTOM) {
|
||||
sets_begin = app->m_mainWnd->m_transeq->m_transeq.data();
|
||||
sets_end = sets_begin + app->m_mainWnd->m_transeq->m_transeq.size();
|
||||
} else {
|
||||
size_t start;
|
||||
if (app->m_tsq_db.idxTranSeq.find(ZRCola::transeq_db::transeq(app->m_mainWnd->m_transeq_id), start)) {
|
||||
const auto &ts = app->m_tsq_db.idxTranSeq[start];
|
||||
sets_begin = ts.sets();
|
||||
sets_end = ts.sets_end();
|
||||
} else {
|
||||
sets_begin = NULL;
|
||||
sets_end = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaComposerPanel *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaComposerPanel(wnd);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -25,111 +11,238 @@
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxBEGIN_EVENT_TABLE(wxZRColaFrame, wxZRColaFrameBase)
|
||||
EVT_UPDATE_UI_RANGE(wxZRColaFrame::wxID_SEND, wxZRColaFrame::wxID_SEND_DECOMPOSED, wxZRColaFrame::OnSendUpdate)
|
||||
EVT_MENU (wxID_EXIT , wxZRColaFrame::OnExit )
|
||||
|
||||
EVT_MENU(wxZRColaFrame::wxID_SEND , wxZRColaFrame::OnSend )
|
||||
EVT_MENU(wxZRColaFrame::wxID_SEND_COMPOSED , wxZRColaFrame::OnSendComposed )
|
||||
EVT_MENU(wxZRColaFrame::wxID_SEND_DECOMPOSED , wxZRColaFrame::OnSendDecomposed )
|
||||
EVT_MENU(wxZRColaFrame::wxID_SEND_ABORT , wxZRColaFrame::OnSendAbort )
|
||||
EVT_MENU( wxID_EXIT , wxZRColaFrame::OnExit )
|
||||
EVT_MENU( wxID_INSERT_GRAVE , wxZRColaFrame::OnInsertGrave )
|
||||
EVT_MENU( wxID_INSERT_ACUTE , wxZRColaFrame::OnInsertAcute )
|
||||
EVT_MENU( wxID_INSERT_CIRCUMFLEX , wxZRColaFrame::OnInsertCircumflex )
|
||||
EVT_MENU( wxID_INSERT_INV_BREVE_BELOW, wxZRColaFrame::OnInsertInvertedBreveBelow)
|
||||
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_UPDATE_UI (wxID_CHARACTER_SELECTOR , wxZRColaFrame::OnInsertCharacterUpdate )
|
||||
EVT_MENU (wxID_CHARACTER_SELECTOR , wxZRColaFrame::OnInsertCharacter )
|
||||
|
||||
EVT_UPDATE_UI_RANGE(wxID_SEND_DESTINATION , wxID_SEND_ABORT , wxZRColaFrame::OnSendUpdate )
|
||||
EVT_MENU (wxID_COPY_DESTINATION_AND_RETURN , wxZRColaFrame::OnCopyDestinationAndReturn )
|
||||
EVT_MENU (wxID_SEND_DESTINATION , wxZRColaFrame::OnSendDestination )
|
||||
EVT_MENU (wxID_COPY_SOURCE_AND_RETURN , wxZRColaFrame::OnCopySourceAndReturn )
|
||||
EVT_MENU (wxID_SEND_SOURCE , wxZRColaFrame::OnSendSource )
|
||||
EVT_MENU (wxID_SEND_ABORT , wxZRColaFrame::OnSendAbort )
|
||||
|
||||
EVT_MENU (wxID_COMPOSITION_NONE , wxZRColaFrame::OnCompositionNone )
|
||||
EVT_MENU (wxID_COMPOSITION_ZRCOLA , wxZRColaFrame::OnCompositionZRCola )
|
||||
EVT_MENU (wxID_COMPOSITION_UNICODE , wxZRColaFrame::OnCompositionUnicode )
|
||||
EVT_MENU (wxID_WARN_PUA , wxZRColaFrame::OnWarnPUA )
|
||||
EVT_MENU_RANGE (wxID_TRANSLATION_SEQ_DEFAULT, wxID_TRANSLATION_SEQ_END, wxZRColaFrame::OnTranslationSeqMenu )
|
||||
|
||||
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_TRANSLATE , wxZRColaFrame::OnToolbarTranslateUpdate )
|
||||
EVT_MENU (wxID_TOOLBAR_TRANSLATE , wxZRColaFrame::OnToolbarTranslate )
|
||||
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()
|
||||
|
||||
|
||||
const int wxZRColaFrame::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxZRColaFrame::wxZRColaFrame() :
|
||||
m_hWndSource(NULL),
|
||||
m_hotkey(-1),
|
||||
m_wasIconised(false),
|
||||
m_chrSelect(NULL),
|
||||
m_settings(NULL),
|
||||
m_chrReq(NULL),
|
||||
m_composition(true),
|
||||
m_composition_id(ZRCOLA_TRANSETID_DEFAULT),
|
||||
m_warnPUA(false),
|
||||
m_transeq_id(ZRCOLA_TRANSEQID_DEFAULT),
|
||||
m_transeq(NULL),
|
||||
wxZRColaFrameBase(NULL)
|
||||
{
|
||||
{
|
||||
// wxFrameBuilder 3.5 does not support wxAUI_TB_HORIZONTAL flag. Add it manually.
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarTranslate);
|
||||
paneInfo.LeftDockable(false);
|
||||
paneInfo.RightDockable(false);
|
||||
m_toolbarTranslate->SetWindowStyleFlag(m_toolbarTranslate->GetWindowStyleFlag() | wxAUI_TB_HORIZONTAL);
|
||||
}
|
||||
|
||||
// Populate list of translation sequences.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_toolTranslationSeq->Clear();
|
||||
{
|
||||
wxString name_tran(_("No Translation"));
|
||||
m_menuTranslationSeq->AppendRadioItem(wxID_TRANSLATION_SEQ_DEFAULT, name_tran);
|
||||
m_toolTranslationSeq->Append(name_tran, reinterpret_cast<void*>(ZRCOLA_TRANSEQID_DEFAULT));
|
||||
}
|
||||
for (size_t i = 0, n = app->m_tsq_db.idxRank.size(); ; i++) {
|
||||
if (i < n) {
|
||||
const ZRCola::transeq_db::transeq &ts = app->m_tsq_db.idxRank[i];
|
||||
wxString
|
||||
name(ts.name(), ts.name_len()),
|
||||
name_tran(wxGetTranslation(name, wxT("ZRCola-zrcdb")));
|
||||
m_menuTranslationSeq->AppendRadioItem((int)(wxID_TRANSLATION_SEQ_START + i), name_tran);
|
||||
m_toolTranslationSeq->Append(name_tran, reinterpret_cast<void*>(ts.seq));
|
||||
} else {
|
||||
wxString name_tran(_("Custom Translation..."));
|
||||
m_menuTranslationSeq->AppendRadioItem((int)(wxID_TRANSLATION_SEQ_START + i), name_tran);
|
||||
m_toolTranslationSeq->Append(name_tran, reinterpret_cast<void*>(ZRCOLA_TRANSEQID_CUSTOM));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 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_panel->m_decomposed->SetFocus();
|
||||
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_taskBarIcon = NULL;
|
||||
}
|
||||
|
||||
// Register global hotkey(s).
|
||||
if (!RegisterHotKey(wxZRColaHKID_INVOKE_COMPOSE, MOD_WIN, 'Z'))
|
||||
wxMessageBox(_("ZRCola keyboard shortcut Win+Z could not be registered. Some functionality will not be available."), _("Warning"), wxOK | wxICON_WARNING);
|
||||
if (!RegisterHotKey(wxZRColaHKID_INVOKE_DECOMPOSE, MOD_WIN | MOD_SHIFT, 'Z'))
|
||||
wxMessageBox(_("ZRCola keyboard shortcut Win+Shift+Z could not be registered. Some functionality will not be available."), _("Warning"), wxOK | wxICON_WARNING);
|
||||
wxPersistenceManager &persist_mgr = wxPersistenceManager::Get();
|
||||
|
||||
m_settings = new wxZRColaSettings(this);
|
||||
persist_mgr.RegisterAndRestore(m_settings, new wxPersistentZRColaSettings(m_settings));
|
||||
|
||||
m_transeq = new wxZRColaTranslationSeq(this);
|
||||
persist_mgr.RegisterAndRestore(m_transeq, new wxPersistentZRColaTranslationSeq(m_transeq));
|
||||
|
||||
m_chrSelect = new wxZRColaCharSelect(this);
|
||||
persist_mgr.RegisterAndRestore(m_chrSelect, new wxPersistentZRColaCharSelect(m_chrSelect));
|
||||
|
||||
m_chrReq = new wxZRColaCharRequest(this);
|
||||
persist_mgr.RegisterAndRestore(m_chrReq, new wxPersistentZRColaCharRequest(m_chrReq));
|
||||
|
||||
// Set focus.
|
||||
m_panel->m_source->SetFocus();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
// Register notification sink for language detection.
|
||||
m_ulRefCount = 1;
|
||||
m_tfSource = NULL;
|
||||
m_dwCookie = MAXDWORD;
|
||||
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 == MAXDWORD) {
|
||||
m_tfSource->Release();
|
||||
m_tfSource = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
pProfiles->Release();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Register frame specific hotkey(s).
|
||||
{
|
||||
wxAcceleratorEntry entries[2];
|
||||
entries[0].Set(wxACCEL_CTRL , WXK_RETURN, wxID_SEND);
|
||||
entries[1].Set(wxACCEL_NORMAL, WXK_ESCAPE, wxID_SEND_ABORT);
|
||||
wxAcceleratorEntry entries[1];
|
||||
entries[0].Set(wxACCEL_NORMAL, WXK_F4, wxID_FOCUS_CHARACTER_CATALOG);
|
||||
SetAcceleratorTable(wxAcceleratorTable(_countof(entries), entries));
|
||||
}
|
||||
|
||||
int guiLevel;
|
||||
if (wxConfigBase::Get()->Read(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel) {
|
||||
// Restore persistent state of wxAuiManager manually, since m_mgr is not a standalone heap object
|
||||
// and cannot be registered for persistence.
|
||||
wxPersistentAuiManager(&m_mgr).Restore();
|
||||
}
|
||||
persist_mgr.RegisterAndRestore(this, new wxPersistentZRColaFrame(this));
|
||||
|
||||
// Update (de)composition selection.
|
||||
if (m_composition && m_composition_id == ZRCOLA_TRANSETID_DEFAULT) {
|
||||
m_menuItemCompositionZRCola->Check(true);
|
||||
m_toolComposition->Select(1);
|
||||
} else if (m_composition && m_composition_id == ZRCOLA_TRANSETID_UNICODE) {
|
||||
m_menuItemCompositionUnicode->Check(true);
|
||||
m_toolComposition->Select(2);
|
||||
} else {
|
||||
m_menuItemCompositionNone->Check(true);
|
||||
m_toolComposition->Select(0);
|
||||
}
|
||||
|
||||
if (m_warnPUA) {
|
||||
m_menuItemWarnPUA->Check(true);
|
||||
m_toolWarnPUA->SetState(m_toolWarnPUA->GetState() | wxAUI_BUTTON_STATE_CHECKED);
|
||||
} else {
|
||||
m_menuItemWarnPUA->Check(false);
|
||||
m_toolWarnPUA->SetState(m_toolWarnPUA->GetState() & ~wxAUI_BUTTON_STATE_CHECKED);
|
||||
}
|
||||
|
||||
// Update translation sequence selection.
|
||||
for (unsigned int i = 0, n = m_toolTranslationSeq->GetCount(); ; i++) {
|
||||
if (i < n) {
|
||||
if (static_cast<ZRCola::transeqid_t>((size_t)m_toolTranslationSeq->GetClientData(i)) == m_transeq_id) {
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT + i, true);
|
||||
m_toolTranslationSeq->SetSelection(i);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
m_transeq_id = ZRCOLA_TRANSEQID_DEFAULT;
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT, true);
|
||||
m_toolTranslationSeq->SetSelection(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Register global hotkey(s).
|
||||
if (!RegisterHotKey(wxZRColaHKID_INVOKE_TRANSLATE, wxMOD_WIN, VK_F5))
|
||||
wxMessageBox(_("ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."), _("Warning"), wxOK | wxICON_WARNING);
|
||||
if (!RegisterHotKey(wxZRColaHKID_INVOKE_TRANSLATE_INV, wxMOD_WIN, VK_F6))
|
||||
wxMessageBox(_("ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."), _("Warning"), wxOK | wxICON_WARNING);
|
||||
}
|
||||
|
||||
|
||||
wxZRColaFrame::~wxZRColaFrame()
|
||||
{
|
||||
// Unregister global hotkey(s).
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_DECOMPOSE);
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_COMPOSE);
|
||||
}
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_TRANSLATE_INV);
|
||||
UnregisterHotKey(wxZRColaHKID_INVOKE_TRANSLATE );
|
||||
|
||||
// Save wxAuiManager's state before destructor is finished.
|
||||
// m_mgr is not a standalone heap object and is bound to wxZRColaFrame, which is being destroyed.
|
||||
wxConfigBase::Get()->Write(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentAuiManager(&m_mgr).Save();
|
||||
wxPersistenceManager::Get().SaveAndUnregister(this);
|
||||
|
||||
void wxZRColaFrame::OnSendUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Enable(m_hWndSource ? true : false);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSend(wxCommandEvent& event)
|
||||
{
|
||||
switch (m_hotkey) {
|
||||
case wxZRColaHKID_INVOKE_COMPOSE : wxZRColaFrame::OnSendComposed (event); break;
|
||||
case wxZRColaHKID_INVOKE_DECOMPOSE: wxZRColaFrame::OnSendDecomposed(event); break;
|
||||
default : event.Skip();
|
||||
#if defined(__WXMSW__)
|
||||
if (m_tfSource) {
|
||||
m_tfSource->UnadviseSink(m_dwCookie);
|
||||
m_tfSource->Release();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendComposed(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoSend(m_panel->m_composed->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendDecomposed(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoSend(m_panel->m_decomposed->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendAbort(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource) {
|
||||
// Return focus to the source window.
|
||||
::SetActiveWindow(m_hWndSource);
|
||||
::SetForegroundWindow(m_hWndSource);
|
||||
m_hWndSource = NULL;
|
||||
m_hotkey = -1;
|
||||
|
||||
// Select all input in composer to prepare for the overwrite next time.
|
||||
m_panel->m_decomposed->SelectAll();
|
||||
m_panel->m_composed->SelectAll();
|
||||
if (m_taskBarIcon) {
|
||||
m_taskBarIcon->Disconnect(wxEVT_TASKBAR_LEFT_DOWN, wxTaskBarIconEventHandler(wxZRColaFrame::OnTaskbarIconClick), NULL, this);
|
||||
delete m_taskBarIcon;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
@@ -139,81 +252,481 @@ void wxZRColaFrame::OnExit(wxCommandEvent& event)
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnInsertGrave(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnForwardEventUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_panel->m_decomposed->WriteText(L"\xE000");
|
||||
wxControl *focusWnd = wxDynamicCast(FindFocus(), wxControl);
|
||||
if (focusWnd && focusWnd->IsKindOf(wxCLASSINFO(wxTextCtrl)))
|
||||
focusWnd->GetEventHandler()->ProcessEvent(event);
|
||||
else
|
||||
event.Enable(false);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnInsertAcute(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnForwardEvent(wxCommandEvent& event)
|
||||
{
|
||||
m_panel->m_decomposed->WriteText(L"\xE001");
|
||||
wxControl *focusWnd = wxDynamicCast(FindFocus(), wxControl);
|
||||
if (focusWnd)
|
||||
focusWnd->GetEventHandler()->ProcessEvent(event);
|
||||
else
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnInsertCircumflex(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnInsertCharacterUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_panel->m_decomposed->WriteText(L"\xE002");
|
||||
event.Check(m_chrSelect->IsVisible());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnInsertInvertedBreveBelow(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnInsertCharacter(wxCommandEvent& event)
|
||||
{
|
||||
m_panel->m_decomposed->WriteText(L"\xE02F");
|
||||
m_chrSelect->Show(!m_chrSelect->IsVisible());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnAbout(wxCommandEvent& event)
|
||||
void wxZRColaFrame::OnSendUpdate(wxUpdateUIEvent& 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);
|
||||
event.Enable(m_hWndSource ? true : false);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendDestination(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoSend(m_panel->m_destination->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCopyDestinationAndReturn(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoCopyAndReturn(m_panel->m_destination->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendSource(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoSend(m_panel->m_source->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCopySourceAndReturn(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource)
|
||||
DoCopyAndReturn(m_panel->m_source->GetValue());
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSendAbort(wxCommandEvent& event)
|
||||
{
|
||||
if (m_hWndSource) {
|
||||
// Return focus to the source window.
|
||||
if (m_wasIconised) Iconize();
|
||||
::SetActiveWindow(m_hWndSource);
|
||||
::SetForegroundWindow(m_hWndSource);
|
||||
m_hWndSource = NULL;
|
||||
}
|
||||
|
||||
// Select all input in composer to prepare for the overwrite next time.
|
||||
m_panel->m_source ->SelectAll();
|
||||
m_panel->m_destination->SelectAll();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCompositionNone(wxCommandEvent& event)
|
||||
{
|
||||
DoSetComposition(false, ZRCOLA_TRANSETID_DEFAULT);
|
||||
m_toolbarTranslate->Refresh();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCompositionZRCola(wxCommandEvent& event)
|
||||
{
|
||||
DoSetComposition(true, ZRCOLA_TRANSETID_DEFAULT);
|
||||
m_toolbarTranslate->Refresh();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCompositionUnicode(wxCommandEvent& event)
|
||||
{
|
||||
DoSetComposition(true, ZRCOLA_TRANSETID_UNICODE);
|
||||
m_toolbarTranslate->Refresh();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnCompositionChoice(wxCommandEvent& event)
|
||||
{
|
||||
switch (event.GetSelection()) {
|
||||
case 0: DoSetComposition(false, ZRCOLA_TRANSETID_DEFAULT); break;
|
||||
case 1: DoSetComposition(true, ZRCOLA_TRANSETID_DEFAULT); break;
|
||||
case 2: DoSetComposition(true, ZRCOLA_TRANSETID_UNICODE); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnWarnPUA(wxCommandEvent& event)
|
||||
{
|
||||
m_warnPUA = !m_warnPUA;
|
||||
m_menuItemWarnPUA->Check(m_warnPUA);
|
||||
m_toolWarnPUA->SetState((m_toolWarnPUA->GetState() & ~wxAUI_BUTTON_STATE_CHECKED) | (m_warnPUA ? wxAUI_BUTTON_STATE_CHECKED : 0));
|
||||
m_toolbarTranslate->Refresh();
|
||||
|
||||
// Notify destination text something changed and should re-paint.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
m_panel->m_destination->ProcessWindowEvent(event2);
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnSettings(wxCommandEvent& event)
|
||||
{
|
||||
m_settings->ShowModal();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
m_panel->SynchronizePanels();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnTaskbarIconClick(wxTaskBarIconEvent& event)
|
||||
{
|
||||
Show(true);
|
||||
Iconize(false);
|
||||
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::OnToolbarTranslateUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_mgr.GetPane(m_toolbarTranslate).IsShown());
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnToolbarTranslate(wxCommandEvent& event)
|
||||
{
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarTranslate);
|
||||
paneInfo.Show(!paneInfo.IsShown());
|
||||
m_mgr.Update();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnTranslationSeqMenu(wxCommandEvent& event)
|
||||
{
|
||||
int idx = event.GetId() - wxID_TRANSLATION_SEQ_DEFAULT;
|
||||
ZRCola::transeqid_t transeq_id = static_cast<ZRCola::transeqid_t>((size_t)m_toolTranslationSeq->GetClientData(idx));
|
||||
|
||||
DoSetTranslationSeq(idx, transeq_id);
|
||||
|
||||
m_toolTranslationSeq->Select(idx);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnTranslationSeqChoice(wxCommandEvent& event)
|
||||
{
|
||||
int idx = event.GetSelection();
|
||||
ZRCola::transeqid_t transeq_id = static_cast<ZRCola::transeqid_t>((size_t)event.GetClientData());
|
||||
|
||||
DoSetTranslationSeq(idx, transeq_id);
|
||||
|
||||
if (m_transeq_id == ZRCOLA_TRANSEQID_DEFAULT)
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT, true);
|
||||
else
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT + idx, true);
|
||||
}
|
||||
|
||||
|
||||
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.zrc-sazu.si/en/info/instructions/"));
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::OnHelpShortcuts(wxCommandEvent& event)
|
||||
{
|
||||
winstd::tstring pdf_path;
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// Search and try to launch installed PDF.
|
||||
#pragma warning(suppress: 26812) // INSTALLSTATE is unscoped.
|
||||
INSTALLSTATE pdf_is = ::MsiGetComponentPath(_T(PRODUCT_VERSION_GUID), _T("{68AC2C38-10E2-41A3-B92C-844C03FFDF6A}"), pdf_path);
|
||||
if ((pdf_is == INSTALLSTATE_LOCAL || pdf_is == INSTALLSTATE_SOURCE) &&
|
||||
wxFileExists(pdf_path) &&
|
||||
(intptr_t)::ShellExecute(GetHWND(), NULL, pdf_path.c_str(), NULL, NULL, SW_SHOWNORMAL) > 32) return;
|
||||
#endif
|
||||
|
||||
// Search and try to launch local PDF copy.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
pdf_path = app->GetDatabasePath();
|
||||
pdf_path += _T("ZRCola_keyboard.pdf");
|
||||
if (wxFileExists(pdf_path) &&
|
||||
(intptr_t)::ShellExecute(GetHWND(), NULL, pdf_path.c_str(), NULL, NULL, SW_SHOWNORMAL) > 32) return;
|
||||
|
||||
// When everything else fail, try the online version.
|
||||
wxLaunchDefaultBrowser(_("http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.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.
|
||||
wxString::size_type n = str.length();
|
||||
wxString::const_iterator i_str = str.begin();
|
||||
std::vector<INPUT> input(n);
|
||||
for (std::vector<INPUT>::size_type i = 0; i < n; i++, i_str++) {
|
||||
std::vector<INPUT> input;
|
||||
input.reserve(n*2);
|
||||
for (std::vector<INPUT>::size_type i = 0; i < n; i++, ++i_str) {
|
||||
wxString::char_type c = *i_str;
|
||||
INPUT &inp = input[i];
|
||||
inp.type = INPUT_KEYBOARD;
|
||||
inp.ki.dwFlags = KEYEVENTF_UNICODE;
|
||||
inp.ki.time = 0;
|
||||
inp.ki.dwExtraInfo = 0;
|
||||
if (c == L'\n') {
|
||||
// Enter (Return) key is sent as CR virtual key code.
|
||||
inp.ki.wVk = VK_RETURN;
|
||||
inp.ki.wScan = L'\r';
|
||||
} else if (L'a' <= c && c <= L'z') {
|
||||
// Small letters have the same virtual key code as their uppercase counterparts.
|
||||
inp.ki.wVk = (WORD)c + L'A' - L'a';
|
||||
inp.ki.wScan = c;
|
||||
} else if (L'A' <= c && c <= L'Z' || L'0' <= c && c <= L'0' || c == L' ') {
|
||||
// Letters and symbols with matching virtual key codes.
|
||||
inp.ki.wVk = c;
|
||||
inp.ki.wScan = c;
|
||||
} else {
|
||||
inp.ki.wVk = 0;
|
||||
inp.ki.wScan = c;
|
||||
}
|
||||
|
||||
// Add key down event.
|
||||
INPUT inp = { INPUT_KEYBOARD };
|
||||
inp.ki.dwFlags = KEYEVENTF_UNICODE;
|
||||
inp.ki.wScan = c != L'\n' ? c : L'\r'; // Enter (Return) key is sent as CR.
|
||||
input.push_back(inp);
|
||||
|
||||
// Add key up event.
|
||||
inp.ki.dwFlags |= KEYEVENTF_KEYUP;
|
||||
input.push_back(inp);
|
||||
}
|
||||
|
||||
// Return focus to the source window and send the input.
|
||||
if (m_wasIconised) Iconize();
|
||||
::SetActiveWindow(m_hWndSource);
|
||||
::SetForegroundWindow(m_hWndSource);
|
||||
::Sleep(200);
|
||||
::SendInput(input.size(), input.data(), sizeof(INPUT));
|
||||
::SendInput((UINT)input.size(), input.data(), sizeof(INPUT));
|
||||
m_hWndSource = NULL;
|
||||
m_hotkey = -1;
|
||||
|
||||
// Select all input in composer and decomposed to prepare for the overwrite next time.
|
||||
m_panel->m_decomposed->SelectAll();
|
||||
m_panel->m_composed->SelectAll();
|
||||
// Select all input in source and destination to prepare for the overwrite next time.
|
||||
m_panel->m_source ->SelectAll();
|
||||
m_panel->m_destination->SelectAll();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::DoCopyAndReturn(const wxString& str)
|
||||
{
|
||||
if (wxTheClipboard->Open()) {
|
||||
wxTheClipboard->SetData(new wxTextDataObject(str));
|
||||
wxTheClipboard->Close();
|
||||
}
|
||||
|
||||
// Return focus to the source window.
|
||||
if (m_wasIconised) Iconize();
|
||||
::SetActiveWindow(m_hWndSource);
|
||||
::SetForegroundWindow(m_hWndSource);
|
||||
m_hWndSource = NULL;
|
||||
|
||||
// Select all input in composer and source to prepare for the overwrite next time.
|
||||
m_panel->m_source->SelectAll();
|
||||
m_panel->m_destination->SelectAll();
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::DoSetComposition(bool enable, ZRCola::transetid_t transet_id)
|
||||
{
|
||||
if (enable && transet_id == ZRCOLA_TRANSETID_DEFAULT) {
|
||||
m_composition = true;
|
||||
m_composition_id = ZRCOLA_TRANSETID_DEFAULT;
|
||||
m_menuItemCompositionZRCola->Check(true);
|
||||
m_toolComposition->Select(1);
|
||||
} else if (enable && transet_id == ZRCOLA_TRANSETID_UNICODE) {
|
||||
m_composition = true;
|
||||
m_composition_id = ZRCOLA_TRANSETID_UNICODE;
|
||||
m_menuItemCompositionUnicode->Check(true);
|
||||
m_toolComposition->Select(2);
|
||||
} else {
|
||||
m_composition = false;
|
||||
m_menuItemCompositionNone->Check(true);
|
||||
m_toolComposition->Select(0);
|
||||
}
|
||||
|
||||
// Notify source text something changed and should re-translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
m_panel->m_source->ProcessWindowEvent(event2);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaFrame::DoSetTranslationSeq(int idx, ZRCola::transeqid_t transeq_id)
|
||||
{
|
||||
if (transeq_id == ZRCOLA_TRANSEQID_CUSTOM) {
|
||||
// Prompt user to modify translation.
|
||||
if (m_transeq->ShowModal() != wxID_OK)
|
||||
return;
|
||||
|
||||
if (m_transeq->m_transeq.empty()) {
|
||||
// User submitted an empty translation. Revert to "No Translation" case.
|
||||
m_transeq_id = ZRCOLA_TRANSEQID_DEFAULT;
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT, true);
|
||||
m_toolTranslationSeq->SetSelection(0);
|
||||
} else {
|
||||
m_transeq_id = ZRCOLA_TRANSEQID_CUSTOM;
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT + idx, true);
|
||||
}
|
||||
} else if (m_transeq_id != transeq_id) {
|
||||
// User choose a new translation sequence.
|
||||
m_transeq_id = transeq_id;
|
||||
m_menuTranslationSeq->Check(wxID_TRANSLATION_SEQ_DEFAULT + idx, true);
|
||||
} else
|
||||
return;
|
||||
|
||||
// Notify source text something changed and should re-translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
m_panel->m_source->ProcessWindowEvent(event2);
|
||||
}
|
||||
|
||||
|
||||
#ifdef __WXMSW__
|
||||
|
||||
WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
if (message == WM_HOTKEY) {
|
||||
@@ -221,8 +734,8 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
|
||||
WXHWND hWndSource = ::GetForegroundWindow();
|
||||
|
||||
switch (wParam) {
|
||||
case wxZRColaHKID_INVOKE_COMPOSE : m_panel->m_decomposed->SetFocus(); break;
|
||||
case wxZRColaHKID_INVOKE_DECOMPOSE: m_panel->m_composed ->SetFocus(); break;
|
||||
case wxZRColaHKID_INVOKE_TRANSLATE: m_panel->m_source->SetFocus(); break;
|
||||
case wxZRColaHKID_INVOKE_TRANSLATE_INV: m_panel->m_destination->SetFocus(); break;
|
||||
default:
|
||||
wxFAIL_MSG(wxT("not our registered shortcut"));
|
||||
return wxZRColaFrameBase::MSWWindowProc(message, wParam, lParam);
|
||||
@@ -234,15 +747,13 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
|
||||
}
|
||||
|
||||
m_hWndSource = hWndSource;
|
||||
m_hotkey = wParam;
|
||||
m_wasIconised = IsIconized();
|
||||
|
||||
//if (m_state == wxABS_FLOAT) {
|
||||
if (IsIconized()) {
|
||||
::SendMessage(m_hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
} else {
|
||||
::SetActiveWindow(m_hWnd);
|
||||
::SetForegroundWindow(m_hWnd);
|
||||
}
|
||||
Show(true);
|
||||
Iconize(false);
|
||||
Raise();
|
||||
::SetActiveWindow(m_hWnd);
|
||||
//} else if (wxAppBarIsDocked(m_state)) {
|
||||
// // ZRCola window is currently docked.
|
||||
|
||||
@@ -257,6 +768,66 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
|
||||
// wxFAIL_MSG(wxT("unsupported application bar state"));
|
||||
|
||||
return 0;
|
||||
} else
|
||||
}
|
||||
else
|
||||
return wxZRColaFrameBase::MSWWindowProc(message, wParam, lParam);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaFrame
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaFrame::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaFrame::wxPersistentZRColaFrame(wxZRColaFrame *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaFrame::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaFrame*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("composition"), wnd->m_composition);
|
||||
SaveValue(wxT("compositionId"), static_cast<int>(wnd->m_composition_id));
|
||||
SaveValue(wxT("warnPUA"), wnd->m_warnPUA);
|
||||
SaveValue(wxT("transeqId"), static_cast<int>(wnd->m_transeq_id));
|
||||
|
||||
wxPersistentZRColaComposerPanel(wnd->m_panel).Save();
|
||||
wxPersistentZRColaCharacterCatalogPanel(wnd->m_panelChrCat).Save();
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaFrame::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaFrame*>(GetWindow());
|
||||
|
||||
wxPersistentZRColaCharacterCatalogPanel(wnd->m_panelChrCat).Restore();
|
||||
wxPersistentZRColaComposerPanel(wnd->m_panel).Restore();
|
||||
|
||||
int num;
|
||||
if (RestoreValue(wxT("transeqId"), &num))
|
||||
wnd->m_transeq_id = (ZRCola::transeqid_t)num;
|
||||
|
||||
bool b;
|
||||
if (RestoreValue(wxT("composition"), &b))
|
||||
wnd->m_composition = b;
|
||||
else
|
||||
wnd->m_composition = wnd->m_transeq_id == ZRCOLA_TRANSEQID_DEFAULT;
|
||||
if (RestoreValue(wxT("compositionId"), &num))
|
||||
wnd->m_composition_id = (ZRCola::transetid_t)num;
|
||||
if (RestoreValue(wxT("warnPUA"), &b))
|
||||
wnd->m_warnPUA = b;
|
||||
else
|
||||
wnd->m_warnPUA = false;
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
|
||||
@@ -1,79 +1,168 @@
|
||||
/*
|
||||
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/>.
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2021 Amebis
|
||||
*/
|
||||
|
||||
|
||||
///
|
||||
/// Forward declarations
|
||||
///
|
||||
class wxZRColaFrame;
|
||||
class wxPersistentZRColaFrame;
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include "zrcolagui.h"
|
||||
#pragma warning(pop)
|
||||
#include "zrcolachrslct.h"
|
||||
#include "zrcolachrreq.h"
|
||||
#include "zrcolasettings.h"
|
||||
#include "zrcolatranseq.h"
|
||||
#include <zrcola/language.h>
|
||||
#include <zrcola/translate.h>
|
||||
#include <wxex/persist/toplevel.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/taskbar.h>
|
||||
#pragma warning(pop)
|
||||
#if defined(__WXMSW__)
|
||||
#include <msctf.h>
|
||||
#endif
|
||||
|
||||
|
||||
///
|
||||
/// Global hotkey message identifiers
|
||||
///
|
||||
#define wxZRColaHKID_INVOKE_COMPOSE 0
|
||||
#define wxZRColaHKID_INVOKE_DECOMPOSE 1
|
||||
#define wxZRColaHKID_INVOKE_TRANSLATE 0
|
||||
#define wxZRColaHKID_INVOKE_TRANSLATE_INV 1
|
||||
|
||||
|
||||
///
|
||||
/// ZRCola main frame
|
||||
///
|
||||
class wxZRColaFrame : public wxZRColaFrameBase
|
||||
class wxZRColaFrame :
|
||||
public wxZRColaFrameBase
|
||||
#if defined(__WXMSW__)
|
||||
, protected ITfLanguageProfileNotifySink
|
||||
#endif
|
||||
{
|
||||
protected:
|
||||
enum {
|
||||
wxID_SEND = wxID_HIGHEST,
|
||||
wxID_SEND_COMPOSED,
|
||||
wxID_SEND_DECOMPOSED,
|
||||
wxID_SEND_ABORT,
|
||||
public:
|
||||
enum
|
||||
{
|
||||
wxID_FOCUS_CHARACTER_CATALOG = 2000,
|
||||
wxID_TRANSLATION_SEQ_DEFAULT = 2001,
|
||||
wxID_TRANSLATION_SEQ_START = 2002,
|
||||
wxID_TRANSLATION_SEQ_END = 2100,
|
||||
};
|
||||
|
||||
public:
|
||||
wxZRColaFrame();
|
||||
virtual ~wxZRColaFrame();
|
||||
|
||||
friend class wxPersistentZRColaFrame;
|
||||
friend class wxZRColaComposerPanel;
|
||||
|
||||
protected:
|
||||
void OnSendUpdate(wxUpdateUIEvent& event);
|
||||
void OnSend(wxCommandEvent& event);
|
||||
void OnSendComposed(wxCommandEvent& event);
|
||||
void OnSendDecomposed(wxCommandEvent& event);
|
||||
void OnSendAbort(wxCommandEvent& event);
|
||||
void OnExit(wxCommandEvent& event);
|
||||
void OnInsertGrave(wxCommandEvent& event);
|
||||
void OnInsertAcute(wxCommandEvent& event);
|
||||
void OnInsertCircumflex(wxCommandEvent& event);
|
||||
void OnInsertInvertedBreveBelow(wxCommandEvent& event);
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
void OnForwardEventUpdate(wxUpdateUIEvent& event);
|
||||
void OnForwardEvent(wxCommandEvent& event);
|
||||
void OnInsertCharacterUpdate(wxUpdateUIEvent& event);
|
||||
void OnInsertCharacter(wxCommandEvent& event);
|
||||
void OnSendUpdate(wxUpdateUIEvent& event);
|
||||
void OnSendDestination(wxCommandEvent& event);
|
||||
void OnCopyDestinationAndReturn(wxCommandEvent& event);
|
||||
void OnSendSource(wxCommandEvent& event);
|
||||
void OnCopySourceAndReturn(wxCommandEvent& event);
|
||||
void OnSendAbort(wxCommandEvent& event);
|
||||
void OnCompositionNone(wxCommandEvent& event);
|
||||
void OnCompositionZRCola(wxCommandEvent& event);
|
||||
void OnCompositionUnicode(wxCommandEvent& event);
|
||||
virtual void OnCompositionChoice(wxCommandEvent& event);
|
||||
void OnWarnPUA(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 OnToolbarTranslateUpdate(wxUpdateUIEvent& event);
|
||||
void OnToolbarTranslate(wxCommandEvent& event);
|
||||
void OnTranslationSeqMenu(wxCommandEvent& event);
|
||||
virtual void OnTranslationSeqChoice(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);
|
||||
void DoCopyAndReturn(const wxString& str);
|
||||
void DoSetComposition(bool enable, ZRCola::transetid_t transet_id);
|
||||
void DoSetTranslationSeq(int idx, ZRCola::transeqid_t transeq_id);
|
||||
|
||||
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
|
||||
int m_hotkey; ///< hotkey ID that was pressed
|
||||
static const int s_guiLevel; ///< Persisted placements/sizing are considered incompatible between different GUI levels
|
||||
|
||||
protected:
|
||||
WXHWND m_hWndSource; ///< Handle of the active window, when the ZRCola hotkey was pressed
|
||||
bool m_wasIconised; ///< Was the ZRCola window iconized, 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
|
||||
bool m_composition; ///< Is (de)composition enabled?
|
||||
ZRCola::transetid_t m_composition_id; ///< Which (de)composition is enabled
|
||||
bool m_warnPUA; ///< Mark Private-Use-Area characters in destination text
|
||||
ZRCola::transeqid_t m_transeq_id; ///< Translation sequence ID
|
||||
wxZRColaTranslationSeq *m_transeq; ///< Custom translation sequence dialog
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Supports saving/restoring wxZRColaFrame GUI state
|
||||
///
|
||||
class wxPersistentZRColaFrame : public wxPersistentTLWEx
|
||||
{
|
||||
public:
|
||||
wxPersistentZRColaFrame(wxZRColaFrame *wnd);
|
||||
|
||||
virtual void Save() const;
|
||||
virtual bool Restore();
|
||||
|
||||
protected:
|
||||
static const int s_guiLevel; ///< Persisted placements/sizing are considered incompatible between different GUI levels
|
||||
};
|
||||
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaFrame *wnd)
|
||||
{
|
||||
return new wxPersistentZRColaFrame(wnd);
|
||||
}
|
||||
|
||||
1397
ZRCola/zrcolagui.cpp
@@ -1,93 +1,422 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 17 2015)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __ZRCOLAGUI_H__
|
||||
#define __ZRCOLAGUI_H__
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/cshelp.h>
|
||||
#include <wx/intl.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include "zrcolacomppnl.h"
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/frame.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/panel.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaFrameBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaFrameBase : public wxFrame
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_INSERT_GRAVE = 1000,
|
||||
wxID_INSERT_ACUTE,
|
||||
wxID_INSERT_CIRCUMFLEX,
|
||||
wxID_INSERT_INV_BREVE_BELOW
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
wxMenu* m_menuFile;
|
||||
wxMenu* m_menuAccents;
|
||||
wxMenu* m_menuHelp;
|
||||
wxZRColaComposerPanel* m_panel;
|
||||
|
||||
public:
|
||||
|
||||
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 );
|
||||
|
||||
~wxZRColaFrameBase();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaComposerPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaComposerPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_DECOMPOSED = 1000,
|
||||
wxID_COMPOSED
|
||||
};
|
||||
|
||||
wxTextCtrl* m_decomposed;
|
||||
wxTextCtrl* m_composed;
|
||||
|
||||
// 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 OnComposedPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnComposedText( wxCommandEvent& 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();
|
||||
|
||||
};
|
||||
|
||||
#endif //__ZRCOLAGUI_H__
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#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>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/aui/aui.h>
|
||||
#include <wx/aui/auibar.h>
|
||||
#include <wx/choice.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/grid.h>
|
||||
#include <wx/checkbox.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/listbook.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/statbmp.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaFrameBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaFrameBase : public wxFrame
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
wxID_COPY_SOURCE_AND_RETURN,
|
||||
wxID_SEND_ABORT,
|
||||
wxID_COMPOSITION_NONE,
|
||||
wxID_COMPOSITION_ZRCOLA,
|
||||
wxID_COMPOSITION_UNICODE,
|
||||
wxID_WARN_PUA,
|
||||
wxID_SETTINGS,
|
||||
wxID_TOOLBAR_EDIT,
|
||||
wxID_TOOLBAR_TRANSLATE,
|
||||
wxID_PANEL_CHRGRPS,
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
wxMenu* m_menuProgram;
|
||||
wxMenu* m_menuEdit;
|
||||
wxMenuItem* m_menuItemCompositionNone;
|
||||
wxMenuItem* m_menuItemCompositionZRCola;
|
||||
wxMenuItem* m_menuItemCompositionUnicode;
|
||||
wxMenu* m_menuTranslationSeq;
|
||||
wxMenuItem* m_menuItemWarnPUA;
|
||||
wxMenu* m_menuView;
|
||||
wxMenu* m_menuHelp;
|
||||
wxAuiToolBar* m_toolbarEdit;
|
||||
wxAuiToolBarItem* m_toolEditCut;
|
||||
wxAuiToolBarItem* m_toolEditCopy;
|
||||
wxAuiToolBarItem* m_toolEditPaste;
|
||||
wxAuiToolBar* m_toolbarTranslate;
|
||||
wxAuiToolBarItem* m_toolCharSelect;
|
||||
wxAuiToolBarItem* m_toolSendDestination;
|
||||
wxAuiToolBarItem* m_toolSendSource;
|
||||
wxChoice* m_toolComposition;
|
||||
wxChoice* m_toolTranslationSeq;
|
||||
wxAuiToolBarItem* m_toolWarnPUA;
|
||||
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(); }
|
||||
virtual void OnCompositionChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnTranslationSeqChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
wxZRColaComposerPanel* m_panel;
|
||||
|
||||
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );
|
||||
wxAuiManager m_mgr;
|
||||
|
||||
~wxZRColaFrameBase();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaComposerPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaComposerPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
wxPanel* m_panelSourceEdit;
|
||||
wxPanel* m_panelSourceHex;
|
||||
wxTextCtrl* m_sourceHex;
|
||||
wxSplitterWindow* m_splitterDestination;
|
||||
wxPanel* m_panelDestinationEdit;
|
||||
wxPanel* m_panelDestinationHex;
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnDestinationHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSaveTimer( wxTimerEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
wxTextCtrl* m_source;
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterSource->SetSashPosition( FromDIP(-5) );
|
||||
m_splitterSource->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterSourceOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
void m_splitterDestinationOnIdle( wxIdleEvent& )
|
||||
{
|
||||
m_splitterDestination->SetSashPosition( FromDIP(-5) );
|
||||
m_splitterDestination->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaComposerPanelBase::m_splitterDestinationOnIdle ), NULL, this );
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaCharacterCatalogPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxChoice* m_choice;
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// 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(); }
|
||||
virtual void OnShowAll( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// 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_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// 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 OnInsert( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnInsertUpdateUI( wxUpdateUIEvent& 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 OnLanguageUpdate( wxUpdateUIEvent& 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();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxZRColaTranslationSeqBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class wxZRColaTranslationSeqBase : public wxDialog
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_transLbl;
|
||||
wxStaticText* m_availableLbl;
|
||||
wxListBox* m_available;
|
||||
wxButton* m_add;
|
||||
wxButton* m_remove;
|
||||
wxStaticText* m_selectedLbl;
|
||||
wxListBox* m_selected;
|
||||
wxButton* m_selectedUp;
|
||||
wxButton* m_selectedDown;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableDClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnAdd( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRemove( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedDClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedUp( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSelectedDown( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
|
||||