mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-08-25 17:39:23 +00:00
Compare commits
824 Commits
v0.87
...
v2021.10.2
Author | SHA1 | Date | |
---|---|---|---|
e23a52e38f | |||
a5ba80feee | |||
528ecc2a33 | |||
3519746078 | |||
ef79e0696e | |||
b9ee0dae5b | |||
f31575a733 | |||
e451bbd5e9 | |||
f7f303929e | |||
9f48784ce4 | |||
cb1312d0c9 | |||
a82efd4dcc | |||
72e6d030d5 | |||
d222740887 | |||
2b059ee42e | |||
daac312658 | |||
b23be9c896 | |||
61b0dc34b8 | |||
c5d13369eb | |||
856ecf5eb9 | |||
e3e0ac9457 | |||
34c1f69ec1 | |||
7326ff88f9 | |||
![]() |
a8d876a7b7 | ||
![]() |
89fa6435b4 | ||
![]() |
d1bd393be2 | ||
301bd5fd39 | |||
![]() |
a2f25bfbb5 | ||
286e030f40 | |||
d8fca3b31a | |||
0c27427843 | |||
dfdbe3c5f4 | |||
![]() |
2222a97451 | ||
fbe93ea4be | |||
4bcae1aa97 | |||
4cabf5b9cd | |||
a9a4189295 | |||
c7b6d69518 | |||
65512a9862 | |||
![]() |
17ea8af050 | ||
![]() |
43578a32eb | ||
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 | |||
![]() |
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 | |||
![]() |
51c5820719 | ||
![]() |
d6f47259a6 | ||
2457fcf8f3 | |||
87a6290f74 | |||
7109d904a2 | |||
435ffef6fd | |||
![]() |
2fb88924fd | ||
![]() |
6ba1fe9eac | ||
b184bed1a8 | |||
53deb869fc | |||
f9db4d6d51 | |||
7861f42d26 | |||
e8a692a061 | |||
c5a5b187ec | |||
ab18445338 | |||
4d6b589086 | |||
5a03cc80ca | |||
fd17d824be | |||
a0fe62a227 | |||
00db4ff806 | |||
45430e036c | |||
29c3f1d194 | |||
e10e3b3c49 | |||
d9a9adef1f | |||
02538322c6 | |||
efc5b481f8 | |||
2c1bd6a8c8 | |||
4d1732b3aa | |||
a0e41a4450 | |||
2ee3e315b6 | |||
29df2e44b4 | |||
8836cb2bda | |||
2d9124c336 | |||
b832e36c7d | |||
98cf02ee98 | |||
519d096f29 | |||
34e9b8b89f | |||
beb75ff6d1 | |||
9fd7c14e32 | |||
e303d914fe | |||
5f7f176892 | |||
8928a64a12 | |||
6a3b498d52 | |||
682ee82aa8 | |||
1e22ebce61 | |||
c2413489e5 | |||
094325cbf0 | |||
a5e1686af6 | |||
54cb099007 | |||
636c21df94 | |||
cdad6ff600 | |||
68efc86536 | |||
e06ccacda1 | |||
da6eb34500 | |||
0f31a776ff | |||
efc6843ee2 | |||
a13dd756b1 | |||
1b62eece13 | |||
e23ef1ded2 | |||
066de25f95 | |||
cd128b8e69 | |||
![]() |
9e17abf517 | ||
cbd3126a4f | |||
0d0aed0490 | |||
ed7c9802d1 | |||
68ea029fe3 | |||
3a465f2314 | |||
ef2d672b35 | |||
![]() |
b3c8de9a1f | ||
![]() |
4d75f2db34 | ||
![]() |
f69e4283cd | ||
![]() |
cbbf1e475d | ||
![]() |
851f711357 | ||
![]() |
11703f50fe | ||
![]() |
11ca3a2190 | ||
![]() |
a1381008d7 | ||
59504cca57 | |||
da06c568c5 | |||
d333b5f5c3 | |||
348b8da619 | |||
904226cfd4 | |||
2cf5caa90d | |||
![]() |
ff05c9cb23 | ||
![]() |
f18a03d4a1 | ||
![]() |
24756e73d3 | ||
![]() |
feb16d9773 | ||
5b47e8806a | |||
a073a5caaa | |||
a69a26e107 | |||
76582c6313 | |||
5a249ba942 | |||
![]() |
696b6aa11d | ||
![]() |
44187c69de | ||
![]() |
efb8cac079 | ||
![]() |
7997f23f9c | ||
20d4023e58 | |||
![]() |
b62f99bc5a | ||
![]() |
70bba44da7 | ||
![]() |
d25ace8f98 | ||
![]() |
eb19417263 | ||
![]() |
982fd41ae3 | ||
cf19e644e4 | |||
02c5b40315 | |||
825a896414 | |||
![]() |
dabb3a01b8 | ||
![]() |
5d68d1f1cb | ||
![]() |
85613da33a | ||
268a123449 | |||
4c22c29241 | |||
![]() |
7a7634833a | ||
![]() |
d70b5703d2 | ||
![]() |
21d6471bb2 | ||
![]() |
a492baf486 | ||
![]() |
0163314e36 | ||
![]() |
1d7d376ca1 | ||
868002c78b | |||
c3b19f42d5 | |||
ee234995f5 | |||
![]() |
0472592991 | ||
![]() |
5b8c28dd73 | ||
![]() |
a8f854cbc5 | ||
80f2e8f984 | |||
d4b410cafd | |||
![]() |
af04bcfe3f | ||
![]() |
7349e3b3f3 | ||
bf4c09d0bb | |||
adc45ae767 | |||
2618e0ac90 | |||
3feeb568d8 | |||
fb977a70c2 | |||
c4a06a7bc0 | |||
df5967079c | |||
0a3219d12a | |||
77baa06fc3 | |||
160d168c63 | |||
713ac0251b | |||
c655c76196 | |||
3cf6ac5c06 | |||
43bdb358dd | |||
6f622bdeba | |||
7e6103473f | |||
![]() |
caa051abae | ||
fbe6eb6250 | |||
b9d8e13bdf | |||
16a6fa2896 | |||
![]() |
089eea4c07 | ||
![]() |
37e3af1c59 | ||
562759f57e | |||
a9dc188c4b | |||
cced182063 | |||
66774174ae | |||
d9e972115b | |||
2d7c8e59dd | |||
![]() |
802c879795 | ||
![]() |
34f92b8af9 | ||
![]() |
a72e8dd6a4 | ||
4793aaf5e6 | |||
c136c50afc | |||
![]() |
3a4b34972d | ||
![]() |
607da14355 | ||
![]() |
17ccc30d9b | ||
3855407f52 | |||
03415f6b24 | |||
![]() |
1061967adc | ||
b165d564e0 | |||
20c2f844f5 | |||
ad9f2452b2 | |||
a86a6f52d6 | |||
4d82ecc8f2 | |||
023e0979c6 | |||
ca6e78cd4d | |||
8f4b1f9695 | |||
20aaa39bc9 | |||
![]() |
8197f0c0d9 | ||
![]() |
aa1a3542e5 | ||
05c0fefc01 | |||
1fd90be4cb | |||
05a4e9b6e4 | |||
![]() |
9d07fe38b8 | ||
fedf153252 | |||
80f9125511 | |||
25c88cea3b | |||
c9161cd772 | |||
f7c334ad96 | |||
59f6cf13ad | |||
3684ec2783 | |||
6baf417d35 | |||
db52e8d851 | |||
0bf630d8c0 | |||
![]() |
4bd9a2b899 | ||
7daacfa809 | |||
![]() |
b586b0729c | ||
d384ad9dd3 | |||
e7aac6c805 | |||
e34c84697e | |||
a639604179 | |||
7b5022da09 | |||
![]() |
620ee23edb | ||
![]() |
f19d7b0535 | ||
![]() |
a5acc3ef56 | ||
![]() |
40fc175185 | ||
![]() |
67dee3e1c1 | ||
![]() |
dab8be7c12 | ||
![]() |
b7dd6d43fe | ||
![]() |
8a701c450e | ||
![]() |
2370c39c15 | ||
![]() |
0851dc23d8 | ||
![]() |
232d39e0b3 | ||
2c27a1968f | |||
4d5de6ca69 | |||
![]() |
fb349fc7b4 | ||
![]() |
1a4d0d5b9a | ||
![]() |
5eff1b77fe | ||
6bb534d250 | |||
2d8c706cde | |||
4e702c5428 | |||
![]() |
6717cb5154 | ||
590f59ca63 | |||
6bad20b784 | |||
146667144a | |||
cc60235503 | |||
31a149b022 | |||
ec58d02bb3 | |||
516acb501a | |||
88a706dd7d | |||
6d887d5762 | |||
cd7fb6d36f | |||
![]() |
020148ac0a | ||
9d0558468a | |||
7d188a40b2 | |||
0c3d956d96 | |||
44ca5a7f83 | |||
![]() |
cdedd41101 | ||
![]() |
87c113986d | ||
![]() |
b0a6634e20 | ||
53388696b6 | |||
fe7a69f490 | |||
1351712db4 | |||
ca0f00e27d | |||
![]() |
6290815a0c | ||
4a1162005d | |||
72b4873dce | |||
a1ccdd6bf4 | |||
2cad567537 | |||
![]() |
bb0af61483 | ||
7a2e51ef03 | |||
b3451e229d | |||
32dd232350 | |||
![]() |
656b031c5c | ||
![]() |
0f2bd2a9e1 | ||
![]() |
2497d01bd6 | ||
![]() |
a57c44d566 | ||
![]() |
6a056749af | ||
![]() |
99bdaca6f0 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -19,3 +19,5 @@ src/sounds/iOs
|
||||
release-snapshot/
|
||||
src/com_cache/
|
||||
doc/strings.py
|
||||
doc/changelog.py
|
||||
env/
|
123
.gitlab-ci.yml
Normal file
123
.gitlab-ci.yml
Normal file
@@ -0,0 +1,123 @@
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
PYTHON: "C:\\python38\\python.exe"
|
||||
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.8.10 -y -ForceX86
|
||||
- '&$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'
|
||||
- '&$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.8.10 -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'
|
||||
- '&$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
|
||||
|
||||
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/
|
||||
|
||||
|
94
README.md
94
README.md
@@ -1,7 +1,7 @@
|
||||
TWBlue -
|
||||
======
|
||||
|
||||
Copyright (C) 2016. [Technow S.L.](https://www.technow.es)
|
||||
[](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:
|
||||
@@ -24,56 +24,37 @@ This document describes how to run tw blue from source and how to build a binary
|
||||
### 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.11
|
||||
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 220
|
||||
* [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.8.7
|
||||
If you want to build both x86 and x64 binaries, you can install python x86 to C:\python38 and python x64 to C:\python38x64, 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:\python37x64\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:
|
||||
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:
|
||||
|
||||
easy_install -Z package
|
||||
`pip install -r requirements.txt`
|
||||
|
||||
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:
|
||||
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:
|
||||
|
||||
* pypubsub
|
||||
* configobj
|
||||
* requests-oauthlib
|
||||
* requests-toolbelt
|
||||
* future
|
||||
* pygeocoder
|
||||
* suds
|
||||
* arrow==0.6
|
||||
* markdown
|
||||
* winpaths
|
||||
* microsofttranslator
|
||||
`pip install -r D:\repos\TwBlue\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 goslate markdown future suds requests oauthlib requests-oauthlib requests-toolbelt pypubsub pygeocoder arrow==0.6 python-dateutil futures microsofttranslator winpaths
|
||||
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
|
||||
|
||||
@@ -82,35 +63,42 @@ 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 unicode,](http://www.scratchpaper.com/) version 2.46.5
|
||||
* [NSIS,](http://nsis.sourceforge.net/) version 3.04
|
||||
|
||||
#### Dependencies required to build the portableApps.com format archive
|
||||
|
||||
* [NSIS Unicode Portable,](http://portableapps.com/apps/development/nsis_portable) version 2.46.5 rev 3
|
||||
* [PortableApps.com Launcher,](http://portableapps.com/apps/development/portableapps.com_launcher) version 2.2
|
||||
* [PortableApps.com Installer,](http://portableapps.com/apps/development/portableapps.com_installer) version 3.4.2
|
||||
* [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.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, ...
|
||||
|
||||
#### Dependencies to make the spell checker multilingual ####
|
||||
|
||||
In order to add the support for spell checking in more languages than english you need to add some additional dictionaries to pyenchant. These are located on the dictionaries folder under windows-dependencies. Simply copy them to the share/enchant/myspell folder located in your enchant installation. They will be automatically copied when building a binary version.
|
||||
|
||||
### 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
|
||||
|
||||
@@ -118,7 +106,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.
|
||||
|
||||
@@ -126,9 +114,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
|
||||
@@ -141,9 +129,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.
|
||||
|
@@ -1,12 +1,8 @@
|
||||
Manuel E. Cortéz
|
||||
Bill Dengler
|
||||
Johana Hidrobo
|
||||
Marcelo Sosa
|
||||
Isabel del Castillo
|
||||
José Manuel Delicado
|
||||
David Picón
|
||||
Vicente Llopis
|
||||
Javier Dorado
|
||||
Guillem León
|
||||
Marco Serrano
|
||||
Bryner Villalobos
|
||||
@@ -35,7 +31,6 @@ Anibal Hernández
|
||||
Sussan Leiva
|
||||
Brian Hartgen
|
||||
PEDRO REINA COLOBON
|
||||
Moora-Moora Arrilla
|
||||
Blake Oliver
|
||||
Steffen Schultz
|
||||
Riku
|
||||
@@ -43,3 +38,6 @@ Burak Yüksek
|
||||
florian Ionașcu
|
||||
Christian Leo Mameli
|
||||
Natalia Hedlund (Наталья Хедлунд)
|
||||
Valeria (Валерия)
|
||||
Oreonan
|
||||
Artem Plaksin (maniyax)
|
||||
|
@@ -1,18 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
name = 'TWBlue'
|
||||
snapshot = False
|
||||
if snapshot == False:
|
||||
version = "0.87"
|
||||
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) 2015, Technow S.L. \nCopyright (C) 2013-2015, 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"
|
242
doc/changelog.md
Normal file
242
doc/changelog.md
Normal file
@@ -0,0 +1,242 @@
|
||||
TWBlue Changelog
|
||||
|
||||
## changes in this version
|
||||
|
||||
* 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
|
||||
* for opening a trends buffer, press control+Windows+T
|
||||
* TWBlue has received improvements in some functions for handling extended tweets, long tweets and quoted retweets. It should render some tweets in a better way.
|
||||
* In the spell checker module, there is a new button that will allow you to add your own words to your personal dictionary so the module won't mark them as mispelled the next time you will check spelling.
|
||||
* Added filtering capabilities to TWBlue. ([#102](https://github.com/manuelcortez/TWBlue/issues/102))
|
||||
* You can create a filter for the current buffer from the buffer menu in the menu bar. At this moment, invisible interface does not have any shorcut for this.
|
||||
* You can create filters by word or languages.
|
||||
* For deleting already created filters, you can go to the filter manager in the buffer menu and delete the filters you won't need.
|
||||
* Links should be opened properly in quoted tweets ([#167,](https://github.com/manuelcortez/TWBlue/issues/167) [#184](https://github.com/manuelcortez/TWBlue/issues/184))
|
||||
* Increased display name limit up to 50 characters in update profile dialog.
|
||||
* When authorising an account, you will see a dialogue with a cancel button, in case you want to abort the process. Also, NVDA will not be blocked when the process starts. ([#101](https://github.com/manuelcortez/TWBlue/issues/101))
|
||||
* In the translator module, the list of available languages is fetched automatically from the provider. That means all of these languages will work and there will not be inconsistencies. Also we've removed the first combo box, because the language is detected automatically by Yandex'S API. ([#153](https://github.com/manuelcortez/TWBlue/issues/153))
|
||||
* Trending topics, searches and conversation buffers will use mute settings set for the session in wich they were opened. ([#157](https://github.com/manuelcortez/TWBlue/issues/157))
|
||||
* The Tweet limit is now 280 characters lenght instead 140. It means you can tweet longer tweets. ([#172](https://github.com/manuelcortez/TWBlue/issues/172))
|
||||
* Per popular request, Status for mention to all and long tweet checkboxes will not be saved in settings. ([#170](https://github.com/manuelcortez/TWBlue/issues/170))
|
||||
* Fixed a problem that was making TWBlue unable to start if it was being ran in Windows with Serbian language. ([#175](https://github.com/manuelcortez/TWBlue/issues/175))
|
||||
* Added Danish translation.
|
||||
* And more. ([#156,](https://github.com/manuelcortez/TWBlue/issues/156) [#163,](https://github.com/manuelcortez/TWBlue/issues/163) [#159,](https://github.com/manuelcortez/TWBlue/issues/159) [#173,](https://github.com/manuelcortez/TWBlue/issues/173) [#174,](https://github.com/manuelcortez/TWBlue/issues/174) [#176,](https://github.com/manuelcortez/TWBlue/issues/176))
|
||||
|
||||
## changes in version 0.91 and 0.92
|
||||
|
||||
* Fixed incorrect unicode handling when copying tweet to clipboard. ([#150](https://github.com/manuelcortez/TWBlue/issues/150))
|
||||
* TWBlue will show an error when trying to open a timeline for a suspended user. ([#128](https://github.com/manuelcortez/TWBlue/issues/128))
|
||||
* Removed TwUp as service as it no longer exists. ([#112](https://github.com/manuelcortez/TWBlue/issues/112))
|
||||
* Release audio files after uploading them. ([#130](https://github.com/manuelcortez/TWBlue/issues/130))
|
||||
* Now TWBlue will use Yandex's translation services instead microsoft translator. ([#132](https://github.com/manuelcortez/TWBlue/issues/132))
|
||||
* SndUp users will be able to upload audio in their account by using their API Key again. ([#134](https://github.com/manuelcortez/TWBlue/issues/134))
|
||||
* old tweets shouldn't be added as new items in buffers. ([#116,](https://github.com/manuelcortez/TWBlue/issues/116)) ([#133](https://github.com/manuelcortez/TWBlue/issues/133))
|
||||
* All mentionned users should be displayed correctly in Twishort's long tweets. ([#116,](https://github.com/manuelcortez/TWBlue/issues/116)) ([#135](https://github.com/manuelcortez/TWBlue/issues/135))
|
||||
* It is possible to select a language for OCR service from the extras panel, in the account settings dialogue. You can, however, set this to detect automatically. OCR should work better in languages with special characters or non-english symbols. ([#107](https://github.com/manuelcortez/TWBlue/issues/107))
|
||||
* Fixed a problem with JAWS for Windows and TWBlue. Now JAWS will work normally in this update. [#100](https://github.com/manuelcortez/twblue/issues/100)
|
||||
* And more ([#136,](https://github.com/manuelcortez/TWBlue/issues/136))
|
||||
|
||||
## Changes in version 0.90
|
||||
|
||||
* Fixed a bug in long tweet parsing that was making TWBlue to disconnect the streaming API. ([#103](https://github.com/manuelcortez/TWBlue/issues/103))
|
||||
* Now OCR will work in images from retweets. It fixes a bug where TWBlue was detecting images but couldn't apply OCR on them. ([#105](https://github.com/manuelcortez/TWBlue/issues/105))
|
||||
* TWBlue won't try to load tweets already deleted, made with Twishort. Before, if someone posted a long tweet but deleted it in the Twishort's site, TWBlue was trying to load the tweet and it was causing problems in all the client. ([#113](https://github.com/manuelcortez/TWBlue/issues/113))
|
||||
* TWBlue shows an error message when you try to view the profile of an user that does not exist or has been suspended. ([#114,](https://github.com/manuelcortez/TWBlue/issues/114) [#115](https://github.com/manuelcortez/TWBlue/issues/115))
|
||||
* The spellchecker module should select the right language when is set to "user default". ([#117](https://github.com/manuelcortez/TWBlue/issues/117))
|
||||
* Image description will be displayed in retweets too. ([#119](https://github.com/manuelcortez/TWBlue/issues/119))
|
||||
* When reading a long tweet, you shouldn't read strange entities anymore. ([#118](https://github.com/manuelcortez/twblue/issues/118))
|
||||
* TWBlue will not try to load timelines if the user is blocking you. ([#125](https://github.com/manuelcortez/twblue/issues/125))
|
||||
|
||||
## Changes in version 0.88 and 0.89
|
||||
|
||||
* Fixed more issues with streams and reconnections.
|
||||
* newer updates will indicate the release date in the updater.
|
||||
* Changes to keystrokes are reflected in keystroke editor automatically.
|
||||
* In replies with multiple users, if the mention to all checkbox is unchecked, you will see a checkbox per user so you will be able to control who will be mentioned in the reply.
|
||||
* Fixed a bug that caused duplicated user mentions in replies when the tweet was made with Twishort.
|
||||
* Retweets should be displayed normally again when the originating tweet is a Twishort's long tweet.
|
||||
* Changed the way TWBlue saves user timelines in configuration. Now it uses user IDS instead usernames. With user IDS, if an user changes the username, TWBlue still will create his/her timeline. This was not possible by using usernames.
|
||||
* Added a new setting in the account settings dialogue that makes TWBlue to show twitter usernames instead the full name.
|
||||
* Added OCR in twitter pictures. There is a new item in the tweet menu that allows you to extract and display text in images. Also the keystroke alt+Win+o has been added for the same purpose from the invisible interface.
|
||||
* Now TWBlue will play a sound when the focused tweet contains images.
|
||||
* Your own quoted tweets will not appear in the mentions buffer anymore.
|
||||
* The config file is saved in a different way, it should fix the bug where TWBlue needs to be restarted after the config folder is deleted.
|
||||
* Mentioning people from friends or followers buffers works again.
|
||||
* Support for proxy servers has been improved. Now TWBlue supports http, https, socks4 and socks5 proxies, with and without autentication.
|
||||
|
||||
## Changes in version 0.87
|
||||
|
||||
* Fixed stream connection errors.
|
||||
* Now TWBlue can handle properly a reply to the sender without including all other mentioned users.
|
||||
* Updated translations.
|
||||
* The status of the mention to all checkbox will be remembered the next time you reply to multiple users.
|
||||
|
||||
## Changes in version 0.86
|
||||
|
||||
* Fixed a very important security issue. Now TWBlue will send tweets to twishort without using any other server.
|
||||
* When you add a comment to a tweet, it will be sent as a quoted tweet, even if your reply plus the original tweet is not exceeding 140 characters.
|
||||
* Updated windows 10 keymap for reflecting changes made in the last windows 10 build.
|
||||
* Added last changes in the twitter API.
|
||||
* When replying, it will not show the twitter username in the text box. When you send the tweet, the username will be added automatically.
|
||||
* When replying to multiple users, you'll have a checkbox instead a button for mentioning all people. If this is checked, twitter usernames will be added automatically when you send your reply.
|
||||
|
||||
## Changes in version 0.85
|
||||
|
||||
* Long and quoted tweets should be displayed properly In lists.
|
||||
* The connection should be more stable.
|
||||
* Added an autostart option in the global settings dialogue.
|
||||
* Updated translation.
|
||||
* Updated russian documentation.
|
||||
* Tweets in cached database should be loaded properly.
|
||||
* Added some missed dictionaries for spelling correction.
|
||||
* Timelines, lists and other buffer should be created in the right order at startup.
|
||||
|
||||
## Changes in version 0.84
|
||||
|
||||
* More improvements in quoted and long tweets.
|
||||
* Updated translations: Russian, Italian, French, Romanian, Galician and Finnish.
|
||||
* Improvements in the audio uploader module: Now it can handle audio with non-english characters.
|
||||
* the title of the window should be updated properly when spellcheck, translate or shorten/unshorten URL buttons are pressed.
|
||||
* the bug that changes the selected tweet in the home timeline shouldn't be happening so often.
|
||||
|
||||
## Changes in version 0.82 and 0.83
|
||||
|
||||
* If the tweet source (client) is an application with unicode characters (example: российская газета) it will not break the tweet displayer.
|
||||
* Added a new field for image description in tweet displayer. When available, it will show description for images posted in tweets.
|
||||
* users can add image descriptions to their photos. When uploading an image, a dialog will show for asking a description.
|
||||
* Redesigned upload image dialog.
|
||||
* Fixed photo uploads when posting tweets.
|
||||
* When getting tweets for a conversation, ignores deleted tweets or some errors, now TWBlue will try to get as much tweets as possible, even if some of these are no longer available.
|
||||
* Added audio playback from soundcloud.
|
||||
* Now the session mute option don't makes the screen reader speaks.
|
||||
* Fixed the direct message dialog. Now it should be displayed properly.
|
||||
* when a tweet is deleted in twitter, TWBlue should reflect this change and delete that tweet in every buffer it is displayed.
|
||||
* If your session is broken, TWBlue will be able to remove it automatically instead just crashing.
|
||||
* audio uploader should display the current progress.
|
||||
* users can disable the check for updates feature at startup from the general tab, in the global settings dialogue.
|
||||
* The invisible interface and the window should be synchronized when the client reconnects.
|
||||
* The documentation option in the systray icon should be enabled.
|
||||
* In trending buffers, you can press enter for posting a tweet about the focused trend.
|
||||
* Updated russian documentation and main program interface (thanks to Natalia Hedlund (Наталья Хедлунд), [@lifestar_n](https://twitter.com/lifestar_n) in twitter)
|
||||
* updated translations.
|
||||
|
||||
## Changes in Version 0.81
|
||||
|
||||
* Updated translations
|
||||
* The updater module has received some improvements. Now it includes a Mirror URL for checking updates if the main URL is not available at the moment. If something is wrong and both locations don't work, the program will start anyway.
|
||||
* some GUI elements now use keyboard shortcuts for common actions.
|
||||
* fixed a bug in the geolocation dialog.
|
||||
* the chicken nugget keymap should work properly.
|
||||
* Added a new soundpack to the default installation of TWBlue, thanks to [@Deng90](https://twitter.com/deng90)
|
||||
* Now the changelog is written in an html File.
|
||||
* Added some missed dictionaries in last version for the spell checking feature.
|
||||
* Trimmed the beginnings of the sounds in the default soundpack. Thanks to [@masonasons](https://github.com/masonasons)
|
||||
* Added Opus support for sound playback in TWBlue. Thanks to [@masonasons](https://github.com/masonasons)
|
||||
* Added a source field in view tweet dialogue. Thanks to [@masonasons](https://github.com/masonasons)
|
||||
* You can load previous items in followers and friend buffers for others.
|
||||
* The Spell Checker dialogue should not display an error message when you have set "default language" in the global settings dialogue if your language is supported [#168](http://twblue.es/bugs/view.php?id=168)
|
||||
* Updated romanian translation.
|
||||
* Some code cleanups.
|
||||
* The bug reports feature is fully operational again.
|
||||
* TWBlue should work again for users that contains special characters in windows usernames.
|
||||
* Added more options for the tweet searches.
|
||||
* Added play_audio to the keymap editor.
|
||||
* Windows key is no longer required in the keymap editor
|
||||
* Switched to the Microsoft translator.
|
||||
* You can update the current buffer by pressing ctrl+win+shift+u in the default keymap or in the buffer menu.
|
||||
* Changed some keystrokes in the windows 10 default keymap
|
||||
* New followers and friends buffer for user timelines.
|
||||
|
||||
---
|
||||
Copyright © 2014-2017, Manuel Cortez.
|
@@ -1,13 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from codecs import open
|
||||
""" 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 internationalized documentation.
|
||||
""" 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")
|
||||
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")
|
||||
@@ -15,10 +16,9 @@ def prepare_documentation_in_file(fileSource, fileDest):
|
||||
if "\n" == i:
|
||||
newvar = "\"\","
|
||||
elif "\n" == i[-1]:
|
||||
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i[:-1])
|
||||
newvar = "\"\"\"%s\"\"\",\n" % (i[:-1])
|
||||
else:
|
||||
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i)
|
||||
# print i[-1:]
|
||||
newvar = "\"\"\"%s\"\"\",\n" % (i)
|
||||
f2.write(newvar)
|
||||
f1.close()
|
||||
f2.write("]")
|
||||
@@ -26,3 +26,4 @@ def prepare_documentation_in_file(fileSource, fileDest):
|
||||
|
||||
|
||||
prepare_documentation_in_file("manual.md", "strings.py")
|
||||
prepare_documentation_in_file("changelog.md", "changelog.py")
|
@@ -1,20 +1,35 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import markdown
|
||||
import gettext
|
||||
import os
|
||||
import locale
|
||||
import paths
|
||||
import markdown
|
||||
import shutil
|
||||
from codecs import open as _open
|
||||
import languageHandler
|
||||
languageHandler.setLanguage("en")
|
||||
import strings
|
||||
from importlib import reload
|
||||
|
||||
def get_translation_function(name, language):
|
||||
if language == "en":
|
||||
return gettext.NullTranslations()
|
||||
translation_function = gettext.translation(name, os.path.join(paths.app_path(), "locales"), languages=[language])
|
||||
return translation_function
|
||||
|
||||
# the list of supported language codes of TW Blue
|
||||
languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro"]
|
||||
#"eu", "ar", "ca", "es", "fi", "fr", "gl", "hu", "it", "pl", "pt", "ru", "tr"]
|
||||
languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da", "sr"]
|
||||
|
||||
def generate_document(language):
|
||||
reload(languageHandler)
|
||||
languageHandler.setLanguage(language)
|
||||
reload(strings)
|
||||
markdown_file = markdown.markdown("\n".join(strings.documentation[1:]), extensions=["markdown.extensions.toc"])
|
||||
def generate_document(language, document_type="documentation"):
|
||||
if document_type == "documentation":
|
||||
translation_file = "twblue-documentation"
|
||||
translation_function = get_translation_function(translation_file, language)
|
||||
markdown_file = markdown.markdown("\n".join([translation_function.gettext(s[:-1]) if s != "\n" else s for s in strings.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = translation_function.gettext(strings.documentation[0][:-1])
|
||||
filename = "manual.html"
|
||||
elif document_type == "changelog":
|
||||
translation_file = "twblue-changelog"
|
||||
translation_function = get_translation_function(translation_file, language)
|
||||
markdown_file = markdown.markdown("\n".join([translation_function.gettext(s[:-1]) if s != "\n" else s for s in changelog.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = translation_function.gettext(changelog.documentation[0][:-1])
|
||||
filename = "changelog.html"
|
||||
first_html_block = """<!doctype html>
|
||||
<html lang="%s">
|
||||
<head>
|
||||
@@ -23,20 +38,30 @@ def generate_document(language):
|
||||
</head>
|
||||
<body>
|
||||
<header><h1>%s</h1></header>
|
||||
""" % (language, strings.documentation[0], strings.documentation[0])
|
||||
""" % (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/manual.html" % language, "w", encoding="utf-8")
|
||||
if not os.path.exists(os.path.join("documentation", language)):
|
||||
os.mkdir(os.path.join("documentation", language))
|
||||
mdfile = _open(os.path.join("documentation", language, filename), "w", encoding="utf-8")
|
||||
mdfile.write(first_html_block)
|
||||
mdfile.close()
|
||||
|
||||
def create_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 languages:
|
||||
print("Creating documentation for: %s" % (i,))
|
||||
generate_document(i)
|
||||
try:
|
||||
generate_document(i)
|
||||
generate_document(i, "changelog")
|
||||
except:
|
||||
continue
|
||||
print("Done")
|
||||
|
||||
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):
|
||||
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('twblue-documentation', localedir="locales", languages=[localeName])
|
||||
curLang=localeName
|
||||
else:
|
||||
trans=gettext.translation("twblue-documentation", 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("twblue-documentation",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.
1014
doc/locales/ar/lc_messages/twblue-changelog.po
Normal file
1014
doc/locales/ar/lc_messages/twblue-changelog.po
Normal file
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
BIN
doc/locales/ca/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/ca/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1303
doc/locales/ca/lc_messages/twblue-changelog.po
Normal file
1303
doc/locales/ca/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/ca/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/ca/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
2659
doc/locales/ca/lc_messages/twblue-documentation.po
Normal file
2659
doc/locales/ca/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/da/LC_MESSAGES/twblue-documentation.mo
Normal file
BIN
doc/locales/da/LC_MESSAGES/twblue-documentation.mo
Normal file
Binary file not shown.
1913
doc/locales/da/LC_MESSAGES/twblue-documentation.po
Normal file
1913
doc/locales/da/LC_MESSAGES/twblue-documentation.po
Normal file
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.
1207
doc/locales/de/lc_messages/twblue-changelog.po
Normal file
1207
doc/locales/de/lc_messages/twblue-changelog.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
BIN
doc/locales/es/LC_MESSAGES/twblue-changelog.mo
Normal file
BIN
doc/locales/es/LC_MESSAGES/twblue-changelog.mo
Normal file
Binary file not shown.
1378
doc/locales/es/LC_MESSAGES/twblue-changelog.po
Normal file
1378
doc/locales/es/LC_MESSAGES/twblue-changelog.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
BIN
doc/locales/eu/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/eu/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1226
doc/locales/eu/lc_messages/twblue-changelog.po
Normal file
1226
doc/locales/eu/lc_messages/twblue-changelog.po
Normal file
File diff suppressed because it is too large
Load Diff
635
doc/locales/eu/lc_messages/twblue-changelog.temp.temp.po
Normal file
635
doc/locales/eu/lc_messages/twblue-changelog.temp.temp.po
Normal file
@@ -0,0 +1,635 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR ORGANIZATION
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2017-07-08 16:25+Hora de verano central (Mxico)\n"
|
||||
"PO-Revision-Date: 2017-07-15 19:44+0200\n"
|
||||
"Last-Translator: Sukil Etxenike <sukiletxe@yahoo.es>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: eu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"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.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../doc/changelog.py:3
|
||||
msgid "TWBlue Changelog"
|
||||
msgstr "TwBlueren aldaketak"
|
||||
|
||||
#: ../doc/changelog.py:4
|
||||
msgid "## changes in this version"
|
||||
msgstr "## Aldaketak bertsio honetan"
|
||||
|
||||
#: ../doc/changelog.py:5
|
||||
msgid ""
|
||||
"* TWBlue will show an error when trying to open a timeline for a suspended "
|
||||
"user. ([#128](https://github.com/manuelcortez/TWBlue/issues/128))"
|
||||
msgstr ""
|
||||
"* TWBluek errore bat erakutsiko du ezabatutako erabiltzaile batn denbora "
|
||||
"lerro bat irekitzen saiatzean . ([#128](https://github.com/manuelcortez/"
|
||||
"TWBlue/issues/128))"
|
||||
|
||||
#: ../doc/changelog.py:6
|
||||
msgid ""
|
||||
"* Removed TwUp as service as it no longer exists. ([#112](https://github.com/"
|
||||
"manuelcortez/TWBlue/issues/112))"
|
||||
msgstr ""
|
||||
"* TwUp zerbitzua kendu da, jada ez delako existitzen. ([#112](https://github."
|
||||
"com/manuelcortez/TWBlue/issues/112)) "
|
||||
|
||||
#: ../doc/changelog.py:7
|
||||
msgid ""
|
||||
"* Release audio files after uploading them. ([#130](https://github.com/"
|
||||
"manuelcortez/TWBlue/issues/130))"
|
||||
msgstr ""
|
||||
"* Orain audio fitxategiak askatzen dira igo ondoren. ([#130](https://github."
|
||||
"com/manuelcortez/TWBlue/issues/130))"
|
||||
|
||||
#: ../doc/changelog.py:8
|
||||
msgid ""
|
||||
"* Now TWBlue will use Yandex's translation services instead microsoft "
|
||||
"translator. ([#132](https://github.com/manuelcortez/TWBlue/issues/132))"
|
||||
msgstr ""
|
||||
"* Orain TWBluek Yandexen itzultzailea erabiltzen du Microsoften "
|
||||
"itzultzailearen ordez. ([#132](https://github.com/manuelcortez/TWBlue/"
|
||||
"issues/132))"
|
||||
|
||||
#: ../doc/changelog.py:9
|
||||
msgid ""
|
||||
"* SndUp users will be able to upload audio in their account by using their "
|
||||
"API Key again. ([#134](https://github.com/manuelcortez/TWBlue/issues/134))"
|
||||
msgstr ""
|
||||
"* SndUp-en erabiltzaileek orain audioak igo ditzakete haien API kodea "
|
||||
"erabilita. ([#134](https://github.com/manuelcortez/TWBlue/issues/134))"
|
||||
|
||||
#: ../doc/changelog.py:10
|
||||
msgid ""
|
||||
"* old tweets shouldn't be added as new items in buffers. ([#116,](https://"
|
||||
"github.com/manuelcortez/TWBlue/issues/116)) ([#133](https://github.com/"
|
||||
"manuelcortez/TWBlue/issues/133))"
|
||||
msgstr ""
|
||||
"* Txio zaharrak ez lirateke buferretan elementu berri gisa agertu behar. "
|
||||
"([#116,](https://github.com/manuelcortez/TWBlue/issues/116)) ([#133](https://"
|
||||
"github.com/manuelcortez/TWBlue/issues/133))"
|
||||
|
||||
#: ../doc/changelog.py:11
|
||||
msgid ""
|
||||
"* All mentionned users should be displayed correctly in Twishort's long "
|
||||
"tweets. ([#116,](https://github.com/manuelcortez/TWBlue/issues/116)) ([#135]"
|
||||
"(https://github.com/manuelcortez/TWBlue/issues/135))"
|
||||
msgstr ""
|
||||
"* Aipatutako erabiltzaile guztiak ondo agertu beharko lirateke Tuishort-en "
|
||||
"txio luzeetan. ([#116,](https://github.com/manuelcortez/TWBlue/issues/116)) "
|
||||
"([#135](https://github.com/manuelcortez/TWBlue/issues/135))"
|
||||
|
||||
#: ../doc/changelog.py:12
|
||||
msgid ""
|
||||
"* It is possible to select a language for OCR service from the extras panel, "
|
||||
"in the account settings dialogue. You can, however, set this to detect "
|
||||
"automatically. OCR should work better in languages with special characters "
|
||||
"or non-english symbols. ([#107](https://github.com/manuelcortez/TWBlue/"
|
||||
"issues/107))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:13
|
||||
msgid ""
|
||||
"* Fixed a problem with JAWS for Windows and TWBlue. Now JAWS will work "
|
||||
"normally in this update. [#100](https://github.com/manuelcortez/twblue/"
|
||||
"issues/100)"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:14
|
||||
msgid "* And more ([#136,](https://github.com/manuelcortez/TWBlue/issues/136))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:15
|
||||
msgid "## Changes in version 0.90"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:16
|
||||
msgid ""
|
||||
"* Fixed a bug in long tweet parsing that was making TWBlue to disconnect the "
|
||||
"streaming API. ([#103](https://github.com/manuelcortez/TWBlue/issues/103))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:17
|
||||
msgid ""
|
||||
"* Now OCR will work in images from retweets. It fixes a bug where TWBlue was "
|
||||
"detecting images but couldn't apply OCR on them. ([#105](https://github.com/"
|
||||
"manuelcortez/TWBlue/issues/105))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:18
|
||||
msgid ""
|
||||
"* TWBlue won't try to load tweets already deleted, made with Twishort. "
|
||||
"Before, if someone posted a long tweet but deleted it in the Twishort's "
|
||||
"site, TWBlue was trying to load the tweet and it was causing problems in all "
|
||||
"the client. ([#113](https://github.com/manuelcortez/TWBlue/issues/113))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:19
|
||||
msgid ""
|
||||
"* TWBlue shows an error message when you try to view the profile of an user "
|
||||
"that does not exist or has been suspended. ([#114,](https://github.com/"
|
||||
"manuelcortez/TWBlue/issues/114) [#115](https://github.com/manuelcortez/"
|
||||
"TWBlue/issues/115))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:20
|
||||
msgid ""
|
||||
"* The spellchecker module should select the right language when is set to "
|
||||
"\"user default\". ([#117](https://github.com/manuelcortez/TWBlue/issues/117))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:21
|
||||
msgid ""
|
||||
"* Image description will be displayed in retweets too. ([#119](https://"
|
||||
"github.com/manuelcortez/TWBlue/issues/119))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:22
|
||||
msgid ""
|
||||
"* When reading a long tweet, you shouldn't read strange entities anymore. "
|
||||
"([#118](https://github.com/manuelcortez/twblue/issues/118))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:23
|
||||
msgid ""
|
||||
"* TWBlue will not try to load timelines if the user is blocking you. ([#125]"
|
||||
"(https://github.com/manuelcortez/twblue/issues/125))"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:24
|
||||
msgid "## Changes in version 0.88 and 0.89"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:25
|
||||
msgid "* Fixed more issues with streams and reconnections."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:26
|
||||
msgid "* newer updates will indicate the release date in the updater."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:27
|
||||
msgid ""
|
||||
"* Changes to keystrokes are reflected in keystroke editor automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:28
|
||||
msgid ""
|
||||
"* In replies with multiple users, if the mention to all checkbox is "
|
||||
"unchecked, you will see a checkbox per user so you will be able to control "
|
||||
"who will be mentioned in the reply."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:29
|
||||
msgid ""
|
||||
"* Fixed a bug that caused duplicated user mentions in replies when the tweet "
|
||||
"was made with Twishort."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:30
|
||||
msgid ""
|
||||
"* Retweets should be displayed normally again when the originating tweet is "
|
||||
"a Twishort's long tweet."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:31
|
||||
msgid ""
|
||||
"* Changed the way TWBlue saves user timelines in configuration. Now it uses "
|
||||
"user IDS instead usernames. With user IDS, if an user changes the username, "
|
||||
"TWBlue still will create his/her timeline. This was not possible by using "
|
||||
"usernames."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:32
|
||||
msgid ""
|
||||
"* Added a new setting in the account settings dialogue that makes TWBlue to "
|
||||
"show twitter usernames instead the full name."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:33
|
||||
msgid ""
|
||||
"* Added OCR in twitter pictures. There is a new item in the tweet menu that "
|
||||
"allows you to extract and display text in images. Also the keystroke alt+Win"
|
||||
"+o has been added for the same purpose from the invisible interface."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:34
|
||||
msgid "* Now TWBlue will play a sound when the focused tweet contains images."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:35
|
||||
msgid ""
|
||||
"* Your own quoted tweets will not appear in the mentions buffer anymore."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:36
|
||||
msgid ""
|
||||
"* The config file is saved in a different way, it should fix the bug where "
|
||||
"TWBlue needs to be restarted after the config folder is deleted."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:37
|
||||
msgid "* Mentioning people from friends or followers buffers works again."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:38
|
||||
msgid ""
|
||||
"* Support for proxy servers has been improved. Now TWBlue supports http, "
|
||||
"https, socks4 and socks5 proxies, with and without autentication."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:39
|
||||
msgid "## Changes in version 0.87"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:40
|
||||
msgid "* Fixed stream connection errors."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:41
|
||||
msgid ""
|
||||
"* Now TWBlue can handle properly a reply to the sender without including all "
|
||||
"other mentioned users."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:42
|
||||
msgid "* Updated translations."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:43
|
||||
msgid ""
|
||||
"* The status of the mention to all checkbox will be remembered the next time "
|
||||
"you reply to multiple users."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:44
|
||||
msgid "## Changes in version 0.86"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:45
|
||||
msgid ""
|
||||
"* Fixed a very important security issue. Now TWBlue will send tweets to "
|
||||
"twishort without using any other server."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:46
|
||||
msgid ""
|
||||
"* When you add a comment to a tweet, it will be sent as a quoted tweet, even "
|
||||
"if your reply plus the original tweet is not exceeding 140 characters."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:47
|
||||
msgid ""
|
||||
"* Updated windows 10 keymap for reflecting changes made in the last windows "
|
||||
"10 build."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:48
|
||||
msgid "* Added last changes in the twitter API."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:49
|
||||
msgid ""
|
||||
"* When replying, it will not show the twitter username in the text box. When "
|
||||
"you send the tweet, the username will be added automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:50
|
||||
msgid ""
|
||||
"* When replying to multiple users, you'll have a checkbox instead a button "
|
||||
"for mentioning all people. If this is checked, twitter usernames will be "
|
||||
"added automatically when you send your reply."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:51
|
||||
msgid "## Changes in version 0.85"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:52
|
||||
msgid "* Long and quoted tweets should be displayed properly In lists."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:53
|
||||
msgid "* The connection should be more stable."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:54
|
||||
msgid "* Added an autostart option in the global settings dialogue."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:55
|
||||
msgid "* Updated translation."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:56
|
||||
msgid "* Updated russian documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:57
|
||||
msgid "* Tweets in cached database should be loaded properly."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:58
|
||||
msgid "* Added some missed dictionaries for spelling correction."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:59
|
||||
msgid ""
|
||||
"* Timelines, lists and other buffer should be created in the right order at "
|
||||
"startup."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:60
|
||||
msgid "## Changes in version 0.84 "
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:61
|
||||
msgid "* More improvements in quoted and long tweets."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:62
|
||||
msgid ""
|
||||
"* Updated translations: Russian, Italian, French, Romanian, Galician and "
|
||||
"Finnish."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:63
|
||||
msgid ""
|
||||
"* Improvements in the audio uploader module: Now it can handle audio with "
|
||||
"non-english characters."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:64
|
||||
msgid ""
|
||||
"* the title of the window should be updated properly when spellcheck, "
|
||||
"translate or shorten/unshorten URL buttons are pressed."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:65
|
||||
msgid ""
|
||||
"* the bug that changes the selected tweet in the home timeline shouldn't be "
|
||||
"happening so often."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:66
|
||||
msgid "## Changes in version 0.82 and 0.83"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:67
|
||||
msgid ""
|
||||
"* If the tweet source (client) is an application with unicode characters "
|
||||
"(example: российская газета) it will not break the tweet displayer."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:68
|
||||
msgid ""
|
||||
"* Added a new field for image description in tweet displayer. When "
|
||||
"available, it will show description for images posted in tweets."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:69
|
||||
msgid ""
|
||||
"* users can add image descriptions to their photos. When uploading an image, "
|
||||
"a dialog will show for asking a description."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:70
|
||||
msgid "* Redesigned upload image dialog."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:71
|
||||
msgid "* Fixed photo uploads when posting tweets."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:72
|
||||
msgid ""
|
||||
"* When getting tweets for a conversation, ignores deleted tweets or some "
|
||||
"errors, now TWBlue will try to get as much tweets as possible, even if some "
|
||||
"of these are no longer available."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:73
|
||||
msgid "* Added audio playback from soundcloud."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:74
|
||||
msgid "* Now the session mute option don't makes the screen reader speaks."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:75
|
||||
msgid "* Fixed the direct message dialog. Now it should be displayed properly."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:76
|
||||
msgid ""
|
||||
"* when a tweet is deleted in twitter, TWBlue should reflect this change and "
|
||||
"delete that tweet in every buffer it is displayed."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:77
|
||||
msgid ""
|
||||
"* If your session is broken, TWBlue will be able to remove it automatically "
|
||||
"instead just crashing."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:78
|
||||
msgid "* audio uploader should display the current progress."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:79
|
||||
msgid ""
|
||||
"* users can disable the check for updates feature at startup from the "
|
||||
"general tab, in the global settings dialogue."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:80
|
||||
msgid ""
|
||||
"* The invisible interface and the window should be synchronized when the "
|
||||
"client reconnects."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:81
|
||||
msgid "* The documentation option in the systray icon should be enabled."
|
||||
msgstr ""
|
||||
"* Sistemaren ikonoetako dokumentazioa ikusteko aukera erabilgarria egon "
|
||||
"beharko litzateke."
|
||||
|
||||
#: ../doc/changelog.py:82
|
||||
msgid ""
|
||||
"* In trending buffers, you can press enter for posting a tweet about the "
|
||||
"focused trend."
|
||||
msgstr ""
|
||||
"* Tendentzien buferretan, enter saka dezakezu enfokatutako tendentziari "
|
||||
"buruz txio bat argitaratzeko."
|
||||
|
||||
#: ../doc/changelog.py:83
|
||||
msgid ""
|
||||
"* Updated russian documentation and main program interface (thanks to "
|
||||
"Natalia Hedlund (Наталья Хедлунд), [@lifestar_n](https://twitter.com/"
|
||||
"lifestar_n) in twitter)"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:84
|
||||
msgid "* updated translations."
|
||||
msgstr "* Itzulpenak eguneratuak izan dira."
|
||||
|
||||
#: ../doc/changelog.py:85
|
||||
msgid "## Changes in Version 0.81"
|
||||
msgstr "## 0.81bertsioaren aldaketak"
|
||||
|
||||
#: ../doc/changelog.py:86
|
||||
msgid "* Updated translations"
|
||||
msgstr "* Itzulpenak eguneratuak izan dira"
|
||||
|
||||
#: ../doc/changelog.py:87
|
||||
msgid ""
|
||||
"* The updater module has received some improvements. Now it includes a "
|
||||
"Mirror URL for checking updates if the main URL is not available at the "
|
||||
"moment. If something is wrong and both locations don't work, the program "
|
||||
"will start anyway."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc/changelog.py:88
|
||||
msgid "* some GUI elements now use keyboard shortcuts for common actions."
|
||||
msgstr ""
|
||||
"* Interfaze grafikoko elementu batzuek lasterbide teklak dituzte ohiko "
|
||||
"ekintzetarako."
|
||||
|
||||
#: ../doc/changelog.py:89
|
||||
msgid "* fixed a bug in the geolocation dialog."
|
||||
msgstr "* Errore bat konpondu da geottxioen elkarrizketa-koadroan."
|
||||
|
||||
#: ../doc/changelog.py:90
|
||||
msgid "* the chicken nugget keymap should work properly."
|
||||
msgstr "* Chicken Nuggetaren teklatu-mapak ondo funtzionatu beharko luke."
|
||||
|
||||
#: ../doc/changelog.py:91
|
||||
msgid ""
|
||||
"* Added a new soundpack to the default installation of TWBlue, thanks to "
|
||||
"[@Deng90](https://twitter.com/deng90)"
|
||||
msgstr ""
|
||||
"* Soinu pakete berri bat gehitu zaio TWBlueren lehenetsitako instalazioari, "
|
||||
"eskerrak [@Deng90](https://twitter.com/deng90)"
|
||||
|
||||
#: ../doc/changelog.py:92
|
||||
msgid "* Now the changelog is written in an html File."
|
||||
msgstr "* Orain aldaketen fitxategia html fitxategi bat da."
|
||||
|
||||
#: ../doc/changelog.py:93
|
||||
msgid ""
|
||||
"* Added some missed dictionaries in last version for the spell checking "
|
||||
"feature."
|
||||
msgstr ""
|
||||
"* Aurreko bertsioan falta ziren hiztegi batzuk gehitu dira, zuzentzaleak "
|
||||
"erabiltzen dituenak."
|
||||
|
||||
#: ../doc/changelog.py:94
|
||||
msgid ""
|
||||
"* Trimmed the beginnings of the sounds in the default soundpack. Thanks to "
|
||||
"[@masonasons](https://github.com/masonasons)"
|
||||
msgstr ""
|
||||
"* ehenetsitako soiinu paketearen soinuen hasierak moztu dira. Eskerrak "
|
||||
"[@masonasons-i.](https://github.com/masonasons)"
|
||||
|
||||
#: ../doc/changelog.py:95
|
||||
msgid ""
|
||||
"* Added Opus support for sound playback in TWBlue. Thanks to [@masonasons]"
|
||||
"(https://github.com/masonasons)"
|
||||
msgstr ""
|
||||
"* Opus formatua erreproduzi daiteke, eskerrak [@masonasons-i.](https://"
|
||||
"github.com/masonasons)."
|
||||
|
||||
#: ../doc/changelog.py:96
|
||||
msgid ""
|
||||
"* Added a source field in view tweet dialogue. Thanks to [@masonasons]"
|
||||
"(https://github.com/masonasons)"
|
||||
msgstr ""
|
||||
"* \"Iturria\" gehitu zaio txioa erakusteko elkarrizketa koadroari. Eskerrak "
|
||||
"[@masonasons-i.](https://github.com/masonasons)"
|
||||
|
||||
#: ../doc/changelog.py:97
|
||||
msgid ""
|
||||
"* You can load previous items in followers and friend buffers for others."
|
||||
msgstr ""
|
||||
"* Aurreko elementuak karga ditzakezu besteen jarraitzaile eta lagunen "
|
||||
"buferretan."
|
||||
|
||||
#: ../doc/changelog.py:98
|
||||
msgid ""
|
||||
"* The Spell Checker dialogue should not display an error message when you "
|
||||
"have set \"default language\" in the global settings dialogue if your "
|
||||
"language is supported [#168](http://twblue.es/bugs/view.php?id=168)"
|
||||
msgstr ""
|
||||
"* Zuzentzailearen elkarrizketa-koadroak ez luke errorerik erakutsi behar "
|
||||
"aukera globaletan \"Lehenetsitako hizkuntza\" aukeratua dagoenean eta zure "
|
||||
"hizkuntza erabilgarria denean [#168](http://twblue.es/bugs/view.php?id=168)"
|
||||
|
||||
#: ../doc/changelog.py:99
|
||||
msgid "* Updated romanian translation."
|
||||
msgstr "* Errumaniera itzulpena eguneratua izan da."
|
||||
|
||||
#: ../doc/changelog.py:100
|
||||
msgid "* Some code cleanups."
|
||||
msgstr "* Kode garbiketa batzuk."
|
||||
|
||||
#: ../doc/changelog.py:101
|
||||
msgid "* The bug reports feature is fully operational again."
|
||||
msgstr "* Arazoez informatzeko ezaugarriak berriz funtzionaten du"
|
||||
|
||||
#: ../doc/changelog.py:102
|
||||
msgid ""
|
||||
"* TWBlue should work again for users that contains special characters in "
|
||||
"windows usernames."
|
||||
msgstr ""
|
||||
"* TWBluek berriz funtzionatu beharko luke haien Windows erabiltzaile-"
|
||||
"izenetan karaktere bereziak dituzten erabiltzaileentzat."
|
||||
|
||||
#: ../doc/changelog.py:103
|
||||
msgid "* Added more options for the tweet searches."
|
||||
msgstr "* Txioen bilaketarako aukera gehiago gehitu dira."
|
||||
|
||||
#: ../doc/changelog.py:104
|
||||
msgid "* Added play_audio to the keymap editor."
|
||||
msgstr "* play_audio teklatu-mapen editorera gehitua izan da."
|
||||
|
||||
#: ../doc/changelog.py:105
|
||||
msgid "* Windows key is no longer required in the keymap editor"
|
||||
msgstr "* Windows tekla ez da jada bearrezkoa teklatu-mapen editorean."
|
||||
|
||||
#: ../doc/changelog.py:106
|
||||
msgid "* Switched to the Microsoft translator."
|
||||
msgstr "* Microsoften itzultzailera aldatu gara."
|
||||
|
||||
#: ../doc/changelog.py:107
|
||||
msgid ""
|
||||
"* You can update the current buffer by pressing ctrl+win+shift+u in the "
|
||||
"default keymap or in the buffer menu."
|
||||
msgstr ""
|
||||
"* Enfokatutako uferra ktrl+shift+win+u sakatuta (lehenetsitako teklatu-"
|
||||
"mapak) edo menuan eguneratu daitezke."
|
||||
|
||||
#: ../doc/changelog.py:108
|
||||
msgid "* Changed some keystrokes in the windows 10 default keymap"
|
||||
msgstr ""
|
||||
"* Lasterbide-tekla batzuk aldatuak izan dira Windows 10erako teklatu-mapan."
|
||||
|
||||
#: ../doc/changelog.py:109
|
||||
msgid "* New followers and friends buffer for user timelines."
|
||||
msgstr ""
|
||||
"* Jarraitzaileen eta lagunen bufer berria erabiltzaileen denbora-lerroentzat."
|
||||
|
||||
#: ../doc/changelog.py:110
|
||||
msgid "---"
|
||||
msgstr "---"
|
||||
|
||||
#: ../doc/changelog.py:111
|
||||
msgid "Copyright © 2014-2017, Manuel Cortez."
|
||||
msgstr "Copyright © 2014-2017, Manuel Cortez."
|
BIN
doc/locales/eu/lc_messages/twblue-documentation.mo
Normal file
BIN
doc/locales/eu/lc_messages/twblue-documentation.mo
Normal file
Binary file not shown.
1879
doc/locales/eu/lc_messages/twblue-documentation.po
Normal file
1879
doc/locales/eu/lc_messages/twblue-documentation.po
Normal file
File diff suppressed because it is too large
Load Diff
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
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
BIN
doc/locales/fr/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/fr/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1269
doc/locales/fr/lc_messages/twblue-changelog.po
Normal file
1269
doc/locales/fr/lc_messages/twblue-changelog.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
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/gl/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/gl/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1368
doc/locales/gl/lc_messages/twblue-changelog.po
Normal file
1368
doc/locales/gl/lc_messages/twblue-changelog.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
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.
File diff suppressed because it is too large
Load Diff
BIN
doc/locales/ja/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/ja/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1125
doc/locales/ja/lc_messages/twblue-changelog.po
Normal file
1125
doc/locales/ja/lc_messages/twblue-changelog.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
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
285
doc/locales/pt/manual.md
Normal file
285
doc/locales/pt/manual.md
Normal file
@@ -0,0 +1,285 @@
|
||||
% Documentação do TW Blue 0.42
|
||||
|
||||
# Versão 0.42 (alpha)
|
||||
|
||||
# ¡Perigro!
|
||||
|
||||
Você está lendo um documento gerado para uma aplicação em fase de desenvolvimento. A intenção deste manual é esclarecer alguns detalhes sobre o funcionamento do programa. Note-se que sendo desenvolvido ativamente, o software pode mudar um pouco em relação a esta documentação num futuro próximo. Por isso é aconselhável dar uma olhada de vez em quando para não se perder muito.
|
||||
|
||||
Si quieres ver lo que ha cambiado con respecto a la versión anterior, [lee la lista de novedades aquí.](changes.html)
|
||||
|
||||
# TW Blue
|
||||
|
||||
TW Blue é um aplicativo para utilizar o Twitter de forma simples e rápida, além de evitar tanto quanto possível consumir demasiados recursos do computador. Com ele é possível realizar ações do Twitter, tais como:
|
||||
|
||||
* Crear, responder, reenviar y eliminar Tuits,
|
||||
* Marcar como favorito, eliminar de tus favoritos un tuit,
|
||||
* Enviar y eliminar mensajes directos,
|
||||
* Ver tus amigos y seguidores,
|
||||
* Seguir, dejar de seguir, reportar como spam y bloquear a un usuario,
|
||||
* Abrir una línea temporal para un usuario, lo que permite obtener todos los Tuits de ese usuario únicamente,
|
||||
* Abrir direcciones URL cuando vayan en un tuit o mensaje directo,
|
||||
* Reproducir varios tipos de archivos o direcciones que contengan audio.
|
||||
* Y más.
|
||||
|
||||
# Tabla de contenidos
|
||||
|
||||
Para poder utilizar una aplicación como TW Blue que te permita gestionar una cuenta de Twitter, primero tienes que estar registrado en esta red social. Esta documentación no tiene como objetivo explicar el procedimiento para hacerlo. Partiremos desde el punto que tienes una cuenta con su respectivo nombre de usuario y contraseña. La documentación cubrirá estas secciones.
|
||||
|
||||
* [Autorizar la aplicación](#autorizar)
|
||||
* [La interfaz del programa](#interfaz)
|
||||
* [Controles](#controles)
|
||||
* [La interfaz gráfica (GUI)](#gui)
|
||||
* [Botones de la aplicación](#botones)
|
||||
* [Menús](#menus)
|
||||
* [Menú aplicación](#app)
|
||||
* [Menú Tuit](#tuit)
|
||||
* [Menú Usuario](#usuario)
|
||||
* [Menú buffer](#buffer)
|
||||
* [Menú ayuda](#ayuda)
|
||||
* [La interfaz No Visible](#interfaz_no_visible)
|
||||
* [Atajos de Teclado para la Interfaz Gráfica](#atajos)
|
||||
* [Atajos de Teclado para la Interfaz no Visible](#atajos_invisibles)
|
||||
* [Listas](#listas)
|
||||
* [Reportando Errores desde la web](#reportar)
|
||||
* [Contacto](#contacto)
|
||||
|
||||
## Autorizando la aplicación {#autorizar}
|
||||
|
||||
Antes de nada, lo primero que se necesita es autorizar al programa para que este pueda acceder a tu cuenta de Twitter, y desde ella realizar lo que le pidas. El proceso de autorización es bastante sencillo, y en ningún momento el programa podrá tener acceso a tus datos como usuario y contraseña. Para autorizar la aplicación, solo tienes que abrir el archivo principal del programa, llamado TW Blue.exe (en algunos PC, solo se muestra como TW Blue).
|
||||
|
||||
Al hacerlo, si no has configurado ninguna vez el programa, se mostrará un cuadro de diálogo donde te informa que serás llevado a Twitter para autorizar la aplicación una vez pulses sobre "aceptar". Para empezar con el proceso de autorización presiona sobre el único botón de ese diálogo.
|
||||
|
||||
A continuación, tu navegador predeterminado se abrirá con la página de Twitter solicitándote autorizar la aplicación. Escribe, si no estás autenticado ya, tu nombre de usuario y contraseña, luego busca el botón autorizar, y presiónalo.
|
||||
|
||||
De la página a la que serás redirigido (si el proceso ha tenido éxito), busca las instrucciones que te proporciona Twitter. En resumen, te dará un código numérico de varios dígitos que deberás pegar en un cuadro de texto que la aplicación ha abierto en otra ventana.
|
||||
|
||||
Pega el código de verificación, y pulsa la tecla Intro.
|
||||
|
||||
Si todo ha salido bien, la aplicación empezará a reproducir un grupo de sonidos en señal que se están actualizando tus datos.
|
||||
|
||||
Cuando termine, el programa reproducirá otro sonido, y el lector de pantalla dirá "listo".
|
||||
|
||||
## La interfaz del programa {#interfaz}
|
||||
|
||||
La forma más simple de describir la interfaz gráfica de la aplicación es la de una ventana con una barra de menú con cinco menús (aplicación, tuit, usuario, buffer y ayuda); una lista de varios elementos y en la mayoría de los casos tres botones. Tuit, retuit y responder. Las acciones para cada uno de estos elementos serán descritas más adelante.
|
||||
|
||||
Los elementos que hay en las listas pueden ser Tuits, mensajes directos o usuarios. TW Blue crea diferentes pestañas para cada lista, pues estos elementos pueden ser Tuits enviados, Tuits recividos en la línea principal, favoritos, o mensajes directos, y cada pestaña tiene un solo tipo de Tuit. Estas pestañas se llaman listas o buffers.
|
||||
|
||||
Para cambiar entre las listas se hace presionando Control+Tab si se desea avanzar, y Control+Shift+Tab para retroceder. En todo momento los lectores de pantalla anunciarán la lista hacia la que se cambie el foco de la aplicación. Aquí están las listas básicas de TW Blue, que aparecen si se usa la configuración por defecto.
|
||||
|
||||
* Principal: Aquí van todos los Tuits que se muestran en la línea principal. Estos son los Tuits de los usuarios a los que sigues.
|
||||
* Menciones: Si un usuario (lo sigas o no) te menciona en Twitter, lo verás en esta lista.
|
||||
* Mensajes directos: Aquí están los mensajes directos (privados) que intercambias con los usuarios que sigues y te siguen. Esta lista solo muestra los mensajes recividos.
|
||||
* Enviados: En esta lista se muestran todos los Tuits y mensajes directos que se han enviado desde tu cuenta.
|
||||
* Favoritos: Aquí verás los Tuits que has marcado como favoritos.
|
||||
* Seguidores: Cuando los usuarios sigan tu cuenta, podrás verlos en esta lista, junto con un poco de información de la cuenta.
|
||||
* Amigos: Igual que la lista anterior, pero estos usuarios son a los que tú sigues.
|
||||
* Eventos: Un evento en TW Blue es "algo" que pase en Twitter. En la línea de eventos, podrás ver registrados los eventos más comunes (p. Ej. Te han comenzado a seguir, han marcado o removido un tweet tuyo de los favoritos, te has suscrito a una lista). Son como pequeñas notificaciones que envía Twitter y TW Blue organiza para que no te pierdas lo que ha pasado con tu cuenta.
|
||||
* Línea temporal de un usuario: Estas son listas que tú deberás crear. Es una lista que contiene únicamente los Tuits de un usuario. Se usan si algún día necesitas o quieres ver los Tuits que ha realizado solo una persona y no deseas buscar por todo tu timeline. Puedes crear tantas como usuarios necesites.
|
||||
* Lista: Una lista es parecida a una línea temporal, pero compuesta por los tweets de cada usuario que forme parte de ella. De momento las listas son una característica experimental de TW Blue. Si experimentas problemas con ellas, por favor escríbenos para contárnoslo.
|
||||
* Búsqueda: Un buffer de búsqueda contiene los resultados de una búsqueda hecha en TW Blue. Las búsquedas pueden ser por tuits, en cuyo caso buscas un término en los tuits relevantes de Twitter, o por usuarios, donde los resultados son nombres de usuario de Twitter.
|
||||
* Favoritos de un usuario: Es posible pedirle a TW Blue que te muestre los tuits que un usuario ha marcado como favoritos.
|
||||
|
||||
Nota: Únicamente para esta versión de TW Blue, los amigos y seguidores actualizarán hasta 400, o cerca a los 400. En la próxima versión proporcionaremos un método para ver los amigos y seguidores sin exponerse tanto a los errores causados por el uso de la API de Twitter, muy frecuente entre personas con más de 600 amigos o seguidores.
|
||||
|
||||
Ten en cuenta que por defecto la configuración solo permite obtener los 200 últimos Tuits para las listas principal, menciones, mensajes directos y líneas temporales. Esto puedes cambiarlo desde el diálogo de configuración. Para los enviados se obtendrán los últimos 200 Tuits y 200 mensajes directos. En versiones futuras se permitirá ajustar este parámetro.
|
||||
|
||||
Si hay una dirección URL en algún tuit, TW Blue intentará abrirla cuando presiones Intro sobre ella. Si hay más de una, te mostrará una lista con todas para que selecciones la que quieras abrir. Si estás en el cuadro de diálogo de los amigos o seguidores, la tecla intro te mostrará detalles del mismo.
|
||||
|
||||
Si pulsas Control+Intro, TW Blue intentará reproducir el audio que tenga el tuit sobre el que está el foco del sistema, siempre que tenga una URL. Si el tuit lleva la etiqueta #audio, un sonido al pasar por él te alertará que es un audio y puedes intentar reproducirlo. No obstante, también puede que no esté etiquetado y que TW Blue pueda reproducirlo, siempre que lleve a una dirección URL donde exista audio.
|
||||
|
||||
## Controles {#controles}
|
||||
|
||||
A partir de la versión 0.36, existe soporte para una interfaz que no requiere de una ventana visible. Esta puede ser activada pulsando Control+m, o seleccionando desde el menú aplicación la opción "Esconder ventana". Esta interfaz se maneja completamente con atajos de teclado. Estos atajos son diferentes a los que se utilizan para la interfaz gráfica. Cada una de ellas podrá utilizar solo los atajos que le correspondan, lo que quiere decir que no se permitirá utilizar los atajos de la interfaz no visible si se tiene activada la interfaz gráfica. En esta sección se detallará tanto la interfaz gráfica como la no visible.
|
||||
|
||||
### Interfaz gráfica (GUI) {#gui}
|
||||
|
||||
Aquí una lista dividida en dos partes. Por un lado, los botones que encontrarás si presionas Tab o Shift+Tab en la interfaz del programa, y por otro, los diferentes elementos que hay en la barra de menú.
|
||||
|
||||
#### Botones de la aplicación {#botones}
|
||||
|
||||
* Twit: Este botón abre el diálogo para escribir un tuit. El mensaje solo debe tener 140 caracteres. Al escribir el caracter número 141, un sonido será reproducido para indicarte que te has pasado del límite permitido por Twitter. Puedes querer acortar o desacortar una URL si la incluye tu tuit a fin de ganar más espacio donde escribir, para eso están los botones con esos nombres. Pulsa Intro para enviar el tuit. Si todo sale bien, el mensaje se enviará y tú escucharás un sonido que te lo confirme, si no, el lector de pantalla te responderá con un error en inglés, que indica por qué no se ha podido enviar el mensaje.
|
||||
* Retuit: Este botón se encarga de reenviar el tuit sobre el que estás leyendo. Al presionarlo se te preguntará si deseas añadirle un comentario al tuit original (citándolo) o simplemente enviarlo como se ha escrito sin añadir nada más.
|
||||
* Responder: Cuando estés visualizando un Tuit, puedes responderle al usuario que lo escribió pulsando sobre este botón. Se abrirá el mismo diálogo de Tuit, pero con el nombre del usuario (por ejemplo @usuario) en el, para que solo escribas el mensaje que quieres responderle. Si en el tuit hay más de un usuario mencionado, pulsa Shift+Tab y pulsa el botón "Mencionar a todos los usuarios". Cuando estés en la lista de amigos o seguidores, este botón se llamará mencionar.
|
||||
* mensaje directo: Exactamente igual que enviar un Tuit, pero es un mensaje privado que solo podrá ver el usuario al que se lo envías. Pulsa Shift+Tab para ver el destinatario de tu mensaje. Si en el Tuit donde estabas para enviar el mensaje había más de un usuario mencionado, puedes navegar con las flechas de arriba y abajo para seleccionar otro, o escribir tú mismo el usuario (sin el signo de arroba).
|
||||
|
||||
Ten en cuenta que los botones aparecerán según las acciones que se puedan hacer en la lista donde estés. Por ejemplo, en la línea principal, menciones, enviados, favoritos y las líneas temporales de los usuarios podrás ver los cuatro botones; mientras que en la lista de mensajes directos solo estará disponible el botón de "Mensaje Directo" y "tuit", y en las listas de amigos y seguidores, se verá el botón para "Twit" y el de "Mensaje directo" junto a "mencionar".
|
||||
|
||||
#### Menús {#menus}
|
||||
|
||||
En la parte superior de la ventana del programa podrás encontrar una barra de menú que hace las mismas cosas, y algunas cuantas más. A la barra de menú se accede presionando la tecla ALT, y cuenta en este momento con cuatro menús para diferentes acciones: Aplicación, Tuit, usuario y Ayuda. En esta sección se describen las acciones para cada uno de ellos.
|
||||
|
||||
##### Menú aplicación {#app}
|
||||
|
||||
* Actualizar Perfil: Abre un diálogo desde donde se podrá actualizar parte de tu información en Twitter. Nombre, ubicación, dirección URL y descripción. Si ya tienes alguno de estos campos actualmente en el perfil se llenarán automáticamente con lo que tiene tu configuración de Twitter. También podrás subir una foto a tu perfil.
|
||||
* Esconder Ventana: Desactiva la interfaz gráfica. Lee el apartado sobre la interfaz no visible para más detalles sobre este comportamiento.
|
||||
* Búsqueda: Muestra un cuadro de diálogo desde donde puedes buscar por tuits o por usuarios en twitter.
|
||||
* Gestor de listas: Para poder utilizar las listas de Twitter, primero necesitarás crearlas. Este diálogo permite ver tus listas, editarlas, crearlas, borrarlas y, opcionalmente, verlas en buffers tal como lo harías con las líneas temporales.
|
||||
* Tutorial de sonidos: Abre un diálogo donde verás una lista de los sonidos de TW blue, para que puedas aprenderlos y no te cueste trabajo familiarizarte con TW Blue.
|
||||
* Preferencias: Abre un diálogo de configuración desde donde se pueden controlar algunos aspectos del programa. Las opciones no necesitan de explicación.
|
||||
* Salir: pregunta si quieres salir o no del programa. Si la respuesta es que sí, cierra la aplicación.
|
||||
|
||||
##### Menú Tuit {#tuit}
|
||||
|
||||
* Las primeras opciones del menú son Twit, responder y retuit, que corresponden a los botones del mismo nombre.
|
||||
* Marcar como favorito: Marca el tuit que estés viendo como favorito.
|
||||
* Quitar tuit de favoritos: Elimina el tuit de tus favoritos. Esto no significa que se borra de Twitter, solo deja de estar en tu lista de favoritos.
|
||||
* Ver Tuit: Abre un diálogo donde puedes ver el Tuit, mensaje directo, amigo o seguidor sobre el que esté el foco de la aplicación. Puedes leer el texto con los cursores. El diálogo es el mismo que el que se usa para escribir un Tuit.
|
||||
* Eliminar: Elimina el Tuit o mensaje directo sobre el que estés, borrándolo definitivamente de Twitter y qitándolo de tus listas. Ten en cuenta que en el caso de los Tuits, Twitter solo permite borrar los que tú mismo has escrito.
|
||||
|
||||
##### Menú usuario {#usuario}
|
||||
|
||||
Ten en cuenta que las primeras seis opciones de este menú abren un mismo diálogo. Este diálogo tiene un cuadro de edición donde puedes seleccionar el usuario sobre el que deseas actuar, bien con los cursores arriba y abajo o escribiendo tú mismo el nombre. Después, hay un grupo de botones de radio para seguir, dejar de seguir, silenciar, des-silenciar, reportar como Spam y bloquear. Si seleccionas desde el menú la opción seguir, el botón del cuadro de diálogo estará marcado con esa opción, así como sucederá respectivamente con dejar de seguir, reportar como Spam y bloquear. Pulsa el botón Aceptar para que el programa trate de hacer lo que le pides. Si no se ha podido, escucharás el error en inglés.
|
||||
|
||||
A continuación se describen las opciones restantes para este menú:
|
||||
|
||||
* Mensaje Directo: La misma acción que el botón.
|
||||
* Añadir a lista: Para que puedas ver los tweets de un usuario en tus listas, primero hay que añadirlo. Esta opción abrirá un diálogo desde donde puedes seleccionar al usuario que deseas añadir, para después abrir otra ventana donde puedes seleccionar la lista a la cual añadir a ese usuario. Una vez hecho esto, la lista contendrá un nuevo usuario y podrás ver sus tweets.
|
||||
* Ver Perfil del usuario: Abre un diálogo desde donde te permite seleccionar el usuario al que quieres ver el perfil.
|
||||
* Línea temporal: Abre un diálogo desde donde puedes seleccionar el usuario para el que se creará la línea temporal. Al presionar intro, se creará. Si se hace una línea temporal de un usuario que no tenga Tuits, el programa fallará. Si se crea una línea que ya existe el programa te avisará y no permitirá crearla de nuevo.
|
||||
* Ver favoritos: Abre un buffer para seguir los favoritos que marca el usuario seleccionado.
|
||||
|
||||
##### Menú Buffer {#buffer}
|
||||
|
||||
* Silenciar: Silencia completamente el buffer, con lo que no escucharás sonido alguno cuando nuevos elementos aparezcan.
|
||||
* Leer automáticamente tuits para este buffer: Esta opción activa o desactiva la lectura automática de tuits. Si está activada, el lector de pantalla o la voz Sapi5 (si está activada una) leerá automáticamente los nuevos tuits conforme estos vayan llegando al buffer.
|
||||
* Limpiar Buffer: Vacía los elementos de este buffer.
|
||||
* Eliminar buffer: Borra la lista sobre la que te encuentras actualmente.
|
||||
|
||||
##### Menú Ayuda {#ayuda}
|
||||
|
||||
* Documentación: Abre este archivo, donde puedes leer algunos conceptos interesantes del programa.
|
||||
* ¿Qué hay de nuevo en esta versión?: Abre un documento con la lista de cambios desde la versión actual, hasta la primera en existencia.
|
||||
* Buscar actualizaciones: Cada que se abre el programa él mismo busca automáticamente si hay una nueva versión. Si lo hay, te preguntará si quieres descargarla; si aceptas, TW Blue descargará la actualización, la instalará y te pedirá reiniciarla (algo que hace automáticamente). Esta opción comprueba si hay actualizaciones sin tener que reiniciar la aplicación.
|
||||
* Sitio web de TW Blue. Ve a nuestra [página principal](http://twblue.com.mx) donde podrás encontrar toda la información y descargas relativas a TW Blue, así como participar de la comunidad.
|
||||
* Reportar un error: Lanza un diálogo desde donde puedes reportar un error solo llenando un par de campos. El título y una pequeña descripción de lo que pasó. Al pulsar en "enviar" el error se reportará. Si no se ha podido el programa te mostrará un mensaje informándolo.
|
||||
* Sobre TW Blue: Muestra información de créditos del programa.
|
||||
|
||||
### Interfaz no visible {#interfaz_no_visible}
|
||||
|
||||
Si presionas Control+M, o si desde el menú aplicación seleccionas esconder ventana, estarás activando una interfaz a la que no se podrá acceder por la manera convencional, porque no se ve.
|
||||
|
||||
En la interfaz no visible todo lo que hagas será mediante atajos de teclado, incluso para recorrer las listas. Eventualmente se abrirán diálogos y estos sí serán visibles, pero la ventana principal de la aplicación no. Ve a la sección de atajos de teclado de la interfaz no visible para saber cuales puedes usar de momento.
|
||||
|
||||
### Atajos de teclado para la Interfaz Gráfica {#atajos}
|
||||
|
||||
Además de los botones y menús, la mayoría de las acciones pueden hacerse presionando una combinación de teclado. Aquí están las existentes en este momento:
|
||||
|
||||
* Intro: Abrir una dirección URL. Si hay más de una podrás ver una lista que te permitirá seleccionar la que quieras. Si estás en la lista de amigos o seguidores, mostrará detalles del seleccionado.
|
||||
* Control+Intro: Intenta reproducir un audio si en el Tuit hay una dirección URL.
|
||||
* F5: Baja un 5% el volumen de los sonidos. Esto afecta a los sonidos que reproduce el programa y al audio que puedas escuchar a través de él.
|
||||
* F6: Sube un 5% el volumen de los sonidos de la aplicación.
|
||||
* Control+N: Abre el diálogo para escribir un nuevo Tuit.
|
||||
* Control+M: Oculta la ventana.
|
||||
* Control+Q: Sale de la aplicación.
|
||||
* Control+R: Abre el diálogo para responder.
|
||||
* Control+Shift+R: Equivalente a la acción Retuit.
|
||||
* Control+D: Enviar mensaje directo.
|
||||
* Control+F: Marcar como favorito.
|
||||
* Control+Shift+F: Quitar de favoritos.
|
||||
* Control+Shift+V: Ver Tuit.
|
||||
* Control+S: Seguir a un usuario.
|
||||
* Control+Shift+S: Dejar de seguir a un usuario.
|
||||
* Control+K: Bloquear a un usuario.
|
||||
* Control+Shift+K: Reportar como Spam.
|
||||
* Control+I: Abrir línea temporal a un usuario.
|
||||
* Control+Shift+I: Eliminar línea temporal.
|
||||
* Control+p: Editar tu perfil.
|
||||
* Suprimir: Eliminar tuit o mensaje directo.
|
||||
* Shift+suprimir: vacía el buffer, quitando todos los elementos hasta ese entonces. Esto ocurre sin borrar nada de Twitter.
|
||||
|
||||
### Atajos de teclado para la Interfaz no Visible {#atajos_invisibles}
|
||||
|
||||
Estos son los atajos de teclado que puedes usar desde la interfaz no visible. Ten en cuenta que cuando la vista de la interfaz gráfica esté activada ninguno de ellos podrá usarse. Al decir "windows", nos estamos refiriendo a la tecla de Windows izquierda.
|
||||
|
||||
* Control+Windows+Flecha Arriba: Va arriba en la lista actual.
|
||||
* Control+Windows+Flecha abajo: Va hacia abajo en la lista actual.
|
||||
* Control+Windows+Izquierda: Se desplaza a la pestaña de la izquierda.
|
||||
* Control+Windows+Derecha: Se desplaza hacia la pestaña de la derecha.
|
||||
* Control+Windows+Inicio: Ir al primer elemento de la lista.
|
||||
* Control+Windows+Fin: Ir al final de la lista.
|
||||
* Control+Windows+Avance de página: Ir 20 elementos hacia abajo en la lista actual.
|
||||
* Control+Windows+Retroceso de página: ir 20 elementos hacia arriba en la lista actual.
|
||||
* Control+Windows+Alt+Flecha Arriba: Subir volumen un 5%.
|
||||
* Control+Windows+Alt+Flecha Abajo: Bajar volumen un 5%.
|
||||
* Control+Windows+Intro: Abrir URL en el tuit, o ver detalles del usuario si estás en la lista de amigos o seguidores.
|
||||
* Control+Windows+Alt+Intro: Intentar reproducir un audio.
|
||||
* Control+Windows+M: Muestra la interfaz gráfica, desactivando la no visible.
|
||||
* Control+Windows+N: Hacer un nuevo Tuit.
|
||||
* Control+Windows+R: Responder a un tuit.
|
||||
* Control+Windows+Shift+R: Hacer un retuit.
|
||||
* Control+Windows+D: Enviar un mensaje directo.
|
||||
* Control+Windows+Suprimir: Eliminar un tuit o mensaje directo.
|
||||
* control+win+Shift+suprimir: vacía el buffer, quitando todos los elementos hasta ese entonces. Esto ocurre sin borrar nada de Twitter.
|
||||
* Windows+Alt+F: Marcar como favorito.
|
||||
* Windows+Alt+Shift+F: Quitar de favoritos.
|
||||
* Control+Windows+S: Seguir a un usuario.
|
||||
* Control+Windows+Shift+S: Dejar de seguir a alguien.
|
||||
* Control+Windows+Alt+N: Ver detalles de un usuario,
|
||||
* Control+Windows+V: Ver tuit en un cuadro de texto.
|
||||
* Control+Windows+I: Abrir línea temporal.
|
||||
* Control+Windows+Shift+I: Eliminar línea temporal de un usuario.
|
||||
* Alt+Windows+P: Editar tu perfil.
|
||||
* Control+win+espacio: ver tweet actual.
|
||||
* Control+win+c: Copiar tweet al portapapeles.
|
||||
* Control+windows+a: Añadir a un usuario a la lista.
|
||||
* Control+shift+windows+a: qitar de la lista.
|
||||
* Control+Windows+Shift+Flecha arriba: Ir un tuit hacia arriba en la conversación.
|
||||
* Control+Windows+Flecha Abajo: Ir un tuit hacia abajo en la conversación.
|
||||
* Control+Windows+Shift+M: Activar o desactivar el sonido para el buffer actual.
|
||||
* Windows+Alt+M: Activar o desactivar el silencio global de TW Blue.
|
||||
* Control+Windows+E: Activar o desactivar la lectura automática de los tuits en el buffer actual.
|
||||
* Control+windows+Guion: buscar en Twitter.
|
||||
* Control+Windows+F4: Cerrar el programa.
|
||||
|
||||
## Listas {#listas}
|
||||
|
||||
Una de las características más interesantes de Twitter son las listas, ya que son una manera de mantenerse actualizado sin tener que leer los tweets de todos los usuarios a los que sigues. Con una lista de Twitter solo verás los tweets de sus miembros (la gente que está dentro de la lista). Es parecido a una línea temporal, pero para muchos más usuarios.
|
||||
|
||||
En TW blue hemos empezado a dar soporte para esta característica. De momento vamos poco a poco, pero ya es posible usar esta función. Te presentamos los pasos que hay que dar para poder tener una lista abierta en TW Blue.
|
||||
|
||||
* Primero necesitarás ir al gestor de listas, ubicado bajo el menú aplicación.
|
||||
* en el gestor de listas podrás ver todas las listas a las que estás unido, empezando por las que tú has creado. Si no ves ninguna lista en este diálogo, significa que no has creado ni te has unido a ninguna lista. Está bien.
|
||||
* Verás un grupo de botones que se explican por sí solos: Crear nueva lista, editar, eliminar, abrir en buffer (este quizá es el menos claro, se refiere a abrir un nuevo buffer para que TW Blue actualice los tweets de la lista, como cuando pasa con las líneas temporales).
|
||||
|
||||
Una vez que hayas creado una nueva lista, no deberías abrirla en buffer. Al menos no de inmediato, porque en este momento no tiene miembro alguno y eso significa que cuando se carguen los tweets para empezar a actualizarla no verás nada. Es recomendable primero añadir a gente a la lista, tal como sigue:
|
||||
|
||||
* Cuando hayas cerrado el gestor de listas y estés navegando por entre los tweets de los usuarios, busca el usuario al que quieres añadir a la lista.
|
||||
* Una vez encontrado, presiona el atajo Ctrl+Win+A o ve al menú usuario y selecciona la opción "Añadir a lista".
|
||||
* Lo siguiente que verás es un diálogo que te permitirá seleccionar el usuario, asegúrate que el que está como predeterminado es el que deseas, o cámbialo si es necesario, y presiona Aceptar.
|
||||
* Ahora verás otro diálogo, pero aquí están todas tus listas. Selecciona una (simplemente lleva el cursor hacia ella), y presiona el botón añadir.
|
||||
* Para qitar a un usuario de una lista repite el mismo proceso, pero presiona Control+Win+Shift+A o selecciona la opción "Quitar de lista", y en el diálogo de las listas presiona sobre el botón "remover".
|
||||
|
||||
## Reportando Errores Desde la Web {#reportar}
|
||||
|
||||
Nota: Si estás usando el programa también puedes reportar un error desde el mismo, usando para ello la opción del menú ayuda. Este proceso solo te pide llenar dos cuadros de edición, y se encarga del resto. Estos pasos están escritos para quienes no pueden abrir el programa, no lo tienen en uso en este momento o sencillamente quieran reportar desde la web en lugar del sistema integrado de reporte de errores.
|
||||
|
||||
Las cosas en este mundo (sí, incluidos los programas informáticos) están muy lejos de ser perfectas, con lo que a menudo te encontrarás con errores no previstos en la aplicación. Pero como la intención es siempre mejorar, eres libre (es más, sería genial que lo hicieras) de reportar los errores que vayas encontrando del programa para que se puedan revisar y eventualmente corregir.
|
||||
|
||||
Para entrar a la web de reporte de incidencias, sigue [Este enlace.](http://twblue.com.mx/errores/bug_report_page.php) Es una web con un formulario donde tienes que llenar varios campos. Solo tres de ellos son realmente obligatorios (los que tienen marcado un asterisco), pero entre más campos puedas llenar, será mejor.
|
||||
|
||||
Aquí están los diferentes campos del formulario y lo que deberías introducir en cada uno de ellos. Recuerda que son obligatorios solamente los campos marcados con un asterisco (*):
|
||||
|
||||
* Categoría: Este cuadro combinado permite seleccionar a qué categoría asignar el error. Puede ser a la categoría General, si es un error del programa, o a documentación, si has encontrado un error en este archivo o en la lista de cambios. Este campo es obligatorio.
|
||||
* Reproducibilidad: Aquí deberías indicar qué tan fácil o no es de reproducir el error. Las opciones disponibles son Desconocido, No reproducible, No se ha intentado (por defecto), aleatorio, a veces o siempre. Dependiendo de si se puede reproducir el error o no, deberías indicar lo que se parezca más a tu caso. Si estás solicitando una nueva funcionalidad, no importa este cuadro combinado.
|
||||
* Severidad: Aquí se selecciona que tanto afecta esto al programa. Las opciones disponibles son funcionalidad (selecciona esto para solicitar una nueva funcionalidad), Trivial, Texto, Ajuste, Menor, Mayor, fallo o bloqueo. Nota que las opciones aumentan de nivel. Selecciona lo que más creas. Si no estás seguro de que seleccionar puedes dejarlo como está.
|
||||
* Prioridad: En este cuadro se selecciona la opción de acuerdo con la importancia del error o funcionalidad solicitada. Las opciones disponibles son Ninguna, baja, normal, alta, hurgente e inmediata.
|
||||
* Seleccionar Perfil: Aquí puedes escojer entre la configuración de arquitectura (32 o 64 bits), y el sistema operativo (Windows siete de momento). Si no, puedes llenar los tres cuadros de edición que están en la siguiente tabla con tus datos en específico.
|
||||
* Versión del producto: Selecciona la versión del programa que estás utilizando para poder averiguar donde se ha generado el error. Este cuadro combinado tendrá la lista de las versiones en orden. Si bien no es obligatorio, ayudaría mucho a resolver más rápidamente el error.
|
||||
* Resumen: Un título para el error, que explique en pocas palabras qué ocurre. Es un cuadro de texto obligatorio.
|
||||
* Descripción: Este campo también obligatorio, te pide que describas con más detalles qué fue lo que ha ocurrido con el programa.
|
||||
* Pasos para reproducir: Este campo de texto te sirve si sabes como hacer que la aplicación genere el error. Esto no es obligatorio, pero ayudaría mucho conocer como hacer que el programa tenga este error para rastrearlo mejor.
|
||||
* Información adicional: Si tienes un comentario o nota que añadir, aquí puede ir. No es obligatorio.
|
||||
* Subir archivo: Puedes subir aquí el archivo TW Blue.exe.log que se creó con el error que el programa tuvo. No es obligatorio.
|
||||
* Visibilidad: Selecciona si quieres que el error sea público o privado. Por defecto es público, y es recomendable que así continúe.
|
||||
* Enviar reporte. Presiona aquí para publicar el error y que este sea atendido.
|
||||
|
||||
Muchas gracias por participar reportando errores y probando las funciones nuevas.
|
||||
|
||||
## Contacto {#contacto}
|
||||
|
||||
Si lo que se expone en este documento no es suficiente, si deseas colaborar de alguna otra forma o si simplemente deseas mantenerte en contacto con quien hace esta aplicación, sigue a la cuenta [@tw_blue2](https://twitter.com/tw_blue2) o a [@manuelcortez00.](https://twitter.com/manuelcortez00) También puedes visitar nuestro [Sitio web](http://twblue.com.mx)
|
||||
|
||||
---
|
||||
Copyright © 2013-2014. Manuel Cortéz.
|
BIN
doc/locales/ro/LC_MESSAGES/twblue-changelog.mo
Normal file
BIN
doc/locales/ro/LC_MESSAGES/twblue-changelog.mo
Normal file
Binary file not shown.
1337
doc/locales/ro/LC_MESSAGES/twblue-changelog.po
Normal file
1337
doc/locales/ro/LC_MESSAGES/twblue-changelog.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
BIN
doc/locales/ru/lc_messages/twblue-changelog.mo
Normal file
BIN
doc/locales/ru/lc_messages/twblue-changelog.mo
Normal file
Binary file not shown.
1334
doc/locales/ru/lc_messages/twblue-changelog.po
Normal file
1334
doc/locales/ru/lc_messages/twblue-changelog.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
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.84
|
||||
Documentation for TWBlue - 0.88
|
||||
|
||||
## Table of contents
|
||||
|
||||
@@ -15,7 +15,7 @@ If you want to see what has changed from the previous version, [read the list of
|
||||
TWBlue is an application to make Twitter simple and fast, while using as few resources as possible. With TWBlue, you can do things like the following:
|
||||
|
||||
* Tweet, reply to, retweet and delete tweets,
|
||||
* Mark and unmark a tweet as favourite,
|
||||
* Like and unlike a tweet,
|
||||
* Send and delete direct messages,
|
||||
* See your friends and followers,
|
||||
* Follow, unfollow, report and block a user,
|
||||
@@ -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.
|
||||
|
||||
@@ -65,14 +65,14 @@ The following is a description for every one of TWBlue's buffers and the kind of
|
||||
* Direct messages: here you will find the private direct messages you exchange with users who follow you , or with any user, if you allow direct messages from everyone (this setting is configurable from Twitter). This list only shows received messages.
|
||||
* Sent direct messages: this buffer shows all the direct messages sent from your account.
|
||||
* Sent tweets: this shows all the tweets sent from your account.
|
||||
* Favourites: here you will see all the tweets you have favourited.
|
||||
* Likes: here you will see all the tweets you have liked.
|
||||
* 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 favourites 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.
|
||||
* 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 favourites: You can have the program create a buffer containing tweets favourited by a particular user.
|
||||
* User likes: You can have the program create a buffer containing tweets liked by a particular 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.
|
||||
@@ -87,7 +87,7 @@ These fields accept a Twitter username (without the at sign) as the input. They
|
||||
|
||||
The graphical user interface of TWBlue consists of a window containing:
|
||||
|
||||
* a menu bar accomodating five menus (application, tweet, user, buffer and help);
|
||||
* a menu bar accomodating six menus (application, tweet, user, buffer, audio and help);
|
||||
* One tree view,
|
||||
* One list of items
|
||||
* Four buttons in most dialogs: Tweet, retweet , reply and direct message.
|
||||
@@ -98,16 +98,16 @@ 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. The message must not exceed 140 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 + A 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, and if the original tweet plus the comment exceeds 140 characters, you will be asked if you want to post it as a comment with a mention to the original user and 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, but with the name of the user already filled in (for example @user) so you only need to write your message. If there are more users referred to in the tweet, you can press shift-tab and activate the mention all users button. 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 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.
|
||||
* 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 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.
|
||||
* 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.
|
||||
* 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, favourites 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.
|
||||
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.
|
||||
|
||||
#### Menus
|
||||
|
||||
Visually, Towards the top of the main application window, can be found a menu bar which contains many of the same functions as listed in the previous section, together with some additional items. To access the menu bar, press the alt key. You will find five menus listed: application, tweet, user, buffer and help. This section describes the items on each one of them.
|
||||
Visually, Towards the top of the main application window, can be found a menu bar which contains many of the same functions as listed in the previous section, together with some additional items. To access the menu bar, press the alt key. You will find six menus listed: application, tweet, user, buffer, audio and help. This section describes the items on each one of them.
|
||||
|
||||
##### Application menu
|
||||
|
||||
@@ -124,11 +124,12 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
##### Tweet menu
|
||||
|
||||
* You will first find the items to tweet, reply and retweet, which are equivalent to the buttons with the same name.
|
||||
* Add to favourites: marks the tweet you're viewing as a favourite.
|
||||
* Remove from favourites: removes the tweet from your favourites, but not from Twitter.
|
||||
* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower which has focus. You can read the text with the arrow keys. It's a similar dialog box as used for composing tweets, without the ability to send the tweet, file attachment and autocompleting capabilities. It does however include a retweets and favourites count. If you are in the followers or the friends list, it will only contain a read-only edit box with the information in the focused item and a close button.
|
||||
* Like: Adds the tweet you're viewing to your likes list.
|
||||
* Unlike: removes the tweet from your likes, but not from Twitter.
|
||||
* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower which has focus. You can read the text with the arrow keys. It's a similar dialog box as used for composing tweets, without the ability to send the tweet, file attachment and autocompleting capabilities. It does however include a retweets and likes count. If you are in the followers or the friends list, it will only contain a read-only edit box with the information in the focused item and a close button.
|
||||
* View address: If the selected tweet has geographical information, TWBlue may display a dialogue box where you can read the tweet address. This address is retrieved by sending the geographical coordinates of the tweet to Google maps.
|
||||
* View conversation: If you are focusing a tweet with a mention, it opens a buffer where you can view the whole conversation.
|
||||
* Read text in pictures: Attempt to apply OCR technology to the image attached to the tweet. The result will be displayed in another dialog.
|
||||
* Delete: permanently removes the tweet or direct message which has focus from Twitter and from your lists. Bear in mind that Twitter only allows you to delete tweets you have posted yourself.
|
||||
|
||||
##### User menu
|
||||
@@ -148,7 +149,7 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
* Remove from list: lets you remove a user from a list.
|
||||
* View lists: Shows the lists created by a specified user.
|
||||
* Show user profile: opens a dialogue with the profile of the specified user.
|
||||
* View favourites: Opens a buffer where you can see the tweets which have been favourited by a particular user.
|
||||
* View likes: Opens a buffer where you can see the tweets which have been liked by a particular user.
|
||||
|
||||
##### Buffer menu
|
||||
|
||||
@@ -159,13 +160,18 @@ Visually, Towards the top of the main application window, can be found a menu ba
|
||||
* Clear buffer: Deletes all items from the buffer.
|
||||
* Destroy: dismisses the list you're on.
|
||||
|
||||
##### Audio menu
|
||||
|
||||
* Play/pause: try to play audio for the selected item (if available), or stop the currently played audio.
|
||||
* Seek back 5 seconds: If an audio is being played, seek 5 seconds back in the playback. This will work only in audio files. This feature cannot be used in radio stations or other streamed files.
|
||||
* Seek forward 5 seconds: If an audio is being played, seek 5 seconds forward in the playback. This feature cannot be used in radio stations or other streamed files.
|
||||
|
||||
##### Help menu
|
||||
|
||||
* Documentation: opens up this file, where you can read some useful program concepts.
|
||||
* Sounds tutorial: Opens a dialog box where you can familiarize yourself with the different sounds of the program.
|
||||
* 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.
|
||||
* Report an error: opens up a dialogue box to report a bug by completing a small number of fields. Pressing enter will send the report. If the operation doesn't succeed the program will display a warning.
|
||||
* 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.
|
||||
* About TWBlue: shows the credits of the program.
|
||||
|
||||
@@ -186,8 +192,8 @@ The next section contains a list of keyboard shortcuts for both interfaces. Bear
|
||||
* Control + R: Reply / mention.
|
||||
* Control + Shift + R: Retweet.
|
||||
* Control + D: Send a direct message.
|
||||
* control + F: Add tweet to favourites.
|
||||
* Control + Shift + F: Remove a tweet from favourites.
|
||||
* control + F: Add tweet to likes.
|
||||
* Control + Shift + F: Remove a tweet from likes.
|
||||
* Control + S: Open the user actions dialogue.
|
||||
* Control + Shift + V: Show tweet.
|
||||
* Control + Q: Quit this program.
|
||||
@@ -201,6 +207,8 @@ The next section contains a list of keyboard shortcuts for both interfaces. Bear
|
||||
|
||||
### Shortcuts of the invisible interface (default keymap)
|
||||
|
||||
The invisible interface of TWBlue can be customised by using a keymap. Every keymap defines a set of keystrokes to be used along with the invisible interface. You can change the keymap in the global settings dialogue, under the application menu in the menu bar, and check or edit keystrokes for the selected keymap in the keystroke editor, also available in the application menu.
|
||||
|
||||
* Control + Windows + Up Arrow: moves to the previous item in the buffer.
|
||||
* Control + Windows + Down Arrow: moves to the next item in the buffer.
|
||||
* Control + Windows + Left Arrow: Move to the previous buffer.
|
||||
@@ -247,6 +255,7 @@ The next section contains a list of keyboard shortcuts for both interfaces. Bear
|
||||
* Control + Windows + Shift + G: Display the tweet's geolocation in a dialogue.
|
||||
* Control + Windows + T: Create a trending topics' buffer.
|
||||
* Control + Windows + {: Find a string in the current buffer.
|
||||
* Alt + Windows + O: Extracts text from the picture and display the result in a dialog.
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -266,7 +275,7 @@ As described above, this application has two configuration dialogues, the global
|
||||
|
||||
#### buffers tab
|
||||
|
||||
This tab displays a list for each buffer you have available in TWBlue, except for searches, timelines, favourites' timelines and lists. You can show, hide and move them.
|
||||
This tab displays a list for each buffer you have available in TWBlue, except for searches, timelines, likes' timelines and lists. You can show, hide and move them.
|
||||
|
||||
#### The ignored clients tab
|
||||
|
||||
@@ -297,7 +306,7 @@ This dialogue allows you to configure some settings which will affect the entire
|
||||
|
||||
#### Proxi tab
|
||||
|
||||
In this tab you can configure TWBlue to use a Proxy server by completing the fields displayed (server, port, user and password).
|
||||
In this tab you can configure TWBlue to use a Proxy server by completing the fields displayed (type, server, port, user and password).
|
||||
|
||||
## License, source code and donations
|
||||
|
||||
@@ -305,40 +314,40 @@ Tw Blue is free software, licensed under the GNU GPL license, either version 2 o
|
||||
|
||||
The source code of the program is available on GitHub at <https://www.github.com/manuelcortez/twblue>.
|
||||
|
||||
If you want to donate to the project, you can do so at <http://twblue.es/?q=node/3&language=en>. Thank you for your support!
|
||||
If you want to donate to the project, you can do so at <https://twblue.es/donate>. Thank you for your support!
|
||||
|
||||
## Contact
|
||||
|
||||
If you still have questions after reading this document, if you wish to collaborate to the project in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw\_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](http://twblue.es)
|
||||
If you still have questions after reading this document, if you wish to collaborate to the project in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw\_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](https://twblue.es)
|
||||
|
||||
## Credits
|
||||
|
||||
TWBlue is developed and mantained by [Manuel Cortéz](https://twitter.com/manuelcortez00) and [José Manuel Delicado](https://twitter.com/jmdaweb). It's supported and sponsored by [Technow S. L.](https://twitter.com/technow)
|
||||
TWBlue is developed and maintained by [Manuel Cortéz](https://twitter.com/manuelcortez00) and [José Manuel Delicado](https://twitter.com/jmdaweb).
|
||||
|
||||
We would also like to thank the translators of TWBlue, who have allowed the spreading of the application.
|
||||
|
||||
* English: [Manuel Cortéz](https://twitter.com/manuelcortez00).
|
||||
* Arabic: [Mohammed Al Shara](https://twitter.com/mohammed0204).
|
||||
* Catalan: [Francisco Torres](https://twitter.com/ftgalleg)
|
||||
* Spanish: [Manuel Cortéz](https://twitter.com/manuelcortez00).
|
||||
* Arabic: [Mohammed Al Shara,](https://twitter.com/mohammed0204) [Hatoun Felemban](https://twitter.com/HatounFelemban)
|
||||
* Basque: [Sukil Etxenike](https://twitter.com/sukil2011).
|
||||
* Catalan: [Francisco Torres](https://twitter.com/ftgalleg)
|
||||
* Croatian: [Zvonimir Stanečić](https://twitter.com/zvonimirek222).
|
||||
* English: [Manuel Cortéz](https://twitter.com/manuelcortez00).
|
||||
* Finnish: [Jani Kinnunen](https://twitter.com/jani_kinnunen).
|
||||
* French: [Rémi Ruiz](https://twitter.com/blindhelp38).
|
||||
* French: [Rémy Ruiz](https://twitter.com/blindhelp38).
|
||||
* Galician: [Juan Buño](https://twitter.com/Quetzatl_).
|
||||
* German: [Steffen Schultz](https://twitter.com/schulle4u).
|
||||
* Croatian: [Zvonimir Stanečić](https://twitter.com/zvonimirek222).
|
||||
* Hungarian: Robert Osztolykan.
|
||||
* Italian: [Christian Leo Mameli](https://twitter.com/llajta2012).
|
||||
* Japanese: [Riku](https://twitter.com/riku_sub001)
|
||||
* Japanese: [Riku](https://twitter.com/_riku02)
|
||||
* Polish: [Pawel Masarczyk.](https://twitter.com/Piciok)
|
||||
* Portuguese: Odenilton Júnior Santos.
|
||||
* Romanian: [Florian Ionașcu](https://twitter.com/7ro) and [Răzvan Ciule](https://twitter.com/pilgrim89)
|
||||
* Russian: [Наталья Хедлунд](https://twitter.com/Lifestar_n).
|
||||
* Portuguese: [Odenilton Júnior Santos.](https://twitter.com/romaleif)
|
||||
* Romanian: [Florian Ionașcu](https://twitter.com/florianionascu7) and [Nicușor Untilă](https://twitter.com/dj_storm2001)
|
||||
* Russian: [Наталья Хедлунд](https://twitter.com/Lifestar_n) and [Валерия Кузнецова](https://twitter.com/ValeriaK305).
|
||||
* Serbian: [Aleksandar Đurić](https://twitter.com/sokodtreshnje)
|
||||
* Spanish: [Manuel Cortéz](https://twitter.com/manuelcortez00).
|
||||
* Turkish: [Burak Yüksek](https://twitter.com/burakyuksek).
|
||||
|
||||
Many thanks also to the people who worked on the documentation. Initially, [Manuel Cortez](https://twitter.com/manuelcortez00) did the documentation in Spanish, and translated to English by [Bryner Villalobos](https://twitter.com/Bry_StarkCR), [Robert Spangler](https://twitter.com/glasscity1837), [Sussan Rey](https://twitter.com/sussanrey17), [Anibal Hernandez](https://twitter.com/anibalmetal), and [Holly Scott-Gardner](https://twitter.com/holly1994). It was updated by [Sukil Etxenike](https://twitter.com/sukil2011), with some valuable corrections by [Brian Hartgen](https://twitter.com/brianhartgen) and [Bill Dengler](https://twitter.com/codeofdusk).
|
||||
Many thanks also to the people who worked on the documentation. Initially, [Manuel Cortez](https://twitter.com/manuelcortez00) did the documentation in Spanish, and translated to English by [Bryner Villalobos](https://twitter.com/Bry_StarkCR), [Robert Spangler](https://twitter.com/glasscity1837), [Sussan Rey](https://twitter.com/sussanrey17), [Anibal Hernandez](https://twitter.com/AnimalMetal), and [Holly Scott-Gardner](https://twitter.com/CatchTheseWords). It was updated by [Sukil Etxenike](https://twitter.com/sukil2011), with some valuable corrections by [Brian Hartgen](https://twitter.com/brianhartgen) and [Bill Dengler](https://twitter.com/codeofdusk).
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright © 2013-2016. Manuel Cortéz
|
||||
Copyright © 2013-2017. 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
|
@@ -1,6 +1,6 @@
|
||||
[Format]
|
||||
Type=PortableApps.comFormat
|
||||
Version=3.4
|
||||
Version=3.5
|
||||
|
||||
[Details]
|
||||
Name=tw blue portable
|
||||
@@ -20,8 +20,8 @@ CommercialUse=true
|
||||
EULAVersion=2
|
||||
|
||||
[Version]
|
||||
PackageVersion=0.87.0.0
|
||||
DisplayVersion=0.87
|
||||
PackageVersion=0.95.0.0
|
||||
DisplayVersion=0.95
|
||||
|
||||
[Control]
|
||||
Icons=1
|
||||
|
54
requirements.txt
Normal file
54
requirements.txt
Normal file
@@ -0,0 +1,54 @@
|
||||
wxpython
|
||||
wheel
|
||||
six
|
||||
configobj
|
||||
markdown
|
||||
future
|
||||
requests
|
||||
oauthlib
|
||||
requests-oauthlib
|
||||
requests-toolbelt
|
||||
pypubsub
|
||||
geopy
|
||||
arrow
|
||||
python-dateutil
|
||||
futures
|
||||
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
|
||||
pyenchant
|
||||
sqlitedict
|
||||
cx-Logging
|
||||
h11
|
||||
h2
|
||||
hpack
|
||||
hstspreload
|
||||
httpcore
|
||||
httpx
|
||||
hyperframe
|
||||
rfc3986
|
||||
sniffio
|
||||
attrs
|
||||
importlib-metadata
|
||||
numpy
|
||||
pillow
|
||||
charset-normalizer
|
||||
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()
|
@@ -1,7 +1,9 @@
|
||||
!include "MUI2.nsh"
|
||||
!include "LogicLib.nsh"
|
||||
!include "x64.nsh"
|
||||
Unicode true
|
||||
CRCCheck on
|
||||
ManifestSupportedOS all
|
||||
XPStyle on
|
||||
Name "TWBlue"
|
||||
OutFile "TWBlue_setup.exe"
|
||||
@@ -12,10 +14,11 @@ SetCompress auto
|
||||
SetCompressor /solid lzma
|
||||
SetDatablockOptimize on
|
||||
VIAddVersionKey ProductName "TWBlue"
|
||||
VIAddVersionKey LegalCopyright "Copyright 2016 Manuel Cortéz."
|
||||
VIAddVersionKey ProductVersion "0.87"
|
||||
VIAddVersionKey FileVersion "0.87"
|
||||
VIProductVersion "0.87.0.0"
|
||||
VIAddVersionKey LegalCopyright "Copyright 2014-2021 Manuel Cortéz."
|
||||
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"
|
||||
@@ -24,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"
|
||||
@@ -69,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.87"
|
||||
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" 87
|
||||
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,18 +9,22 @@ 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)
|
||||
buffer_order = list(default=list('home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events'))
|
||||
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'))
|
||||
|
||||
[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)
|
||||
sndup_api_key = string(default="")
|
||||
|
||||
[other_buffers]
|
||||
@@ -38,5 +42,12 @@ autoread_buffers = list(default=list(mentions, direct_messages, events))
|
||||
spelling_language = string(default="")
|
||||
save_followers_in_autocompletion_db = boolean(default=False)
|
||||
save_friends_in_autocompletion_db = boolean(default=False)
|
||||
twishort_enabled = boolean(default=False)
|
||||
mention_all = boolean(default=True)
|
||||
ocr_language = string(default="")
|
||||
|
||||
[reporting]
|
||||
braille_reporting = boolean(default=True)
|
||||
speech_reporting = boolean(default=True)
|
||||
|
||||
[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
|
@@ -1,40 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
import accessible_output2
|
||||
from .base import Output, OutputError
|
||||
|
||||
class Auto(Output):
|
||||
|
||||
def __init__(self):
|
||||
output_classes = accessible_output2.get_output_classes()
|
||||
self.outputs = []
|
||||
for output in output_classes:
|
||||
try:
|
||||
self.outputs.append(output())
|
||||
except OutputError:
|
||||
pass
|
||||
|
||||
def get_first_available_output(self):
|
||||
for output in self.outputs:
|
||||
if output.is_active():
|
||||
return output
|
||||
return None
|
||||
|
||||
def speak(self, *args, **kwargs):
|
||||
output = self.get_first_available_output()
|
||||
if output:
|
||||
output.speak(*args, **kwargs)
|
||||
|
||||
def braille(self, *args, **kwargs):
|
||||
output = self.get_first_available_output()
|
||||
if output:
|
||||
output.braille(*args, **kwargs)
|
||||
|
||||
def output(self, *args, **kwargs):
|
||||
output = self.get_first_available_output()
|
||||
if output:
|
||||
output.speak(*args, **kwargs)
|
||||
|
||||
def is_system_output(self):
|
||||
output = self.get_first_available_output()
|
||||
if output:
|
||||
return output.is_system_output()
|
@@ -1,47 +0,0 @@
|
||||
from accessible_output2 import load_library
|
||||
import platform
|
||||
|
||||
class OutputError(Exception):
|
||||
pass
|
||||
|
||||
class Output(object):
|
||||
name = "Unnamed Output"
|
||||
lib32 = None
|
||||
lib64 = None
|
||||
argtypes = {}
|
||||
cdll = False
|
||||
priority = 100
|
||||
system_output = False
|
||||
|
||||
def __init__(self):
|
||||
self.is_32bit = platform.architecture()[0] == "32bit"
|
||||
if self.lib32 and self.is_32bit:
|
||||
self.lib = load_library(self.lib32, cdll=self.cdll)
|
||||
elif self.lib64:
|
||||
self.lib = load_library(self.lib64, cdll=self.cdll)
|
||||
else:
|
||||
self.lib = None
|
||||
if self.lib is not None:
|
||||
for func in self.argtypes:
|
||||
try:
|
||||
getattr(self.lib, func).argtypes = self.argtypes[func]
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
def output(self, text, **options):
|
||||
output = False
|
||||
if self.speak(text, **options):
|
||||
output = True
|
||||
if self.braille(text, **options):
|
||||
output = True
|
||||
if not output:
|
||||
raise RuntimeError("Output %r does not have any method defined to output" % self)
|
||||
|
||||
def is_system_output(self):
|
||||
return self.system_output
|
||||
|
||||
def speak(self, **optiont):
|
||||
return False
|
||||
|
||||
def braille(self, *args, **options):
|
||||
return False
|
@@ -1,33 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
import os
|
||||
import ctypes
|
||||
|
||||
from .base import Output
|
||||
|
||||
class Dolphin (Output):
|
||||
"""Supports dolphin products."""
|
||||
|
||||
name = 'Dolphin'
|
||||
lib32 = 'dolapi.dll'
|
||||
argtypes = {
|
||||
'DolAccess_Command': (ctypes.c_wchar_p, ctypes.c_int, ctypes.c_int),
|
||||
'DolAccess_Action': (ctypes.c_int,),
|
||||
}
|
||||
|
||||
def speak(self, text, interrupt=0):
|
||||
if interrupt:
|
||||
self.silence()
|
||||
#If we don't call this, the API won't let us speak.
|
||||
if self.is_active():
|
||||
self.lib.DolAccess_Command(text, (len(text)*2)+2, 1)
|
||||
|
||||
def silence(self):
|
||||
self.lib.DolAccess_Action(141)
|
||||
|
||||
def is_active(self):
|
||||
try:
|
||||
return self.lib.DolAccess_GetSystem() in (1, 4, 8)
|
||||
except:
|
||||
return False
|
||||
|
||||
output_class = Dolphin
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user