mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-08-25 17:39:23 +00:00
Compare commits
1003 Commits
v0.93
...
v2022.12.1
Author | SHA1 | Date | |
---|---|---|---|
ae0dcc7b21 | |||
3adc726f33 | |||
a3bc684721 | |||
ffbb67765d | |||
b57a430dc5 | |||
0f04cfabf9 | |||
3b29cbd746 | |||
730665b5da | |||
924cc83090 | |||
4d46bab37f | |||
a5e075a215 | |||
c9b75925b9 | |||
3450e0d38f | |||
ca83604870 | |||
35b758ecf1 | |||
d5ed5f12af | |||
eedcb49f3d | |||
a1878f10b3 | |||
2323c3cac5 | |||
e90c370e73 | |||
cadcc56182 | |||
619f58ad90 | |||
c480554e01 | |||
6da81a9734 | |||
b559726535 | |||
768f0bc396 | |||
5bbf069d61 | |||
d177ef5be2 | |||
b6dd539dc6 | |||
fabca1207d | |||
bf4c7ff7c7 | |||
8d2fb59ba8 | |||
b7497791b4 | |||
48730ead63 | |||
98ecd000a9 | |||
4a9098021f | |||
8850e5fdde | |||
e42bd85274 | |||
d3914a4e34 | |||
73de8d4f49 | |||
ce458a8d4d | |||
149ce51f49 | |||
2fe9c35c0b | |||
39fb5b4830 | |||
71ca547abe | |||
1c5c1067e6 | |||
df4d3eb0e6 | |||
927bbae1be | |||
cbc4fd0632 | |||
10d4d47a17 | |||
52d64d86d8 | |||
2ab61ebee6 | |||
3ad01d1ab0 | |||
7835e09c5b | |||
4c5d2b5e04 | |||
8f72ee97c9 | |||
aebdcae9cf | |||
3b5ef02def | |||
35599ee0ef | |||
6e03578e86 | |||
7cbf873db5 | |||
fefd88b71c | |||
7c80c9d842 | |||
f5e52c6387 | |||
4c43f82b60 | |||
2caaaa9d87 | |||
3fa39c712e | |||
252a93f82d | |||
f5328379e8 | |||
2e8c8c6db4 | |||
862dbd0b8a | |||
120da217f5 | |||
035de92496 | |||
2a0e73ad33 | |||
701a557357 | |||
de1d94e679 | |||
64d5b7e684 | |||
2c9048618f | |||
![]() |
d66f4a2640 | ||
bfbb280c27 | |||
cad7c9a9fd | |||
81ff530a71 | |||
39fc982665 | |||
803f5fbe89 | |||
0d1d4c887d | |||
f8f13be6d3 | |||
5f645508ba | |||
3a3cb3963c | |||
2c298577cc | |||
97815f807a | |||
f24f97baae | |||
2a10f029f0 | |||
3deffa57de | |||
d6985be896 | |||
0aad2f0ab3 | |||
f151d6554d | |||
62d6ae2277 | |||
b405e384c8 | |||
7aa986163b | |||
59409e61a5 | |||
edbc74262a | |||
e07efa46b3 | |||
bedb2e2a4f | |||
96b5eec8e0 | |||
c6433d8655 | |||
c0654658b5 | |||
d71d3695eb | |||
4b6a7c5d83 | |||
368e089639 | |||
33647da6e8 | |||
ca39db649b | |||
07dc813cb6 | |||
a852a429f4 | |||
1e3a0d9b2e | |||
9959ac24d9 | |||
90f9f18deb | |||
6983d11b73 | |||
cd5b71a26e | |||
aa3ca82f25 | |||
bf9b8a4f46 | |||
2be460b662 | |||
1d4057ac5b | |||
b9731a3c75 | |||
d53decb165 | |||
02b8330ca0 | |||
12046c1f56 | |||
6f69426f03 | |||
c8c242a27f | |||
60daa548ca | |||
40989a54ed | |||
87f2976419 | |||
b6b81e2b36 | |||
dfcd63b9b6 | |||
23af944fba | |||
cf9add1fc9 | |||
a63f19a70f | |||
8ad266ad1b | |||
b593071364 | |||
0e814a765a | |||
2c7eab60a8 | |||
d43738a2ec | |||
0f885712b6 | |||
14a10989e5 | |||
d5253f651b | |||
31e901b000 | |||
26e7ff009f | |||
1ded773e84 | |||
b8637ba8ca | |||
4dc4f46b84 | |||
e00ec84df3 | |||
8dd122cfb2 | |||
dcfacf8cdd | |||
bc1522833c | |||
4b7382e61f | |||
585d8e2b0c | |||
f34829d72d | |||
![]() |
fd1d60b815 | ||
![]() |
31e194a038 | ||
![]() |
e25712920a | ||
![]() |
27867a1961 | ||
![]() |
1425dcd313 | ||
![]() |
b9cff1a9c9 | ||
fc1ed54963 | |||
![]() |
442abe82db | ||
1b693cd798 | |||
![]() |
8426d8851f | ||
![]() |
eca5aa7bfe | ||
8116d98691 | |||
1b498a99bd | |||
1a4e594549 | |||
![]() |
2b0172f02f | ||
2d2c84fefe | |||
![]() |
0bef872070 | ||
b233842f5c | |||
0202b704da | |||
7d3ac47d55 | |||
e2ba61701f | |||
![]() |
8032f5cf75 | ||
![]() |
96f5d0e426 | ||
0ba71c985d | |||
c6cbe3360b | |||
ac80e039b2 | |||
2039597098 | |||
74fd4bfadf | |||
c374663b7c | |||
0f3d7d8747 | |||
0a395af3a9 | |||
![]() |
f181c5d1cd | ||
![]() |
204b9ebc02 | ||
0a479b55ed | |||
![]() |
eb0c3a650a | ||
829506acf5 | |||
14ee87b25a | |||
ebdf2e21bb | |||
![]() |
30a944fc61 | ||
![]() |
5c0af2fc01 | ||
e470498e56 | |||
fa2d2d9d78 | |||
b9794806d7 | |||
1e686cffba | |||
0f624c7dbe | |||
76a5c960e5 | |||
aab8aafefc | |||
015cf9eca3 | |||
769436abf7 | |||
b2da25dd61 | |||
03f59064d5 | |||
9afd6774f2 | |||
a1929ff1d3 | |||
4b627a13ff | |||
f9f7a32f90 | |||
f01ad5abb7 | |||
6fcd0274a9 | |||
654b34c8e1 | |||
02e1793d08 | |||
6e80b320c9 | |||
83c9db573e | |||
3aee5e8900 | |||
![]() |
a88af08181 | ||
79098cc730 | |||
d12e3aa335 | |||
![]() |
1d8fcf9166 | ||
3702405f8c | |||
7ce55c427e | |||
508b798bee | |||
53ac43a8b2 | |||
![]() |
22b8d91612 | ||
![]() |
4f619759e6 | ||
![]() |
0ac6f49379 | ||
![]() |
b332902b91 | ||
a138b8c02e | |||
c89dff053d | |||
018095752b | |||
bd90902e3b | |||
8bf9c6519e | |||
bed8e26204 | |||
fa9ebea836 | |||
be8d82a65f | |||
ab979e2623 | |||
20ad268e5a | |||
![]() |
83c9a7f0f9 | ||
9d90d91cfd | |||
bbf1356c89 | |||
485b4c3c6c | |||
b35cdbd7b4 | |||
67d15d8fe1 | |||
![]() |
3bd274db0c | ||
6147ca8658 | |||
![]() |
7833522b56 | ||
dbafeb9872 | |||
c6865a7742 | |||
fcb2ce119b | |||
9f74d568f0 | |||
e3137f4c3d | |||
3f58112a61 | |||
307085b0d5 | |||
44ea77b605 | |||
5e47e30bc3 | |||
![]() |
c6a2ba6a31 | ||
085c9038b5 | |||
af4e72ee27 | |||
9322241747 | |||
116a0288d4 | |||
d0322e7131 | |||
000cf1aff1 | |||
2f0515a449 | |||
ac9efd7550 | |||
![]() |
540a99f02f | ||
8e95843634 | |||
cf56b518d6 | |||
1262a9d784 | |||
7c85ceced1 | |||
![]() |
3d452b3db8 | ||
950ece43d5 | |||
ac0e7380b0 | |||
6e0a94355f | |||
e43ddad678 | |||
c048c3ff32 | |||
301e3d4361 | |||
7a78accd1f | |||
d7afa77c49 | |||
e7a30b418a | |||
a645e0b964 | |||
e8287c75cc | |||
6a839baed7 | |||
8924f787d4 | |||
b81aff7f8d | |||
1dfe256cfe | |||
ee8e4b1d8b | |||
0317eff6a5 | |||
793bd2cf5b | |||
![]() |
c0ee1d2c29 | ||
![]() |
9e6740253c | ||
c08eb499e1 | |||
![]() |
5d0e1f38ab | ||
1d60751dbd | |||
![]() |
b23915e546 | ||
c8da3bdfdb | |||
ebf7916ae0 | |||
33338ba09a | |||
8b50f3138c | |||
ae28c374d5 | |||
5a2786967b | |||
ed765117a5 | |||
911e8d3cfd | |||
b6ae9f4b79 | |||
a74825a0f6 | |||
445c33f003 | |||
81963dbb53 | |||
b4526c12c9 | |||
b2f9aef7f7 | |||
95063cd472 | |||
4434a5b971 | |||
2de9f8f9b3 | |||
a6ecd37547 | |||
03c330c0a4 | |||
ab1a0946a4 | |||
1f253221b3 | |||
58ba722bd7 | |||
416151570c | |||
af4594f16c | |||
a47fa31346 | |||
40e13250ca | |||
0bd366c539 | |||
b67fc0ff38 | |||
86a2eb7c0d | |||
78c10b38e5 | |||
![]() |
cfd4fd12d3 | ||
![]() |
806111c36e | ||
7bfbadc254 | |||
3ccb3a5be5 | |||
![]() |
f264f3807f | ||
3902a57d6b | |||
![]() |
485e5ecbd1 | ||
![]() |
f7a50d22e2 | ||
43b1a834d1 | |||
d6571a95cb | |||
4ba2753b79 | |||
6951541193 | |||
b329ac8e3e | |||
538d6137d0 | |||
622b0e6128 | |||
![]() |
0e91ca3d4d | ||
![]() |
8abcb3623d | ||
b3bf0ab8e6 | |||
eea059b905 | |||
e9f6fd529e | |||
b0cfc5978c | |||
77d13fdc28 | |||
514e66411d | |||
d9f4b86d91 | |||
a6964a1bb9 | |||
a43101e694 | |||
![]() |
9e7542f513 | ||
![]() |
6346651edf | ||
1e2464c4fa | |||
dbecf341ec | |||
605868eff9 | |||
8fed52118f | |||
15d0f4c65e | |||
a2393fe3e9 | |||
80adf381c9 | |||
269db95fe3 | |||
cfc25eb89a | |||
2b6efef831 | |||
f0456af656 | |||
6d505c6fe7 | |||
38e3274adc | |||
2c70fe46b7 | |||
1c8ee1a64f | |||
076761b9dd | |||
556ffd832b | |||
cedb290956 | |||
66bf95ee62 | |||
4f0db5537e | |||
![]() |
7c5c191deb | ||
![]() |
0cf0a64f40 | ||
714d849884 | |||
a80184bf20 | |||
![]() |
46fb00e609 | ||
![]() |
4ddb406c8d | ||
6b9540a0a8 | |||
5687cf6a62 | |||
1fd2b5914b | |||
924f5d8e9f | |||
13c441557b | |||
![]() |
2c4ec7b1c0 | ||
c4b7c35c7f | |||
2d46315de9 | |||
6904c153d4 | |||
8b06437cad | |||
c3261a4e2c | |||
9f7892ff03 | |||
ab44ce6fcb | |||
ed80558273 | |||
60a67947e6 | |||
8a8f1998ac | |||
cd415ba673 | |||
f9e58b5724 | |||
![]() |
94ca935b2f | ||
84fa2fad91 | |||
ff0a2b5692 | |||
b39b732a93 | |||
b04a1c74a7 | |||
ffb11b8226 | |||
5a6dc23524 | |||
0e2ff4de8a | |||
36340d0596 | |||
92ec178754 | |||
5eb942981c | |||
6739045cce | |||
307ed093af | |||
d11fc44772 | |||
a3e5eec6de | |||
41a0935121 | |||
0b03e7505f | |||
![]() |
81c364c4e1 | ||
![]() |
483b196203 | ||
![]() |
b512c69447 | ||
2c1608322e | |||
c6bb851bce | |||
![]() |
66581f8b1c | ||
![]() |
c6a3a44c21 | ||
bd25cfa59b | |||
![]() |
39a02ea33a | ||
f672dca1cb | |||
19c63b7b07 | |||
e23a52e38f | |||
![]() |
d888563fda | ||
a5ba80feee | |||
528ecc2a33 | |||
3519746078 | |||
ef79e0696e | |||
b9ee0dae5b | |||
f31575a733 | |||
e451bbd5e9 | |||
f7f303929e | |||
9f48784ce4 | |||
cb1312d0c9 | |||
a82efd4dcc | |||
72e6d030d5 | |||
d222740887 | |||
2b059ee42e | |||
daac312658 | |||
b23be9c896 | |||
61b0dc34b8 | |||
c5d13369eb | |||
856ecf5eb9 | |||
e3e0ac9457 | |||
fccf02794c | |||
34c1f69ec1 | |||
7326ff88f9 | |||
![]() |
a8d876a7b7 | ||
![]() |
89fa6435b4 | ||
![]() |
d1bd393be2 | ||
301bd5fd39 | |||
![]() |
a2f25bfbb5 | ||
286e030f40 | |||
d8fca3b31a | |||
0c27427843 | |||
dfdbe3c5f4 | |||
![]() |
2222a97451 | ||
fbe93ea4be | |||
4bcae1aa97 | |||
4cabf5b9cd | |||
a9a4189295 | |||
c7b6d69518 | |||
65512a9862 | |||
![]() |
17ea8af050 | ||
![]() |
43578a32eb | ||
d863aafa8c | |||
5bce84b786 | |||
9eab9ad5f0 | |||
7c34204d17 | |||
3a5c1c10d3 | |||
f9864a887d | |||
3d8519313e | |||
f4ecf10885 | |||
c67b415934 | |||
10511d3022 | |||
![]() |
ddc80a29fd | ||
9ea36a26d2 | |||
97286496fc | |||
![]() |
6436af76f5 | ||
![]() |
576b5064c0 | ||
![]() |
342265b3c0 | ||
![]() |
54938ecb6c | ||
![]() |
7aff8252d2 | ||
![]() |
9c680130f7 | ||
24d1ad093d | |||
b2b9cd810f | |||
582be54dea | |||
ff0fbeafa3 | |||
e314cf0599 | |||
![]() |
e7b72112cf | ||
![]() |
70c095febe | ||
6119b029f8 | |||
b74cd9a73d | |||
8ff6809f08 | |||
39af9d8623 | |||
3688d7548c | |||
07f9afb14e | |||
de12dadac2 | |||
877c909482 | |||
![]() |
1206aba83b | ||
![]() |
fcd631b2de | ||
![]() |
86130954d7 | ||
![]() |
23a56c637d | ||
![]() |
d5ac0db67b | ||
bb4869b7be | |||
44b6e82183 | |||
![]() |
5268f166f8 | ||
![]() |
37ad6b5fbf | ||
![]() |
bcc72c932d | ||
b9a9bd03c2 | |||
e6543bcf77 | |||
03b61946f8 | |||
8fe2f4c64d | |||
37af722556 | |||
4312ad82e7 | |||
e9e8a8fba9 | |||
5cad4ab2a7 | |||
01dd93e076 | |||
d301f841e3 | |||
81d18d4656 | |||
ccba22cfd2 | |||
465b550c30 | |||
788811bf6c | |||
c926355048 | |||
84cbf5c497 | |||
7eb2d8930f | |||
864ebdf96d | |||
ee9a92bcb4 | |||
818bc243e4 | |||
062289a977 | |||
56a1c57e04 | |||
3c7063792c | |||
77eadb42bb | |||
9053fcd5de | |||
5f11467f27 | |||
55b1c7bdae | |||
ba90842185 | |||
8fd3041efd | |||
bb5ead80de | |||
168c7e7a5d | |||
a7838bbf7d | |||
fe8b58a7b9 | |||
a9f52b3a94 | |||
13c47f7b9f | |||
3515df9b15 | |||
f998fa62a6 | |||
a6032cae46 | |||
7935f79d77 | |||
ef443346d1 | |||
a27eee1fa2 | |||
b839dc077c | |||
2b719858c2 | |||
97afc379e8 | |||
7f401ba789 | |||
ff22ae5653 | |||
02d94fcea0 | |||
df2015f360 | |||
64a14c831b | |||
fbbe7852c2 | |||
9dfccd2bd0 | |||
969a75e9f3 | |||
a59ba5ef78 | |||
3ebfdbc48b | |||
8db14a95c1 | |||
1b9062d86f | |||
4b60a79e49 | |||
002e1ccb55 | |||
0bcdf88290 | |||
0612c653b8 | |||
![]() |
c5dadb063a | ||
35d6010298 | |||
40a63d9e16 | |||
5712dd735b | |||
2c75ea5005 | |||
e35f37fcc2 | |||
71358ea74d | |||
b8f822830f | |||
74e4fe6357 | |||
77bee64421 | |||
c761230566 | |||
49505fabcd | |||
4ad01d7833 | |||
ab1a13f886 | |||
![]() |
44c25e54f8 | ||
cdabd6f055 | |||
60144a6b08 | |||
382acf7c8c | |||
![]() |
03ba59028f | ||
![]() |
50125fc55a | ||
39e1fb017c | |||
2aaa4eced3 | |||
![]() |
6d2eac5b1c | ||
![]() |
40040d1b17 | ||
2a791d43bf | |||
b10aeb046d | |||
7d6e230fd9 | |||
9346bba7a0 | |||
30f739c42e | |||
eb0679cb96 | |||
45deae3402 | |||
5b0b26799d | |||
ee234b80a7 | |||
0065af2aef | |||
9c086cfa0f | |||
2f263a23b7 | |||
9cb6eafbbc | |||
cba7c39a0e | |||
e2e8b84e6a | |||
eca0c0dbbd | |||
36cc3f9365 | |||
63d7cbe7c4 | |||
ae57cc3404 | |||
23df8f8a7f | |||
2f278b7f3c | |||
9444939c35 | |||
6688dc1163 | |||
6a7300b35f | |||
c95a2feb5e | |||
8042d28b13 | |||
890359f8c7 | |||
91955e80d2 | |||
6c1c66226d | |||
1a76913aac | |||
f85af2cbd2 | |||
351f700927 | |||
![]() |
0e4b133858 | ||
![]() |
abdde4c1f0 | ||
![]() |
4899285eca | ||
![]() |
fb3e6b537c | ||
![]() |
22d1cc9ce9 | ||
304d91e8b7 | |||
cf650052e4 | |||
![]() |
10055788e4 | ||
![]() |
a67f3f037e | ||
![]() |
4d736c00fc | ||
![]() |
29b8a645db | ||
![]() |
2459a499ce | ||
28f4e3a534 | |||
e2931e96eb | |||
![]() |
fbcba39e69 | ||
![]() |
b59d262dca | ||
![]() |
7f4a13231f | ||
![]() |
4ab5af2ae9 | ||
![]() |
4c4eaf4012 | ||
![]() |
b03198a39f | ||
![]() |
06dc26e962 | ||
![]() |
bcc8f5968e | ||
![]() |
4c144d2f7e | ||
747290e16a | |||
![]() |
64b6d4df74 | ||
![]() |
22d48cb5d9 | ||
![]() |
fea01c44ca | ||
b80a342f92 | |||
60a13d974c | |||
4c9000839d | |||
b3c24c6734 | |||
a2a8cc5b79 | |||
da7a208c1f | |||
979a3d3e99 | |||
1f11ea7aa0 | |||
8bdc933bce | |||
999cbba464 | |||
7457521398 | |||
366b61134e | |||
52154ac271 | |||
cdc285e362 | |||
4643301764 | |||
f546543e9b | |||
85fe94ec0c | |||
db13c96baa | |||
33b6000b41 | |||
a261365682 | |||
4064582583 | |||
fc0da0bdbb | |||
76c678d4ba | |||
3db8b7b021 | |||
fa49637d0e | |||
65ec231349 | |||
93705bf534 | |||
29a905199d | |||
8569d9b0a0 | |||
1e1f2b089f | |||
78cc6e6784 | |||
a37f339fea | |||
d0cc12ef5c | |||
bcd51d6259 | |||
7ceb806af2 | |||
![]() |
8f35fc0ec0 | ||
![]() |
3f79fab8e5 | ||
![]() |
53dee8cb81 | ||
56103466fa | |||
13f5df3a48 | |||
a89cc35d40 | |||
276cd4b4dd | |||
c509433b2c | |||
7292b36137 | |||
![]() |
0111c8aae1 | ||
eefe5e6200 | |||
492f1d8aa5 | |||
ac20ced5fa | |||
866cd53328 | |||
f523e3e81e | |||
bdd7d617c3 | |||
a0bc5f6cb3 | |||
3f238635f2 | |||
c300476ad2 | |||
6a2e00c467 | |||
4fa983a314 | |||
ed5b66d033 | |||
bec45c37c1 | |||
ad42c09fef | |||
084fa1894c | |||
6bc63d79ff | |||
b1f06f6b1d | |||
7e9d5359f1 | |||
86b8a2ab0f | |||
b8043f2c4a | |||
![]() |
eff11f18c5 | ||
eca8b1ec46 | |||
59bd2842c4 | |||
92564d4075 | |||
9d59ee9d8d | |||
b845e751aa | |||
246a10535c | |||
977c521d7c | |||
0e3ba0b89e | |||
18d75e0564 | |||
482f95ba55 | |||
c70b900c96 | |||
75877661a2 | |||
1828b14790 | |||
35582650dc | |||
9500703408 | |||
ba48a817f2 | |||
b06f28d3e6 | |||
838e0c7b12 | |||
08b34138e0 | |||
073ccbf6c7 | |||
a58187e5f7 | |||
6af39c6a2f | |||
d97733fb1a | |||
80212fc61f | |||
fe60ac8f67 | |||
b6d5c9be63 | |||
e5a40288af | |||
bafb56651c | |||
29290b1468 | |||
316a539a11 | |||
6320f0d93c | |||
6e12d70cd9 | |||
bca6861bcb | |||
![]() |
60074919f6 | ||
![]() |
7f9e5e181a | ||
0f2662e52d | |||
![]() |
5930470023 | ||
![]() |
56930a8921 | ||
![]() |
991f46e923 | ||
![]() |
2ec47ad1e2 | ||
ae81dd94a5 | |||
dcc4f4c782 | |||
c65d149590 | |||
2620348573 | |||
![]() |
ba1bcd550d | ||
![]() |
0dd082079e | ||
![]() |
7928cf5f24 | ||
![]() |
1333ebf859 | ||
![]() |
ec3779147f | ||
ebd8e42154 | |||
a4f20872b0 | |||
ef689d04fc | |||
![]() |
d441536f01 | ||
f976beb751 | |||
bed6142fa1 | |||
4c34099751 | |||
![]() |
e0db808dce | ||
![]() |
c500e8f513 | ||
![]() |
7f86da1123 | ||
aa4ebfff29 | |||
![]() |
ae4deb412f | ||
![]() |
6eb27b655a | ||
![]() |
fe72fe97b5 | ||
c82ef1855c | |||
fd43865105 | |||
cf095ba13b | |||
092c5312cb | |||
fc21b43475 | |||
3fce3c58e2 | |||
207315937a | |||
61d9180b2e | |||
89985cf6bd | |||
cc4568b968 | |||
d7132ecaf6 | |||
720e0e6c24 | |||
9763d8b26c | |||
f512267b6d | |||
241de0264d | |||
5c7bce1258 | |||
e24543be12 | |||
422c780d0c | |||
![]() |
96a592a4f9 | ||
d4bf33ca6d | |||
e5b33160e0 | |||
c8d83ed9e7 | |||
16b2e16614 | |||
221d1d413b | |||
4391e3d3de | |||
c5e9e97c84 | |||
4c1cad7f61 | |||
fffd98e09e | |||
a1a084bfda | |||
85e575386e | |||
2c64805eec | |||
6f2e439ddc | |||
7e42a096a5 | |||
9d2cf05a41 | |||
d7c095173d | |||
36ba6eca92 | |||
b6fa131999 | |||
c85c478595 | |||
![]() |
74e020c090 | ||
40105f37ed | |||
ca3f8779b8 | |||
a6a651d6f7 | |||
7748b4bb5d | |||
01a6c65c82 | |||
211d43aa30 | |||
c716f4aa96 | |||
9fd9d2a120 | |||
5c75be20d3 | |||
1ccb898f78 | |||
d734a30a18 | |||
3d310c0ee4 | |||
79512af350 | |||
7a2ad3797d | |||
f87312fc53 | |||
682f1e8bd4 | |||
cbc2e978c9 | |||
72fd93eaf6 | |||
8bac4b8ec6 | |||
6c29a4a18f | |||
3ae581a19f | |||
a9378988cb | |||
00f96bb7af | |||
ecd2984a61 | |||
3be69cb6a2 | |||
099bc49761 | |||
ec61f4b431 | |||
b16a6c5ddb | |||
9a94b92018 | |||
fe8a3b1565 | |||
a3d1052193 | |||
fbbd3cf00e | |||
8a6f73fdc2 | |||
c806f17484 | |||
db231e07f8 | |||
eaf13a4453 | |||
d4a73fb3bb | |||
8459135002 | |||
4aef2595b2 | |||
ccdcc7676e | |||
967cc8da71 | |||
071bcf55ef | |||
cf735211c9 | |||
bd56eb953b | |||
940ace664c | |||
![]() |
8619deb6ee | ||
![]() |
9fcc5d36e5 | ||
![]() |
c374cdefe9 | ||
7b925b5909 | |||
013a80a1f2 | |||
ec860aa6fc | |||
12e06eb52d | |||
464fce07b0 | |||
ad484a1f35 | |||
7296d2a939 | |||
cd596a6ad6 | |||
![]() |
ed3b9c9538 | ||
df9d99edcd | |||
![]() |
f5f4074409 | ||
6439eac76c | |||
5c794aaeff | |||
8cdd1b52d1 | |||
6928ac4b99 | |||
ae42a53b41 | |||
be7df1714d | |||
8cf7ca5ef2 | |||
0cfa89b389 | |||
f63ed6d0a7 | |||
00440e9050 | |||
76db14360a | |||
0966739296 | |||
1e27056902 | |||
3b41e18573 | |||
2668e47a6f | |||
b44e30ed28 | |||
bfad5b82f0 | |||
41d4c97067 | |||
![]() |
52f27c87b9 | ||
3f5ef28a48 | |||
4ec1e08606 | |||
f2cea695ee | |||
e4a6ead606 | |||
dc536c45de | |||
95fcbe6ba4 | |||
60f55940b7 | |||
655331d405 | |||
4381992718 | |||
eb87d924c2 | |||
1cebb29bdc | |||
27c1ec990a | |||
d40b816c48 | |||
ac5daec462 | |||
0835a34c71 | |||
babbc0a08d | |||
04ac629b51 | |||
![]() |
3920435eb7 | ||
2f0b20558e | |||
9ca6e15a20 | |||
9c2dba7cf8 | |||
318b6caf5f | |||
![]() |
83612b6a3c | ||
![]() |
f4e20f8ed4 | ||
![]() |
7883413210 | ||
![]() |
ad54134c86 | ||
![]() |
ef0d3a9eae | ||
ea48733cef | |||
6893d923a3 | |||
d94b133e63 | |||
28b6d554e2 | |||
931cadfffa | |||
232d876c8f | |||
c7f4fd2926 | |||
6b43ff1c0e | |||
5b5d762759 | |||
b4020d0f95 | |||
d8da78e22d | |||
c82bb4125b | |||
7b5e6477d3 | |||
41582a3770 | |||
e9cbe0d825 | |||
dc563523bc | |||
b15eed9697 | |||
019e83c55b | |||
7dad22189a | |||
eebaf94cbf | |||
1726d5882c | |||
64d843d98a | |||
610f18dcb6 | |||
cea638b680 | |||
e1e0a4e092 | |||
bc4a8bcba1 | |||
3db13062ed | |||
9559f07013 | |||
dee30385cc | |||
49ce469c12 | |||
59e1299a0b | |||
ab2667529f | |||
![]() |
a7fd88b4be | ||
a2cb4ba889 | |||
9847f7ad01 | |||
c2d81279fe | |||
77489cab1e | |||
7d35dbc752 | |||
f2ea4136c0 | |||
537d011b40 | |||
8af1e650b7 | |||
e3cbd8be87 | |||
7099875bc7 | |||
4a15fe1602 | |||
7478edd454 | |||
da4658c220 | |||
6768bf85d5 | |||
199a06c6e5 | |||
b967c32393 | |||
e9797ce6ac | |||
861de1f354 | |||
6f838d12e9 | |||
010c0011aa | |||
b1c5ddbca8 | |||
a16f16d36d | |||
e5196f0aad | |||
b8df56dcbb | |||
612f4ffadf | |||
652d3c7ff8 | |||
b6d49bb851 | |||
cb6f90a027 | |||
fff215fcdb | |||
8e9743cae1 | |||
0e41fabbe6 | |||
5ff5a4a6d2 | |||
d4dadfcdc7 | |||
fac228dec1 | |||
79490f8346 | |||
635b467394 | |||
e886090830 | |||
80cb5567d5 | |||
3c0824aad4 | |||
0bbbb3f1b6 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -19,4 +19,5 @@ src/sounds/iOs
|
||||
release-snapshot/
|
||||
src/com_cache/
|
||||
doc/strings.py
|
||||
doc/changelog.py
|
||||
doc/changelog.py
|
||||
env/
|
165
.gitlab-ci.yml
Normal file
165
.gitlab-ci.yml
Normal file
@@ -0,0 +1,165 @@
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
PYTHON: "C:\\python310\\python.exe"
|
||||
PYTHON37: "C:\\python37\\python.exe" # for Windows 7 support.
|
||||
NSIS: "C:\\program files (x86)\\nsis\\makensis.exe"
|
||||
|
||||
stages:
|
||||
- build
|
||||
- make_installer
|
||||
- upload
|
||||
|
||||
twblue32:
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
- choco install python --version 3.10.8 -y -ForceX86
|
||||
- '&$env:PYTHON -V'
|
||||
- '&$env:PYTHON -m pip install --upgrade pip'
|
||||
- '&$env:PYTHON -m pip install --upgrade https://github.com/josephsl/wxpy32whl/blob/main/wxPython-4.2.0-cp310-cp310-win32.whl?raw=true'
|
||||
- '&$env:PYTHON -m pip install --upgrade -r requirements.txt'
|
||||
stage: build
|
||||
interruptible: true
|
||||
script:
|
||||
# Create html documentation firstly.
|
||||
- cd doc
|
||||
- '&$env:PYTHON documentation_importer.py'
|
||||
- cd ..\src
|
||||
- '&$env:PYTHON ..\doc\generator.py'
|
||||
- '&$env:PYTHON write_version_data.py'
|
||||
- New-Item "appkeys.py" -ItemType File -Value "twitter_api_key='$TWITTER_API_KEY'`ntwitter_api_secret='$TWITTER_API_SECRET'"
|
||||
- '&$env:PYTHON setup.py build'
|
||||
- cd ..
|
||||
- mkdir artifacts
|
||||
- cd scripts
|
||||
- '&$env:PYTHON make_archive.py'
|
||||
- cd ..
|
||||
- mv src/dist artifacts/TWBlue
|
||||
- move src/twblue.zip artifacts/twblue_x86.zip
|
||||
# Move the generated script nsis file to artifacts, so we won't need python when generating the installer.
|
||||
- move scripts/twblue.nsi artifacts/twblue.nsi
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
paths:
|
||||
- artifacts
|
||||
expire_in: 1 day
|
||||
|
||||
twblue64:
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
- choco install python --version 3.10.8 -y
|
||||
- '&$env:PYTHON -V'
|
||||
- '&$env:PYTHON -m pip install --upgrade pip'
|
||||
- '&$env:PYTHON -m pip install --upgrade -r requirements.txt'
|
||||
stage: build
|
||||
interruptible: true
|
||||
script:
|
||||
# Create html documentation firstly.
|
||||
- cd doc
|
||||
- '&$env:PYTHON documentation_importer.py'
|
||||
- cd ..\src
|
||||
- '&$env:PYTHON ..\doc\generator.py'
|
||||
- '&$env:PYTHON write_version_data.py'
|
||||
- New-Item "appkeys.py" -ItemType File -Value "twitter_api_key='$TWITTER_API_KEY'`ntwitter_api_secret='$TWITTER_API_SECRET'"
|
||||
- '&$env:PYTHON setup.py build'
|
||||
- cd ..
|
||||
- mkdir artifacts
|
||||
- cd scripts
|
||||
- '&$env:PYTHON make_archive.py'
|
||||
- cd ..
|
||||
- mv src/dist artifacts/TWBlue64
|
||||
- move src/twblue.zip artifacts/twblue_x64.zip
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
paths:
|
||||
- artifacts
|
||||
expire_in: 1 day
|
||||
|
||||
twblueWin7:
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
- choco install python --version 3.7.9 -y -ForceX86
|
||||
- '&$env:PYTHON37 -V'
|
||||
- '&$env:PYTHON37 -m pip install --upgrade pip'
|
||||
- '&$env:PYTHON37 -m pip install --upgrade https://github.com/josephsl/wxpy32whl/blob/main/wxPython-4.2.0-cp37-cp37m-win32.whl?raw=true'
|
||||
- '&$env:PYTHON37 -m pip install --upgrade -r requirements.txt'
|
||||
stage: build
|
||||
interruptible: true
|
||||
script:
|
||||
# Create html documentation firstly.
|
||||
- cd doc
|
||||
- '&$env:PYTHON37 documentation_importer.py'
|
||||
- cd ..\src
|
||||
- '&$env:PYTHON37 ..\doc\generator.py'
|
||||
- '&$env:PYTHON37 write_version_data.py'
|
||||
- New-Item "appkeys.py" -ItemType File -Value "twitter_api_key='$TWITTER_API_KEY'`ntwitter_api_secret='$TWITTER_API_SECRET'"
|
||||
- '&$env:PYTHON37 setup.py build'
|
||||
- cd ..
|
||||
- mkdir artifacts
|
||||
- cd scripts
|
||||
- '&$env:PYTHON37 make_archive.py'
|
||||
- cd ..
|
||||
- move src/twblue.zip artifacts/twblue_windows7_x86.zip
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
paths:
|
||||
- artifacts
|
||||
expire_in: 1 day
|
||||
|
||||
generate_versions:
|
||||
stage: make_installer
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
- choco install nsis -y -ForceX86
|
||||
script:
|
||||
- move artifacts/TWBlue scripts/
|
||||
- move artifacts/TWBlue64 scripts/
|
||||
- move artifacts/twblue.nsi scripts/installer.nsi
|
||||
- cd scripts
|
||||
- '&$env:NSIS installer.nsi'
|
||||
- move twblue_setup.exe ../artifacts
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
paths:
|
||||
- artifacts
|
||||
expire_in: 1 day
|
||||
|
||||
upload:
|
||||
stage: upload
|
||||
tags:
|
||||
- linux
|
||||
image: python
|
||||
interruptible: true
|
||||
script:
|
||||
- cd artifacts
|
||||
- python ../scripts/upload.py
|
||||
only:
|
||||
- tags
|
||||
- schedules
|
2
COPYING
2
COPYING
@@ -1,5 +1,5 @@
|
||||
Tw Blue is free software, licensed under the GNU GPL license, either version 2 or, at your option, any later version. You can view the license in the file named license.txt, or online at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
|
||||
Copyright © 2013-2015. Manuel Cortéz
|
||||
Copyright © 2013-2018. Manuel Cortéz
|
||||
|
||||
Documentation is written by Sukil Etxenike, Brian Hartgen and Bill Dengler, covered by the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license. You can read the license at https://creativecommons.org/licenses/by-nc-sa/2.5/
|
||||
|
||||
|
104
README.md
104
README.md
@@ -1,7 +1,9 @@
|
||||
TWBlue -
|
||||
======
|
||||
|
||||
TW Blue is an app designed to use Twitter simply and efficiently while using minimal system resources.
|
||||
[](https://ci.appveyor.com/project/manuelcortez/twblue)
|
||||
|
||||
TW Blue is an app designed to use Twitter simply and efficiently while using minimal system resources.
|
||||
With this app you’ll have access to twitter features such as:
|
||||
|
||||
* Create, reply to, like, retweet and delete tweets,
|
||||
@@ -19,60 +21,53 @@ See [TWBlue's webpage](http://twblue.es) for more details.
|
||||
|
||||
This document describes how to run tw blue from source and how to build a binary version which doesn't need Python and the other dependencies to run.
|
||||
|
||||
### Generating application keys
|
||||
|
||||
In order to communicate with Twitter, you will need to generate a set of API keys in their [developer portal](https://developer.twitter.com/en/portal/dashboard) (If you haven't signed up, [visit this site to register as a developer](https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api)) and create a module called appkeys.py, within the src directory, with the following content, replacing the example values with your set of API keys:
|
||||
|
||||
```
|
||||
twitter_api_key='xxxxxxxxxx'
|
||||
twitter_api_secret='xxxxxxxxxx'
|
||||
```
|
||||
|
||||
### Required dependencies.
|
||||
|
||||
Although most dependencies can be found in the windows-dependencies directory, we provide links to their official websites. If you are cloning with git, don't forget to initialize and update the submodules to get the windows-dependencies folder. You can use these two commands to perform this task from git bash:
|
||||
```
|
||||
git submodule init
|
||||
git submodule update
|
||||
|
||||
All the dependencies provided in this folder are prebuilt. If you want to build them from source, you will need Microsoft visual Studio 2008.
|
||||
```
|
||||
|
||||
#### Dependencies packaged in windows installers
|
||||
|
||||
* [Python,](http://python.org) version 2.7.14
|
||||
If you want to build both x86 and x64 binaries, you can install python x86 to C:\python27 and python x64 to C:\python27x64, for example.
|
||||
* [wxPython](http://www.wxpython.org) for Python 2.7, version 3.0.2.0
|
||||
* [Python windows extensions (pywin32)](http://www.sourceforge.net/projects/pywin32/) for python 2.7, build 221
|
||||
* [PyEnchant,](http://pythonhosted.org/pyenchant/) version 1.6.6.
|
||||
x64 version has been built by TWBlue developers, so you only will find it in windows-dependencies folder
|
||||
* [Python,](https://python.org) version 3.10.8
|
||||
If you want to build both x86 and x64 binaries, you can install python x64 to C:\python310 and python x86 to C:\python310-32, for example.
|
||||
|
||||
The windows installers are available only in the windows-dependencies folder
|
||||
#### Dependencies that must be installed using pip
|
||||
|
||||
To build a binary version:
|
||||
Python installs a tool called Pip that allows to install packages in a simple way. You can find it in the python scripts directory. To install packages using Pip, you have to navigate to the scripts directory using a command prompt, for example:
|
||||
|
||||
* [Py2exe](http://www.sourceforge.net/projects/py2exe/) for Python 2.7, version 0.6.9
|
||||
`cd C:\python310\scripts`
|
||||
|
||||
#### Dependencies that must be installed using easy_install
|
||||
|
||||
setuptools installs a script, called easy_install. You can find it in the python scripts directory. To install packages using easy_install, you have to navigate to the scripts directory using a command prompt, for example:
|
||||
|
||||
cd C:\python27x64\scripts
|
||||
|
||||
You can also add the scripts folder to your path environment variable.
|
||||
You can also add the scripts folder to your path environment variable or choose the corresponding option when installing Python.
|
||||
Note: pip and setuptools are included in the Python installer since version 2.7.9.
|
||||
|
||||
After that, run the following command to install a package, replacing packagename with the names listed below:
|
||||
Note: If you are using Python for 32-bit systems, you will need to install WXPython for 32-bits before running the command for installing everything else. You can do so by running the following command:
|
||||
|
||||
easy_install -Z package
|
||||
`pip install --upgrade https://github.com/josephsl/wxpy32whl/blob/main/wxPython-4.2.0-cp310-cp310-win32.whl?raw=true`
|
||||
|
||||
The -z switch unzips the package, instead of installing it compressed. If you add the --upgrade switch, you can upgrade a package to its latest version. The following packages need to be installed:
|
||||
Pip is able to install packages listed in a special text file, called the requirements file. To install all remaining dependencies, perform the following command:
|
||||
|
||||
* pypubsub==3.3.0
|
||||
* configobj
|
||||
* requests-oauthlib
|
||||
* requests-toolbelt
|
||||
* future
|
||||
* pygeocoder
|
||||
* arrow
|
||||
* markdown
|
||||
* winpaths
|
||||
* PySocks
|
||||
* win_inet_pton
|
||||
* yandex.translate
|
||||
`pip install -r requirements.txt`
|
||||
|
||||
easy_install will automatically get the additional libraries that these packages need to work properly.
|
||||
Run the following command to quickly install and upgrade all packages and their dependencies:
|
||||
easy_install -Z --upgrade six configobj markdown future requests oauthlib requests-oauthlib requests-toolbelt pypubsub==3.3.0 pygeocoder arrow python-dateutil futures winpaths PySocks win_inet_pton yandex.translate idna chardet urllib3
|
||||
Note that if you perform the command from the path where Pip is located, you need to specify the path to your Tw Blue root folder where the requirements file is located, for example:
|
||||
|
||||
`pip install -r D:\repos\TwBlue\requirements.txt`
|
||||
|
||||
Pip will automatically get the additional libraries that the listed packages need to work properly.
|
||||
If you need to update your dependencies, perform the following command:
|
||||
|
||||
`pip install --upgrade -r requirements.txt`
|
||||
|
||||
#### Other dependencies
|
||||
|
||||
@@ -81,17 +76,18 @@ These dependencies are located in the windows-dependencies directory. You don't
|
||||
* Bootstrap 1.2.1: included in dependencies directory.
|
||||
This dependency has been built using pure basic 4.61. Its source can be found at http://hg.q-continuum.net/updater
|
||||
* [oggenc2.exe,](http://www.rarewares.org/ogg-oggenc.php) version 2.87
|
||||
* Microsoft Visual c++ 2008 redistributable dlls.
|
||||
* Microsoft Visual c++ 2019 redistributable dlls.
|
||||
* VLC plugins and DLL libraries.
|
||||
|
||||
#### Dependencies required to build the installer
|
||||
|
||||
* [NSIS,](http://nsis.sourceforge.net/) version 3.02.1
|
||||
* [NSIS,](http://nsis.sourceforge.net/) version 3.04
|
||||
|
||||
#### Dependencies required to build the portableApps.com format archive
|
||||
|
||||
* [NSIS Portable,](http://portableapps.com/apps/development/nsis_portable) version 3.02.1
|
||||
* [NSIS Portable,](http://portableapps.com/apps/development/nsis_portable) version 3.03
|
||||
* [PortableApps.com Launcher,](http://portableapps.com/apps/development/portableapps.com_launcher) version 2.2.1
|
||||
* [PortableApps.com Installer,](http://portableapps.com/apps/development/portableapps.com_installer) version 3.5.5
|
||||
* [PortableApps.com Installer,](http://portableapps.com/apps/development/portableapps.com_installer) version 3.5.11
|
||||
|
||||
Important! Install these 3 apps into the same folder, otherwise you won't be able to build the pa.c version. For example: D:\portableApps\NSISPortable, D:\PortableApps\PortableApps.com installer, ...
|
||||
|
||||
@@ -101,19 +97,21 @@ In order to add the support for spell checking in more languages than english yo
|
||||
|
||||
### Running TW Blue from source
|
||||
|
||||
Now that you have installed all these packages, you can run TW Blue from source using a command prompt. Navigate to the repo's src directory, and type the following command:
|
||||
Now that you have installed all these packages, you can run TW Blue from source using a command prompt. Navigate to the repo's `src` directory, and type the following command:
|
||||
|
||||
python main.py
|
||||
`python main.py`
|
||||
|
||||
If necessary, change the first part of the command to reflect the location of your python executable. You can run TW Blue using python x86 and x64
|
||||
If necessary, change the first part of the command to reflect the location of your python executable. You can run TW Blue using python x86 and x64.
|
||||
|
||||
### Generating the documentation
|
||||
|
||||
To generate the documentation in html format, navigate to the doc folder inside this repo. After that, run these commands:
|
||||
python document_importer.py
|
||||
python generator.py
|
||||
The documentation will be generated, placing each language in a separate folder in the doc directory. Move these folders (for example de, en, es, fr, it, ...) to src/documentation, creating the directory if necesary.
|
||||
Also, copy the license.txt located in the root of the repo to the documentation folder.
|
||||
|
||||
`python document_importer.py`
|
||||
`python generator.py`
|
||||
|
||||
The documentation will be generated, placing each language in a separate folder in the doc directory. Move these folders (for example `de`, `en`, `es`, `fr`, `it`, ...) to `src/documentation`, creating the directory if necessary.
|
||||
Also, copy the `license.txt` file located in the root of the repo to the documentation folder.
|
||||
|
||||
### Building a binary version
|
||||
|
||||
@@ -121,7 +119,7 @@ A binary version doesn't need python and the other dependencies to run, it's the
|
||||
|
||||
To build it, run the following command from the src folder:
|
||||
|
||||
python setup.py py2exe
|
||||
`python setup.py build`
|
||||
|
||||
You will find the binaries in the dist directory.
|
||||
|
||||
@@ -129,9 +127,9 @@ To build it, run the following command from the src folder:
|
||||
|
||||
If you want to install TWBlue on your computer, you must create the installer first. Follow these steps:
|
||||
|
||||
* Navigate to the src directory, and create a binary version for x86: C:\python27\python setup.py py2exe
|
||||
* Navigate to the src directory, and create a binary version for x86: C:\python37\python setup.py build
|
||||
* Move the dist directory to the scripts folder in this repo, and rename it to twblue
|
||||
* Repeat these steps with Python for x64: C:\python27x64\python setup.py py2exe
|
||||
* Repeat these steps with Python for x64: C:\python37x64\python setup.py build
|
||||
* Move the new dist directory to the scripts folder, and rename it to twblue64
|
||||
* Go to the scripts folder, right click on the twblue.nsi file, and choose compyle unicode NSIS script
|
||||
* This may take a while. After the process, you will find the installer in the scripts folder
|
||||
@@ -144,9 +142,9 @@ Run the gen_pot.bat file, located in the tools directory. Your python installati
|
||||
|
||||
If you want to have TWBlue on your PortableApps.com platform, follow these steps:
|
||||
|
||||
* Navigate to the src directory, and create a binary version for x86: C:\python27\python setup.py py2exe
|
||||
* Navigate to the src directory, and create a binary version for x86: C:\python37\python setup.py build
|
||||
* Move the dist directory to the misc\pa.c format\app folder in this repo, and rename it to twblue
|
||||
* Repeat these steps with Python for x64: C:\python27x64\python setup.py py2exe
|
||||
* Repeat these steps with Python for x64: C:\python37x64\python setup.py build
|
||||
* Move the new dist directory to the misc\pa.c format\app folder, and rename it to twblue64
|
||||
* Run the PortableApps.com Launcher Generator, and follow the wizard. Choose the pa.c format folder and continue to generate the launcher. If the wizard is completed, you will see a file named TWBlue portable.exe inside the pa.c format folder.
|
||||
* Run the PortableApps.com Installer, and follow the wizard. As in the above step, choose the pa.c format folder. When it completes, you will see a file named TWBluePortable_x.y.paf.exe inside the misc folder, where x.y is the version number.
|
||||
|
@@ -38,4 +38,6 @@ Burak Yüksek
|
||||
florian Ionașcu
|
||||
Christian Leo Mameli
|
||||
Natalia Hedlund (Наталья Хедлунд)
|
||||
Valeria (Валерия)
|
||||
Valeria (Валерия)
|
||||
Corentin Bacqué-Cazenave
|
||||
Artem Plaksin (maniyax)
|
||||
|
@@ -1,18 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
name = 'TWBlue'
|
||||
snapshot = False
|
||||
if snapshot == False:
|
||||
version = "0.93"
|
||||
update_url = 'http://twblue.es/updates/twblue_ngen.json'
|
||||
mirror_update_url = 'https://raw.githubusercontent.com/manuelcortez/TWBlue/next-gen/updates/stable.json'
|
||||
else:
|
||||
version = "10.99"
|
||||
update_url = 'http://twblue.es/updates/snapshots_ngen.json'
|
||||
mirror_update_url = 'https://raw.githubusercontent.com/manuelcortez/TWBlue/next-gen/updates/snapshots.json'
|
||||
author = u"Manuel Cortéz"
|
||||
authorEmail = "manuel@manuelcortez.net"
|
||||
copyright = u"Copyright (C) 2013-2016, Manuel cortéz."
|
||||
description = unicode(name+" is an app designed to use Twitter simply and efficiently while using minimal system resources. This app provides access to most Twitter features.")
|
||||
translators = [u"Bryner Villalobos, Bill Dengler (English)", u"Mohammed Al Shara (Arabic)", u"Joan Rabat, Juan Carlos Rivilla (Catalan)", u"Manuel cortéz (Spanish)", u"Sukil Etxenike Arizaleta (Basque)", u"Jani Kinnunen (finnish)", u"Rémy Ruiz (French)", u"Juan Buño (Galician)", u"Steffen Schultz (German)", u"Robert Osztolykan (Hungarian)", u"Paweł Masarczyk (Polish)", u"Odenilton Júnior Santos (Portuguese)", u"Alexander Jaszyn (Russian)", u"Burak (Turkish)"]
|
||||
url = u"http://twblue.es"
|
||||
report_bugs_url = "http://twblue.es/bugs/api/soap/mantisconnect.php?wsdl"
|
195
doc/changelog.md
195
doc/changelog.md
@@ -1,7 +1,198 @@
|
||||
TWBlue Changelog
|
||||
TWBlue Changelog
|
||||
|
||||
## changes in this version
|
||||
|
||||
* per popular request, We will generate a 32-bit portable version of TWBlue available for Windows 7 operating systems. This version will not be supported in our automatic updater, so in case of using such version, you would need to download it manually every time there is a new update. TWBlue will continue to be available for Windows 7 as long as it is possible to build it using Python 3.7.
|
||||
* Fixed a couple of bugs that were making TWBlue unable to be opened in some computers, related to our translator module and some COM objects handled incorrectly.
|
||||
* Fixed an issue that was making TWBlue unable to open in certain computers due to errors related to Win32 API'S.
|
||||
* Twitter:
|
||||
* Fixed a bug that was making sent direct messages to be placed in received direct messages buffer.
|
||||
* When quoting a tweet, you can use all 280 characters to send your quoted tweet, as opposed to the 256 characters TWBlue allowed before.
|
||||
* Fixed a bug that was making TWBlue unable to reply to direct messages by using the "reply" keystroke.
|
||||
* Mastodon:
|
||||
* Added account settings dialog.
|
||||
* Added template editing functionality for mastodon accounts.
|
||||
* When a post is edited, TWBlue will update the post object in the buffer to reflect the latest edit.
|
||||
* Fixed a small issue that was preventing TWBlue to display some posts in their corresponding dialog.
|
||||
|
||||
## Changes in version 2022.12.6
|
||||
|
||||
Most of all changes in this release are focused on adding Mastodon support to TWBlue. The features present to handle Twitter should not have been altered in any way. We were not intended to release this version so soon, but unfortunately, Twitter started to present issues in some regions with one particular API endpoint we were using, making impossible for everyone in such regions to use the application. We will release more updates to fix any possible issue regarding Twitter API, but please take into account that this is sometimes an issue happening in Twitter's servers and while we do our best to make TWBlue work despite those problems, you might encounter glitches from time to time.
|
||||
|
||||
* TWBlue now builds with Python 3.10.8. ([#493](https://github.com/MCV-Software/TWBlue/issues/493))
|
||||
* This change also drops support for Windows 7.
|
||||
* The TWBlue interface has not been translated yet, as we are releasing this update to fix an important Twitter issue for some regions.
|
||||
* Twitter sessions should be able to be opened properly again in TWBlue, in regions where it didn't work since last week.
|
||||
* It is now possible to log in to instances of mastodon, hometown and similar software (Pleroma should work as well, although it has not been tested at this time). From the session manager, clicking on the “new account” button will bring up a menu from which you can select whether you want to log in to Twitter or Mastodon. For instances that have a different character limit than the one set by Mastodon, TWBlue will detect the new limit and adjust the dialogs to allow you to use it correctly.
|
||||
* Most of the TWBlue GUI has been adapted so that the buffers reflect the change of social network (in mastodon, for example, the buttons to write posts say post instead of tweet). However, the menu bar has not yet been updated. This means that most of the options still refer to Twitter, although they can be used with mastodon accounts. For example, if you select the “tweet” menu in the menu bar, and then select the “Retweet” option, TWBlue will actually do a “boost” if the buffer you are in is a Mastodon account buffer.
|
||||
* Keystrokes for the invisible interface also refer to terms used in Twitter, but can be applied to Mastodon as well.
|
||||
* There are some features, within TWBlue, that are not yet compatible with mastodon accounts. These are as follows:
|
||||
* User autocompletion.
|
||||
* Currently, it is not possible to update account settings for mastodon sessions. However, if you know how to edit configuration files, you can close TWBlue, change your session file with any text editor and restart the application to update what you want.
|
||||
* The template editor is not yet available for mastodon accounts.
|
||||
* Filters have not yet been implemented in TWBlue mastodon support.
|
||||
* User aliases are not implemented yet.
|
||||
* It is not possible to view a user’s profile, nor edit your own, for now. However, you can use the keystroke to open the item in the browser when focusing a user to access their profile website. This only works in buffers where users are listed.
|
||||
* You cannot manage lists in TWBlue at the moment.
|
||||
* Most of the buffers planned for mastodon should just work. Among those currently tested are: home (main timeline for the logged-in user), Local (public posts for the instance), federated (public posts for all federating instances), mentions, direct messages, sent posts, favorites, bookmarks, followers, following, blocked users, muted users, user searches and timelines for users.
|
||||
* The difference between favorites and bookmarks is that the author of the post can see who has marked his posts as favorites, but bookmarks are completely private. In any buffer containing mastodon posts, except direct messages, the GUI will display an option to add the post to favorites or bookmarks.
|
||||
* Direct messages in mastodon are posts, exactly like normal posts, but with their privacy setting set so that they can only be seen by the accounts that are mentioned. In the direct message buffer, a conversation will appear for each item in the buffer. The conversation represents a thread of messages, but TWBlue can only display the last of the messages sent. This is similar to what happens on platforms like Telegram, where you can only see the list of conversations at the beginning. To see the entire thread of direct messages present in a conversation, you can use the command to open the conversation, or go to the “tweet” menu in the menu bar, and then towards the “view conversation” option. This will create a new conversation buffer that will be located just after the direct messages buffer (for the GUI, the buffer will be located just inside the direct messages buffer in the buffer tree). When a private post appears (whose visibility only allows the mentioned accounts to see it), TWBlue will display that post in the home buffer, in mentions and also will update/create the conversation with that item. This is because Mastodon does not differentiate between a private message and a normal post. You can reply to the post in any buffer to continue the conversation. If you reply to any post, the privacy set in the original post is maintained by default, but can also be changed.
|
||||
* The buffer showing the federated timeline has been disabled from settings. This is because on servers that federate with many instances it can load many posts in a very short time. To enable this buffer, for now, edit the TWBlue configuration while the application is closed, and add the “federated” buffer in the option called “buffer_order”. As soon as buffers can be shown or hidden, this process can be done through the GUI.
|
||||
* There is a Streaming API that allows the elements for the start buffers, mentions, direct messages, sent posts and followers to appear in real time. This feature is implemented by default and should also just work.
|
||||
* Timelines for users only allow to get all posts from users who are in the same instance. For users belonging to other instances, you can get the posts that have been downloaded to your instance since your instance “knows” the remote user.
|
||||
* Timelines for followers and following can be fully retrieved only for users belonging to the same instance. Remote users may yield unclear results.
|
||||
* You can search by users (by opening a search and selecting the “users” radio button). The search can be done by local users, such as twblue, or by remote users, such as @twblue@maaw.social.
|
||||
* In all buffers, a maximum of 40 items are retrieved per load, but more can be retrieved by using the option to load more items in the buffer.
|
||||
* In post buffers, you can do most of the actions already supported in TWBlue (boost, add/remove from favorites or bookmarks, reply, send message to user, open post URL, play audio or video, open post on web, view conversation, open action dialog for user).
|
||||
* In user buffers, you can send private message to the user, and open user actions dialog, which in turn allows you to follow/unfollow, block/unblock and mute/unmute.
|
||||
* When writing posts, it is possible to attach up to 4 images, 4 givs, or even a video, poll, or audio. It is also possible to add the “sensitive content” tag to posts, change privacy and write a content warning text. It is possible to create threads using the “add post” button.
|
||||
* When replying to a post, TWBlue will place the username of all participants in the item you reply to. The privacy options will default to those of the original post.
|
||||
|
||||
## Changes in version 2022.8.28
|
||||
|
||||
* the user autocompletion feature has been completely rewritten to be easier to use, particularly for people with many followers/following users:
|
||||
* In the account settings dialog, there's a button that opens up a new dialog that allows you to "scan" your account in order to add all users from your followers/following list. This process will read your data directly from Twitter and depending in the amount of people you have in your account it might take too many API calls. Please use it with caution. You can, for example, do the process separately for your followers/following people so it will be easier to handle, in case you have a massive amount of people. If TWBlue is unable to complete the scan, you will see an error and will be prompted to try again in 15 minutes, once your API calls have refreshed.
|
||||
* It is possible to use the user autocompletion functionality in dialogs where you can select an user, for example when adding or removing someone from a list, or displaying lists for someone.
|
||||
* Implemented a new setting, available in the account settings dialog, that allows to hide emojis in twitter usernames.
|
||||
* TWBlue should be able to sort conversations in a more logical way. This should make it easier to follow a long thread in Twitter.
|
||||
* When opening a thread, TWBlue should be able to load the right conversation if the original tweet from where the thread was loaded was a retweet.
|
||||
* TWBlue will restart the Streaming subsystem every time there are changes to followed, muted or blocked users within the application.
|
||||
* Fixed error when attempting to mention an user by using the "mention" button in any people buffer. Now tweets should be posted normally.
|
||||
* Fixed error when loading other user lists. ([#465](https://github.com/MCV-Software/TWBlue/issues/465))
|
||||
* Fixed an issue that was making TWBlue to display incorrectly some retweets of quoted tweets.
|
||||
* If TWBlue is unable to open a timeline for someone who has blocked you, this will be reported in a dialog. ([#485,](https://github.com/mcv-software/twblue/issues/485))
|
||||
* Added "find a string in the currently focused buffer" action into Windows 10 and windows 11 keymap. ([#476](https://github.com/MCV-Software/TWBlue/pull/476))
|
||||
|
||||
## changes in version 22.2.23
|
||||
|
||||
* We have added Experimental support for templates in the invisible interface. The GUI will remain unchanged for now:
|
||||
* Each object (tweet, received direct message, sent direct message and people) has its own template in the settings. You can edit those templates from the account settings dialog, in the new "templates" tab.
|
||||
* Every template is composed of the group of variables you want to display for each object. Each variable will start with a dollar sign ($) and cannot contain spaces or special characters. Templates can include arbitrary text that will not be processed. When editing the example templates, you can get an idea of the variables that are available for each object by using the template editing dialog. When you press enter on a variable from the list of available variables, it will be added to the template automatically. When you try to save a template, TWBlue will warn you if the template is incorrectly formatted or if it includes variables that do not exist in the information provided by objects. It is also possible to return to default values from the same dialog when editing a template.
|
||||
* TWBlue can display image descriptions within Tweet templates. For that, you can use the $image_description variable in your template.
|
||||
* We have restored conversation and threads support powered by Twitter API V2 thanks to a set of improvements we have done in the application, as well as more generous limits to Tweet monthly cap by Twitter.
|
||||
* In the Windows 11 Keymap, the default shortcut to open the keystrokes editor is now CTRL+Alt+Windows+K to avoid conflicts with the new global mute microphone shortcut.
|
||||
* TWBlue show display properly HTML entities in tweet's text.
|
||||
* TWBlue should no longer load old tweets in buffers.
|
||||
* Fixed issue when uploading attachments (images, videos or gif files) while sending tweets or replies.
|
||||
* Fixed an error that was making TWBlue to ask for a restart after saving account settings, even if such restart was not required. ([#413,](https://github.com/manuelcortez/TWBlue/issues/413))
|
||||
|
||||
## Changes in version 2021.11.12
|
||||
|
||||
* Now it is possible to create a tweet from a trending topics buffer again.
|
||||
* TWBlue now includes a completely new set of dialogs to handle tweeting, replying and sending direct messages that takes advantage of more Twitter features.
|
||||
* It is possible to add videos in tweets and direct messages by using the new "add" button, located in every dialog where media can be added. Twitter suggests to add videos from 5 seconds up to 2 minutes lenght, in mp4 format (video Codec H.264 and audio codec AAC). Currently, TWBlue does not check if the uploaded video complies with Twitter media requirements. You can add only a video in a tweet or direct message. No other kind of media can be added after a video is in a tweet. If the video was unable to be uploaded successfully, the tweet or direct message won't be created.
|
||||
* Now you can add a poll to tweets. Polls can have up to 4 different options and allow voting up to 7 days after being created. Take into account, though, that currently TWBlue does not support reading polls in tweets.
|
||||
* TWBlue now support threads while creating a new tweet. There is a new button, called add tweet which will add the current tweet to the thread and will allow you to write another tweet in the thread. Every tweet might include media (up to 4 photos, or one GIF image or a video) or up to one poll.
|
||||
* Some functionality was removed from tweet dialogs within TWBlue. Particularly, URL shorteners and long tweets via Twishort. You still can read long tweets posted via Twishort, though.
|
||||
|
||||
## Changes in version 2021.11.07
|
||||
|
||||
* TWBlue should retrieve tweets from threads and conversations in a more reliable way. Tweets in the same thread (made by the same author) will be sorted correctly, although replies to the thread (made by different people) may not be ordered in the same way they are displayed in Twitter apps. ([#417](https://github.com/manuelcortez/TWBlue/issues/417))
|
||||
* When creating a filter, TWBlue will show an error if user has not provided a name for the filter. Before, unnamed filters were a cause of config breaks in the application.
|
||||
* It is again possible to read the changelog for TWBlue from the help menu in the menu bar.
|
||||
* fixed a bug when clearing the direct messages buffer. ([#418](https://github.com/manuelcortez/TWBlue/issues/418))
|
||||
* fixed an issue that was making TWBlue to show incorrectly titles for trending topic buffers upon startup. ([#421](https://github.com/manuelcortez/TWBlue/issues/421))
|
||||
* fixed an issue that was making users of the graphical user interface to delete a buffer if a trends buffer was opened in the same session.
|
||||
* Updated Spanish, Japanese and french translations.
|
||||
|
||||
## Changes in Version 2021.10.30
|
||||
|
||||
* Fixed many errors in the way we compile TWBlue, so users of 64 bits systems and particularly windows 7 users would be able to install TWBlue again. In case of issues with versions prior to 2021.10.30, please remove everything related to TWBlue (except configs) and reinstall the version 2021.10.30 to fix any possible error. This step won't be needed again in 23 months. ([#416,](https://github.com/manuelcortez/TWBlue/issues/416), [#415,](https://github.com/manuelcortez/TWBlue/issues/415))
|
||||
* fixed an issue that was making impossible to manually add an user to the autocomplete users database.
|
||||
* Started to improve support to conversations by searching for conversation_id.
|
||||
|
||||
## changes in version 2021.10.27
|
||||
|
||||
* Added an user alias manager, located in the application menu in the menu bar. From this dialog, it is possible to review, add, edit or remove user aliases for the current account. ([#401](https://github.com/manuelcortez/TWBlue/issues/401))
|
||||
* TWBlue now closes the VLC player window automatically when a video reaches its end. ([#399](https://github.com/manuelcortez/TWBlue/issues/399))
|
||||
* After a lot of time, TWBlue now uses a new default Soundpack, called FreakyBlue. This soundpack will be set by default in all new sessions created in the application. Thanks to [Andre Louis](https://twitter.com/FreakyFwoof) for the pack. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
|
||||
* When reading a tweet, if the tweet contains more than 2 consecutive mentions, TWBlue will announce how many more users the tweet includes, as opposed to read every user in the conversation. You still can display the tweet to read all users.
|
||||
* In the tweet displayer, It is possible to copy a link to the current tweet or person by pressing a button called "copy link to clipboard".
|
||||
* Added a keymap capable to work under Windows 11. ([#391](https://github.com/manuelcortez/TWBlue/pull/391))
|
||||
* Added user aliases to TWBlue. This feature allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. For adding an alias to an user, select the "add alias" option in the user menu, located in the menu bar. This feature works only if you have set display screen names unchecked. Users are displayed with their display name in people buffers only. This action is supported in all keymaps, although it is undefined by default. ([#389](https://github.com/manuelcortez/TWBlue/pull/389))
|
||||
* There are some changes to the autocomplete users feature:
|
||||
* Now users can search for twitter screen names or display names in the database.
|
||||
* It is possible to undefine keystrokes in the current keymap in TWBlue. This allows you, for example, to redefine keystrokes completely.
|
||||
* We have changed our Geocoding service to the Nominatim API from OpenStreetMap. Addresses present in tweets are going to be determined by this service, as the Google Maps API now requires an API key. ([#390](https://github.com/manuelcortez/TWBlue/issues/390))
|
||||
* Added a limited version of the Twitter's Streaming API: The Streaming API will work only for tweets, and will receive tweets only by people you follow. Protected users are not possible to be streamed. It is possible that during high tweet traffic, the Stream might get disconnected at times, but TWBlue should be capable of detecting this problem and reconnecting the stream again. ([#385](https://github.com/manuelcortez/TWBlue/pull/385))
|
||||
* Fixed an issue that made TWBlue to not show a dialog when attempting to show a profile for a suspended user. ([#387](https://github.com/manuelcortez/TWBlue/issues/387))
|
||||
* Added support for Twitter audio and videos: Tweets which contains audio or videos will be detected as audio items, and you can playback those with the regular command to play audios. ([#384,](https://github.com/manuelcortez/TWBlue/pull/384))
|
||||
* We just implemented some changes in the way TWBlue handles tweets in order to reduce its RAM memory usage [#380](https://github.com/manuelcortez/TWBlue/pull/380):
|
||||
* We reduced the tweets size by storing only the tweet fields we currently use. This should reduce tweet's size in memory for every object up to 75%.
|
||||
* When using the cache database to store your tweets, there is a new setting present in the account settings dialog, in the general tab. This setting allows you to control whether TWBlue will load the whole database into memory (which is the current behaviour) or not.
|
||||
* Loading the whole database into memory has the advantage of being extremely fast to access any element (for example when moving through tweets in a buffer), but it requires more memory as the tweet buffers grow up. This should, however, use less memory than before thanks to the optimizations performed in tweet objects. If you have a machine with enough memory, this should be a good option for your case.
|
||||
* If you uncheck this setting, TWBlue will read the whole database from disk. This is significantly slower, but the advantage of this setting is that it will consume almost no extra memory, no matter how big is the tweets dataset. Be ware, though, that TWBlue might start to feel slower when accessing elements (for example when reading tweets) as the buffers grow up. This setting is suggested for computers with low memory or for those people not wanting to keep a really big amount of tweets stored.
|
||||
* Changed the label in the direct message's text control so it will indicate that the user needs to write the text there, without referring to any username in particular. ([#366,](https://github.com/manuelcortez/TWBlue/issues/366))
|
||||
* TWBlue will take Shift+F10 again as the contextual menu key in the list of items in a buffer. This stopped working after we have migrated to WX 4.1. ([#353,](https://github.com/manuelcortez/TWBlue/issues/353))
|
||||
* TWBlue should render correctly retweets of quoted tweets. ([#365,](https://github.com/manuelcortez/TWBlue/issues/365))
|
||||
* Fixed an error that was causing TWBlue to be unable to output to screen readers at times. ([#369,](https://github.com/manuelcortez/TWBlue/issues/369))
|
||||
* Fixed autocomplete users feature. ([#367,](https://github.com/manuelcortez/TWBlue/issues/367))
|
||||
* Fixed error when displaying an URL at the end of a line, when the tweet or direct message contained multiple lines. Now the URL should be displayed correctly. ([#305,](https://github.com/manuelcortez/TWBlue/issues/305) [#272,](https://github.com/manuelcortez/TWBlue/issues/272))
|
||||
* TWBlue has been migrated completely to Python 3 (currently, the software builds with Python 3.8).
|
||||
* TWBlue should be restarted gracefully. Before, the application was alerting users of not being closed properly every time the application restarted by itself.
|
||||
* If TWBlue attemps to load an account with invalid tokens (this happens when reactivating a previously deactivated account, or when access to the ap is revoqued), TWBlue will inform the user about this error and will skip the account. Before, the app was unable to start due to a critical error. ([#328,](https://github.com/manuelcortez/TWBlue/issues/328))
|
||||
* When sending a direct message, the title of the window will change appropiately when the recipient is edited. ([#276,](https://github.com/manuelcortez/TWBlue/issues/276))
|
||||
* URL'S in user profiles are expanded automatically. ([#275,](https://github.com/manuelcortez/TWBlue/issues/275))
|
||||
* TWBlue now uses [Tweepy,](https://github.com/tweepy/tweepy) to connect with Twitter. We have adopted this change in order to support Twitter'S API V 2 in the very near future. ([#333,](https://github.com/manuelcortez/TWBlue/issues/337) [#347](https://github.com/manuelcortez/TWBlue/pull/347))
|
||||
* TWBlue can upload images in Tweets and replies again. ([#240,](https://github.com/manuelcortez/TWBlue/issues/240))
|
||||
* Fixed the way we use to count characters in Twitter. The new methods in TWBlue take into account special characters and URLS as documented in Twitter. ([#199,](https://github.com/manuelcortez/TWBlue/issues/199) [#315](https://github.com/manuelcortez/TWBlue/issues/315))
|
||||
* Proxy support now works as expected.
|
||||
* Changed translation service from yandex.translate to Google Translator. ([#355,](https://github.com/manuelcortez/TWBlue/issues/355))
|
||||
* Improved method to load direct messages in the buffers. Now it should be faster due to less calls to Twitter API performed from the client.
|
||||
* And more. ([#352,](https://github.com/manuelcortez/TWBlue/issues/352))
|
||||
|
||||
## Changes in version 0.95
|
||||
|
||||
* TWBlue can open a Tweet or user directly in Twitter. There is a new option in the context menu for people and tweet buffers, and also, the shortcut control+win+alt+Enter will open the focused item in Twitter.
|
||||
* Some keystrokes were remapped in the Windows 10 Keymap:
|
||||
* Read location of a tweet: Ctrl+Win+G. ([#177](https://github.com/manuelcortez/TWBlue/pull/177))
|
||||
* Open global settings dialogue: Ctrl+Win+Alt+O.
|
||||
* Mute/unmute current session: Control + Windows + Alt + M.
|
||||
* Fixed an error that was preventing TWBlue to load the direct messages buffer if an user who sent a message has been deleted.
|
||||
* Added support for playing audios posted in [AnyAudio.net](http://anyaudio.net) directly from TWBlue. Thanks to [Sam Tupy](http://www.samtupy.com/)
|
||||
* Custom buffer ordering will not be reset every time the application restarts after an account setting has been modified.
|
||||
* When adding or removing an user from a list, it is possible to press enter in the focused list instead of having to search for the "add" or "delete" button.
|
||||
* Quoted and long tweets are displayed properly in the sent tweets buffer after being send. ([#253](https://github.com/manuelcortez/TWBlue/issues/253))
|
||||
* Fixed an issue that was making the list manager keystroke unable to be shown in the keystroke editor. Now the keystroke is listed properly. ([#260](https://github.com/manuelcortez/TWBlue/issues/260))
|
||||
* The volume slider, located in the account settings of TWBlue, now should decrease and increase value properly when up and down arrows are pressed. Before it was doing it in inverted order. ([#261](https://github.com/manuelcortez/TWBlue/issues/261))
|
||||
* autoreading has been redesigned to work in a similar way for almost all buffers. Needs testing. ([#221](https://github.com/manuelcortez/TWBlue/issues/221))
|
||||
* When displaying tweets or direct messages, a new field has been added to show the date when the item has been posted to Twitter.
|
||||
* Added support for deleting direct messages by using the new Twitter API methods.
|
||||
* When quoting a retweet, the quote will be made to the original tweet instead of the retweet.
|
||||
* If the sent direct messages buffer is hidden, TWBlue should keep loading everything as expected. ([#246](https://github.com/manuelcortez/TWBlue/issues/246))
|
||||
* There is a new soundpack, called FreakyBlue (Thanks to [Andre Louis](https://twitter.com/FreakyFwoof)) as a new option in TWBlue. This pack can be the default in the next stable, so users can take a look and share their opinion in snapshot versions. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
|
||||
* There is a new option in the help menu that allows you to visit the soundpacks section in the TWBlue website. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
|
||||
* When reading location of a geotagged tweet, it will be translated for users of other languages. ([#251](https://github.com/manuelcortez/TWBlue/pull/251))
|
||||
* When there are no more items to retrieve in direct messages and people buffers, a message will announce it.
|
||||
* Fixed an issue reported by some users that was making them unable to load more items in their direct messages.
|
||||
* It is possible to add a tweet to the likes buffer from the menu bar again.
|
||||
* Tweets, replies and retweets will be added to sent tweets right after being posted in Twitter.
|
||||
* Extended Tweets should be displayed properly in list buffers.
|
||||
|
||||
## Changes in version 0.94
|
||||
|
||||
* Added an option in the global settings dialog to disable the Streaming features of TWBlue. TWBlue will remove all Streaming features after August 16, so this option will give people an idea about how it will be. ([#219](https://github.com/manuelcortez/TWBlue/issues/219))
|
||||
* Due to Twitter API changes, Switched authorisation method to Pin-code based authorisation. When you add new accounts to TWBlue, you will be required to paste a code displayed in the Twitter website in order to grant access to TWBlue. ([#216](https://github.com/manuelcortez/TWBlue/issues/216))
|
||||
* In order to comply with latest Twitter changes, TWBlue has switched to the new method used to send and receive direct messages, according to issue [#215.](https://github.com/manuelcortez/twblue/issues/215)
|
||||
* The new method does not allow direct messages to be processed in real time. Direct messages will be updated periodically.
|
||||
* After august 16 or when streaming is disabled, the events buffer will no longer be created in TWBlue.
|
||||
* You can configure frequency for buffer updates in TWBlue. By default, TWBlue will update all buffers every 2 minutes, but you can change this setting in the global settings dialog. ([#223](https://github.com/manuelcortez/TWBlue/issues/223))
|
||||
* Added a new tab called feedback, in the account settings dialog. This tab allows you to control whether automatic speech or Braille feedbak in certain events (mentions and direct messages received) is enabled. Take into account that this option will take preference over automatic reading of buffers and any kind of automatic output. ([#203](https://github.com/manuelcortez/TWBlue/issues/203))
|
||||
* The spell checking dialog now has access keys defined for the most important actions. ([#211](https://github.com/manuelcortez/TWBlue/issues/211))
|
||||
* TWBlue now Uses WXPython 4.0.1. This will allow us to migrate all important components to Python 3 in the future. ([#207](https://github.com/manuelcortez/TWBlue/issues/207))
|
||||
* When you quote a Tweet, if the original tweet was posted with Twishort, TWBlue should display properly the quoted tweet. Before it was displaying the original tweet only. ([#206](https://github.com/manuelcortez/TWBlue/issues/206))
|
||||
* It is possible to filter by retweets, quotes and replies when creating a new filter.
|
||||
* Added support for playing youtube Links directly from the client. ([#94](https://github.com/manuelcortez/TWBlue/issues/94))
|
||||
* Replaced Bass with libVLC for playing URL streams.
|
||||
* the checkbox for indicating whether TWBlue will include everyone in a reply or not, will be unchecked by default.
|
||||
* You can request TWBlue to save the state for two checkboxes: Long tweet and mention all, from the global settings dialogue.
|
||||
* For windows 10 users, some keystrokes in the invisible user interface have been changed or merged:
|
||||
* control+Windows+alt+F will be used for toggling between adding and removing a tweet to user's likes. This function will execute the needed action based in the current status for the focused tweet.
|
||||
* TWBlue will show an error if something goes wrong in an audio upload.
|
||||
* And more. ([#171,](https://github.com/manuelcortez/TWBlue/issues/171)
|
||||
|
||||
## Changes in version 0.93
|
||||
|
||||
* A new soundpack has been added to TWBlue. Thanks to [@ValeriaK305](https://twitter.com/ValeriaK305)
|
||||
* In the Windows 10 keymap, we have changed some default keystrokes as windows now uses some previously assigned shortcuts:
|
||||
* For liking a tweet, press Control+Windows+alt+f
|
||||
@@ -149,4 +340,4 @@
|
||||
* New followers and friends buffer for user timelines.
|
||||
|
||||
---
|
||||
Copyright © 2014-2017, Manuel Cortez.
|
||||
Copyright © 2014-2021, Manuel Cortez.
|
@@ -2,26 +2,26 @@
|
||||
""" This script converts the hold documentation (saved in markdown files) in a python file with a list of strings to translate it using gettext."""
|
||||
|
||||
def prepare_documentation_in_file(fileSource, fileDest):
|
||||
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
|
||||
@fileSource str: A markdown(.md) file.
|
||||
@fileDest str: A file where this will put the new strings"""
|
||||
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
|
||||
@fileSource str: A markdown(.md) file.
|
||||
@fileDest str: A file where this will put the new strings"""
|
||||
|
||||
f1 = open(fileSource, "r")
|
||||
f2 = open(fileDest, "w")
|
||||
lns = f1.readlines()
|
||||
f2.write("# -*- coding: utf-8 -*-\n")
|
||||
f2.write("documentation = [\n")
|
||||
for i in lns:
|
||||
if "\n" == i:
|
||||
newvar = "\"\","
|
||||
elif "\n" == i[-1]:
|
||||
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i[:-1])
|
||||
else:
|
||||
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i)
|
||||
f2.write(newvar)
|
||||
f1.close()
|
||||
f2.write("]")
|
||||
f2.close()
|
||||
f1 = open(fileSource, "r", encoding="utf-8")
|
||||
f2 = open(fileDest, "w", encoding="utf-8")
|
||||
lns = f1.readlines()
|
||||
f2.write("# -*- coding: utf-8 -*-\n")
|
||||
f2.write("documentation = [\n")
|
||||
for i in lns:
|
||||
if "\n" == i:
|
||||
newvar = "\"\",\n"
|
||||
elif "\n" == i[-1]:
|
||||
newvar = "_(\"\"\"%s\"\"\"),\n" % (i[:-1])
|
||||
else:
|
||||
newvar = "_(\"\"\"%s\"\"\"),\n" % (i)
|
||||
f2.write(newvar)
|
||||
f1.close()
|
||||
f2.write("]")
|
||||
f2.close()
|
||||
|
||||
|
||||
prepare_documentation_in_file("manual.md", "strings.py")
|
||||
|
126
doc/generator.py
126
doc/generator.py
@@ -1,55 +1,87 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import markdown
|
||||
import gettext
|
||||
import os
|
||||
from codecs import open as _open
|
||||
import languageHandler
|
||||
languageHandler.setLanguage("en")
|
||||
import strings
|
||||
import changelog
|
||||
import locale
|
||||
import paths
|
||||
import markdown
|
||||
import shutil
|
||||
from importlib import reload
|
||||
|
||||
# the list of supported language codes of TW Blue
|
||||
languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da"]
|
||||
#"eu", "ar", "ca", "es", "fi", "fr", "gl", "hu", "it", "pl", "pt", "ru", "tr"]
|
||||
# Languages already translated or translating the documentation.
|
||||
documentation_languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da", "sr"]
|
||||
|
||||
def generate_document(language, document_type="documentation"):
|
||||
reload(languageHandler)
|
||||
if document_type == "documentation":
|
||||
translation_file = "twblue-documentation"
|
||||
languageHandler.setLanguage(language, translation_file)
|
||||
reload(strings)
|
||||
markdown_file = markdown.markdown("\n".join(strings.documentation[1:]), extensions=["markdown.extensions.toc"])
|
||||
title = strings.documentation[0]
|
||||
filename = "manual.html"
|
||||
elif document_type == "changelog":
|
||||
translation_file = "twblue-changelog"
|
||||
languageHandler.setLanguage(language, translation_file)
|
||||
reload(changelog)
|
||||
markdown_file = markdown.markdown("\n".join(changelog.documentation[1:]), extensions=["markdown.extensions.toc"])
|
||||
title = changelog.documentation[0]
|
||||
filename = "changelog.html"
|
||||
first_html_block = """<!doctype html>
|
||||
<html lang="%s">
|
||||
<head>
|
||||
<title>%s</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<header><h1>%s</h1></header>
|
||||
""" % (language, title, title)
|
||||
first_html_block = first_html_block+ markdown_file
|
||||
first_html_block = first_html_block + "\n</body>\n</html>"
|
||||
if not os.path.exists(language):
|
||||
os.mkdir(language)
|
||||
mdfile = _open("%s/%s" % (language, filename), "w", encoding="utf-8")
|
||||
mdfile.write(first_html_block)
|
||||
mdfile.close()
|
||||
|
||||
# Changelog translated languages.
|
||||
changelog_languages = ["en", "ca", "de", "es", "eu", "fr", "gl", "ja", "ro", "ru", "sr"]
|
||||
|
||||
# this function will help us to have both strings.py and changelog.py without issues by installing a global dummy translation function.
|
||||
def install_null_translation(name):
|
||||
_ = gettext.NullTranslations()
|
||||
_.install()
|
||||
return
|
||||
|
||||
def get_translations(name):
|
||||
""" Create translation instances for every language of the translated document. """
|
||||
translations = {}
|
||||
if "documentation" in name:
|
||||
langs = documentation_languages
|
||||
else:
|
||||
langs = changelog_languages
|
||||
for l in langs:
|
||||
if l != "en":
|
||||
_ = gettext.translation(name, os.path.join(paths.app_path(), "locales"), languages=[l])
|
||||
translations[l] = _
|
||||
else:
|
||||
_ = gettext.NullTranslations()
|
||||
translations[l] = _
|
||||
return translations
|
||||
|
||||
def generate_document(lang, lang_name, document_type="documentation"):
|
||||
""" Generates a document by using the provided lang object, which should be a translation, and lang_name, which should be the two letter code representing the language. """
|
||||
if document_type == "documentation":
|
||||
translation_file = "twblue-documentation"
|
||||
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in strings.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = lang.gettext(strings.documentation[0])
|
||||
filename = "manual.html"
|
||||
elif document_type == "changelog":
|
||||
translation_file = "twblue-changelog"
|
||||
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in changelog.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = lang.gettext(changelog.documentation[0])
|
||||
filename = "changelog.html"
|
||||
first_html_block = """<!doctype html>
|
||||
<html lang="%s">
|
||||
<head>
|
||||
<title>%s</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<header><h1>%s</h1></header>
|
||||
""" % (lang_name, title, title)
|
||||
first_html_block = first_html_block+ markdown_file
|
||||
first_html_block = first_html_block + "\n</body>\n</html>"
|
||||
if not os.path.exists(os.path.join("documentation", lang_name)):
|
||||
os.mkdir(os.path.join("documentation", lang_name))
|
||||
mdfile = open(os.path.join("documentation", lang_name, filename), "w", encoding="utf-8")
|
||||
mdfile.write(first_html_block)
|
||||
mdfile.close()
|
||||
|
||||
def create_documentation():
|
||||
print("Creating documentation in the supported languages...\n")
|
||||
for i in languages:
|
||||
print("Creating documentation for: %s" % (i,))
|
||||
generate_document(i)
|
||||
generate_document(i, "changelog")
|
||||
print("Done")
|
||||
changelog_translations = get_translations("twblue-changelog")
|
||||
documentation_translations = get_translations("twblue-documentation")
|
||||
print("Creating documentation in the supported languages...\n")
|
||||
if not os.path.exists("documentation"):
|
||||
os.mkdir("documentation")
|
||||
if os.path.exists(os.path.join("documentation", "license.txt")) == False:
|
||||
shutil.copy(os.path.join("..", "license.txt"), os.path.join("documentation", "license.txt"))
|
||||
for i in documentation_languages:
|
||||
print("Creating documentation for: %s" % (i,))
|
||||
generate_document(lang_name=i, lang=documentation_translations.get(i))
|
||||
for i in changelog_languages:
|
||||
print("Creating changelog for: %s" % (i,))
|
||||
generate_document(lang_name=i, lang=changelog_translations.get(i), document_type="changelog")
|
||||
print("Done")
|
||||
|
||||
install_null_translation("twblue-documentation")
|
||||
import strings
|
||||
import changelog
|
||||
create_documentation()
|
@@ -1,176 +0,0 @@
|
||||
import __builtin__
|
||||
import os
|
||||
import sys
|
||||
import ctypes
|
||||
import locale
|
||||
import gettext
|
||||
#import paths
|
||||
import platform
|
||||
|
||||
# A fix for the mac locales
|
||||
if platform.system() != 'Windows':
|
||||
if locale.getlocale()[0] is None:
|
||||
locale.setlocale(locale.LC_ALL, 'en_US')
|
||||
|
||||
#a few Windows locale constants
|
||||
LOCALE_SLANGUAGE=0x2
|
||||
LOCALE_SLANGDISPLAYNAME=0x6f
|
||||
|
||||
curLang="en"
|
||||
|
||||
def localeNameToWindowsLCID(localeName):
|
||||
"""Retreave the Windows locale identifier (LCID) for the given locale name
|
||||
@param localeName: a string of 2letterLanguage_2letterCountry or or just 2letterLanguage
|
||||
@type localeName: string
|
||||
@returns: a Windows LCID
|
||||
@rtype: integer
|
||||
"""
|
||||
#Windows Vista is able to convert locale names to LCIDs
|
||||
func_LocaleNameToLCID=getattr(ctypes.windll.kernel32,'LocaleNameToLCID',None)
|
||||
if func_LocaleNameToLCID is not None:
|
||||
localeName=localeName.replace('_','-')
|
||||
LCID=func_LocaleNameToLCID(unicode(localeName),0)
|
||||
else: #Windows doesn't have this functionality, manually search Python's windows_locale dictionary for the LCID
|
||||
localeName=locale.normalize(localeName)
|
||||
if '.' in localeName:
|
||||
localeName=localeName.split('.')[0]
|
||||
LCList=[x[0] for x in locale.windows_locale.iteritems() if x[1]==localeName]
|
||||
if len(LCList)>0:
|
||||
LCID=LCList[0]
|
||||
else:
|
||||
LCID=0
|
||||
return LCID
|
||||
|
||||
def getLanguageDescription(language):
|
||||
"""Finds out the description (localized full name) of a given local name"""
|
||||
desc=None
|
||||
if platform.system() == "Windows":
|
||||
LCID=localeNameToWindowsLCID(language)
|
||||
if LCID!=0:
|
||||
buf=ctypes.create_unicode_buffer(1024)
|
||||
if '_' not in language:
|
||||
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGDISPLAYNAME,buf,1024)
|
||||
else:
|
||||
res=0
|
||||
if res==0:
|
||||
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGUAGE,buf,1024)
|
||||
desc=buf.value
|
||||
elif platform.system() == "Linux" or not desc:
|
||||
desc={
|
||||
"am":pgettext("languageName","Amharic"),
|
||||
"an":pgettext("languageName","Aragonese"),
|
||||
"es":pgettext("languageName","Spanish"),
|
||||
"pt":pgettext("languageName","Portuguese"),
|
||||
"ru":pgettext("languageName","Russian"),
|
||||
"it":pgettext("languageName","italian"),
|
||||
"tr":pgettext("languageName","Turkey"),
|
||||
"gl":pgettext("languageName","Galician"),
|
||||
"ca":pgettext("languageName","Catala"),
|
||||
"eu":pgettext("languageName","Vasque"),
|
||||
"pl":pgettext("languageName","polish"),
|
||||
"ar":pgettext("languageName","Arabic"),
|
||||
"ne":pgettext("languageName","Nepali"),
|
||||
"sr":pgettext("languageName","Serbian (Latin)"),
|
||||
}.get(language,None)
|
||||
return desc
|
||||
|
||||
def getAvailableLanguages():
|
||||
"""generates a list of locale names, plus their full localized language and country names.
|
||||
@rtype: list of tuples
|
||||
"""
|
||||
#Make a list of all the locales found in NVDA's locale dir
|
||||
l=[x for x in os.listdir("locales") if not x.startswith('.')]
|
||||
l=[x for x in l if os.path.isfile('locales/%s/LC_MESSAGES/twblue-documentation.mo' % x)]
|
||||
#Make sure that en (english) is in the list as it may not have any locale files, but is default
|
||||
if 'en' not in l:
|
||||
l.append('en')
|
||||
l.sort()
|
||||
#For each locale, ask Windows for its human readable display name
|
||||
d=[]
|
||||
for i in l:
|
||||
desc=getLanguageDescription(i)
|
||||
label="%s, %s"%(desc,i) if desc else i
|
||||
d.append(label)
|
||||
#include a 'user default, windows' language, which just represents the default language for this user account
|
||||
l.append("system")
|
||||
# Translators: the label for the Windows default NVDA interface language.
|
||||
d.append(_("User default"))
|
||||
#return a zipped up version of both the lists (a list with tuples of locale,label)
|
||||
return zip(l,d)
|
||||
|
||||
def makePgettext(translations):
|
||||
"""Obtaina pgettext function for use with a gettext translations instance.
|
||||
pgettext is used to support message contexts,
|
||||
but Python 2.7's gettext module doesn't support this,
|
||||
so NVDA must provide its own implementation.
|
||||
"""
|
||||
if isinstance(translations, gettext.GNUTranslations):
|
||||
def pgettext(context, message):
|
||||
message = unicode(message)
|
||||
try:
|
||||
# Look up the message with its context.
|
||||
return translations._catalog[u"%s\x04%s" % (context, message)]
|
||||
except KeyError:
|
||||
return message
|
||||
else:
|
||||
def pgettext(context, message):
|
||||
return unicode(message)
|
||||
return pgettext
|
||||
|
||||
def setLanguage(lang, translation_file="twblue-documentation"):
|
||||
system = platform.system()
|
||||
global curLang
|
||||
try:
|
||||
if lang=="system":
|
||||
if system == "Windows":
|
||||
windowsLCID=ctypes.windll.kernel32.GetUserDefaultUILanguage()
|
||||
localeName=locale.windows_locale[windowsLCID]
|
||||
else:
|
||||
localeName=locale.getlocale()[0]
|
||||
trans=gettext.translation(translation_file, localedir="locales", languages=[localeName])
|
||||
curLang=localeName
|
||||
else:
|
||||
trans=gettext.translation(translation_file, localedir="locales", languages=[lang])
|
||||
curLang=lang
|
||||
localeChanged=False
|
||||
#Try setting Python's locale to lang
|
||||
try:
|
||||
locale.setlocale(locale.LC_ALL, lang)
|
||||
localeChanged=True
|
||||
except:
|
||||
pass
|
||||
if not localeChanged and '_' in lang:
|
||||
#Python couldn'tsupport the language_country locale, just try language.
|
||||
try:
|
||||
locale.setlocale(locale.LC_ALL, lang.split('_')[0])
|
||||
except:
|
||||
pass
|
||||
#Set the windows locale for this thread (NVDA core) to this locale.
|
||||
if system == "Windows":
|
||||
LCID=localeNameToWindowsLCID(lang)
|
||||
ctypes.windll.kernel32.SetThreadLocale(LCID)
|
||||
except IOError:
|
||||
trans=gettext.translation(translation_file,fallback=True)
|
||||
curLang="en"
|
||||
trans.install(unicode=True)
|
||||
# Install our pgettext function.
|
||||
__builtin__.__dict__["pgettext"] = makePgettext(trans)
|
||||
|
||||
def getLanguage():
|
||||
return curLang
|
||||
|
||||
def normalizeLanguage(lang):
|
||||
"""
|
||||
Normalizes a language-dialect string in to a standard form we can deal with.
|
||||
Converts any dash to underline, and makes sure that language is lowercase and dialect is upercase.
|
||||
"""
|
||||
lang=lang.replace('-','_')
|
||||
ld=lang.split('_')
|
||||
ld[0]=ld[0].lower()
|
||||
#Filter out meta languages such as x-western
|
||||
if ld[0]=='x':
|
||||
return None
|
||||
if len(ld)>=2:
|
||||
ld[1]=ld[1].upper()
|
||||
return "_".join(ld)
|
||||
|
BIN
doc/locales/ar/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/ar/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/ar/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/ar/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1604
doc/locales/ar/lc_messages/twblue-documentation.po
Normal file
1604
doc/locales/ar/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue documentation 0.89\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2017-03-25 15:15+0100\n"
|
||||
"Last-Translator: Joan Rabat <joanrabat@hotmail.com>\n"
|
||||
"Language-Team: Francisco Torres Gallego <frantorresgallego@gmail.com>\n"
|
||||
@@ -114,9 +114,10 @@ msgid "## Usage"
|
||||
msgstr "##funcionament"
|
||||
|
||||
#: ../doc/strings.py:21
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
@@ -521,9 +522,10 @@ msgid "#### Buttons in the application"
|
||||
msgstr "###Botons en l'aplicació."
|
||||
|
||||
#: ../doc/strings.py:65
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/de/LC_MESSAGES/twblue-changelog.mo
Normal file
BIN
doc/locales/de/LC_MESSAGES/twblue-changelog.mo
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/de/LC_MESSAGES/twblue-documentation.mo
Normal file
BIN
doc/locales/de/LC_MESSAGES/twblue-documentation.mo
Normal file
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TWBlue Documentation\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-07-09 10:41+0200\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-08 11:01+0200\n"
|
||||
"Last-Translator: Steffen Schultz <schulle3o@yahoo.de>\n"
|
||||
"Language-Team: Steffen Schultz <schulle3o@yahoo.de>\n"
|
||||
"Language: de\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 2.0.2\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../doc/strings.py:3
|
||||
@@ -111,17 +111,17 @@ msgstr "## Verwendung"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"Twitter ist ein soziales Netzwerk oder Micro-Blog, welches das Verfassen von "
|
||||
"Status-Nachrichten von nicht mehr als 140 Zeichen Länge erlaubt. Dieser "
|
||||
"Dienst ist perfekt für Freunde, Familien und Mitarbeiter, um schnell und "
|
||||
"regelmäßig Kurznachrichten auszutauschen. Die Nachrichten können dabei allen "
|
||||
"zugänglich gemacht oder nur auf den Freundeskreis beschränkt werden."
|
||||
"Status-Nachrichten von bis zu 280 Zeichen Länge erlaubt. Dieser Dienst ist "
|
||||
"perfekt für Freunde, Familien und Mitarbeiter, um schnell und regelmäßig "
|
||||
"Kurznachrichten auszutauschen. Die Nachrichten können dabei allen zugänglich "
|
||||
"gemacht oder nur auf den Freundeskreis beschränkt werden."
|
||||
|
||||
#: ../doc/strings.py:22
|
||||
msgid ""
|
||||
@@ -527,7 +527,7 @@ msgstr "#### Schaltflächen der Anwendung"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -541,7 +541,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Tweet: Diese Schaltfläche öffnet einen Dialog zum Verfassen eines neuen "
|
||||
"Tweets. Die Nachricht darf normalerweise 140 Zeichen nicht überschreiten, "
|
||||
"Tweets. Die Nachricht darf normalerweise 280 Zeichen nicht überschreiten, "
|
||||
"kann jedoch durch aktivieren der Checkbox \"Langer Tweet\" über den Twishort-"
|
||||
"Dienst gesendet werden (maximal 10000 Zeichen). Geht eine Nachricht darüber "
|
||||
"hinaus, kennzeichnet TWBlue dies durch einen Warnklang. Die Anzahl der "
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue documentation 0.46\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2015-11-27 08:33-0600\n"
|
||||
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
|
||||
"Language-Team: Sukil Echenique <sukiletxe@yahoo.es>\n"
|
||||
@@ -116,9 +116,10 @@ msgid "## Usage"
|
||||
msgstr " Nola erabili"
|
||||
|
||||
#: ../doc/strings.py:21
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
@@ -446,7 +447,7 @@ msgstr "&Aplikazioa"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
|
BIN
doc/locales/fi/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/fi/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1014
doc/locales/fi/lc_messages/twblue-changelog.po
Normal file
1014
doc/locales/fi/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/fi/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/fi/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
2485
doc/locales/fi/lc_messages/twblue-documentation.po
Normal file
2485
doc/locales/fi/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue documentation 0.88\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-18 16:32+0100\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-11 12:25+0200\n"
|
||||
"Last-Translator: Rémy Ruiz <remyruiz@gmail.com>\n"
|
||||
"Language-Team: Rémy Ruiz <remyruiz@gmail.com>\n"
|
||||
"Language: fr\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 1.8.9\n"
|
||||
"X-Generator: Poedit 1.8.12\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
@@ -120,14 +120,14 @@ msgstr "## Utilisation"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"Twitter est un réseau social qui vous permet de créer vos mises à jour du "
|
||||
"statut de vos activités en 140 caractères ou moins. Twitter est un moyen de "
|
||||
"statut de vos activités en 280 caractères ou moins. Twitter est un moyen de "
|
||||
"rester connecté avec vos amis, famille et collègues de travail à travers de "
|
||||
"l'échange de messages courts. Vous pouvez restreindre vos mises à jour afin "
|
||||
"que seuls vos amis puissent les voir, ou permettre à quiconque de les voir. "
|
||||
@@ -568,7 +568,7 @@ msgstr "#### Boutons dans l'application"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -582,7 +582,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Tweet: Ce bouton ouvre la boîte de dialogue pour écrire un tweet. Le "
|
||||
"message ne doit pas dépasser au-delà de 140 caractères. Cependant, vous "
|
||||
"message ne doit pas dépasser au-delà de 280 caractères. Cependant, vous "
|
||||
"pouvez appuyer sur la case à cocher Long tweet et votre tweet sera affiché "
|
||||
"via Twishort qui vous permettra d'écrire des tweets plus longs (10000 "
|
||||
"caractères). Si vous écrivez au-delà de cette limite, un son sera joués pour "
|
||||
@@ -1093,7 +1093,7 @@ msgid ""
|
||||
"* Play/pause: try to play audio for the selected item (if available), or "
|
||||
"stop the currently played audio."
|
||||
msgstr ""
|
||||
"* Lecture/Pause: essayez de lire l'audio de l'élément sélectionné (si "
|
||||
"* Lecture / Pause: essayez de lire l'audio de l'élément sélectionné (si "
|
||||
"disponible) ou arrêtez l'audio actuellement en cours de lecture."
|
||||
|
||||
#: ../doc/strings.py:117
|
||||
@@ -1478,13 +1478,13 @@ msgstr "* Contrôle+Windows+Maj+A: Supprimer l'utilisateur de la liste."
|
||||
#: ../doc/strings.py:187
|
||||
msgid "* Control + Windows + Shift + M: Mute / unmute the current buffer."
|
||||
msgstr ""
|
||||
"* Contrôle+Windows+Maj+M: Activer muet /désactiver muet dans le tampon "
|
||||
"* Contrôle+Windows+Maj+M: Activer muet / désactiver muet dans le tampon "
|
||||
"actuel."
|
||||
|
||||
#: ../doc/strings.py:188
|
||||
msgid "* Windows + Alt + M: Mute / unmute the current session."
|
||||
msgstr ""
|
||||
"* Windows +Alt+M: : Activer muet /désactiver muet dans la session actuelle."
|
||||
"* Windows +Alt+M: : Activer muet / désactiver muet dans la session actuelle."
|
||||
|
||||
#: ../doc/strings.py:189
|
||||
msgid ""
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: tw blue documentation 0.46\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-20 16:44+0100\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-08 11:34+0100\n"
|
||||
"Last-Translator: Juan C. Buño <oprisniki@gmail.com>\n"
|
||||
"Language-Team: Alba Quinteiro <alba_080695@hotmail.com>\n"
|
||||
"Language: gl\n"
|
||||
@@ -117,18 +117,19 @@ msgstr "## Uso"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"Twitter é unha rede social que che permite crear actualizacións de estado "
|
||||
"sobre as túas actividades nun máximo de 140 caracteres. Twitter é un xeito "
|
||||
"de manterte conectado cos teus amigos, familiares e compañeiros de traballo "
|
||||
"a través do intercambio de mensaxes curtas. Podes restrinxir as túas "
|
||||
"actualizacións para que só as vexan os teus amigos, ou permitir que calquera "
|
||||
"poda velas. Esta segunda opción é o comportamento por defecto de Twitter."
|
||||
"Twitter é unha rede social ou ferramenta de micro-blogging que che permite "
|
||||
"compoñer curtas actualizacións de estado das túas actividades en 280 "
|
||||
"caracteres ou menos. Twitter é un xeito para que amigos, familiares e "
|
||||
"compañeiros de traballo se comuniquen e permanezan conectados a través do "
|
||||
"intercambio de mensaxes rápidas e frecuentes. Podes restrinxir a entrega de "
|
||||
"actualizacións aos membros do teu círculo de amigos ou, de xeito "
|
||||
"predeterminado, permitir que calquera persoa teña aceso a elas."
|
||||
|
||||
#: ../doc/strings.py:22
|
||||
msgid ""
|
||||
@@ -546,7 +547,7 @@ msgstr "#### Botóns na aplicación"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -559,20 +560,20 @@ msgid ""
|
||||
"hear a sound confirming it. Otherwise, the screen reader will speak an error "
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Chío: este botón abre unha Caixa de diálogo para escreber o teu chío. Os "
|
||||
"chíos normais non deben pasar dos 140 carácteres. Non obstante podes premer "
|
||||
"a Caixa de verificación Chíos Longos e o chío publicarase a través do "
|
||||
"Twishort, o que che permitirá escribir chíos máis longos (10000 carácteres). "
|
||||
"Se te pasas escrebindo este límite, reproducirase un son para avisarte. Ten "
|
||||
"en conta que a conta de carácteres amósase na barra de título. Poderás usar "
|
||||
"os botón acurtar e expandir URL para aumentar os límites de carácteres. "
|
||||
"Podes descargar un gráfico, correxir a ortografía, engadir audio ou traducir "
|
||||
"a túa mensaxe seleccionando un dos botón disponibles na Caixa de diálogo. "
|
||||
"Ademáis, podes autocompletar a introducción de usuarios premendo Alt + C ou "
|
||||
"o botón para ese propósito se tes a base de datos de usuarios configurada. "
|
||||
"Preme intro para enviar o chío. Se todo foi ben, escoitarás un son "
|
||||
"confirmándocho. De outro xeito, o lector de pantallas falará unha mensaxe de "
|
||||
"erro en inglés descrebindo o problema."
|
||||
"* Chío: este botón abre una Caixa de diálogo para escreber os teus chíos. Os "
|
||||
"chíos normais non deben exceder de 280 caracteres. Non obstante podes premer "
|
||||
"a Caixa de verificación chíos longos e os teus chíos publicaránse a través "
|
||||
"de Twishort, o que che permite escreber chíos máis longos (10000 "
|
||||
"caracteres). Se escrebes pasando este límite, reproducirase un son para "
|
||||
"advertirte. Ten en conta que o reconto de caracteres amósase na barra de "
|
||||
"título. Podes usar os botons de acurtar e expandir URL para cumplir co "
|
||||
"límite de caracteres. Podes cargar una imaxe, correxir a ortografía, "
|
||||
"adxuntar audio ou traducir a túa mensaxe seleccionando un dos botóns "
|
||||
"disponibles na caixa de diálogo. Ademáis, podes autocompretar a introducción "
|
||||
"de usuarios premendo Alt + C ou o botón para ese propósito se tes a base de "
|
||||
"datos de usuarios configurada. Preme intro para enviar o chío. Se todo foi "
|
||||
"ben, escoitarás un son confirmándoo. Doutro xeito, o lector de pantalla "
|
||||
"falará una mensaxe de erro en inglés descrebindo o problema."
|
||||
|
||||
#: ../doc/strings.py:66
|
||||
msgid ""
|
||||
|
BIN
doc/locales/hu/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/hu/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1014
doc/locales/hu/lc_messages/twblue-changelog.po
Normal file
1014
doc/locales/hu/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/hu/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/hu/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1463
doc/locales/hu/lc_messages/twblue-documentation.po
Normal file
1463
doc/locales/hu/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/it/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/it/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1014
doc/locales/it/lc_messages/twblue-changelog.po
Normal file
1014
doc/locales/it/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue documentation 0.46\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-24 14:35+0100\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-09 11:51+0100\n"
|
||||
"Last-Translator: Chris Leo Mameli <llajta2012@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: it\n"
|
||||
@@ -116,19 +116,19 @@ msgstr "## Caratteristiche"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"Twitter è un social network o strumento di micro-blogging che consente di "
|
||||
"pubblicare gli aggiornamenti di stato delle vostre attività in 140 caratteri "
|
||||
"o meno. È un modo per comunicare con amici, parenti, colleghi e rimanere in "
|
||||
"contatto attraverso lo scambio frequente e rapido di messaggi. È possibile "
|
||||
"limitare la visualizzazione degli aggiornamenti alla tua cerchia di amici o, "
|
||||
"modificando come impostazione predefinita, consentire a chiunque di "
|
||||
"accedervi."
|
||||
"aTwitter è un social network o strumento di micro-blogging che consente di "
|
||||
"pubblicare gli aggiornamenti di stato delle vostre attività con un massimo "
|
||||
"di 180 caratteri. È un modo per comunicare con amici, parenti, colleghi e "
|
||||
"restare in contatto attraverso lo scambio frequente e rapido di messaggi. È "
|
||||
"possibile limitare la visualizzazione degli aggiornamenti alla tua cerchia "
|
||||
"di amici o, modificando come impostazione predefinita, consentire a chiunque "
|
||||
"di accedervi."
|
||||
|
||||
#: ../doc/strings.py:22
|
||||
msgid ""
|
||||
@@ -533,7 +533,7 @@ msgstr "#### Pulsanti dell'applicazione"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -547,7 +547,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Twit: Questo pulsante apre una finestra di dialogo per digitare un tweet. "
|
||||
"Il limite è 140 caratteri. Tuttavia, è possibile scrivere tweet lunghi "
|
||||
"Il limite è 180 caratteri. Tuttavia, è possibile scrivere tweet lunghi "
|
||||
"selezionando la casella di controllo apposita che attiva Twishort(il limite "
|
||||
"in questo caso sarà 10000 caratteri). Quando si supera il limite, verrà "
|
||||
"riprodotto un suono di avviso. Il numero dei caratteri digitati viene "
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-23 00:07+0900\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-08 19:09+0900\n"
|
||||
"Last-Translator: Masamitsu Misono <misono@nvsupport.org>\n"
|
||||
"Language-Team: NVDA Help Desk <nvdahelp@center-aikoh.net>\n"
|
||||
"Language: ja_JP\n"
|
||||
@@ -14,12 +14,12 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: ../doc/strings.py:3
|
||||
msgid "Documentation for TWBlue - 0.88"
|
||||
msgstr "TWBlue 0.88 取扱説明書"
|
||||
msgstr "TWBlue - 0.88 取扱説明書"
|
||||
|
||||
#: ../doc/strings.py:4
|
||||
msgid "## Table of contents"
|
||||
@@ -31,7 +31,7 @@ msgstr "[TOC]"
|
||||
|
||||
#: ../doc/strings.py:6
|
||||
msgid "## Warning!"
|
||||
msgstr "## 警告"
|
||||
msgstr "## 警告!"
|
||||
|
||||
#: ../doc/strings.py:7
|
||||
msgid ""
|
||||
@@ -112,17 +112,17 @@ msgstr "## 使い方"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"ツイッターは、ソーシャルネットワークまたは小さなブログのようなもので、自分の"
|
||||
"活動を140文字以下で登校することができるツールです。ツイッターは、友達や家"
|
||||
"族、同僚とコミュニケーションをとったり、接続を維持して、頻繁に素早くメッセー"
|
||||
"ジを交換するための一つの方法です。あなたは、友人とのサークルなどのように、公"
|
||||
"開範囲を制限するか、だれでもツイートをみえるようにすることができます。"
|
||||
"活動を280文字以下で登校することができるツールです。ツイッターは、友達や家族、"
|
||||
"同僚とコミュニケーションをとったり、接続を維持して、頻繁に素早くメッセージを"
|
||||
"交換するための一つの方法です。あなたは、友人とのサークルなどのように、公開範"
|
||||
"囲を制限するか、だれでもツイートをみえるようにすることができます。"
|
||||
|
||||
#: ../doc/strings.py:22
|
||||
msgid ""
|
||||
@@ -528,7 +528,7 @@ msgstr "#### アプリケーション上のボタン"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -542,7 +542,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* ツイート: このボタンはツイートを書き込むためのダイアログボックスを開きま"
|
||||
"す。メッセージは140字以内です。書き込み字数が制限を超過した場合は警告音が鳴り"
|
||||
"す。メッセージは280字以内です。書き込み字数が制限を超過した場合は警告音が鳴り"
|
||||
"ます。タイトルバーには文字カウントを表示します。ツイートを短縮して投稿に"
|
||||
"チェックを入れると、1万文字までのツイートをTwishortを経由して、投稿できます。"
|
||||
"画像をアップロードボタンや、スペルチェックボタンや音声を添付ボタンを押すと、"
|
||||
|
BIN
doc/locales/pl/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/pl/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1090
doc/locales/pl/lc_messages/twblue-changelog.po
Normal file
1090
doc/locales/pl/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/pl/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/pl/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1477
doc/locales/pl/lc_messages/twblue-documentation.po
Normal file
1477
doc/locales/pl/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/pt/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/pt/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1014
doc/locales/pt/lc_messages/twblue-changelog.po
Normal file
1014
doc/locales/pt/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/pt/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/pt/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1478
doc/locales/pt/lc_messages/twblue-documentation.po
Normal file
1478
doc/locales/pt/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: twblue-documentation 0.46\n"
|
||||
"POT-Creation-Date: 2017-01-18 08:42+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-23 09:55+0200\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-08 10:32+0300\n"
|
||||
"Last-Translator: Florian Ionașcu <florianionascu@hotmail.com>\n"
|
||||
"Language-Team: Spanish <manuel@manuelcortez.net>\n"
|
||||
"Language: ro\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 1.8.9\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
@@ -115,9 +115,10 @@ msgid "## Usage"
|
||||
msgstr "## Utilizare"
|
||||
|
||||
#: ../doc/strings.py:21
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
@@ -523,7 +524,7 @@ msgstr "#### Butoane în aplicație"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -537,7 +538,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Postare: acest buton deschide o casetă de dialog pentru a vă scrie "
|
||||
"postarea. Postările normale nu trebuie să depășească 140 de caractere. "
|
||||
"postarea. Postările normale nu trebuie să depășească 280 de caractere. "
|
||||
"Totuși, puteți bifa caseta postare lungă, iar postarea dumneavoastră va fi "
|
||||
"postată prin Twishort, care vă permite să scrieți postări lungi (10000 de "
|
||||
"caractere). Dacă depășiți această limită, se va reda un sunet pentru a vă "
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,8 +5,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue documentation 0.46\n"
|
||||
"POT-Creation-Date: 2017-12-06 15:59+Hora estndar central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-01-18 18:50+0400\n"
|
||||
"POT-Creation-Date: 2019-03-17 13:34\n"
|
||||
"PO-Revision-Date: 2018-08-14 21:44+0400\n"
|
||||
"Last-Translator: Valeria <luciana.lu3a@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: ru\n"
|
||||
@@ -117,14 +117,14 @@ msgstr "## Использование"
|
||||
#: ../doc/strings.py:21
|
||||
msgid ""
|
||||
"Twitter is a social networking or micro-blogging tool which allows you to "
|
||||
"compose short status updates of your activities in 140 characters or less. "
|
||||
"compose short status updates of your activities in 280 characters or less. "
|
||||
"Twitter is a way for friends, family and co-workers to communicate and stay "
|
||||
"connected through the exchange of quick, frequent messages. You can restrict "
|
||||
"delivery of updates to those in your circle of friends or, by default, allow "
|
||||
"anyone to access them."
|
||||
msgstr ""
|
||||
"Твиттер - это социальная сеть или инструмент для микро-блоггинга, "
|
||||
"позволяющий создавать короткие, не более 140 символов заметки. Твиттер - это "
|
||||
"позволяющий создавать короткие, не более 280 символов заметки. Твиттер - это "
|
||||
"возможность общаться с друзьями, членами семьи и коллегами, обмениваясь "
|
||||
"быстрыми, короткими сообщениями, и оставаясь всегда на связи. Обновления "
|
||||
"можно ограничить только для круга друзей или, как выбрано по умолчанию, "
|
||||
@@ -541,7 +541,7 @@ msgstr "#### Кнопки приложения"
|
||||
#: ../doc/strings.py:65
|
||||
msgid ""
|
||||
"* Tweet: this button opens up a dialogue box to write your tweet. Normal "
|
||||
"tweets must not exceed 140 characters. However you can press the long tweet "
|
||||
"tweets must not exceed 280 characters. However you can press the long tweet "
|
||||
"checkbox and your tweet will be posted throught Twishort, wich will allow "
|
||||
"you to write longer tweets (10000 characters). If you write past this limit, "
|
||||
"a sound will play to warn you. Note that the character count is displayed in "
|
||||
@@ -555,7 +555,7 @@ msgid ""
|
||||
"message in English describing the problem."
|
||||
msgstr ""
|
||||
"* Твит: этой кнопкой открывается диалоговое окно для написания твита. Длина "
|
||||
"обычного сообщения не должна превышать 140 символов. Однако, можно отметить "
|
||||
"обычного сообщения не должна превышать 280 символов. Однако, можно отметить "
|
||||
"флажок длинный твит и ваша запись будет отправлена через сервис Twishort, "
|
||||
"позволяющий отправлять более длинные сообщения (10000 символов). Если вы "
|
||||
"привысите лимит, прозвучит предупреждающий сигнал. Обратите внимание, что "
|
||||
|
BIN
doc/locales/sr/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/sr/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1309
doc/locales/sr/lc_messages/twblue-changelog.po
Normal file
1309
doc/locales/sr/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/sr/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/sr/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1885
doc/locales/sr/lc_messages/twblue-documentation.po
Normal file
1885
doc/locales/sr/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/tr/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/tr/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1109
doc/locales/tr/lc_messages/twblue-changelog.po
Normal file
1109
doc/locales/tr/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/tr/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/tr/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1611
doc/locales/tr/lc_messages/twblue-documentation.po
Normal file
1611
doc/locales/tr/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
Documentation for TWBlue - 0.88
|
||||
Documentation for TWBlue
|
||||
|
||||
## Table of contents
|
||||
|
||||
@@ -26,7 +26,7 @@ TWBlue is an application to make Twitter simple and fast, while using as few res
|
||||
|
||||
## Usage
|
||||
|
||||
Twitter is a social networking or micro-blogging tool which allows you to compose short status updates of your activities in 140 characters or less. Twitter is a way for friends, family and co-workers to communicate and stay connected through the exchange of quick, frequent messages. You can restrict delivery of updates to those in your circle of friends or, by default, allow anyone to access them.
|
||||
Twitter is a social networking or micro-blogging tool which allows you to compose short status updates of your activities in 280 characters or less. Twitter is a way for friends, family and co-workers to communicate and stay connected through the exchange of quick, frequent messages. You can restrict delivery of updates to those in your circle of friends or, by default, allow anyone to access them.
|
||||
|
||||
You can monitor the status of updates from your friends, family or co-workers (known as following), and they in turn can read any updates you create, (known as followers). The updates are referred to as Tweets. The Tweets are posted to your Twitter profile or Blog and are searchable using Twitter Search.
|
||||
|
||||
@@ -42,7 +42,7 @@ You can log into several Twitter accounts simultaneously. The program refers to
|
||||
|
||||
Your default browser will open on the Twitter page to request authorisation. Enter your username and password into the appropriate edit fields if you're not already logged in, select the authorise button, and press it.
|
||||
|
||||
Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. Now you are able to close the page by pressing ALT+F4 which will return you to the Session Manager. On the session list, you will see a new item temporarily called "Authorised account x" -where x is a number. The session name will change once you open that session.
|
||||
Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. On this page, you will be shown a code composed of several numbers that you must paste in the TWBlue authorization dialogue in order to allow the application to access your account. Once you have pasted the code in the corresponding text field, press enter to finish the account setup and go back to the session manager. On the session list, you will see a new item temporarily called "Authorised account x" -where x is a number. The session name will change once you open that session.
|
||||
|
||||
To start running TWBlue, press the Ok button in the Session Manager dialogue. By default, the program starts all the configured sessions automatically, however, you can change this behavior.
|
||||
|
||||
@@ -56,7 +56,7 @@ Before starting to describe TWBlue's usage, we'll explain some concepts that wil
|
||||
|
||||
### Buffer
|
||||
|
||||
A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which this program works with: Tweets, direct messages, users, trends or events. According to the buffer you are focusing, you will be able to do different actions with these items.
|
||||
A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which this program works with: Tweets, direct messages, users, trends or. According to the buffer you are focusing, you will be able to do different actions with these items.
|
||||
|
||||
The following is a description for every one of TWBlue's buffers and the kind of items they work with.
|
||||
|
||||
@@ -69,17 +69,17 @@ The following is a description for every one of TWBlue's buffers and the kind of
|
||||
* Followers: when users follow you, you'll be able to see them on this buffer, with some of their account details.
|
||||
* Friends: the same as the previous buffer, but these are the users you follow.
|
||||
* User timelines: these are buffers you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like.
|
||||
* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their likes list, or when you subscribe to a list. There are many more, but the program shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account.
|
||||
* Lists: A list is similar to a user timeline, except that you can configure it to contain tweets from multiple users.
|
||||
* Search: A search buffer contains the results of a search operation.
|
||||
* User likes: You can have the program create a buffer containing tweets liked by a particular user.
|
||||
* Followers or following timeline: You can have TWBlue create a buffer containing all users who follow, or are followed by a specific user.
|
||||
* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes.
|
||||
|
||||
If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains audio, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains the \#audio hashtag, but there may be tweets which contain audio without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it.
|
||||
If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains video or audio, including live stream content, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains video metadata or the \#audio hashtag, but there may be tweets which contain media without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it.
|
||||
|
||||
### Username fields
|
||||
|
||||
These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message and the user actions dialogue boxes. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username.
|
||||
These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message, the user actions dialogue and the user alias dialogue boxes, to name a few examples. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username.
|
||||
|
||||
## The program's interfaces
|
||||
|
||||
@@ -98,9 +98,9 @@ In summary, the GUI contains two core components. These are the controls you wil
|
||||
|
||||
#### Buttons in the application
|
||||
|
||||
* Tweet: this button opens up a dialogue box to write your tweet. Normal tweets must not exceed 140 characters. However you can press the long tweet checkbox and your tweet will be posted throught Twishort, wich will allow you to write longer tweets (10000 characters). If you write past this limit, a sound will play to warn you. Note that the character count is displayed in the title bar. You may use the shorten and expand URL buttons to comply with the character limit. You can upload a picture, check spelling, attach audio or translate your message by selecting one of the available buttons in the dialogue box. In addition, you can autocomplete the entering of users by pressing Alt + C or the button for that purpose if you have the database of users configured. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will speak an error message in English describing the problem.
|
||||
* Tweet: this button opens up a dialogue box to write your tweet. Normal tweets must not exceed 280 characters. However you can press the long tweet checkbox and your tweet will be posted throught Twishort, wich will allow you to write longer tweets (10000 characters). If you write past this limit, a sound will play to warn you. Note that the character count is displayed in the title bar. You can upload a picture, check spelling, attach audio or translate your message by selecting one of the available buttons in the dialogue box. In addition, you can autocomplete the entering of users by pressing Alt + C or the button for that purpose if you have the database of users configured. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will speak an error message in English describing the problem.
|
||||
* Retweet: this button retweets the message you're reading. After you press it, if you haven't configured the application not to do so, you'll be asked if you want to add a comment or simply send it as written. If you choose to add a comment, it will post a quoted tweet, that is, the comment with a link to the originating tweet.
|
||||
* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting. If there are more users referred to in the tweet, you can press tab and activate the mention to all checkbox, or enabling checkbox for the users you want to mention separately. When you're on the friends or followers lists, the button will be called mention instead.
|
||||
* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting. If there are more users referred to in the tweet, you can press tab and activate the mention to all checkbox, or enabling checkbox for the users you want to mention separately. Note, however, that sometimes -especially when replying to a retweet or quoted tweet, the user who made the retweet or quote may also be mentioned. This is done by Twitter automatically. When you're on the friends or followers lists, the button will be called mention instead.
|
||||
* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab twice to see the recipient. If there were other users mentioned in the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign. In addition, you can autocomplete the entering of users by pressing Alt + C or the button for that purpose if you have the database of users configured.
|
||||
|
||||
Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, likes and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists the direct message, tweet, and mention buttons will be available.
|
||||
@@ -116,6 +116,7 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details.
|
||||
* Search: shows a dialogue box where you can search for tweets or users on Twitter.
|
||||
* Lists Manager: This dialogue box allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to user timelines.
|
||||
* Manage user aliases: Opens up a dialogue where you can manage user aliases for the active session. In this dialog you can add new aliases, as well as edit and delete existing ones.
|
||||
* Edit keystrokes: this opens a dialogue where you can see and edit the shortcuts used in the invisible interface.
|
||||
* Account settings: Opens a dialogue box which lets you customize settings for the current account.
|
||||
* Global settings: Opens a dialogue which lets you configure settings for the entire application.
|
||||
@@ -145,6 +146,7 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
* Ignore tweets from this client: Adds the client from which the focused tweet was sent to the ignored clients list.
|
||||
* View timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you invoke this option relative to a user that has no tweets, the operation will fail. If you try creating an existing timeline the program will warn you and will not create it again.
|
||||
* Direct message: same action as the button.
|
||||
* Add Alias: An user alias allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. This feature works only if you have set display screen names unchecked, in account settings.
|
||||
* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. In the dialogue box that opens after selecting the user, you will be asked to select the list you wish to add the user to. Thereafter, the list will contain a new member and their tweets will be displayed there.
|
||||
* Remove from list: lets you remove a user from a list.
|
||||
* View lists: Shows the lists created by a specified user.
|
||||
@@ -153,8 +155,12 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
|
||||
##### Buffer menu
|
||||
|
||||
* Update buffer: Retrieves the newest items for the focused buffer. Normally, every buffer gets updated every couple of minutes, however you can force a specific buffer to be updated inmediately. Take into account, however, that the usage of this option repeatedly might exceed your allowed Twitter's API usage, in which case you would have to wait until it gets reset, tipycally within the next 15 minutes.
|
||||
* New trending topics buffer: This opens a buffer to get the worlwide trending topics or those of a country or a city. You'll be able to select from a dialogue box if you wish to retrieve countries' trends, cities' trends or worldwide trends (this option is in the cities' list) and choose one from the selected list. The trending topics buffer will be created once the "OK" button has been activated within the dialogue box. Remember this kind of buffer will be updated every five minutes.
|
||||
* Load previous items: This allows more items to be loaded for the specified buffer.
|
||||
* Create filter: Creates a filter in the current buffer. Filters allow loading or ignoring tweets that meet certain conditions into a buffer. You can, for example, set a filter in the "home" buffer that loads tweets that are in English language only. By default, the filter creation dialog will place the focus on the field to name the filter. Currently, you can filter by word, by language, or both. In the filter by word, you can make TWBlue allow or ignore tweets with the desired word. In the filter by language, you can make the program load tweets in the languages you want, or ignore tweets written in certain languages. Once created, every filter will be saved in the session config and will be kept across application restarts.
|
||||
* Manage filters: Opens up a dialogue which allows you to delete filters for the current session.
|
||||
* Find a string in the currently focused buffer: Opens a dialogue where you can search for items in the current buffer.
|
||||
* Mute: Mutes notifications of a particular buffer so you will not hear when new tweets arrive.
|
||||
* autoread: When enabled, the screen reader or SAPI 5 Text to Speech voice (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets.
|
||||
* Clear buffer: Deletes all items from the buffer.
|
||||
@@ -173,6 +179,8 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
* What's new in this version?: opens up a document with the list of changes from the current version to the earliest.
|
||||
* Check for updates: every time you open the program it automatically checks for new versions. If an update is available, it will ask you if you want to download the update. If you accept, the updating process will commence. When complete, TWBlue will be restarted. This item checks for new updates without having to restart the application.
|
||||
* TWBlue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TWBlue and become a part of the community.
|
||||
* Get soundpacks for TWBlue:
|
||||
* Make a Donation: Opens a website from which you can donate to the TWBlue project. Donations are made through paypal and you don't need an account to donate.
|
||||
* About TWBlue: shows the credits of the program.
|
||||
|
||||
### The invisible user interface
|
||||
@@ -350,4 +358,4 @@ Many thanks also to the people who worked on the documentation. Initially, [Manu
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright © 2013-2017. Manuel Cortéz
|
||||
Copyright © 2013-2021. Manuel Cortéz
|
67
doc/paths.py
Normal file
67
doc/paths.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import platform
|
||||
import os
|
||||
import glob
|
||||
from platform_utils import paths as paths_
|
||||
|
||||
mode = "portable"
|
||||
directory = None
|
||||
fsencoding = sys.getfilesystemencoding()
|
||||
|
||||
if len(glob.glob("Uninstall.exe")) > 0: # installed copy
|
||||
mode= "installed"
|
||||
|
||||
def app_path():
|
||||
return paths_.app_path()
|
||||
|
||||
def config_path():
|
||||
global mode, directory
|
||||
if mode == "portable":
|
||||
if directory != None: path = os.path.join(directory, "config")
|
||||
elif directory == None: path = os.path.join(app_path(), "config")
|
||||
elif mode == "installed":
|
||||
path = os.path.join(data_path(), "config")
|
||||
if not os.path.exists(path):
|
||||
# log.debug("%s path does not exist, creating..." % (path,))
|
||||
os.mkdir(path)
|
||||
return path
|
||||
|
||||
def logs_path():
|
||||
global mode, directory
|
||||
if mode == "portable":
|
||||
if directory != None: path = os.path.join(directory, "logs")
|
||||
elif directory == None: path = os.path.join(app_path(), "logs")
|
||||
elif mode == "installed":
|
||||
path = os.path.join(data_path(), "logs")
|
||||
if not os.path.exists(path):
|
||||
# log.debug("%s path does not exist, creating..." % (path,))
|
||||
os.mkdir(path)
|
||||
return path
|
||||
|
||||
def data_path(app_name='socializer'):
|
||||
if platform.system() == "Windows":
|
||||
data_path = os.path.join(os.getenv("AppData"), app_name)
|
||||
else:
|
||||
data_path = os.path.join(os.environ['HOME'], ".%s" % app_name)
|
||||
if not os.path.exists(data_path):
|
||||
os.mkdir(data_path)
|
||||
return data_path
|
||||
|
||||
def locale_path():
|
||||
return os.path.join(app_path(), "locales")
|
||||
|
||||
def sound_path():
|
||||
return os.path.join(app_path(), "sounds")
|
||||
|
||||
def com_path():
|
||||
global mode, directory
|
||||
if mode == "portable":
|
||||
if directory != None: path = os.path.join(directory, "com_cache")
|
||||
elif directory == None: path = os.path.join(app_path(), "com_cache")
|
||||
elif mode == "installed":
|
||||
path = os.path.join(data_path(), "com_cache")
|
||||
if not os.path.exists(path):
|
||||
# log.debug("%s path does not exist, creating..." % (path,))
|
||||
os.mkdir(path)
|
||||
return path
|
@@ -5,19 +5,6 @@ return "key\0";
|
||||
char *get_api_secret(){
|
||||
return "secret_key\0";
|
||||
}
|
||||
char *get_dropbox_api_key(){
|
||||
return "key\0";
|
||||
}
|
||||
char *get_dropbox_api_secret(){
|
||||
return "secret_key\0";
|
||||
}
|
||||
char *get_twishort_api_key(){
|
||||
return "key\0";
|
||||
}
|
||||
char *get_bts_user(){
|
||||
return "user\0";
|
||||
}
|
||||
char *get_bts_password(){
|
||||
return "pass\0";
|
||||
}
|
||||
|
||||
|
@@ -3,10 +3,6 @@
|
||||
|
||||
char *get_api_key();
|
||||
char *get_api_secret();
|
||||
char *get_dropbox_api_key();
|
||||
char *get_dropbox_api_secret();
|
||||
char *get_twishort_api_key();
|
||||
char *get_bts_user();
|
||||
char *get_bts_password();
|
||||
|
||||
#endif
|
||||
|
@@ -20,8 +20,8 @@ CommercialUse=true
|
||||
EULAVersion=2
|
||||
|
||||
[Version]
|
||||
PackageVersion=0.93.0.0
|
||||
DisplayVersion=0.93
|
||||
PackageVersion=0.95.0.0
|
||||
DisplayVersion=0.95
|
||||
|
||||
[Control]
|
||||
Icons=1
|
||||
|
57
requirements.txt
Normal file
57
requirements.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
wxpython
|
||||
pytest
|
||||
coverage
|
||||
wheel
|
||||
future
|
||||
configobj
|
||||
markdown
|
||||
requests
|
||||
oauthlib
|
||||
requests-oauthlib
|
||||
requests-toolbelt
|
||||
pypubsub
|
||||
geopy
|
||||
arrow
|
||||
python-dateutil
|
||||
winpaths
|
||||
PySocks
|
||||
win_inet_pton
|
||||
# Install the latest RC of this lib
|
||||
# see https://github.com/ssut/py-googletrans/issues/234
|
||||
googletrans==4.0.0-rc1
|
||||
idna<3,>=2.5
|
||||
chardet
|
||||
urllib3
|
||||
youtube-dl
|
||||
python-vlc
|
||||
pypiwin32
|
||||
pywin32
|
||||
certifi
|
||||
backports.functools_lru_cache
|
||||
cx_freeze
|
||||
tweepy
|
||||
twitter-text-parser
|
||||
mastodon.py
|
||||
pyenchant
|
||||
sqlitedict
|
||||
cx-Logging
|
||||
h11
|
||||
h2
|
||||
hpack
|
||||
hstspreload
|
||||
httpcore
|
||||
httpx
|
||||
hyperframe
|
||||
rfc3986
|
||||
sniffio
|
||||
attrs
|
||||
importlib-metadata
|
||||
numpy
|
||||
pillow
|
||||
charset-normalizer
|
||||
demoji
|
||||
psutil
|
||||
git+https://github.com/accessibleapps/libloader
|
||||
git+https://github.com/accessibleapps/platform_utils
|
||||
git+https://github.com/accessibleapps/accessible_output2
|
||||
git+https://github.com/accessibleapps/sound_lib
|
12
scripts/make_archive.py
Normal file
12
scripts/make_archive.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import shutil
|
||||
import os
|
||||
import sys
|
||||
|
||||
def create_archive():
|
||||
os.chdir("..\\src")
|
||||
print("Creating zip archive...")
|
||||
folder = "dist"
|
||||
shutil.make_archive("twblue", "zip", folder)
|
||||
os.chdir("..\\scripts")
|
||||
|
||||
create_archive()
|
@@ -14,11 +14,11 @@ SetCompress auto
|
||||
SetCompressor /solid lzma
|
||||
SetDatablockOptimize on
|
||||
VIAddVersionKey ProductName "TWBlue"
|
||||
VIAddVersionKey LegalCopyright "Copyright 2016 Manuel Cortéz."
|
||||
VIAddVersionKey ProductVersion "0.93"
|
||||
VIAddVersionKey FileVersion "0.93"
|
||||
VIProductVersion "0.93.0.0"
|
||||
VIFileVersion "0.93.0.0"
|
||||
VIAddVersionKey LegalCopyright "Copyright 2014-2022 MCV Software."
|
||||
VIAddVersionKey ProductVersion "0.95.0"
|
||||
VIAddVersionKey FileVersion "0.95.0"
|
||||
VIProductVersion "0.95.0"
|
||||
VIFileVersion "0.95.0"
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!define MUI_LICENSEPAGE_RADIOBUTTONS
|
||||
!insertmacro MUI_PAGE_LICENSE "license.txt"
|
||||
@@ -27,12 +27,12 @@ var StartMenuFolder
|
||||
!insertmacro MUI_PAGE_STARTMENU startmenu $StartMenuFolder
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!define MUI_FINISHPAGE_LINK "Visit TWBlue website"
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "http://twblue.es"
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://twblue.es"
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\TWBlue.exe"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
@@ -72,10 +72,10 @@ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "D
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "UninstallString" '"$INSTDIR\uninstall.exe"'
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" "InstallLocation" $INSTDIR
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" "Publisher" "Manuel Cortéz"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "DisplayVersion" "0.93"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "URLInfoAbout" "http://twblue.es"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "DisplayVersion" "0.95"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "URLInfoAbout" "https://twblue.es"
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "VersionMajor" 0
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "VersionMinor" 93
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "VersionMinor" 0
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "NoModify" 1
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "NoRepair" 1
|
||||
SectionEnd
|
||||
|
48
scripts/upload.py
Normal file
48
scripts/upload.py
Normal file
@@ -0,0 +1,48 @@
|
||||
#! /usr/bin/env python
|
||||
import sys
|
||||
import os
|
||||
import glob
|
||||
import ftplib
|
||||
|
||||
transferred=0
|
||||
|
||||
def convert_bytes(n):
|
||||
K, M, G, T, P = 1 << 10, 1 << 20, 1 << 30, 1 << 40, 1 << 50
|
||||
if n >= P:
|
||||
return '%.2fPb' % (float(n) / T)
|
||||
elif n >= T:
|
||||
return '%.2fTb' % (float(n) / T)
|
||||
elif n >= G:
|
||||
return '%.2fGb' % (float(n) / G)
|
||||
elif n >= M:
|
||||
return '%.2fMb' % (float(n) / M)
|
||||
elif n >= K:
|
||||
return '%.2fKb' % (float(n) / K)
|
||||
else:
|
||||
return '%d' % n
|
||||
|
||||
def callback(progress):
|
||||
global transferred
|
||||
transferred = transferred+len(progress)
|
||||
print("Uploaded {}".format(convert_bytes(transferred),))
|
||||
|
||||
ftp_server = os.environ.get("FTP_SERVER") or sys.argv[1]
|
||||
ftp_username = os.environ.get("FTP_USERNAME") or sys.argv[2]
|
||||
ftp_password = os.environ.get("FTP_PASSWORD") or sys.argv[3]
|
||||
|
||||
print("Uploading files to the TWBlue server...")
|
||||
print("Connecting to %s" % (ftp_server,))
|
||||
connection = ftplib.FTP(ftp_server)
|
||||
print("Connected to FTP server {}".format(ftp_server,))
|
||||
connection.login(user=ftp_username, passwd=ftp_password)
|
||||
print("Logged in successfully")
|
||||
connection.cwd("web/pubs")
|
||||
files = glob.glob("*.zip")+glob.glob("*.exe")
|
||||
print("These files will be uploaded into the version folder: {}".format(files,))
|
||||
for file in files:
|
||||
transferred = 0
|
||||
print("Uploading {}".format(file,))
|
||||
with open(file, "rb") as f:
|
||||
connection.storbinary('STOR %s' % file, f, callback=callback, blocksize=1024*1024)
|
||||
print("Upload completed. exiting...")
|
||||
connection.quit()
|
@@ -9,19 +9,20 @@ relative_times = boolean(default=True)
|
||||
max_api_calls = integer(default=1)
|
||||
max_tweets_per_call = integer(default=100)
|
||||
reverse_timelines = boolean(default=False)
|
||||
time_to_check_streams = integer(default=30)
|
||||
announce_stream_status = boolean(default=True)
|
||||
retweet_mode = string(default="ask")
|
||||
persist_size = integer(default=0)
|
||||
load_cache_in_memory=boolean(default=True)
|
||||
show_screen_names = boolean(default=False)
|
||||
buffer_order = list(default=list('home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events'))
|
||||
hide_emojis = boolean(default=False)
|
||||
buffer_order = list(default=list('home','mentions', 'dm', 'sent_dm', 'sent_tweets','favorites','followers','friends','blocks','muted'))
|
||||
|
||||
[sound]
|
||||
volume = float(default=1.0)
|
||||
input_device = string(default="Default")
|
||||
output_device = string(default="Default")
|
||||
session_mute = boolean(default=False)
|
||||
current_soundpack = string(default="default")
|
||||
current_soundpack = string(default="FreakyBlue")
|
||||
indicate_audio = boolean(default=True)
|
||||
indicate_geo = boolean(default=True)
|
||||
indicate_img = boolean(default=True)
|
||||
@@ -44,4 +45,16 @@ save_followers_in_autocompletion_db = boolean(default=False)
|
||||
save_friends_in_autocompletion_db = boolean(default=False)
|
||||
ocr_language = string(default="")
|
||||
|
||||
[reporting]
|
||||
braille_reporting = boolean(default=True)
|
||||
speech_reporting = boolean(default=True)
|
||||
|
||||
[templates]
|
||||
tweet = string(default="$display_name, $text $image_descriptions $date. $source")
|
||||
dm = string(default="$sender_display_name, $text $date")
|
||||
dm_sent = string(default="Dm to $recipient_display_name, $text $date")
|
||||
person = string(default="$display_name (@$screen_name). $followers followers, $following following, $tweets tweets. Joined Twitter $created_at.")
|
||||
|
||||
[filters]
|
||||
|
||||
[user-aliases]
|
@@ -1,33 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
import ctypes
|
||||
import os
|
||||
import types
|
||||
from platform_utils import paths
|
||||
|
||||
def load_library(libname, cdll=False):
|
||||
if paths.is_frozen():
|
||||
libfile = os.path.join(paths.embedded_data_path(), 'accessible_output2', 'lib', libname)
|
||||
else:
|
||||
libfile = os.path.join(paths.module_path(), 'lib', libname)
|
||||
if cdll:
|
||||
return ctypes.cdll[libfile]
|
||||
else:
|
||||
return ctypes.windll[libfile]
|
||||
|
||||
def get_output_classes():
|
||||
from . import outputs
|
||||
module_type = types.ModuleType
|
||||
classes = [m.output_class for m in outputs.__dict__.values() if type(m) == module_type and hasattr(m, 'output_class')]
|
||||
return sorted(classes, key=lambda c: c.priority)
|
||||
|
||||
def find_datafiles():
|
||||
import os
|
||||
import platform
|
||||
from glob import glob
|
||||
import accessible_output2
|
||||
if platform.system() != 'Windows':
|
||||
return []
|
||||
path = os.path.join(accessible_output2.__path__[0], 'lib', '*.dll')
|
||||
results = glob(path)
|
||||
dest_dir = os.path.join('accessible_output2', 'lib')
|
||||
return [(dest_dir, results)]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,20 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
import platform
|
||||
if platform.system() == 'Windows':
|
||||
from . import nvda
|
||||
from . import jaws
|
||||
from . import sapi5
|
||||
from . import window_eyes
|
||||
from . import system_access
|
||||
from . import dolphin
|
||||
from . import pc_talker
|
||||
#import sapi4
|
||||
|
||||
if platform.system() == 'Darwin':
|
||||
from . import voiceover
|
||||
from . import say
|
||||
|
||||
if platform.system() == 'Linux':
|
||||
from . import e_speak
|
||||
|
||||
from . import auto
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user