Compare commits

...

553 Commits

Author SHA1 Message Date
2f0515a449 prepared everything for new version 2022-02-23 15:19:49 -06:00
ac9efd7550 Merge pull request #458 from riku22/japanese_translation
Update Japanese translation
2022-02-15 17:48:59 -06:00
riku
540a99f02f Update Japanese translation 2022-02-16 08:03:27 +09:00
8e95843634 Updated to Tweepy V4.5.0 2022-02-15 15:59:35 -06:00
7c85ceced1 Merge pull request #456 from CoBC/fr_260122
Update french translations
2022-01-26 16:18:04 -06:00
Corentin Bacqué-Cazenave
3d452b3db8 Update french translations 2022-01-26 18:27:32 +01:00
950ece43d5 Merge pull request #455 from manuelcortez/handle_protected_account_interactions
Protected account retweet restrictions
2022-01-25 12:04:21 -06:00
ac0e7380b0 TWBlue should not allow users to retweet or quote any protected account. Closes #454 2022-01-25 12:01:03 -06:00
6e0a94355f Improvements to template substitutions. Closes #452 2022-01-25 10:42:39 -06:00
e43ddad678 Catch image description sent by Streaming API. Should be enough to fix #449 2022-01-25 01:27:52 -06:00
c048c3ff32 Retrieve usernames for timelines from the local database, as opposed to use the last API call as this might not contain items at times 2022-01-25 01:26:23 -06:00
301e3d4361 Display properly HTML Entities in tweets 2022-01-10 05:30:14 -06:00
7a78accd1f Fixed a typo 2022-01-10 05:06:31 -06:00
d7afa77c49 Changed params names to avoid confussions 2022-01-10 05:05:27 -06:00
a645e0b964 TWBlue should no longer load old items in buffer 2022-01-10 04:35:23 -06:00
e8287c75cc Merge branch 'change_author_information' into 'next-gen'
Change author information

See merge request twblue/twblue!2
2022-01-10 00:07:36 +00:00
6a839baed7 Change author information 2022-01-10 00:07:36 +00:00
José Manuel Delicado
c0ee1d2c29 Merge pull request #448 from riku22/japanese_translation
Update Japanese translation
2021-12-29 09:12:01 +01:00
riku
9e6740253c Update Japanese translation 2021-12-29 15:54:17 +09:00
c08eb499e1 Merge pull request #446 from CoBC/fr_271221
Some french fixes
2021-12-28 18:39:02 -06:00
Oreonan
5d0e1f38ab Some french fixes 2021-12-27 23:26:40 +01:00
1d60751dbd Merge pull request #445 from CoBC/fr_221221
Update french interface
2021-12-22 12:40:59 -06:00
Oreonan
b23915e546 Update french interface 2021-12-22 18:30:46 +01:00
c8da3bdfdb Fixed indentation error 2021-12-22 08:22:36 -06:00
ebf7916ae0 Merge pull request #444 from manuelcortez/error_saving_config
Fixed TWBlue asking for a restart due to old reference to the events …
2021-12-22 08:16:07 -06:00
33338ba09a Merge pull request #442 from manuelcortez/templates
Add Templates for invisible interface
2021-12-22 08:15:45 -06:00
8b50f3138c Merge pull request #359 from guredora403/configration_invalid
add: configration invalid error dialog
2021-12-22 08:15:20 -06:00
ae28c374d5 Merge pull request #440 from nidza07/Win11Keymap
Updated Windows 11 keymap
2021-12-22 08:14:44 -06:00
5a2786967b Merge branch 'next-gen' into configration_invalid 2021-12-21 15:58:30 -06:00
ed765117a5 Merge branch 'next-gen' into Win11Keymap 2021-12-21 15:45:06 -06:00
911e8d3cfd Fixed TWBlue asking for a restart due to old reference to the events buffer in settings. Fixes #413 2021-12-21 15:35:35 -06:00
b6ae9f4b79 Updated changelog 2021-12-21 15:10:12 -06:00
a74825a0f6 Add missing string to translation catalogs 2021-12-21 13:57:32 -06:00
445c33f003 Add default templates to translation catalog 2021-12-21 13:56:29 -06:00
81963dbb53 Updated sent direct messages template 2021-12-21 13:55:48 -06:00
b4526c12c9 Integrate template edition into account settings dialog 2021-12-21 13:21:58 -06:00
b2f9aef7f7 Added edit template controller 2021-12-21 12:11:12 -06:00
95063cd472 Added restore button for template edit dialog 2021-12-21 12:10:15 -06:00
4434a5b971 Added dialog for editing templates 2021-12-21 09:20:59 -06:00
2de9f8f9b3 added all variables available for template objects 2021-12-20 16:03:21 -06:00
a6ecd37547 Implement users template in Twitter buffers 2021-12-13 09:54:06 -06:00
03c330c0a4 Added default template for Twitter user objects 2021-12-13 09:53:44 -06:00
ab1a0946a4 Added rendering function for twitter user objects 2021-12-13 09:52:52 -06:00
1f253221b3 Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-12-10 17:27:15 -06:00
58ba722bd7 Added templates for direct messages and sent direct messages 2021-12-10 17:15:24 -06:00
416151570c Request image description features for all created buffers by default 2021-12-10 15:23:41 -06:00
af4594f16c Render tweets for invisible interface from template specified in config 2021-12-10 15:22:42 -06:00
a47fa31346 Use session to retrieve users in templates, when applied to reduced tweets 2021-12-10 15:04:05 -06:00
40e13250ca Added a base template for tweets 2021-12-10 13:36:08 -06:00
0bd366c539 Added first draft to a new templating system which could be used in invisible interface for now 2021-12-10 13:32:46 -06:00
b67fc0ff38 Made some cleanup in unneeded imports 2021-12-10 09:53:49 -06:00
86a2eb7c0d Restored conversation and threads support powered by Twitter API V2 2021-12-09 10:46:07 -06:00
78c10b38e5 Fixed issue when sending tweets and replies with images 2021-12-08 12:49:20 -06:00
Nikola Jovic
cfd4fd12d3 Updated Windows 11 keymap 2021-11-17 19:35:02 +01:00
José Manuel Delicado Alcolea
806111c36e Included more dependencies in the setup script 2021-11-15 13:04:18 +01:00
7bfbadc254 Update write_version_data 2021-11-12 15:01:54 -06:00
3ccb3a5be5 Updated Spanish locale 2021-11-12 13:33:54 -06:00
José Manuel Delicado Alcolea
f264f3807f Updated Windows dependencies 2021-11-12 09:08:50 +01:00
3902a57d6b Merge pull request #437 from riku22/japanese_translation
Update Japanese translation
2021-11-11 17:48:16 -06:00
riku
485e5ecbd1 Merge branch 'next-gen' into japanese_translation 2021-11-12 08:26:14 +09:00
riku
f7a50d22e2 Update Japanese translation 2021-11-12 08:23:24 +09:00
43b1a834d1 Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-11-11 15:14:38 -06:00
d6571a95cb Quote tweets properly according to Twitter's API V2 docs 2021-11-11 15:13:58 -06:00
4ba2753b79 Merge pull request #435 from nidza07/SerbianTranslation
Updated Serbian translation
2021-11-11 12:39:48 -06:00
6951541193 Merge pull request #434 from Oreonan/fr_111121
Update french interface
2021-11-11 12:39:27 -06:00
b329ac8e3e Improved a little bit text dialogs's size for sending tweets, replies and dm's 2021-11-11 12:33:38 -06:00
538d6137d0 Limit Poll options to 25 characters each 2021-11-11 08:37:07 -06:00
622b0e6128 Access correctly on_reply_to_tweet_id from the dict response returned by call to V2 API 2021-11-11 08:36:29 -06:00
Nikola Jovic
0e91ca3d4d Updated Serbian translation 2021-11-11 01:30:30 +01:00
Oreonan
8abcb3623d Update french interface 2021-11-11 01:09:19 +01:00
b3bf0ab8e6 Removed calls to SetMaxLength in dialogs 2021-11-10 17:35:24 -06:00
eea059b905 Merge pull request #433 from manuelcortez/new_tweet_dialogs
New tweet dialogs
2021-11-10 17:17:50 -06:00
e9f6fd529e Updated changelog 2021-11-10 16:32:39 -06:00
b0cfc5978c Updated reply dialog with some changes in add menu 2021-11-10 16:32:14 -06:00
77d13fdc28 Added support for posting polls 2021-11-10 15:14:57 -06:00
514e66411d Merge branch 'new_tweet_dialogs' of github.com:manuelcortez/twblue into new_tweet_dialogs 2021-11-10 12:36:02 -06:00
d9f4b86d91 Empty attachments after adding a new tweet 2021-11-10 12:35:43 -06:00
a6964a1bb9 Merge pull request #432 from Mohamed00/shortcut
Fixes
2021-11-10 12:30:08 -06:00
a43101e694 Reimplemented direct messages with support for media 2021-11-10 12:21:07 -06:00
Mohamed
9e7542f513 Removed url_shortener import 2021-11-10 13:01:24 -05:00
Mohamed
6346651edf Added a shortcut for the add new tweet button 2021-11-10 12:53:34 -05:00
1e2464c4fa Made Dm dialog to hide attachments panel when needed 2021-11-10 11:36:06 -06:00
dbecf341ec Stop using text_processor in tweet displayer 2021-11-10 11:24:50 -06:00
605868eff9 Added functions to make TWBlue respect Twitter limits when adding media items 2021-11-10 09:47:53 -06:00
8fed52118f Finished implementation of new tweet and reply calls in buffers 2021-11-09 13:46:36 -06:00
15d0f4c65e Restored some imports on dialogs 2021-11-09 13:34:49 -06:00
a2393fe3e9 Updated dialogs package 2021-11-08 17:20:16 -06:00
80adf381c9 Implemented new GUI in people and direct message buffers 2021-11-08 17:19:12 -06:00
269db95fe3 Implemented code to quote Tweets by using the new GUI 2021-11-08 16:44:03 -06:00
cfc25eb89a Implemented tweet, reply and direct message in base buffer 2021-11-08 16:14:45 -06:00
2b6efef831 Update code on autocompletion users module to use WX methods from controls in the new Tweet GUI'S 2021-11-08 16:13:59 -06:00
f0456af656 Fixed an issue when uploading Videos to Twitter 2021-11-08 16:12:47 -06:00
6d505c6fe7 Added new code for Tweet GUI and attachment of photos and gifts 2021-11-08 16:11:09 -06:00
38e3274adc Removed GUI for tweets/reply/dm/viewTweets items and attachment code 2021-11-08 16:09:32 -06:00
2c70fe46b7 Removed url_shortener from sound handling module 2021-11-08 15:30:40 -06:00
1c8ee1a64f Removed URL Shorteners 2021-11-08 15:29:23 -06:00
076761b9dd Merge branch 'next-gen' of gitlab.com:twblue/twblue into next-gen 2021-11-07 06:36:03 -06:00
556ffd832b Updated translation machine catalog for french translation 2021-11-07 06:34:27 -06:00
cedb290956 fixed an issue when deleting a buffer in a session where there were trending topics opened 2021-11-05 22:35:50 -06:00
66bf95ee62 Added reply function to session module 2021-11-05 13:10:45 -06:00
4f0db5537e Added function to send tweets and threads in session module so it will be used globally later 2021-11-05 11:49:51 -06:00
José Manuel Delicado
7c5c191deb Merge pull request #428 from riku22/japanese_translation
Update Japanese translation
2021-11-04 23:31:27 +01:00
riku
0cf0a64f40 Update Japanese translation 2021-11-05 07:15:33 +09:00
714d849884 Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-11-04 11:17:25 -06:00
a80184bf20 Restored conversation support with API V1 as V2 hits the limits quickly. Closes #427 2021-11-04 11:17:07 -06:00
José Manuel Delicado
46fb00e609 Merge pull request #426 from Oreonan/fr_031121
Update french interface
2021-11-04 17:09:50 +01:00
Oreonan
4ddb406c8d Reduce texts 2021-11-04 17:00:59 +01:00
924f5d8e9f Updated main controller file 2021-11-03 12:30:46 -06:00
13c441557b Updated manual 2021-11-03 12:30:06 -06:00
Oreonan
2c4ec7b1c0 Update french interface 2021-11-03 18:58:59 +01:00
c4b7c35c7f Updated changelog 2021-11-03 09:49:52 -06:00
2d46315de9 Removed old pyinstaller file 2021-11-03 09:31:23 -06:00
6904c153d4 Display error if user has not provided a name for a filter upon creation 2021-11-03 09:10:35 -06:00
8b06437cad Started to update documentation 2021-11-02 17:52:07 -06:00
c3261a4e2c Updated sintax for doc and changelog locales 2021-11-02 10:59:03 -06:00
9f7892ff03 Updated spanish translation for changelog 2021-11-02 10:11:24 -06:00
ab44ce6fcb Rebuilt documentation generators 2021-11-01 17:18:49 -06:00
ed80558273 Remove BOM from changelog 2021-11-01 17:04:03 -06:00
60a67947e6 Updated Pygettext to Python 3.7.9 2021-11-01 10:03:51 -06:00
8a8f1998ac Added usable appkeys for sources 2021-11-01 09:58:57 -06:00
cd415ba673 Merge pull request #422 from riku22/japanese_translation
Update Japanese translation
2021-11-01 05:48:03 -06:00
f9e58b5724 Updated Spanish Translation for app's interface 2021-11-01 05:46:44 -06:00
riku
94ca935b2f Updated Japanese translation 2021-11-01 20:37:39 +09:00
84fa2fad91 Fixed title for Trending topic buffers after a restart. Closes #421 2021-11-01 05:18:46 -06:00
ff0a2b5692 Retrieve all tweets from a thread properly. closes #417 2021-11-01 00:11:46 -06:00
b39b732a93 Updated Readme 2021-10-31 19:32:50 -06:00
b04a1c74a7 Fixed a bug when clearing direct messages buffer. Closes #418 2021-10-31 19:29:11 -06:00
ffb11b8226 Updated changelog 2021-10-31 19:27:59 -06:00
5a6dc23524 Write secrets from CI environment 2021-10-30 01:34:37 -05:00
0e2ff4de8a Use latest available python version on package manager 2021-10-29 22:46:12 -05:00
36340d0596 Moved to python 3.7.10 to test if build passes properly 2021-10-29 22:38:44 -05:00
92ec178754 Merge branch 'next-gen' of gitlab.com:twblue/twblue into next-gen 2021-10-29 15:48:03 -05:00
5eb942981c Added some changes to setup file for the CI config 2021-10-29 10:58:30 -05:00
6739045cce Fixed manual addition of users to the autocomplete users database 2021-10-28 13:18:02 -05:00
307ed093af Merge pull request #414 from manuelcortez/improved_conversations
Improve conversation Support
2021-10-28 12:45:32 -05:00
d11fc44772 Read keys from environment 2021-10-28 12:44:50 -05:00
a3e5eec6de Merge branch 'next-gen' into improved_conversations 2021-10-28 12:39:55 -05:00
41a0935121 Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-10-28 12:39:09 -05:00
0b03e7505f Conversation support improved via V2 searches 2021-10-28 12:28:19 -05:00
José Manuel Delicado
81c364c4e1 Merge pull request #412 from Oreonan/fr_281021-2
Small french fixes
2021-10-28 18:45:44 +02:00
Oreonan
483b196203 Fix small error 2021-10-28 18:30:05 +02:00
Oreonan
b512c69447 Remove old translations 2021-10-28 18:28:34 +02:00
2c1608322e Merge pull request #410 from Oreonan/fr_281021
Update french interface
2021-10-28 10:14:49 -05:00
c6bb851bce Merge pull request #411 from nidza07/SerbianTranslation
Updated Serbian translation
2021-10-28 10:14:25 -05:00
Nikola Jovic
66581f8b1c Clarify a string better 2021-10-28 17:03:52 +02:00
Nikola Jovic
c6a3a44c21 Updated Serbian translation 2021-10-28 16:58:11 +02:00
bd25cfa59b Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-10-28 08:38:05 -05:00
Oreonan
39a02ea33a Update french interface 2021-10-28 12:33:52 +02:00
f672dca1cb Merge branch 'next-gen' of gitlab.com:twblue/twblue into next-gen 2021-10-27 21:47:37 -05:00
19c63b7b07 Merge branch 'next-gen' of github.com:manuelcortez/TWBlue into next-gen 2021-10-27 21:47:03 -05:00
e23a52e38f Changes in TWBlue keys 2021-10-27 15:29:15 -05:00
José Manuel Delicado Alcolea
d888563fda Updated Api keys 2021-10-27 22:00:58 +02:00
a5ba80feee Final touches 2021-10-26 16:18:53 -05:00
528ecc2a33 Updated NSI file 2021-10-26 16:16:03 -05:00
3519746078 Move installer Nsis file to a new name 2021-10-26 15:47:03 -05:00
ef79e0696e Move updated Nsis script to artifacts in build stage 2021-10-26 15:19:57 -05:00
b9ee0dae5b Fixed a typo in installer script 2021-10-26 14:48:58 -05:00
f31575a733 Merge pull request #408 from manuelcortez/calendar_versioning
Switch to Calendar versioning
2021-10-26 13:52:21 -05:00
e451bbd5e9 Merge pull request #407 from manuelcortez/alias_manager
Alias manager Dialog. Closes #401
2021-10-26 13:51:09 -05:00
f7f303929e Updated CI config 2021-10-26 13:41:22 -05:00
9f48784ce4 Added script to add next version in application.py and installer generation files 2021-10-26 13:39:50 -05:00
cb1312d0c9 Changed version in installer so it will be easier to replace it later by the authomatic script 2021-10-26 13:38:21 -05:00
a82efd4dcc Fixed a typo 2021-10-26 13:16:31 -05:00
72e6d030d5 Updater no longer will try to compare float numbers for updates 2021-10-26 13:10:57 -05:00
d222740887 Updated gitlab CI 2021-10-26 13:04:49 -05:00
2b059ee42e Modified Nsis scripts to remove references to old snapshots code 2021-10-26 13:02:24 -05:00
daac312658 Removes snapshot information from app info 2021-10-26 12:43:03 -05:00
b23be9c896 Started to remove stable and snapshot update information files 2021-10-26 12:40:57 -05:00
61b0dc34b8 Merge branch 'next-gen' into alias_manager 2021-10-26 10:48:43 -05:00
c5d13369eb Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-10-26 10:47:55 -05:00
856ecf5eb9 Merge branch 'next-gen' of github.com:manuelcortez/twblue into alias_manager 2021-10-26 10:46:30 -05:00
e3e0ac9457 Added an alias manager dialog in the application menu 2021-10-26 10:45:11 -05:00
fccf02794c Merge branch 'next-gen' of gitlab.com:twblue/twblue into next-gen 2021-10-23 19:16:33 -05:00
34c1f69ec1 Merge pull request #404 from nidza07/SerbianTranslation
Updated Serbian translation
2021-10-22 12:57:58 -05:00
7326ff88f9 Merge pull request #405 from Oreonan/fr_211021
Update french interface
2021-10-22 12:56:55 -05:00
Oreonan
a8d876a7b7 Fix last-translator e-mail 2021-10-21 17:02:03 +02:00
Oreonan
89fa6435b4 Update french interface 2021-10-21 16:58:32 +02:00
Nikola Jovic
d1bd393be2 Updated Serbian translation 2021-10-21 16:30:46 +02:00
301bd5fd39 Pushed a new snapshot 2021-10-20 15:52:58 -05:00
José Manuel Delicado Alcolea
a2f25bfbb5 Added charset-normalizer to requirements 2021-10-12 17:05:09 +02:00
286e030f40 Handle new Tweepy exceptions properly. #403 2021-10-07 09:20:06 -05:00
d8fca3b31a Initial work to Support Tweepy 4 2021-09-26 03:58:25 -05:00
0c27427843 Merge branch 'next-gen' of github.com:manuelcortez/twblue into next-gen 2021-09-10 15:05:28 -05:00
dfdbe3c5f4 Close VLC window after video playback ends. Close #399 2021-09-10 15:05:05 -05:00
José Manuel Delicado
2222a97451 Merge pull request #394 from Oreonan/fr_020821
Update french interface translation
2021-09-03 11:38:50 +02:00
fbe93ea4be Made FreakyBlue The default soundpack for new twitter sessions 2021-09-02 09:59:13 -05:00
4bcae1aa97 Fixed search filters. Closes #397 2021-09-02 09:38:05 -05:00
4cabf5b9cd Added code to handle user timelines in buffer creator 2021-08-31 10:31:18 -05:00
a9a4189295 Added improvements to tweet condense feature 2021-08-31 10:05:21 -05:00
c7b6d69518 Fixed an error in new buffer creation. Closes #396 2021-08-30 13:19:15 -05:00
65512a9862 Added a pubsub event to create sessions buffers 2021-08-30 10:51:26 -05:00
Oreonan
17ea8af050 Update translation 2021-08-28 08:37:26 +02:00
Oreonan
43578a32eb Merge remote-tracking branch 'origin/next-gen' into fr_020821 2021-08-28 08:33:40 +02:00
7c34204d17 Allow to specify alternative configuration specs for sessions 2021-08-27 13:45:59 -05:00
3a5c1c10d3 Released a new snapshot 2021-08-26 15:13:34 -05:00
f9864a887d Fixed a small traceback that was happening when translating a direct message 2021-08-26 09:16:02 -05:00
3d8519313e Switched Geocoding library to OpenStreetMap's Nominatim API. Closes #390 2021-08-26 08:56:51 -05:00
f4ecf10885 Allow to copy tweet URLS from tweet displayer dialog 2021-08-25 16:30:37 -05:00
c67b415934 Updated changelog 2021-08-25 12:49:53 -05:00
10511d3022 Improvements to reading tweets with many mentions on them 2021-08-25 11:13:12 -05:00
Oreonan
ddc80a29fd Update french interface translation 2021-08-02 19:30:24 +02:00
9ea36a26d2 Updated changelog with windows 11 keymap 2021-07-31 22:33:32 -05:00
97286496fc fixed changelog in diverged commits 2021-07-31 22:28:46 -05:00
José Manuel Delicado
6436af76f5 Merge pull request #393 from jpavonabian/windows11
Added a fix.
2021-07-28 07:50:38 +02:00
Jesus
576b5064c0 Added a fix. 2021-07-28 07:23:57 +02:00
José Manuel Delicado
342265b3c0 Merge pull request #392 from jpavonabian/windows11
Fixed shortkuts
2021-07-26 13:38:32 +02:00
Jesus
54938ecb6c Fixed shortkuts 2021-07-26 12:47:51 +02:00
José Manuel Delicado
7aff8252d2 Merge pull request #391 from jpavonabian/windows11
Keypad for windows 11
2021-07-24 12:46:43 +02:00
Jesus
9c680130f7 Keypad para windows 11 2021-07-24 06:24:08 +02:00
24d1ad093d Streaming API: Ignore retweets if original tweet is present in a buffer 2021-07-16 10:22:51 -05:00
b2b9cd810f Fixed an issue when indefined keystrokes 2021-07-13 17:53:01 -05:00
582be54dea Added add_alias action to keymaps as undefined 2021-07-13 17:25:48 -05:00
ff0fbeafa3 Modified keystrokeEditor to allow undefined keystrokes 2021-07-13 17:22:20 -05:00
e314cf0599 Allow search users by names in autocomplete users 2021-07-10 05:24:56 -05:00
José Manuel Delicado Alcolea
e7b72112cf Merge branch 'next-gen' of github.com:manuelcortez/TWBlue into next-gen 2021-07-07 08:42:14 +02:00
José Manuel Delicado Alcolea
70c095febe setup.py: patch cx_freeze to include our Microsoft Visual C++ runtime files 2021-07-07 08:41:08 +02:00
6119b029f8 Merge pull request #388 from zstanecic/next-gen
Updated russian interface
2021-07-06 17:13:59 -05:00
b74cd9a73d Ignore undefined actions in keymaps 2021-07-06 17:01:42 -05:00
8ff6809f08 Updated changelog 2021-07-06 16:22:52 -05:00
39af9d8623 Merge pull request #389 from manuelcortez/user_alias
User aliases within TWBlue
2021-07-06 15:58:54 -05:00
3688d7548c Check alias before returning any user object 2021-07-06 13:59:34 -05:00
07f9afb14e Added option to user menu in the menu bar 2021-07-06 13:58:34 -05:00
de12dadac2 Added GUI for user alias addition 2021-07-06 13:58:13 -05:00
877c909482 Added user-aliases section on session configs 2021-07-06 13:56:56 -05:00
José Manuel Delicado Alcolea
1206aba83b Added a few more dependencies to requirements.txt 2021-07-06 20:42:03 +02:00
zstanecic
fcd631b2de Merge remote-tracking branch 'upstream/next-gen' into next-gen 2021-07-06 19:16:47 +02:00
Jose Manuel Delicado
86130954d7 Updated Windows dependencies. Latest versions of NSIS and VLC, among others 2021-07-06 12:39:47 +02:00
Jose Manuel Delicado
23a56c637d Add some indirect dependencies to requirements.txt in order to easily keep them updated 2021-07-05 23:03:40 +02:00
zstanecic
d5ac0db67b updated the russian localization. 2021-07-05 16:04:19 +02:00
bb4869b7be Pushed a new snapshot 2021-07-04 17:05:06 -05:00
44b6e82183 Fix reply dialog issue 2021-07-04 11:50:03 -05:00
Jose Manuel Delicado
5268f166f8 Use Python 3.8.10 for automated builds 2021-07-04 18:43:33 +02:00
Jose Manuel Delicado
37ad6b5fbf paths.py: replace socializer by TW Blue in data_path function definition 2021-07-04 18:32:17 +02:00
Jose Manuel Delicado
bcc72c932d Updated Windows dependencies. Python 3.8.10 2021-07-04 18:26:49 +02:00
b9a9bd03c2 Pushed a new snapshot 2021-07-04 09:47:33 -05:00
e6543bcf77 Allow streaming API support to be disabled from global settings dialog 2021-07-04 09:44:48 -05:00
03b61946f8 Fixed user searches 2021-07-04 09:43:53 -05:00
8fe2f4c64d Exclude muted users from Streaming API 2021-07-04 09:15:04 -05:00
37af722556 Fixed alpha version for snapshots 2021-07-04 06:15:40 -05:00
4312ad82e7 Fixed runner config 2021-07-04 05:51:59 -05:00
e9e8a8fba9 Pushed a new snapshot 2021-07-04 05:43:06 -05:00
5cad4ab2a7 Restore get_all_users and get_all_mentionned in nested tweets 2021-07-04 05:31:27 -05:00
01dd93e076 Show all current account replies in streaming API 2021-07-04 05:30:52 -05:00
d301f841e3 TWBlue should stop showing sent retweets as original tweets in Streaming API 2021-07-04 05:02:02 -05:00
81d18d4656 Updated changelog 2021-07-04 04:47:13 -05:00
ccba22cfd2 Show dialog on suspended users again. closes #387 2021-07-03 14:09:52 -05:00
465b550c30 Removed old code to deal with invalid users 2021-07-03 14:05:02 -05:00
788811bf6c Ensure a tweet is reduced when sent by streaming API 2021-07-03 14:04:14 -05:00
c926355048 Hide replies to users the current account doesn't follow in streaming API 2021-07-03 11:52:21 -05:00
84cbf5c497 Fix yet another error due to reduced tweets 2021-07-03 11:51:43 -05:00
7eb2d8930f Fixed traceback happened when attempting to send streaming data to not logged sessions 2021-07-03 11:51:11 -05:00
864ebdf96d Made widgetUtils available to searchBuffers 2021-07-02 17:57:39 -05:00
ee9a92bcb4 Makes time available on conversation buffers 2021-07-02 17:53:05 -05:00
818bc243e4 Handle Twyshort's detection for reduced tweets 2021-07-02 17:34:40 -05:00
062289a977 Merge pull request #385 from manuelcortez/streaming
Streaming API support
2021-07-02 17:29:10 -05:00
56a1c57e04 Merge pull request #386 from manuelcortez/buffer_modularization
Separate all buffers in modules for an easier work with code
2021-07-02 17:27:48 -05:00
3c7063792c Separate all buffers in modules for an easier work with code 2021-07-02 17:22:24 -05:00
77eadb42bb Make sure to disconnect the streams as tweepy implements it 2021-07-02 10:35:20 -05:00
9053fcd5de Send Tweets to mentions properly 2021-07-02 10:11:50 -05:00
5f11467f27 Switched threads to our own facilities and attempts to improve thread management for streaming endpoints 2021-07-02 09:52:21 -05:00
55b1c7bdae Integrates Tweepy's 68e19cc for preventing Urllib3 ProtocolError 2021-07-02 09:50:22 -05:00
ba90842185 Initial work to put tweets in mentions, sent and timelines 2021-06-29 17:55:36 -05:00
8fd3041efd Added some reconnection code and logging 2021-06-29 17:16:53 -05:00
bb5ead80de Parse correctly incoming tweets from Streaming API 2021-06-29 05:05:20 -05:00
168c7e7a5d Initial test for supporting a subset of the Streaming API 2021-06-28 17:03:26 -05:00
a7838bbf7d Next snapshots will have installer and 64 bits version. Switched to Gitlab CI to generate snapshots. 2021-06-28 10:23:39 -05:00
fe8b58a7b9 Include quoted tweets and retweets in audio detection and playback 2021-06-28 10:20:39 -05:00
a9f52b3a94 Added convert_bytes function to show correctly FTP upload progress 2021-06-28 06:01:05 -05:00
13c47f7b9f Fixed branch name 2021-06-28 05:28:15 -05:00
3515df9b15 Upload files to FTP server after generating snapshots 2021-06-28 05:26:42 -05:00
f998fa62a6 Added missed move command 2021-06-28 04:50:36 -05:00
a6032cae46 Added make_archive as a script 2021-06-28 04:30:42 -05:00
7935f79d77 fixed a syntax error 2021-06-28 04:20:54 -05:00
ef443346d1 Try to generate zip versions and installers 2021-06-28 04:16:59 -05:00
a27eee1fa2 Add submodules 2021-06-28 03:40:00 -05:00
b839dc077c Updated a small typo 2021-06-28 03:29:27 -05:00
2b719858c2 Initial implementation of gitlab's CI file 2021-06-28 03:28:43 -05:00
97afc379e8 Pushed a new snapshot 2021-06-28 00:47:23 -05:00
7f401ba789 Removed unneeded locales 2021-06-28 00:39:45 -05:00
ff22ae5653 Merge branch 'next-gen' of https://github.com/manuelcortez/twblue into next-gen 2021-06-28 00:38:54 -05:00
02d94fcea0 Fixed a small issue when loading a conversation buffer 2021-06-28 00:36:53 -05:00
df2015f360 Merge pull request #384 from manuelcortez/twitter_videos
Support for Twitter video playback
2021-06-27 23:40:11 -05:00
64a14c831b Added initial support for playback of Twitter videos (only works in tweets so far) 2021-06-27 21:40:22 -05:00
fbbe7852c2 Added serbian to generate documentation 2021-06-27 20:57:13 -05:00
9dfccd2bd0 Updated documentation generators 2021-06-27 20:55:16 -05:00
969a75e9f3 Merge pull request #380 from manuelcortez/better_memory_management
Replace the cache database for a SQLite backed implementation
2021-06-27 19:10:50 -05:00
a59ba5ef78 Reset cache every time we call to save_persistent_data in tests 2021-06-27 19:09:49 -05:00
3ebfdbc48b Request for a restart when switching memory cache 2021-06-27 19:09:21 -05:00
8db14a95c1 Call reduce.reduce_tweet and session.save_users when retrieving previous items for a buffer 2021-06-27 18:07:56 -05:00
1b9062d86f aHandles deleted users for direct messages without wasting too many API calls 2021-06-27 18:05:35 -05:00
4b60a79e49 Made get_all_mentioned to take into account sometimes tweets might have no entities defined 2021-06-27 18:04:26 -05:00
002e1ccb55 If get_user is called with a full user object as an argument, logs it and changes the object to be only the user_id 2021-06-27 16:03:36 -05:00
0bcdf88290 Merge pull request #382 from nidza07/SerbianTranslation
Added Serbian documentation and changelog.
2021-06-27 02:35:55 -05:00
0612c653b8 Make TWBlue to respect persist_size when loading the cache database. Added tests for both reading from disk and loading in memory caches 2021-06-27 02:32:28 -05:00
nikola nikola
c5dadb063a Added Serbian documentation and changelog. 2021-06-27 04:22:02 +02:00
35d6010298 Save tweets cache by taking into account persist_size 2021-06-26 15:16:50 -05:00
40a63d9e16 Merge pull request #381 from nidza07/SerbianTranslation
Updated Serbian translation.
2021-06-26 02:16:13 -05:00
5712dd735b Added a new setting in account dialog to control whehter we load the cache db into memory or read it from disk 2021-06-26 01:52:07 -05:00
2c75ea5005 Fixed a small issue referencing an user in the old way while retrieving all mentioned users in a tweet 2021-06-26 01:50:47 -05:00
e35f37fcc2 Updated changelog 2021-06-26 01:49:55 -05:00
71358ea74d changed function names and cleaned code a little bit to reflect better the changes to object percistance 2021-06-25 23:35:33 -05:00
b8f822830f Added proper docstrings to reduce twitter objects 2021-06-25 22:47:10 -05:00
74e4fe6357 Ensure direct message buffers are correctly saved in database 2021-06-25 16:49:23 -05:00
77bee64421 Pass a null value to tweepy.models.Status as sometimes database saved objects might not include it 2021-06-25 16:48:44 -05:00
c761230566 Reduce the size of all tweets so it might make easier to handle those in a realtime database 2021-06-25 16:25:51 -05:00
49505fabcd Modify utils so those will take into account that entities might be not present in tweet objects 2021-06-25 13:14:01 -05:00
4ad01d7833 Retrieve user objects from the users list stored in SqlDict as opposed to loading it from tweet objects 2021-06-25 13:13:00 -05:00
ab1a13f886 Improve save_users() and get_user() as those will be used in more places later 2021-06-25 13:11:33 -05:00
nikola nikola
44c25e54f8 Updated Serbian translation. 2021-06-25 18:33:16 +02:00
cdabd6f055 Merge branch 'next-gen' into better_memory_management 2021-06-24 09:54:45 -05:00
60144a6b08 Added initial support to SqliteDict package 2021-06-24 09:52:10 -05:00
382acf7c8c Use slitedict to attempt to reduce memory usage when caching tweets 2021-06-23 13:40:21 -05:00
José Manuel Delicado
03ba59028f Merge pull request #379 from ivnc/next-gen
Fix arrow for Galician
2021-06-23 20:05:24 +02:00
Iván Novegil
50125fc55a Fix arrow for Galician. Modify some existing translations to localize them properly 2021-06-23 18:45:33 +02:00
39e1fb017c Made code indentation to comply with PEP8 2021-06-16 16:18:41 -05:00
2aaa4eced3 Removed Catala and Basque locale as they are in arrow already. Disabled Galician locale cause it's not fully implemented and fails 2021-06-16 16:17:16 -05:00
José Manuel
6d2eac5b1c Merge pull request #332 from Oreonan/fr-04062020
Some changes for french translation
2021-05-29 21:56:33 +02:00
Oreonan
40040d1b17 Merge branch 'next-gen' into fr-04062020 2021-05-14 21:24:46 +02:00
2a791d43bf Fixed an error when parsing a DM sent from an deleted account 2021-05-14 09:52:19 -05:00
b10aeb046d Changed label of direct message's text field so it will not reference any username in the hint. Closes #366 2021-05-07 17:18:21 -05:00
7d6e230fd9 Fix issue that avoids TWBlue to use Shift+F10 as menu key. Fixes #353 2021-05-07 16:52:10 -05:00
9346bba7a0 Fixed a small bug when sending long tweets via twyshort 2021-05-03 10:05:14 -05:00
30f739c42e Updated version to a new snapshot 2021-04-19 16:51:26 -05:00
eb0679cb96 Make unexistent users to throw an error when loading a timeline 2021-04-17 13:00:30 -05:00
45deae3402 Fixed rendering of retweets of quoted tweets. Fixes #365 2021-03-09 16:41:58 -06:00
5b0b26799d Install platform_utils, accessible_output2, libloader and sound_lib from upstream. Closes #369 2021-03-09 16:36:23 -06:00
ee234b80a7 Fixed error when parsing long tweets. 2021-03-09 11:35:52 -06:00
0065af2aef Avoid removing buffers when api_error=130 2021-02-25 16:57:32 -06:00
9c086cfa0f Prevend some errors to be identified as current user being blocked 2021-02-11 12:50:09 -06:00
2f263a23b7 Avoid giving false positive errors when buffers are updating 2021-02-10 09:34:30 -06:00
9cb6eafbbc Fixed issue in autocomplete users feature. closes #367 2021-02-04 12:30:20 -06:00
cba7c39a0e Updated to snapshot 4 2021-01-27 17:49:59 -06:00
e2e8b84e6a Fixed focus when search dialog opens. Fixes #364 2021-01-27 17:32:12 -06:00
eca0c0dbbd Fixed shelve method 2021-01-27 17:31:14 -06:00
36cc3f9365 Fix call to retrieve muted user IDS on twitter session 2021-01-27 17:30:10 -06:00
63d7cbe7c4 Implemented user searches. 2021-01-27 16:27:33 -06:00
ae57cc3404 Retrieve up to 5000 users when getting list IDS 2021-01-27 15:03:47 -06:00
23df8f8a7f Updated python version in CI config file 2021-01-27 14:00:29 -06:00
2f278b7f3c Removed yet another reference to Twython 2021-01-27 13:30:37 -06:00
9444939c35 Replaced cursored calls for manual calls to function with return_cursors. This way we will avoid hitting TWitter Rate limits accidentally 2021-01-27 13:20:47 -06:00
6688dc1163 Removed unneeded parameters when retrieving direct messages 2021-01-27 13:19:16 -06:00
6a7300b35f Merge branch 'next-gen' of https://github.com/manuelcortez/TWBlue into next-gen 2021-01-27 10:38:21 -06:00
c95a2feb5e Faster implementation of dm loading due to a call to lookup_users instead to get_user 2021-01-27 10:36:44 -06:00
8042d28b13 Merge pull request #358 from riku22/update_japanese_translation
Update japanese translation
2021-01-26 17:46:29 -06:00
890359f8c7 Fixed Rate limit issue in cursored functions. Closes #354 2021-01-26 17:09:38 -06:00
91955e80d2 Fixed Picture OCR. Fixes #356 2021-01-26 16:23:48 -06:00
6c1c66226d Merge branch 'googletrans-integration' into next-gen 2021-01-26 16:11:49 -06:00
1a76913aac Removed debug info 2021-01-26 16:09:55 -06:00
f85af2cbd2 Merge pull request #361 from manuelcortez/googletrans-integration
Change translation service
2021-01-26 16:06:38 -06:00
351f700927 Replaced translation services. Fixes #355 2021-01-26 16:01:26 -06:00
guredora
0e4b133858 add: configration invalid error dialog 2021-01-24 11:05:49 +09:00
Jose Manuel Delicado
abdde4c1f0 Updated windows-dependencies submodule 2021-01-23 19:31:58 +01:00
Jose Manuel Delicado
4899285eca Updated readme 2021-01-23 19:30:30 +01:00
riku
fb3e6b537c Updated Japanese translation 2021-01-23 09:05:35 +09:00
riku
22d1cc9ce9 Merge branch 'next-gen' into update_japanese_translation 2021-01-23 09:03:01 +09:00
304d91e8b7 Started replacing yandex.translate with googletrans 2021-01-22 17:55:15 -06:00
cf650052e4 Merge pull request #351 from riku22/add_requirements
Add pyenchant to requirements
2021-01-22 17:34:20 -06:00
riku
10055788e4 Removed twython 2021-01-23 07:26:42 +09:00
riku
a67f3f037e Merge branch 'next-gen' into add_requirements 2021-01-23 07:26:14 +09:00
Jose Manuel Delicado
4d736c00fc main.py: Check for other running instances before anything else 2021-01-22 18:50:09 +01:00
Jose Manuel Delicado
29b8a645db Updated changelog 2021-01-22 18:22:07 +01:00
Jose Manuel Delicado
2459a499ce Merge branch 'next-gen' into proxy 2021-01-22 18:01:29 +01:00
28f4e3a534 Merge branch 'next-gen' of https://github.com/manuelcortez/TWBlue into next-gen 2021-01-22 10:56:07 -06:00
e2931e96eb Remove references to Twython. #351 2021-01-22 10:55:08 -06:00
Jose Manuel Delicado
fbcba39e69 Small fixes. Support for socks4a proxies 2021-01-22 17:54:47 +01:00
Jose Manuel Delicado
b59d262dca Apply proxy settings before TWBlue main components start loading 2021-01-22 17:40:48 +01:00
Jose Manuel Delicado
7f4a13231f config.py: update the list of supported proxy types 2021-01-22 17:09:39 +01:00
Jose Manuel Delicado
4ab5af2ae9 Store the proxy type as an integer when saving the configuration 2021-01-22 17:06:32 +01:00
Jose Manuel Delicado
4c4eaf4012 controller/settings: assign the proxy type in the combo box based on the retrieved integer from config 2021-01-22 17:01:44 +01:00
Jose Manuel Delicado
b03198a39f Proxy type is now an integer instead of a string 2021-01-22 16:55:38 +01:00
Jose Manuel Delicado
06dc26e962 Proxy port is now an integer in the default configuration 2021-01-22 16:54:20 +01:00
Jose Manuel Delicado
bcc8f5968e Configuration dialog: use SpinCTRL instead of TextCTRL to specify the proxy port 2021-01-22 16:53:07 +01:00
Jose Manuel Delicado
4c144d2f7e Requirements: always install the latest WXPython version 2021-01-22 16:20:41 +01:00
747290e16a Require extended tweets for quoted tweets. Fixes #352 2021-01-22 09:15:47 -06:00
Jose Manuel Delicado
64b6d4df74 Requirements: do not install an idna version greather than 3.0 to avoid breaking requests package dependencies. Added wheel as a requirement to increase installation speed 2021-01-22 12:46:37 +01:00
riku
22d48cb5d9 Update Japanese translation 2021-01-22 12:52:19 +09:00
riku
fea01c44ca Add twython and pyenchant to requirements 2021-01-22 11:31:40 +09:00
b80a342f92 Count tweet characters and URLS as specified by Twitter. Fixes #199. Fixes #315 2021-01-21 17:12:18 -06:00
60a13d974c Added twitter-text-parser as a dependency 2021-01-21 17:10:56 -06:00
4c9000839d Fixed some errors when starting people buffers 2021-01-21 08:27:50 -06:00
b3c24c6734 Merge pull request #347 from manuelcortez/tweepy
Migration to Tweepy. Closes #237 , closes #240
2021-01-20 17:50:19 -06:00
a2a8cc5b79 Updated changelog 2021-01-20 17:44:29 -06:00
da7a208c1f Implemented people buffers and searches 2021-01-20 17:06:59 -06:00
979a3d3e99 Changed a function to order people buffers after being retrieved from Twitter 2021-01-20 17:06:15 -06:00
1f11ea7aa0 fixed an issue in compose for followers 2021-01-20 17:05:39 -06:00
8bdc933bce Migrated direct messages. Cursor support still require testing 2021-01-20 15:56:20 -06:00
999cbba464 Implemented function to get previous item for tweets and searches 2021-01-20 11:02:21 -06:00
7457521398 Restored media uploading (needs testing). Fixes #240 2021-01-20 10:35:11 -06:00
366b61134e Fixed trending topics dialog 2021-01-20 10:00:19 -06:00
52154ac271 Migrated support to Trending Topics 2021-01-20 09:59:38 -06:00
cdc285e362 Implemented support to list buffer creation 2021-01-20 09:21:50 -06:00
4643301764 Implemented list creation, edition and removal 2021-01-19 17:47:54 -06:00
f546543e9b Implemented tweet searches and conversation fupport 2021-01-14 09:18:57 -06:00
85fe94ec0c Implemented user actions (needs testing) 2021-01-13 10:38:26 -06:00
db13c96baa Fixed some incorrect error handling on utils 2021-01-13 10:33:49 -06:00
33b6000b41 Implemented user profile viewer 2021-01-13 10:32:03 -06:00
a261365682 Fixed some stuff in main controller. Likes work again 2021-01-13 10:31:37 -06:00
4064582583 Remove old reference to Twython error handling 2021-01-13 08:47:13 -06:00
fc0da0bdbb Migrated the main controller to use tweepy 2021-01-13 08:41:32 -06:00
76c678d4ba Fixed replies, retweets and iand tweet deletion 2021-01-05 11:10:55 -06:00
3db8b7b021 Fixed some rendering for dm's and people 2021-01-05 11:04:06 -06:00
fa49637d0e Replaced twython old exception handling by tweepy 2021-01-05 09:34:52 -06:00
65ec231349 Fixed an indentation issue 2021-01-05 09:20:36 -06:00
93705bf534 Fixed user timeline creation 2021-01-04 15:52:25 -06:00
29a905199d Basic implementation of tweetDisplayerDialog. Needs testing with lists of tweets and image description entities 2021-01-04 12:55:29 -06:00
8569d9b0a0 Readded code to load timelines with tweepy 2021-01-04 12:30:38 -06:00
1e1f2b089f Fix call to api.supported_languages() 2021-01-04 12:23:04 -06:00
78cc6e6784 Changed library calls on some basic buffer creation and manipulation 2021-01-04 11:16:56 -06:00
a37f339fea Fixed some issues when determining the presence of long tweets based on entities present in objects 2021-01-04 11:15:27 -06:00
d0cc12ef5c Added basic tweet rendering 2021-01-04 11:14:55 -06:00
bcd51d6259 Migrated most of twitter util functions from sessions/twitter/utils.py 2021-01-04 11:13:20 -06:00
7ceb806af2 Added more changes in order to deal with tweet objects 2020-12-22 17:29:33 -06:00
José Manuel
8f35fc0ec0 Merge pull request #342 from maniyax/next-gen
Edit Russian localization
2020-10-29 10:40:11 +01:00
maniyax
3f79fab8e5 update contributors.txt 2020-10-23 14:33:33 +03:00
maniyax
53dee8cb81 edit ru-locale 2020-10-23 14:31:47 +03:00
56103466fa Replaced get_account_settings, get_supported_languages, show_user, get_mute_ids 2020-07-20 13:26:22 -05:00
13f5df3a48 Use Tweepy functions for authentication and login 2020-07-20 13:11:37 -05:00
a89cc35d40 Started work: Added Tweepy as a dependency 2020-07-20 12:56:29 -05:00
276cd4b4dd Fixed a typo in last commit 2020-06-09 11:45:00 -05:00
c509433b2c Added an helper function for expanding t.co URLS for tweets 2020-06-09 11:34:02 -05:00
7292b36137 Removed old code from utils 2020-06-09 10:45:09 -05:00
Oreonan
0111c8aae1 some changes for french translation 2020-06-04 21:20:18 +02:00
eefe5e6200 Updated snapshot information 2020-06-04 12:14:57 -05:00
492f1d8aa5 Expand URL'S in profile bios 2020-06-04 10:25:00 -05:00
ac20ced5fa Expand URL in user profiles. Closes #275 2020-06-03 12:32:01 -05:00
866cd53328 Fixed typo in changelog 2020-06-03 11:24:20 -05:00
f523e3e81e Updated changelog 2020-06-03 11:22:07 -05:00
bdd7d617c3 Update title on user changes when sending a DM. Fixes #276 2020-06-03 11:19:23 -05:00
a0bc5f6cb3 Ignore folder env for virtual environments. Closes #321 2020-05-30 08:42:30 -05:00
3f238635f2 Fixed a typo 2020-05-29 21:25:13 -05:00
c300476ad2 Updated changelog to add a reference to an issue 2020-05-29 21:22:00 -05:00
6a2e00c467 Fixed calls to paths.config_path in Autocompletion module 2020-05-29 12:37:25 -05:00
4fa983a314 Show error when loading an account with invalid or expired tokens. Fixes #328 2020-05-29 11:17:18 -05:00
ed5b66d033 Fixed audio playback from URL 2020-05-29 10:28:10 -05:00
bec45c37c1 Updated Readme instructions to Python 3 and cx_freeze 2020-05-29 10:13:28 -05:00
ad42c09fef Updated changelog 2020-05-29 09:51:34 -05:00
084fa1894c Restart TWBlue gracefully 2020-05-29 09:49:57 -05:00
6bc63d79ff Updated data for ftp stuff 2020-05-28 16:52:18 -05:00
b1f06f6b1d Fixed some params in CI script 2020-05-28 16:45:36 -05:00
7e9d5359f1 CI environment: Make the Python 3 snapshot the default one 2020-05-28 10:57:46 -05:00
86b8a2ab0f Restarted version number for snapshots as these are built with Python 3 already 2020-05-28 10:56:44 -05:00
b8043f2c4a Added Microsoft redistributables in new builds 2020-05-28 10:35:45 -05:00
Jose Manuel Delicado
eff11f18c5 Updated dependencies. Run git submodule update 2020-05-26 19:34:25 +02:00
eca8b1ec46 Setup: Enchant works again. Python 3 build works. Closes #326 and #309 2020-05-01 13:29:04 -05:00
59bd2842c4 Don't set a custom dictionary path for now as Enchant 2.2.x is not compatible with calls to set_param. #326 2020-05-01 13:14:27 -05:00
92564d4075 Setup: Redirect exceptions properly by overriding sys.excepthook 2020-05-01 13:03:13 -05:00
9d59ee9d8d Use relative paths in setup file for better error handling 2020-04-29 08:33:05 -05:00
b845e751aa Wrote a new setup file (by using cx_freeze) 2019-12-16 16:52:59 -06:00
246a10535c Updated to the latest version of arrow (0.15.4) 2019-12-16 09:56:59 -06:00
977c521d7c Fix the cache database under Python 3 2019-12-16 09:49:49 -06:00
0e3ba0b89e Disable autogeneration of snapshot versions for a while 2019-12-16 09:47:49 -06:00
18d75e0564 Reverted to Arrow 0.14.5 for #317 2019-10-04 16:22:02 -05:00
482f95ba55 Updated code for supporting arrow 0.15 (timestamps passed as int, use two digits lang code) 2019-10-03 22:47:19 -05:00
c70b900c96 Removed arrow Warnings as 0.15 has been released 2019-10-03 22:11:06 -05:00
75877661a2 Try to upload artifact to ftp 2019-10-03 21:59:04 -05:00
1828b14790 Fixed unicodeError in documentation importer for python 3.7.4 2019-10-03 21:22:47 -05:00
35582650dc Removed py2exe from CI script 2019-10-03 17:55:27 -05:00
9500703408 Set py3 path in CI 2019-10-03 17:50:26 -05:00
ba48a817f2 Avoid printing filesystem root in CI environment 2019-10-03 17:45:31 -05:00
b06f28d3e6 Testing CI environment. #309 2019-10-03 17:34:42 -05:00
838e0c7b12 Added pyinstaller to requirements file. #309 2019-10-03 17:23:05 -05:00
08b34138e0 Added main specification file for PyInstaller (tested with Python 3.7.2). #309 2019-10-03 17:21:17 -05:00
073ccbf6c7 Updated requests fix to match with pyinstaller later. #309 2019-10-03 17:18:24 -05:00
a58187e5f7 Change call to app_path() to reflect latest changes when retrieving WX locales in frozen application. #309 2019-10-03 17:17:36 -05:00
6af39c6a2f Use shift instead of replace in arrow object for dm's. Closes #306 2019-10-03 10:33:04 -05:00
d97733fb1a API errors should be spoken from Twython. Fixes #310 2019-10-03 09:26:54 -05:00
80212fc61f Changed some calls to functions inside the paths module. Fixes #308 2019-08-15 09:51:31 -05:00
fe60ac8f67 Fixed issue in Global settings dialog, fixes #307 2019-08-15 09:46:47 -05:00
b6d5c9be63 Spell checker module should work properly. Fixes #296 2019-08-15 09:16:55 -05:00
e5a40288af Use shift() instead of replace() in arrow when displaying tweet's date. #306 2019-08-15 08:42:15 -05:00
bafb56651c remove explicitly some warnings present in arrow==0.14.5 2019-08-15 08:22:22 -05:00
29290b1468 Merge branch 'next-gen' of https://github.com/manuelcortez/twblue into next-gen 2019-08-13 17:53:06 -05:00
316a539a11 Docs can be generated from python 3.7 2019-08-13 17:39:05 -05:00
6320f0d93c Merge pull request #298 from yncat/yncat-jp-translation
Translated a few missing entries
2019-08-13 10:01:36 -05:00
6e12d70cd9 Merge branch 'python3' into next-gen 2019-08-13 09:57:24 -05:00
bca6861bcb Fixed error when displaying URL'S in multiline tweets. Fixes #305 2019-08-13 09:55:50 -05:00
José Manuel
60074919f6 Merge pull request #304 from Oreonan2/frcontributors-24072019
Added Corentin Bacqué-Cazenave to contributors.txt
2019-07-24 17:54:54 +02:00
Corentin
7f9e5e181a Added Corentin Bacqué-Cazenave to contributors.txt 2019-07-24 14:24:44 +02:00
0f2662e52d Merge pull request #303 from Oreonan2/frtr-22072019
update french translation
2019-07-23 11:02:15 -05:00
Corentin
5930470023 update files with conflicts 2019-07-22 17:28:59 +02:00
Corentin
56930a8921 update french translation 2019-07-22 16:17:56 +02:00
nyanchan
991f46e923 View in twitter entry's fuzzy tag has been removed to make the entry work actually 2019-07-06 23:54:58 +09:00
nyanchan
2ec47ad1e2 Translated a few missing entryes 2019-07-06 23:46:25 +09:00
ae81dd94a5 Fixed Python 3 issues when adding a new session 2019-07-05 20:17:58 -05:00
dcc4f4c782 Merge pull request #293 from manuelcortez/python3
Initial Python 3 compatible code
2019-07-01 17:43:25 -05:00
c65d149590 Fixed conflicts during the last stable update 2019-07-01 10:04:48 -05:00
2620348573 Returns the first available format retrieved by youtubeDL 2019-06-15 07:25:05 -05:00
Jose Manuel Delicado
ba1bcd550d Updated requirements to include more recent sound_lib dlls. Updated vlc to version 3.0.7.1 2019-06-15 12:53:15 +02:00
Jose Manuel Delicado
0dd082079e setup.py: include again all soundpacks. Include enchant dictionaries 2019-06-09 22:09:16 +02:00
Jose Manuel Delicado
7928cf5f24 Set snapshot variable to False 2019-06-06 22:12:06 +02:00
Jose Manuel Delicado
1333ebf859 Updated version to 0.95 2019-06-06 22:07:19 +02:00
Jose Manuel Delicado
ec3779147f Updated translations 2019-06-06 22:01:36 +02:00
ebd8e42154 Install a newer accessible_output2 package 2019-06-06 13:06:51 -05:00
a4f20872b0 Install latest pypubsub for Python 3 instead of the 3.3.0 version 2019-06-06 13:03:17 -05:00
ef689d04fc Initial Python 3 compatible code 2019-06-06 11:52:23 -05:00
Jose Manuel Delicado
d441536f01 Updated windows dependencies and readme 2019-05-02 20:26:33 +02:00
f976beb751 OCR should be performed in quoted tweets too 2019-04-08 05:41:49 -05:00
bed6142fa1 Remove builds on every commit 2019-04-08 05:11:41 -05:00
4c34099751 Removed unneeded file 2019-04-08 05:06:45 -05:00
Jose Manuel Delicado
e0db808dce Updated Windows dependencies. Please, run git submodule update 2019-03-17 15:05:52 +01:00
Jose Manuel Delicado
c500e8f513 Updated translation catalogs 2019-03-17 13:35:00 +01:00
José Manuel
7f86da1123 Merge pull request #286 from pauliyobo/next-gen
audio_services should now be completely independent  from the source …
2019-03-15 19:14:56 +01:00
aa4ebfff29 Replaced __gen_path__ with __build_path__ in fixes/fix_libloader.py 2019-02-28 08:34:30 -06:00
paul
ae4deb412f fixed other import issues derived from the removal of youtube_utils #273 2019-02-26 23:53:56 +01:00
paul
6eb27b655a deleted youtube_utils, and fixed various imports from the source code #273 2019-02-26 21:44:15 +01:00
paul
fe72fe97b5 audio_services should now be completely independent from the source code it's self. #273 2019-02-26 08:50:38 +01:00
c82ef1855c Apply fix_libloader before fix_win32com 2019-02-21 15:01:43 -06:00
fd43865105 Fixed errors when creating audio recordings 2019-02-20 17:21:27 -06:00
cf095ba13b Fixed keystroke for 'view in twitter' feature 2019-02-20 17:21:08 -06:00
092c5312cb Try to use a forked accessible_output2 to see how libloader fixes work on it #282 2019-02-20 14:13:29 -06:00
fc21b43475 Build a version for every commit. 2019-02-20 10:40:57 -06:00
3fce3c58e2 Added logging to fix_libloader. 2019-02-20 10:40:08 -06:00
207315937a Add files from accessible_output2 by using the right function 2019-02-19 23:04:45 -06:00
61d9180b2e Installs wx==4.0.3 due to issues present in 4.0.4 2019-02-19 23:03:37 -06:00
89985cf6bd Updated snapshot info 2019-02-19 22:24:25 -06:00
cc4568b968 Win10: Remapped session mute/umute to Control+win+alt+m 2019-02-19 17:50:05 -06:00
d7132ecaf6 Added 'open in Twitter' for tweets and users 2019-02-19 17:41:34 -06:00
720e0e6c24 Win10: Remapped shortcut for settings dialog to Ctrl+Win+Alt+o 2019-02-19 16:48:54 -06:00
9763d8b26c Fixed an error when trying to retrieve a deleted user while rendering a direct message 2019-02-15 09:04:52 -06:00
f512267b6d Add accessible_output2 to requirements file. Closes #280 2019-01-28 13:28:30 -06:00
241de0264d Use accessible_output2 as external dependency 2019-01-23 17:36:46 -06:00
5c7bce1258 Added sound_lib as an external dependency. #273 2019-01-23 17:28:05 -06:00
e24543be12 Use platform_utils as an external dependency 2019-01-15 17:54:29 -06:00
422c780d0c Merge pull request #279 from codeofdusk/i278
Fix #278
2019-01-15 17:29:28 -06:00
Bill Dengler
96a592a4f9 Fixed #278. 2018-12-31 21:14:09 +00:00
d4bf33ca6d Added support for playback from anyaudio.net 2018-11-25 13:00:01 -06:00
e5b33160e0 Added a custom fix for Libloader with changes made by @jmdaweb #273 2018-11-22 17:48:22 -06:00
c8d83ed9e7 Added new path to libloader in requirements file #273 2018-11-22 17:47:38 -06:00
16b2e16614 Removed libloader from the source repository. #273 2018-11-22 17:47:02 -06:00
221d1d413b Changed codebase's syntax before attempt the python3 migration later. #273 2018-11-22 13:35:51 -06:00
4391e3d3de Install Twython from a git repo instead of shipping it in the source code. #273 2018-11-22 12:19:23 -06:00
c5e9e97c84 Keep custom buffer ordering across restarts and changes in settings 2018-11-18 06:33:33 -06:00
4c1cad7f61 Updated snapshot information 2018-11-18 05:22:20 -06:00
fffd98e09e Pressing enter in the list will work when adding or removing someone from a list 2018-11-17 13:40:59 -06:00
a1a084bfda Fixed a small typo 2018-11-15 04:49:48 -06:00
85e575386e Long and quoted tweets are displayed properly in sent tweets. Fixes #253 2018-11-15 04:43:16 -06:00
2c64805eec Show list manager action in keystroke editor. Fixes #260 2018-11-13 17:32:12 -06:00
6f2e439ddc Invert slider movement when up/down arrows are pressed. Fixes #261 2018-11-13 17:16:51 -06:00
7e42a096a5 Finished implementing autoreading features. Closes #221 2018-11-13 16:33:17 -06:00
9d2cf05a41 Added more docstrings to buffers code 2018-11-13 15:34:45 -06:00
d7c095173d Improved autoreading functions for #221. Closes #271 2018-11-01 15:04:26 -06:00
36ba6eca92 Started refactoring of autoreading for buffers 2018-10-19 17:35:56 -05:00
b6fa131999 Fixed typos in changelog 2018-10-03 09:03:15 -05:00
c85c478595 Added date and time wen displaying tweets and dm's 2018-09-30 14:39:59 -05:00
Jose Manuel Delicado
74e020c090 Added certifi and backports.functools-lru-cache to requirements.txt 2018-09-30 11:56:47 +02:00
40105f37ed Added support for deleting dm's with the new Twitter API methods 2018-09-29 11:13:11 -05:00
ca3f8779b8 Separated twitter buffers from generic buffers code 2018-09-22 21:55:19 -05:00
a6a651d6f7 Install py2exe_py2 in appveyor script only. Removed it from requirements. Closes #266 2018-09-22 13:04:27 -05:00
7748b4bb5d Added attempt to update setuptools in AppVeyor script 2018-09-22 13:03:21 -05:00
01a6c65c82 Updated to Twython 3.7.0 2018-09-22 12:03:59 -05:00
211d43aa30 Updated changelog 2018-09-22 10:21:50 -05:00
c716f4aa96 When quoting a retweet, quote will be in original tweet 2018-09-22 10:18:25 -05:00
9fd9d2a120 Updated snapshot info in repo 2018-09-19 16:14:43 -05:00
442 changed files with 62381 additions and 36421 deletions

3
.gitignore vendored
View File

@@ -19,4 +19,5 @@ src/sounds/iOs
release-snapshot/
src/com_cache/
doc/strings.py
doc/changelog.py
doc/changelog.py
env/

123
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,123 @@
variables:
GIT_SUBMODULE_STRATEGY: recursive
PYTHON: "C:\\python37\\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.7.9 -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.7.9 -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

View File

@@ -24,45 +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.15
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.
* [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
The windows installers are available only in the windows-dependencies folder.
To build a binary version:
* [Py2exe](http://www.sourceforge.net/projects/py2exe/) for Python 2.7, version 0.6.9
* [Python,](https://python.org) version 3.7.9
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.
#### Dependencies that must be installed using pip
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:
cd C:\python27x64\scripts
`cd C:\python37x64\scripts`
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.
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:
pip install -r requirements.txt
`pip install -r requirements.txt`
Note that if you perform the command from the path where Pip is located, you need to specify the path to your Tw Blue root folder where the requirements file is located, for example:
pip install -r D:\repos\TwBlue\requirements.txt
`pip install -r D:\repos\TwBlue\requirements.txt`
Pip will automatically get the additional libraries that the listed packages need to work properly.
If you need to update your dependencies, perform the following command:
pip install --upgrade -r requirements.txt
`pip install --upgrade -r requirements.txt`
#### Other dependencies
@@ -71,18 +63,18 @@ These dependencies are located in the windows-dependencies directory. You don't
* Bootstrap 1.2.1: included in dependencies directory.
This dependency has been built using pure basic 4.61. Its source can be found at http://hg.q-continuum.net/updater
* [oggenc2.exe,](http://www.rarewares.org/ogg-oggenc.php) version 2.87
* Microsoft Visual c++ 2008 redistributable dlls.
* Microsoft Visual c++ 2019 redistributable dlls.
* VLC plugins and DLL libraries.
#### Dependencies required to build the installer
* [NSIS,](http://nsis.sourceforge.net/) version 3.03
* [NSIS,](http://nsis.sourceforge.net/) version 3.04
#### Dependencies required to build the portableApps.com format archive
* [NSIS Portable,](http://portableapps.com/apps/development/nsis_portable) version 3.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.8
* [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, ...
@@ -94,7 +86,7 @@ In order to add the support for spell checking in more languages than english yo
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.
@@ -102,8 +94,8 @@ Now that you have installed all these packages, you can run TW Blue from source
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
`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.
@@ -114,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.
@@ -122,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
@@ -137,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.

View File

@@ -1,83 +0,0 @@
pull_requests:
# Avoid building after pull requests. Shall we disable this option?
do_not_increment_build_number: true
# Only build whenever we add tags to the repo.
skip_non_tags: true
environment:
matrix:
# List of python versions we want to work with.
- PYTHON: "C:\\Python27"
PYTHON_VERSION: "2.7.x" # currently 2.7.9
PYTHON_ARCH: "32"
# perhaps we may enable this one in future?
# - PYTHON: "C:\\Python27-x64"
# PYTHON_VERSION: "2.7.x" # currently 2.7.9
# PYTHON_ARCH: "64"
# This is important so we will retrieve everything in submodules as opposed to default method.
clone_script:
- cmd: >-
git clone -q --branch=%APPVEYOR_REPO_BRANCH% https://github.com/%APPVEYOR_REPO_NAME%.git %APPVEYOR_BUILD_FOLDER%
&& cd %APPVEYOR_BUILD_FOLDER%
&& git checkout -qf %APPVEYOR_REPO_COMMIT%
&& git submodule update --init --recursive
install:
# If there is a newer build queued for the same PR, cancel this one.
# The AppVeyor 'rollout builds' option is supposed to serve the same
# purpose but it is problematic because it tends to cancel builds pushed
# directly to master instead of just PR builds (or the converse).
# credits: JuliaLang developers.
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
throw "There are newer queued builds for this pull request, failing early." }
- ECHO "Filesystem root:"
- ps: "ls \"C:/\""
# Check that we have the expected version and architecture for Python
- "python --version"
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
# Upgrade to the latest version of pip to avoid it displaying warnings
# about it being out of date.
- "python -m pip install --upgrade pip"
# Install the build dependencies of the project. If some dependencies contain
# compiled extensions and are not provided as pre-built wheel packages,
# pip will build them from source using the MSVC compiler matching the
# target Python version and architecture
- "%CMD_IN_ENV% pip install -r requirements.txt"
- "%CMD_IN_ENV% pip install pyenchant"
build_script:
# Build documentation at first, so setup.py won't fail when copying everything.
- "cd doc"
# Import documentation before building, so strings.py will be created.
- "%CMD_IN_ENV% python documentation_importer.py"
# build doc from src folder so it will generate result files right there.
- "cd ..\\src"
- "%CMD_IN_ENV% python ..\\doc\\generator.py"
# Build distributable files.
- "%CMD_IN_ENV% python setup.py py2exe"
- "cd dist"
# Zip it all.
- cmd: 7z a ..\..\snapshot.zip *
artifacts:
- path: snapshot.zip
deploy:
- provider: FTP
host: twblue.es
protocol: ftp
beta: true
username: twblue
password:
secure: ml/xB8YEoZ7DmjzDr+KSNw==
# folder: '//pubs'

View File

@@ -38,4 +38,6 @@ Burak Yüksek
florian Ionașcu
Christian Leo Mameli
Natalia Hedlund (Наталья Хедлунд)
Valeria (Валерия)
Valeria (Валерия)
Corentin Bacqué-Cazenave
Artem Plaksin (maniyax)

View File

@@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
name = 'TWBlue'
snapshot = False
if snapshot == False:
version = "0.94"
update_url = 'http://twblue.es/updates/twblue_ngen.json'
mirror_update_url = 'https://raw.githubusercontent.com/manuelcortez/TWBlue/next-gen/updates/stable.json'
else:
version = "10.99"
update_url = 'http://twblue.es/updates/snapshots_ngen.json'
mirror_update_url = 'https://raw.githubusercontent.com/manuelcortez/TWBlue/next-gen/updates/snapshots.json'
author = u"Manuel Cortéz"
authorEmail = "manuel@manuelcortez.net"
copyright = u"Copyright (C) 2013-2016, Manuel cortéz."
description = unicode(name+" is an app designed to use Twitter simply and efficiently while using minimal system resources. This app provides access to most Twitter features.")
translators = [u"Bryner Villalobos, Bill Dengler (English)", u"Mohammed Al Shara (Arabic)", u"Joan Rabat, Juan Carlos Rivilla (Catalan)", u"Manuel cortéz (Spanish)", u"Sukil Etxenike Arizaleta (Basque)", u"Jani Kinnunen (finnish)", u"Rémy Ruiz (French)", u"Juan Buño (Galician)", u"Steffen Schultz (German)", u"Robert Osztolykan (Hungarian)", u"Paweł Masarczyk (Polish)", u"Odenilton Júnior Santos (Portuguese)", u"Alexander Jaszyn (Russian)", u"Burak (Turkish)"]
url = u"http://twblue.es"
report_bugs_url = "http://twblue.es/bugs/api/soap/mantisconnect.php?wsdl"

View File

@@ -1,16 +1,108 @@
TWBlue Changelog
TWBlue Changelog
## changes in this version
* We have added Experimental support for templates in the invisible interface. The GUI will remain unchanged for now:
* Each object (tweet, received direct message, sent direct message and people) has its own template in the settings. You can edit those templates from the account settings dialog, in the new "templates" tab.
* Every template is composed of the group of variables you want to display for each object. Each variable will start with a dollar sign ($) and cannot contain spaces or special characters. Templates can include arbitrary text that will not be processed. When editing the example templates, you can get an idea of the variables that are available for each object by using the template editing dialog. When you press enter on a variable from the list of available variables, it will be added to the template automatically. When you try to save a template, TWBlue will warn you if the template is incorrectly formatted or if it includes variables that do not exist in the information provided by objects. It is also possible to return to default values from the same dialog when editing a template.
* TWBlue can display image descriptions within Tweet templates. For that, you can use the $image_description variable in your template.
* We have restored conversation and threads support powered by Twitter API V2 thanks to a set of improvements we have done in the application, as well as more generous limits to Tweet monthly cap by Twitter.
* In the Windows 11 Keymap, the default shortcut to open the keystrokes editor is now CTRL+Alt+Windows+K to avoid conflicts with the new global mute microphone shortcut.
* TWBlue show display properly HTML entities in tweet's text.
* TWBlue should no longer load old tweets in buffers.
* Fixed issue when uploading attachments (images, videos or gif files) while sending tweets or replies.
* Fixed an error that was making TWBlue to ask for a restart after saving account settings, even if such restart was not required. ([#413,](https://github.com/manuelcortez/TWBlue/issues/413))
## Changes in version 2021.11.12
* Now it is possible to create a tweet from a trending topics buffer again.
* TWBlue now includes a completely new set of dialogs to handle tweeting, replying and sending direct messages that takes advantage of more Twitter features.
* It is possible to add videos in tweets and direct messages by using the new "add" button, located in every dialog where media can be added. Twitter suggests to add videos from 5 seconds up to 2 minutes lenght, in mp4 format (video Codec H.264 and audio codec AAC). Currently, TWBlue does not check if the uploaded video complies with Twitter media requirements. You can add only a video in a tweet or direct message. No other kind of media can be added after a video is in a tweet. If the video was unable to be uploaded successfully, the tweet or direct message won't be created.
* Now you can add a poll to tweets. Polls can have up to 4 different options and allow voting up to 7 days after being created. Take into account, though, that currently TWBlue does not support reading polls in tweets.
* TWBlue now support threads while creating a new tweet. There is a new button, called add tweet which will add the current tweet to the thread and will allow you to write another tweet in the thread. Every tweet might include media (up to 4 photos, or one GIF image or a video) or up to one poll.
* Some functionality was removed from tweet dialogs within TWBlue. Particularly, URL shorteners and long tweets via Twishort. You still can read long tweets posted via Twishort, though.
## Changes in version 2021.11.07
* TWBlue should retrieve tweets from threads and conversations in a more reliable way. Tweets in the same thread (made by the same author) will be sorted correctly, although replies to the thread (made by different people) may not be ordered in the same way they are displayed in Twitter apps. ([#417](https://github.com/manuelcortez/TWBlue/issues/417))
* When creating a filter, TWBlue will show an error if user has not provided a name for the filter. Before, unnamed filters were a cause of config breaks in the application.
* It is again possible to read the changelog for TWBlue from the help menu in the menu bar.
* fixed a bug when clearing the direct messages buffer. ([#418](https://github.com/manuelcortez/TWBlue/issues/418))
* fixed an issue that was making TWBlue to show incorrectly titles for trending topic buffers upon startup. ([#421](https://github.com/manuelcortez/TWBlue/issues/421))
* fixed an issue that was making users of the graphical user interface to delete a buffer if a trends buffer was opened in the same session.
* Updated Spanish, Japanese and french translations.
## Changes in Version 2021.10.30
* Fixed many errors in the way we compile TWBlue, so users of 64 bits systems and particularly windows 7 users would be able to install TWBlue again. In case of issues with versions prior to 2021.10.30, please remove everything related to TWBlue (except configs) and reinstall the version 2021.10.30 to fix any possible error. This step won't be needed again in 23 months. ([#416,](https://github.com/manuelcortez/TWBlue/issues/416), [#415,](https://github.com/manuelcortez/TWBlue/issues/415))
* fixed an issue that was making impossible to manually add an user to the autocomplete users database.
* Started to improve support to conversations by searching for conversation_id.
## changes in version 2021.10.27
* Added an user alias manager, located in the application menu in the menu bar. From this dialog, it is possible to review, add, edit or remove user aliases for the current account. ([#401](https://github.com/manuelcortez/TWBlue/issues/401))
* TWBlue now closes the VLC player window automatically when a video reaches its end. ([#399](https://github.com/manuelcortez/TWBlue/issues/399))
* After a lot of time, TWBlue now uses a new default Soundpack, called FreakyBlue. This soundpack will be set by default in all new sessions created in the application. Thanks to [Andre Louis](https://twitter.com/FreakyFwoof) for the pack. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
* When reading a tweet, if the tweet contains more than 2 consecutive mentions, TWBlue will announce how many more users the tweet includes, as opposed to read every user in the conversation. You still can display the tweet to read all users.
* In the tweet displayer, It is possible to copy a link to the current tweet or person by pressing a button called "copy link to clipboard".
* Added a keymap capable to work under Windows 11. ([#391](https://github.com/manuelcortez/TWBlue/pull/391))
* Added user aliases to TWBlue. This feature allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. For adding an alias to an user, select the "add alias" option in the user menu, located in the menu bar. This feature works only if you have set display screen names unchecked. Users are displayed with their display name in people buffers only. This action is supported in all keymaps, although it is undefined by default. ([#389](https://github.com/manuelcortez/TWBlue/pull/389))
* There are some changes to the autocomplete users feature:
* Now users can search for twitter screen names or display names in the database.
* It is possible to undefine keystrokes in the current keymap in TWBlue. This allows you, for example, to redefine keystrokes completely.
* We have changed our Geocoding service to the Nominatim API from OpenStreetMap. Addresses present in tweets are going to be determined by this service, as the Google Maps API now requires an API key. ([#390](https://github.com/manuelcortez/TWBlue/issues/390))
* Added a limited version of the Twitter's Streaming API: The Streaming API will work only for tweets, and will receive tweets only by people you follow. Protected users are not possible to be streamed. It is possible that during high tweet traffic, the Stream might get disconnected at times, but TWBlue should be capable of detecting this problem and reconnecting the stream again. ([#385](https://github.com/manuelcortez/TWBlue/pull/385))
* Fixed an issue that made TWBlue to not show a dialog when attempting to show a profile for a suspended user. ([#387](https://github.com/manuelcortez/TWBlue/issues/387))
* Added support for Twitter audio and videos: Tweets which contains audio or videos will be detected as audio items, and you can playback those with the regular command to play audios. ([#384,](https://github.com/manuelcortez/TWBlue/pull/384))
* We just implemented some changes in the way TWBlue handles tweets in order to reduce its RAM memory usage [#380](https://github.com/manuelcortez/TWBlue/pull/380):
* We reduced the tweets size by storing only the tweet fields we currently use. This should reduce tweet's size in memory for every object up to 75%.
* When using the cache database to store your tweets, there is a new setting present in the account settings dialog, in the general tab. This setting allows you to control whether TWBlue will load the whole database into memory (which is the current behaviour) or not.
* Loading the whole database into memory has the advantage of being extremely fast to access any element (for example when moving through tweets in a buffer), but it requires more memory as the tweet buffers grow up. This should, however, use less memory than before thanks to the optimizations performed in tweet objects. If you have a machine with enough memory, this should be a good option for your case.
* If you uncheck this setting, TWBlue will read the whole database from disk. This is significantly slower, but the advantage of this setting is that it will consume almost no extra memory, no matter how big is the tweets dataset. Be ware, though, that TWBlue might start to feel slower when accessing elements (for example when reading tweets) as the buffers grow up. This setting is suggested for computers with low memory or for those people not wanting to keep a really big amount of tweets stored.
* Changed the label in the direct message's text control so it will indicate that the user needs to write the text there, without referring to any username in particular. ([#366,](https://github.com/manuelcortez/TWBlue/issues/366))
* TWBlue will take Shift+F10 again as the contextual menu key in the list of items in a buffer. This stopped working after we have migrated to WX 4.1. ([#353,](https://github.com/manuelcortez/TWBlue/issues/353))
* TWBlue should render correctly retweets of quoted tweets. ([#365,](https://github.com/manuelcortez/TWBlue/issues/365))
* Fixed an error that was causing TWBlue to be unable to output to screen readers at times. ([#369,](https://github.com/manuelcortez/TWBlue/issues/369))
* Fixed autocomplete users feature. ([#367,](https://github.com/manuelcortez/TWBlue/issues/367))
* Fixed error when displaying an URL at the end of a line, when the tweet or direct message contained multiple lines. Now the URL should be displayed correctly. ([#305,](https://github.com/manuelcortez/TWBlue/issues/305) [#272,](https://github.com/manuelcortez/TWBlue/issues/272))
* TWBlue has been migrated completely to Python 3 (currently, the software builds with Python 3.8).
* TWBlue should be restarted gracefully. Before, the application was alerting users of not being closed properly every time the application restarted by itself.
* If TWBlue attemps to load an account with invalid tokens (this happens when reactivating a previously deactivated account, or when access to the ap is revoqued), TWBlue will inform the user about this error and will skip the account. Before, the app was unable to start due to a critical error. ([#328,](https://github.com/manuelcortez/TWBlue/issues/328))
* When sending a direct message, the title of the window will change appropiately when the recipient is edited. ([#276,](https://github.com/manuelcortez/TWBlue/issues/276))
* URL'S in user profiles are expanded automatically. ([#275,](https://github.com/manuelcortez/TWBlue/issues/275))
* TWBlue now uses [Tweepy,](https://github.com/tweepy/tweepy) to connect with Twitter. We have adopted this change in order to support Twitter'S API V 2 in the very near future. ([#333,](https://github.com/manuelcortez/TWBlue/issues/337) [#347](https://github.com/manuelcortez/TWBlue/pull/347))
* TWBlue can upload images in Tweets and replies again. ([#240,](https://github.com/manuelcortez/TWBlue/issues/240))
* Fixed the way we use to count characters in Twitter. The new methods in TWBlue take into account special characters and URLS as documented in Twitter. ([#199,](https://github.com/manuelcortez/TWBlue/issues/199) [#315](https://github.com/manuelcortez/TWBlue/issues/315))
* Proxy support now works as expected.
* Changed translation service from yandex.translate to Google Translator. ([#355,](https://github.com/manuelcortez/TWBlue/issues/355))
* Improved method to load direct messages in the buffers. Now it should be faster due to less calls to Twitter API performed from the client.
* And more. ([#352,](https://github.com/manuelcortez/TWBlue/issues/352))
## Changes in version 0.95
* TWBlue can open a Tweet or user directly in Twitter. There is a new option in the context menu for people and tweet buffers, and also, the shortcut control+win+alt+Enter will open the focused item in Twitter.
* Some keystrokes were remapped in the Windows 10 Keymap:
* Read location of a tweet: Ctrl+Win+G. ([#177](https://github.com/manuelcortez/TWBlue/pull/177))
* Open global settings dialogue: Ctrl+Win+Alt+O.
* Mute/unmute current session: Control + Windows + Alt + M.
* Fixed an error that was preventing TWBlue to load the direct messages buffer if an user who sent a message has been deleted.
* Added support for playing audios posted in [AnyAudio.net](http://anyaudio.net) directly from TWBlue. Thanks to [Sam Tupy](http://www.samtupy.com/)
* Custom buffer ordering will not be reset every time the application restarts after an account setting has been modified.
* When adding or removing an user from a list, it is possible to press enter in the focused list instead of having to search for the "add" or "delete" button.
* Quoted and long tweets are displayed properly in the sent tweets buffer after being send. ([#253](https://github.com/manuelcortez/TWBlue/issues/253))
* Fixed an issue that was making the list manager keystroke unable to be shown in the keystroke editor. Now the keystroke is listed properly. ([#260](https://github.com/manuelcortez/TWBlue/issues/260))
* The volume slider, located in the account settings of TWBlue, now should decrease and increase value properly when up and down arrows are pressed. Before it was doing it in inverted order. ([#261](https://github.com/manuelcortez/TWBlue/issues/261))
* autoreading has been redesigned to work in a similar way for almost all buffers. Needs testing. ([#221](https://github.com/manuelcortez/TWBlue/issues/221))
* When displaying tweets or direct messages, a new field has been added to show the date when the item has been posted to Twitter.
* Added support for deleting direct messages by using the new Twitter API methods.
* When quoting a retweet, the quote will be made to the original tweet instead of the retweet.
* If the sent direct messages buffer is hidden, TWBlue should keep loading everything as expected. ([#246](https://github.com/manuelcortez/TWBlue/issues/246))
* There is a new soundpack, called FreakyBlue (Thanks to [Andre Louis](https://twitter.com/FreakyFwoof)) as a new option in TWBlue. This pack can be the default in the next stable, so users can take a look and share their opinion in snapshot versions. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
* There is a new option in the help menu that allows you to visit the soundpacks section in the TWBlue website. ([#247](https://github.com/manuelcortez/TWBlue/issues/247))
* When reading location of a geotagged tweet, it will be translated for users of other languages. ([#251](https://github.com/manuelcortez/TWBlue/pull/251))
* In the Windows 10 Keymap, the action to read location of a tweet has been remapped to Ctrl+Win+G. ([#177](https://github.com/manuelcortez/TWBlue/pull/177))
* 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 the Twitter.
* 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
@@ -21,14 +113,14 @@
* 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 wether 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))
* 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 wether TWBlue will include everyone in a reply or not, will be unchecked by default.
* 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.
@@ -184,4 +276,4 @@
* New followers and friends buffer for user timelines.
---
Copyright © 2014-2017, Manuel Cortez.
Copyright © 2014-2021, Manuel Cortez.

View File

@@ -2,26 +2,26 @@
""" This script converts the hold documentation (saved in markdown files) in a python file with a list of strings to translate it using gettext."""
def prepare_documentation_in_file(fileSource, fileDest):
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
@fileSource str: A markdown(.md) file.
@fileDest str: A file where this will put the new strings"""
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
@fileSource str: A markdown(.md) file.
@fileDest str: A file where this will put the new strings"""
f1 = open(fileSource, "r")
f2 = open(fileDest, "w")
lns = f1.readlines()
f2.write("# -*- coding: utf-8 -*-\n")
f2.write("documentation = [\n")
for i in lns:
if "\n" == i:
newvar = "\"\","
elif "\n" == i[-1]:
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i[:-1])
else:
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i)
f2.write(newvar)
f1.close()
f2.write("]")
f2.close()
f1 = open(fileSource, "r", encoding="utf-8")
f2 = open(fileDest, "w", encoding="utf-8")
lns = f1.readlines()
f2.write("# -*- coding: utf-8 -*-\n")
f2.write("documentation = [\n")
for i in lns:
if "\n" == i:
newvar = "\"\",\n"
elif "\n" == i[-1]:
newvar = "_(\"\"\"%s\"\"\"),\n" % (i[:-1])
else:
newvar = "_(\"\"\"%s\"\"\"),\n" % (i)
f2.write(newvar)
f1.close()
f2.write("]")
f2.close()
prepare_documentation_in_file("manual.md", "strings.py")

View File

@@ -1,60 +1,87 @@
# -*- 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
import changelog
from importlib import reload
# the list of supported language codes of TW Blue
languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da"]
#"eu", "ar", "ca", "es", "fi", "fr", "gl", "hu", "it", "pl", "pt", "ru", "tr"]
# Languages already translated or translating the documentation.
documentation_languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da", "sr"]
def generate_document(language, document_type="documentation"):
reload(languageHandler)
if document_type == "documentation":
translation_file = "twblue-documentation"
languageHandler.setLanguage(language, translation_file)
reload(strings)
markdown_file = markdown.markdown("\n".join(strings.documentation[1:]), extensions=["markdown.extensions.toc"])
title = strings.documentation[0]
filename = "manual.html"
elif document_type == "changelog":
translation_file = "twblue-changelog"
languageHandler.setLanguage(language, translation_file)
reload(changelog)
markdown_file = markdown.markdown("\n".join(changelog.documentation[1:]), extensions=["markdown.extensions.toc"])
title = changelog.documentation[0]
filename = "changelog.html"
first_html_block = """<!doctype html>
<html lang="%s">
<head>
<title>%s</title>
<meta charset="utf-8">
</head>
<body>
<header><h1>%s</h1></header>
""" % (language, title, title)
first_html_block = first_html_block+ markdown_file
first_html_block = first_html_block + "\n</body>\n</html>"
if not os.path.exists(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()
# Changelog translated languages.
changelog_languages = ["en", "ca", "de", "es", "eu", "fr", "gl", "ja", "ro", "ru", "sr"]
# this function will help us to have both strings.py and changelog.py without issues by installing a global dummy translation function.
def install_null_translation(name):
_ = gettext.NullTranslations()
_.install()
return
def get_translations(name):
""" Create translation instances for every language of the translated document. """
translations = {}
if "documentation" in name:
langs = documentation_languages
else:
langs = changelog_languages
for l in langs:
if l != "en":
_ = gettext.translation(name, os.path.join(paths.app_path(), "locales"), languages=[l])
translations[l] = _
else:
_ = gettext.NullTranslations()
translations[l] = _
return translations
def generate_document(lang, lang_name, document_type="documentation"):
""" Generates a document by using the provided lang object, which should be a translation, and lang_name, which should be the two letter code representing the language. """
if document_type == "documentation":
translation_file = "twblue-documentation"
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in strings.documentation[1:]]), extensions=["markdown.extensions.toc"])
title = lang.gettext(strings.documentation[0])
filename = "manual.html"
elif document_type == "changelog":
translation_file = "twblue-changelog"
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in changelog.documentation[1:]]), extensions=["markdown.extensions.toc"])
title = lang.gettext(changelog.documentation[0])
filename = "changelog.html"
first_html_block = """<!doctype html>
<html lang="%s">
<head>
<title>%s</title>
<meta charset="utf-8">
</head>
<body>
<header><h1>%s</h1></header>
""" % (lang_name, title, title)
first_html_block = first_html_block+ markdown_file
first_html_block = first_html_block + "\n</body>\n</html>"
if not os.path.exists(os.path.join("documentation", lang_name)):
os.mkdir(os.path.join("documentation", lang_name))
mdfile = open(os.path.join("documentation", lang_name, filename), "w", encoding="utf-8")
mdfile.write(first_html_block)
mdfile.close()
def create_documentation():
print("Creating documentation in the supported languages...\n")
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)
generate_document(i, "changelog")
print("Done")
changelog_translations = get_translations("twblue-changelog")
documentation_translations = get_translations("twblue-documentation")
print("Creating documentation in the supported languages...\n")
if not os.path.exists("documentation"):
os.mkdir("documentation")
if os.path.exists(os.path.join("documentation", "license.txt")) == False:
shutil.copy(os.path.join("..", "license.txt"), os.path.join("documentation", "license.txt"))
for i in documentation_languages:
print("Creating documentation for: %s" % (i,))
generate_document(lang_name=i, lang=documentation_translations.get(i))
for i in changelog_languages:
print("Creating changelog for: %s" % (i,))
generate_document(lang_name=i, lang=changelog_translations.get(i), document_type="changelog")
print("Done")
install_null_translation("twblue-documentation")
import strings
import changelog
create_documentation()

View File

@@ -1,176 +0,0 @@
import __builtin__
import os
import sys
import ctypes
import locale
import gettext
#import paths
import platform
# A fix for the mac locales
if platform.system() != 'Windows':
if locale.getlocale()[0] is None:
locale.setlocale(locale.LC_ALL, 'en_US')
#a few Windows locale constants
LOCALE_SLANGUAGE=0x2
LOCALE_SLANGDISPLAYNAME=0x6f
curLang="en"
def localeNameToWindowsLCID(localeName):
"""Retreave the Windows locale identifier (LCID) for the given locale name
@param localeName: a string of 2letterLanguage_2letterCountry or or just 2letterLanguage
@type localeName: string
@returns: a Windows LCID
@rtype: integer
"""
#Windows Vista is able to convert locale names to LCIDs
func_LocaleNameToLCID=getattr(ctypes.windll.kernel32,'LocaleNameToLCID',None)
if func_LocaleNameToLCID is not None:
localeName=localeName.replace('_','-')
LCID=func_LocaleNameToLCID(unicode(localeName),0)
else: #Windows doesn't have this functionality, manually search Python's windows_locale dictionary for the LCID
localeName=locale.normalize(localeName)
if '.' in localeName:
localeName=localeName.split('.')[0]
LCList=[x[0] for x in locale.windows_locale.iteritems() if x[1]==localeName]
if len(LCList)>0:
LCID=LCList[0]
else:
LCID=0
return LCID
def getLanguageDescription(language):
"""Finds out the description (localized full name) of a given local name"""
desc=None
if platform.system() == "Windows":
LCID=localeNameToWindowsLCID(language)
if LCID!=0:
buf=ctypes.create_unicode_buffer(1024)
if '_' not in language:
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGDISPLAYNAME,buf,1024)
else:
res=0
if res==0:
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGUAGE,buf,1024)
desc=buf.value
elif platform.system() == "Linux" or not desc:
desc={
"am":pgettext("languageName","Amharic"),
"an":pgettext("languageName","Aragonese"),
"es":pgettext("languageName","Spanish"),
"pt":pgettext("languageName","Portuguese"),
"ru":pgettext("languageName","Russian"),
"it":pgettext("languageName","italian"),
"tr":pgettext("languageName","Turkey"),
"gl":pgettext("languageName","Galician"),
"ca":pgettext("languageName","Catala"),
"eu":pgettext("languageName","Vasque"),
"pl":pgettext("languageName","polish"),
"ar":pgettext("languageName","Arabic"),
"ne":pgettext("languageName","Nepali"),
"sr":pgettext("languageName","Serbian (Latin)"),
}.get(language,None)
return desc
def getAvailableLanguages():
"""generates a list of locale names, plus their full localized language and country names.
@rtype: list of tuples
"""
#Make a list of all the locales found in NVDA's locale dir
l=[x for x in os.listdir("locales") if not x.startswith('.')]
l=[x for x in l if os.path.isfile('locales/%s/LC_MESSAGES/twblue-documentation.mo' % x)]
#Make sure that en (english) is in the list as it may not have any locale files, but is default
if 'en' not in l:
l.append('en')
l.sort()
#For each locale, ask Windows for its human readable display name
d=[]
for i in l:
desc=getLanguageDescription(i)
label="%s, %s"%(desc,i) if desc else i
d.append(label)
#include a 'user default, windows' language, which just represents the default language for this user account
l.append("system")
# Translators: the label for the Windows default NVDA interface language.
d.append(_("User default"))
#return a zipped up version of both the lists (a list with tuples of locale,label)
return zip(l,d)
def makePgettext(translations):
"""Obtaina pgettext function for use with a gettext translations instance.
pgettext is used to support message contexts,
but Python 2.7's gettext module doesn't support this,
so NVDA must provide its own implementation.
"""
if isinstance(translations, gettext.GNUTranslations):
def pgettext(context, message):
message = unicode(message)
try:
# Look up the message with its context.
return translations._catalog[u"%s\x04%s" % (context, message)]
except KeyError:
return message
else:
def pgettext(context, message):
return unicode(message)
return pgettext
def setLanguage(lang, translation_file="twblue-documentation"):
system = platform.system()
global curLang
try:
if lang=="system":
if system == "Windows":
windowsLCID=ctypes.windll.kernel32.GetUserDefaultUILanguage()
localeName=locale.windows_locale[windowsLCID]
else:
localeName=locale.getlocale()[0]
trans=gettext.translation(translation_file, localedir="locales", languages=[localeName])
curLang=localeName
else:
trans=gettext.translation(translation_file, localedir="locales", languages=[lang])
curLang=lang
localeChanged=False
#Try setting Python's locale to lang
try:
locale.setlocale(locale.LC_ALL, lang)
localeChanged=True
except:
pass
if not localeChanged and '_' in lang:
#Python couldn'tsupport the language_country locale, just try language.
try:
locale.setlocale(locale.LC_ALL, lang.split('_')[0])
except:
pass
#Set the windows locale for this thread (NVDA core) to this locale.
if system == "Windows":
LCID=localeNameToWindowsLCID(lang)
ctypes.windll.kernel32.SetThreadLocale(LCID)
except IOError:
trans=gettext.translation(translation_file,fallback=True)
curLang="en"
trans.install(unicode=True)
# Install our pgettext function.
__builtin__.__dict__["pgettext"] = makePgettext(trans)
def getLanguage():
return curLang
def normalizeLanguage(lang):
"""
Normalizes a language-dialect string in to a standard form we can deal with.
Converts any dash to underline, and makes sure that language is lowercase and dialect is upercase.
"""
lang=lang.replace('-','_')
ld=lang.split('_')
ld[0]=ld[0].lower()
#Filter out meta languages such as x-western
if ld[0]=='x':
return None
if len(ld)>=2:
ld[1]=ld[1].upper()
return "_".join(ld)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue documentation 0.89\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2017-03-25 15:15+0100\n"
"Last-Translator: Joan Rabat <joanrabat@hotmail.com>\n"
"Language-Team: Francisco Torres Gallego <frantorresgallego@gmail.com>\n"

View File

@@ -5,16 +5,16 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"PO-Revision-Date: 2017-12-11 09:17-0600\n"
"Last-Translator: \n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-11-17 10:25+0100\n"
"Last-Translator: Nicolai Svendsen <chojiro1990@gmail.com>\n"
"Language-Team: \n"
"Language: da\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.2\n"
"X-Generator: Poedit 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../doc/strings.py:3
@@ -110,7 +110,6 @@ msgid "## Usage"
msgstr "## Brug"
#: ../doc/strings.py:21
#, fuzzy
msgid ""
"Twitter is a social networking or micro-blogging tool which allows you to "
"compose short status updates of your activities in 280 characters or less. "
@@ -120,7 +119,7 @@ msgid ""
"anyone to access them."
msgstr ""
"Twitter er et socialt netværk eller mikro-blogging-værktøj, der giver dig "
"mulighed for at skrive korte statusopdateringer om dine aktiviteter i 140 "
"mulighed for at skrive korte statusopdateringer om dine aktiviteter på 280 "
"tegn eller mindre. Twitter er en måde for venner, familie og kollegaer til "
"at kommunikere og holde kontakten gennem udveksling af hurtige, hyppige "
"meddelelser. Du kan begrænse levering af opdateringer til dem i din cirkel "
@@ -170,7 +169,7 @@ msgstr ""
#: ../doc/strings.py:25
msgid "### Authorising the application"
msgstr "### Tillad applikationen"
msgstr "### Godkend applikationen"
#: ../doc/strings.py:26
msgid ""
@@ -222,8 +221,8 @@ msgid ""
"Enter your username and password into the appropriate edit fields if you're "
"not already logged in, select the authorise button, and press it."
msgstr ""
"Standardbrowseren åbnes på Twitter-siden for at anmode om tilladelse. "
"Indtast dit Brugernavn og adgangskode i de passende redigeringsfelterne hvis "
"Standardbrowseren åbnes på Twitter-siden for at anmode om godkendelse. "
"Indtast dit Brugernavn og adgangskode i de passende redigeringsfelter, hvis "
"du ikke allerede er logget ind. Vælg så knappen Godkend, og tryk den."
#: ../doc/strings.py:29
@@ -266,7 +265,7 @@ msgid ""
"sound, and the screen reader will say \"ready\" (this behaviour can be "
"configured)."
msgstr ""
"Når processen er afsluttet, vil programmet afspilles en anden lyd som "
"Når processen er afsluttet, vil programmet afspille en anden lyd som "
"standard og skærmlæseren vil sige “Klar” (denne adfærd kan blive "
"konfigureret)."
@@ -352,7 +351,7 @@ msgstr "* Sendte tweets: Denne viser alle tweets sendt fra din konto."
#: ../doc/strings.py:43
msgid "* Likes: here you will see all the tweets you have liked."
msgstr "* Synes godt om: Her vil du se alle de tweets, du har synes godt om."
msgstr "* Synes godt om: Her vil du se alle de tweets, du synes godt om."
#: ../doc/strings.py:44
msgid ""
@@ -422,7 +421,7 @@ msgid ""
"geographical region. This region may be a country or a city. Trends are "
"updated every five minutes."
msgstr ""
"* Trending emner: Denne buffer viser top ti mest anvendte udtryk i et "
"* Trending emner: Denne buffer viser top ti mest anvendte ord i et "
"geografisk område. Dette område kan være et land eller en by. Trends "
"opdateres hvert femte minut."
@@ -494,8 +493,8 @@ msgid ""
"* a menu bar accomodating six menus (application, tweet, user, buffer, "
"audio and help);"
msgstr ""
"* en menu bar der består af seks menuer (Applikation, tweet, bruger, buffer, "
"lyd og hjælp);"
"* en menulinje der består af seks menuer (Applikation, tweet, bruger, "
"buffer, lyd og hjælp);"
#: ../doc/strings.py:59
msgid "* One tree view,"
@@ -533,7 +532,6 @@ msgid "#### Buttons in the application"
msgstr "### Knapper i programmet"
#: ../doc/strings.py:65
#, fuzzy
msgid ""
"* 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 "
@@ -550,7 +548,7 @@ msgid ""
"message in English describing the problem."
msgstr ""
"* Tweet: Denne knap åbner en dialogboks hvor du kan skrive dit tweet. "
"Normale tweets må ikke overstige 140 tegn. Du kan dog markere checkboksen "
"Normale tweets må ikke overstige 280 tegn. Du kan dog markere checkboksen "
"“Lang tweet”, og dit tweet vil blive sendt gennem Twishort, som tillader dig "
"at skrive længere tweets (10000 tegn). Hvis du skriver og overstiger denne "
"grænse, afspilles en lyd for at advare dig. Bemærk at antallet af indtastede "
@@ -1762,14 +1760,12 @@ msgid "## Credits"
msgstr "## Krediteringer"
#: ../doc/strings.py:238
#, fuzzy
msgid ""
"TWBlue is developed and maintained by [Manuel Cortéz](https://twitter.com/"
"manuelcortez00) and [José Manuel Delicado](https://twitter.com/jmdaweb)."
msgstr ""
"TWBlue er udviklet og vedligeholdt af [Manuel Cort\\303\\251z](https://"
"twitter.com/manuelcortez00) og [Jos\\303\\251 Manuel Delicado](https://"
"twitter.com/jmdaweb)."
"TWBlue et udviklet og vedligeholdt af [Manuel Cortéz](https://twitter.com/"
"manuelcortez00) and [José Manuel Delicado](https://twitter.com/jmdaweb)."
#: ../doc/strings.py:239
msgid ""
@@ -1796,31 +1792,24 @@ msgid "* Catalan: [Francisco Torres](https://twitter.com/ftgalleg)"
msgstr "* Catalansk: [Francisco Torres](https://twitter.com/ftgalleg)"
#: ../doc/strings.py:243
#, fuzzy
msgid "* Croatian: [Zvonimir Stanečić](https://twitter.com/zvonimirek222)."
msgstr ""
"* Kroatisk: [Zvonimir Stane\\304\\215i\\304\\207](https://twitter.com/"
"zvonimirek222)."
msgstr "* Kroatisk: [Zvonimir Stanečić](https://twitter.com/zvonimirek222)."
#: ../doc/strings.py:244
#, fuzzy
msgid "* English: [Manuel Cortéz](https://twitter.com/manuelcortez00)."
msgstr ""
"* Engelsk: [Manuel Cort\\303\\251z](https://twitter.com/manuelcortez00)."
msgstr "* Engelsk: [Manuel Cortéz](https://twitter.com/manuelcortez00)."
#: ../doc/strings.py:245
msgid "* Finnish: [Jani Kinnunen](https://twitter.com/jani_kinnunen)."
msgstr "* Finsk: [Jani Kinnunen](https://twitter.com/jani_kinnunen)."
#: ../doc/strings.py:246
#, fuzzy
msgid "* French: [Rémy Ruiz](https://twitter.com/blindhelp38)."
msgstr "* Fransk: [R\\303\\251my Ruiz](https://twitter.com/blindhelp38)."
msgstr "* Fransk: [Rémy Ruiz](https://twitter.com/blindhelp38)."
#: ../doc/strings.py:247
#, fuzzy
msgid "* Galician: [Juan Buño](https://twitter.com/Quetzatl_)."
msgstr "* Galicisk: [Juan Bu\\303\\261o](https://twitter.com/Quetzatl_)."
msgstr "* Galicisk: [Juan Buño](https://twitter.com/Quetzatl_)."
#: ../doc/strings.py:248
msgid "* German: [Steffen Schultz](https://twitter.com/schulle4u)."
@@ -1843,44 +1832,37 @@ msgid "* Polish: [Pawel Masarczyk.](https://twitter.com/Piciok)"
msgstr "* Polsk: [Pawel Masarczyk.](https://twitter.com/Piciok)"
#: ../doc/strings.py:253
#, fuzzy
msgid "* Portuguese: [Odenilton Júnior Santos.](https://twitter.com/romaleif)"
msgstr ""
"* Portugisisk: [Odenilton J\\303\\272nior Santos.](https://twitter.com/"
"romaleif)"
"* Portugisisk: [Odenilton Júnior Santos.](https://twitter.com/romaleif)"
#: ../doc/strings.py:254
#, fuzzy
msgid ""
"* Romanian: [Florian Ionașcu](https://twitter.com/florianionascu7) and "
"[Nicușor Untilă](https://twitter.com/dj_storm2001)"
msgstr ""
"* Rumænsk: [Florian Iona\\310\\231cu](https://twitter.com/florianionascu7) "
"og [Nicu\\310\\231or Until\\304\\203](https://twitter.com/dj_storm2001)"
"* Rumænsk: [Florian Ionașcu](https://twitter.com/florianionascu7) and "
"[Nicușor Untilă](https://twitter.com/dj_storm2001)"
#: ../doc/strings.py:255
msgid ""
"* Russian: [Наталья Хедлунд](https://twitter.com/Lifestar_n) and [Валерия "
"Кузнецова](https://twitter.com/ValeriaK305)."
msgstr ""
"* Russisk: [Наталья Хедлунд](https://twitter.com/Lifestar_n) and [Валерия "
"Кузнецова](https://twitter.com/ValeriaK305)."
#: ../doc/strings.py:256
#, fuzzy
msgid "* Serbian: [Aleksandar Đurić](https://twitter.com/sokodtreshnje)"
msgstr ""
"* Serbisk: [Aleksandar \\304\\220uri\\304\\207](https://twitter.com/"
"sokodtreshnje)"
msgstr "* Serbisk: [Aleksandar Đurić](https://twitter.com/sokodtreshnje)"
#: ../doc/strings.py:257
#, fuzzy
msgid "* Spanish: [Manuel Cortéz](https://twitter.com/manuelcortez00)."
msgstr ""
"* Spansk: [Manuel Cort\\303\\251z](https://twitter.com/manuelcortez00)."
msgstr "* Spansk: [Manuel Cortéz](https://twitter.com/manuelcortez00)."
#: ../doc/strings.py:258
#, fuzzy
msgid "* Turkish: [Burak Yüksek](https://twitter.com/burakyuksek)."
msgstr "* Tyrkisk: [Burak Y\\303\\274ksek](https://twitter.com/burakyuksek)."
msgstr "* Tyrkisk: [Burak Yüksek](https://twitter.com/burakyuksek)."
#: ../doc/strings.py:259
msgid ""
@@ -1910,9 +1892,8 @@ msgid "------------------------------------------------------------------------"
msgstr "————————————————————————————————————"
#: ../doc/strings.py:261
#, fuzzy
msgid "Copyright © 2013-2017. Manuel Cortéz"
msgstr "Copyright \\302\\251 2013-2017. Manuel Cort\\303\\251z"
msgstr "Copyright © 2013-2017. Manuel Cortéz"
#~ msgid ""
#~ "* Russian: "

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TWBlue Documentation\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-08 11:01+0200\n"
"Last-Translator: Steffen Schultz <schulle3o@yahoo.de>\n"
"Language-Team: Steffen Schultz <schulle3o@yahoo.de>\n"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue documentation 0.46\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2015-11-27 08:33-0600\n"
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
"Language-Team: Sukil Echenique <sukiletxe@yahoo.es>\n"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue documentation 0.88\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-11 12:25+0200\n"
"Last-Translator: Rémy Ruiz <remyruiz@gmail.com>\n"
"Language-Team: Rémy Ruiz <remyruiz@gmail.com>\n"

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: tw blue documentation 0.46\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-08 11:34+0100\n"
"Last-Translator: Juan C. Buño <oprisniki@gmail.com>\n"
"Language-Team: Alba Quinteiro <alba_080695@hotmail.com>\n"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue documentation 0.46\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-09 11:51+0100\n"
"Last-Translator: Chris Leo Mameli <llajta2012@gmail.com>\n"
"Language-Team: \n"

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-08 19:09+0900\n"
"Last-Translator: Masamitsu Misono <misono@nvsupport.org>\n"
"Language-Team: NVDA Help Desk <nvdahelp@center-aikoh.net>\n"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: twblue-documentation 0.46\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-08 10:32+0300\n"
"Last-Translator: Florian Ionașcu <florianionascu@hotmail.com>\n"
"Language-Team: Spanish <manuel@manuelcortez.net>\n"

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: TW Blue documentation 0.46\n"
"POT-Creation-Date: 2018-08-07 13:19+Hora de verano central (Mexico)\n"
"POT-Creation-Date: 2019-03-17 13:34\n"
"PO-Revision-Date: 2018-08-14 21:44+0400\n"
"Last-Translator: Valeria <luciana.lu3a@gmail.com>\n"
"Language-Team: \n"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
Documentation for TWBlue - 0.88
Documentation for TWBlue
## Table of contents
@@ -42,7 +42,7 @@ You can log into several Twitter accounts simultaneously. The program refers to
Your default browser will open on the Twitter page to request authorisation. Enter your username and password into the appropriate edit fields if you're not already logged in, select the authorise button, and press it.
Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. Now you are able to close the page by pressing ALT+F4 which will return you to the Session Manager. On the session list, you will see a new item temporarily called "Authorised account x" -where x is a number. The session name will change once you open that session.
Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. On this page, you will be shown a code composed of several numbers that you must paste in the TWBlue authorization dialogue in order to allow the application to access your account. Once you have pasted the code in the corresponding text field, press enter to finish the account setup and go back to the session manager. On the session list, you will see a new item temporarily called "Authorised account x" -where x is a number. The session name will change once you open that session.
To start running TWBlue, press the Ok button in the Session Manager dialogue. By default, the program starts all the configured sessions automatically, however, you can change this behavior.
@@ -56,7 +56,7 @@ Before starting to describe TWBlue's usage, we'll explain some concepts that wil
### Buffer
A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which this program works with: Tweets, direct messages, users, trends or events. According to the buffer you are focusing, you will be able to do different actions with these items.
A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which this program works with: Tweets, direct messages, users, trends or. According to the buffer you are focusing, you will be able to do different actions with these items.
The following is a description for every one of TWBlue's buffers and the kind of items they work with.
@@ -69,17 +69,17 @@ The following is a description for every one of TWBlue's buffers and the kind of
* Followers: when users follow you, you'll be able to see them on this buffer, with some of their account details.
* Friends: the same as the previous buffer, but these are the users you follow.
* User timelines: these are buffers you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like.
* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their likes list, or when you subscribe to a list. There are many more, but the program shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account.
* Lists: A list is similar to a user timeline, except that you can configure it to contain tweets from multiple users.
* Search: A search buffer contains the results of a search operation.
* User likes: You can have the program create a buffer containing tweets liked by a particular user.
* Followers or following timeline: You can have TWBlue create a buffer containing all users who follow, or are followed by a specific user.
* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes.
If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains audio, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains the \#audio hashtag, but there may be tweets which contain audio without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it.
If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains video or audio, including live stream content, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains video metadata or the \#audio hashtag, but there may be tweets which contain media without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it.
### Username fields
These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message and the user actions dialogue boxes. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username.
These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message, the user actions dialogue and the user alias dialogue boxes, to name a few examples. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username.
## The program's interfaces
@@ -98,9 +98,9 @@ In summary, the GUI contains two core components. These are the controls you wil
#### Buttons in the application
* Tweet: this button opens up a dialogue box to write your tweet. Normal tweets must not exceed 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.
* Tweet: this button opens up a dialogue box to write your tweet. Normal tweets must not exceed 280 characters. However you can press the long tweet checkbox and your tweet will be posted throught Twishort, wich will allow you to write longer tweets (10000 characters). If you write past this limit, a sound will play to warn you. Note that the character count is displayed in the title bar. You can upload a picture, check spelling, attach audio or translate your message by selecting one of the available buttons in the dialogue box. In addition, you can autocomplete the entering of users by pressing Alt + C or the button for that purpose if you have the database of users configured. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will speak an error message in English describing the problem.
* Retweet: this button retweets the message you're reading. After you press it, if you haven't configured the application not to do so, you'll be asked if you want to add a comment or simply send it as written. If you choose to add a comment, it will post a quoted tweet, that is, the comment with a link to the originating tweet.
* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting. If there are more users referred to in the tweet, you can press tab and activate the mention to all checkbox, or enabling checkbox for the users you want to mention separately. When you're on the friends or followers lists, the button will be called mention instead.
* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting. If there are more users referred to in the tweet, you can press tab and activate the mention to all checkbox, or enabling checkbox for the users you want to mention separately. Note, however, that sometimes -especially when replying to a retweet or quoted tweet, the user who made the retweet or quote may also be mentioned. This is done by Twitter automatically. When you're on the friends or followers lists, the button will be called mention instead.
* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab twice to see the recipient. If there were other users mentioned in the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign. In addition, you can autocomplete the entering of users by pressing Alt + C or the button for that purpose if you have the database of users configured.
Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, likes and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists the direct message, tweet, and mention buttons will be available.
@@ -116,6 +116,7 @@ Visually, Towards the top of the main application window, can be found a menu ba
* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details.
* Search: shows a dialogue box where you can search for tweets or users on Twitter.
* Lists Manager: This dialogue box allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to user timelines.
* Manage user aliases: Opens up a dialogue where you can manage user aliases for the active session. In this dialog you can add new aliases, as well as edit and delete existing ones.
* Edit keystrokes: this opens a dialogue where you can see and edit the shortcuts used in the invisible interface.
* Account settings: Opens a dialogue box which lets you customize settings for the current account.
* Global settings: Opens a dialogue which lets you configure settings for the entire application.
@@ -145,6 +146,7 @@ Visually, Towards the top of the main application window, can be found a menu ba
* Ignore tweets from this client: Adds the client from which the focused tweet was sent to the ignored clients list.
* View timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you invoke this option relative to a user that has no tweets, the operation will fail. If you try creating an existing timeline the program will warn you and will not create it again.
* Direct message: same action as the button.
* Add Alias: An user alias allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. This feature works only if you have set display screen names unchecked, in account settings.
* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. In the dialogue box that opens after selecting the user, you will be asked to select the list you wish to add the user to. Thereafter, the list will contain a new member and their tweets will be displayed there.
* Remove from list: lets you remove a user from a list.
* View lists: Shows the lists created by a specified user.
@@ -153,8 +155,12 @@ Visually, Towards the top of the main application window, can be found a menu ba
##### Buffer menu
* Update buffer: Retrieves the newest items for the focused buffer. Normally, every buffer gets updated every couple of minutes, however you can force a specific buffer to be updated inmediately. Take into account, however, that the usage of this option repeatedly might exceed your allowed Twitter's API usage, in which case you would have to wait until it gets reset, tipycally within the next 15 minutes.
* New trending topics buffer: This opens a buffer to get the worlwide trending topics or those of a country or a city. You'll be able to select from a dialogue box if you wish to retrieve countries' trends, cities' trends or worldwide trends (this option is in the cities' list) and choose one from the selected list. The trending topics buffer will be created once the "OK" button has been activated within the dialogue box. Remember this kind of buffer will be updated every five minutes.
* Load previous items: This allows more items to be loaded for the specified buffer.
* Create filter: Creates a filter in the current buffer. Filters allow loading or ignoring tweets that meet certain conditions into a buffer. You can, for example, set a filter in the "home" buffer that loads tweets that are in English language only. By default, the filter creation dialog will place the focus on the field to name the filter. Currently, you can filter by word, by language, or both. In the filter by word, you can make TWBlue allow or ignore tweets with the desired word. In the filter by language, you can make the program load tweets in the languages you want, or ignore tweets written in certain languages. Once created, every filter will be saved in the session config and will be kept across application restarts.
* Manage filters: Opens up a dialogue which allows you to delete filters for the current session.
* Find a string in the currently focused buffer: Opens a dialogue where you can search for items in the current buffer.
* Mute: Mutes notifications of a particular buffer so you will not hear when new tweets arrive.
* autoread: When enabled, the screen reader or SAPI 5 Text to Speech voice (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets.
* Clear buffer: Deletes all items from the buffer.
@@ -173,6 +179,8 @@ Visually, Towards the top of the main application window, can be found a menu ba
* What's new in this version?: opens up a document with the list of changes from the current version to the earliest.
* Check for updates: every time you open the program it automatically checks for new versions. If an update is available, it will ask you if you want to download the update. If you accept, the updating process will commence. When complete, TWBlue will be restarted. This item checks for new updates without having to restart the application.
* TWBlue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TWBlue and become a part of the community.
* Get soundpacks for TWBlue:
* Make a Donation: Opens a website from which you can donate to the TWBlue project. Donations are made through paypal and you don't need an account to donate.
* About TWBlue: shows the credits of the program.
### The invisible user interface
@@ -350,4 +358,4 @@ Many thanks also to the people who worked on the documentation. Initially, [Manu
------------------------------------------------------------------------
Copyright © 2013-2017. Manuel Cortéz
Copyright © 2013-2021. Manuel Cortéz

67
doc/paths.py Normal file
View 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

View File

@@ -5,19 +5,6 @@ return "key\0";
char *get_api_secret(){
return "secret_key\0";
}
char *get_dropbox_api_key(){
return "key\0";
}
char *get_dropbox_api_secret(){
return "secret_key\0";
}
char *get_twishort_api_key(){
return "key\0";
}
char *get_bts_user(){
return "user\0";
}
char *get_bts_password(){
return "pass\0";
}

View File

@@ -3,10 +3,6 @@
char *get_api_key();
char *get_api_secret();
char *get_dropbox_api_key();
char *get_dropbox_api_secret();
char *get_twishort_api_key();
char *get_bts_user();
char *get_bts_password();
#endif

View File

@@ -20,8 +20,8 @@ CommercialUse=true
EULAVersion=2
[Version]
PackageVersion=0.94.0.0
DisplayVersion=0.94
PackageVersion=0.95.0.0
DisplayVersion=0.95
[Control]
Icons=1

View File

@@ -1,4 +1,5 @@
wxpython
wheel
six
configobj
markdown
@@ -7,19 +8,47 @@ requests
oauthlib
requests-oauthlib
requests-toolbelt
pypubsub==3.3.0
pygeocoder
pypubsub
geopy
arrow
python-dateutil
futures
winpaths
PySocks
win_inet_pton
yandex.translate
idna
# 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
py2exe_py2
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
View 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()

View File

@@ -14,11 +14,11 @@ SetCompress auto
SetCompressor /solid lzma
SetDatablockOptimize on
VIAddVersionKey ProductName "TWBlue"
VIAddVersionKey LegalCopyright "Copyright 2018 Manuel Cortéz."
VIAddVersionKey ProductVersion "0.94"
VIAddVersionKey FileVersion "0.94"
VIProductVersion "0.94.0.0"
VIFileVersion "0.94.0.0"
VIAddVersionKey LegalCopyright "Copyright 2014-2022 MCV Software."
VIAddVersionKey ProductVersion "0.95.0"
VIAddVersionKey FileVersion "0.95.0"
VIProductVersion "0.95.0"
VIFileVersion "0.95.0"
!insertmacro MUI_PAGE_WELCOME
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_LICENSE "license.txt"
@@ -27,12 +27,12 @@ var StartMenuFolder
!insertmacro MUI_PAGE_STARTMENU startmenu $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_LINK "Visit TWBlue website"
!define MUI_FINISHPAGE_LINK_LOCATION "http://twblue.es"
!define MUI_FINISHPAGE_LINK_LOCATION "https://twblue.es"
!define MUI_FINISHPAGE_RUN "$INSTDIR\TWBlue.exe"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "Italian"
@@ -72,10 +72,10 @@ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "D
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" "InstallLocation" $INSTDIR
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" "Publisher" "Manuel Cortéz"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "DisplayVersion" "0.94"
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" 94
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
View 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()

View File

@@ -12,15 +12,16 @@ reverse_timelines = boolean(default=False)
announce_stream_status = boolean(default=True)
retweet_mode = string(default="ask")
persist_size = integer(default=0)
load_cache_in_memory=boolean(default=True)
show_screen_names = boolean(default=False)
buffer_order = list(default=list('home','mentions', 'dm', 'sent_dm', 'sent_tweets','favorites','followers','friends','blocks','muted','events'))
buffer_order = list(default=list('home','mentions', 'dm', 'sent_dm', 'sent_tweets','favorites','followers','friends','blocks','muted'))
[sound]
volume = float(default=1.0)
input_device = string(default="Default")
output_device = string(default="Default")
session_mute = boolean(default=False)
current_soundpack = string(default="default")
current_soundpack = string(default="FreakyBlue")
indicate_audio = boolean(default=True)
indicate_geo = boolean(default=True)
indicate_img = boolean(default=True)
@@ -47,4 +48,12 @@ ocr_language = string(default="")
braille_reporting = boolean(default=True)
speech_reporting = boolean(default=True)
[templates]
tweet = string(default="$display_name, $text $image_descriptions $date. $source")
dm = string(default="$sender_display_name, $text $date")
dm_sent = string(default="Dm to $recipient_display_name, $text $date")
person = string(default="$display_name (@$screen_name). $followers followers, $following following, $tweets tweets. Joined Twitter $created_at.")
[filters]
[user-aliases]

View File

@@ -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)]

View File

@@ -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

View File

@@ -1,42 +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:
a=output()
self.outputs.append(a)
except:
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)
output.braille(*args, **kwargs)
def is_system_output(self):
output = self.get_first_available_output()
if output:
return output.is_system_output()

View File

@@ -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

Some files were not shown because too many files have changed in this diff Show More