Compare commits

..

603 Commits

Author SHA1 Message Date
José Manuel Delicado
5fd45b5343 Merge pull request #828 from MCV-Software/dependabot/pip/coverage-7.10.4
Some checks failed
Update translation files / update_catalogs (push) Failing after 1m39s
Bump coverage from 7.10.3 to 7.10.4
2025-08-19 12:24:59 +02:00
dependabot[bot]
706c863cd8 Bump coverage from 7.10.3 to 7.10.4
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.10.3 to 7.10.4.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.10.3...7.10.4)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.10.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 10:23:04 +00:00
José Manuel Delicado
a7942c4ffe Merge pull request #827 from MCV-Software/dependabot/pip/mastodon-py-2.1.0
Bump mastodon-py from 2.0.1 to 2.1.0
2025-08-19 12:16:12 +02:00
dependabot[bot]
7a4d0b9bf1 Bump mastodon-py from 2.0.1 to 2.1.0
Bumps [mastodon-py](https://github.com/halcy/Mastodon.py) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/halcy/Mastodon.py/releases)
- [Changelog](https://github.com/halcy/Mastodon.py/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/halcy/Mastodon.py/compare/v2.0.1...v2.1.0)

---
updated-dependencies:
- dependency-name: mastodon-py
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 10:14:24 +00:00
José Manuel Delicado
db8983e469 Merge pull request #825 from MCV-Software/dependabot/pip/requests-2.32.5
Bump requests from 2.32.4 to 2.32.5
2025-08-19 12:05:20 +02:00
José Manuel Delicado
1393813c4e Merge pull request #826 from MCV-Software/dependabot/pip/blurhash-1.1.5
Bump blurhash from 1.1.4 to 1.1.5
2025-08-19 12:05:02 +02:00
dependabot[bot]
4ee3363140 Bump blurhash from 1.1.4 to 1.1.5
Bumps [blurhash](https://github.com/halcy/blurhash-python) from 1.1.4 to 1.1.5.
- [Release notes](https://github.com/halcy/blurhash-python/releases)
- [Commits](https://github.com/halcy/blurhash-python/commits/v1.1.5)

---
updated-dependencies:
- dependency-name: blurhash
  dependency-version: 1.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 09:20:17 +00:00
dependabot[bot]
5dad01130f Bump requests from 2.32.4 to 2.32.5
Bumps [requests](https://github.com/psf/requests) from 2.32.4 to 2.32.5.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.4...v2.32.5)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 09:13:21 +00:00
José Manuel Delicado
a5ba726230 Merge pull request #824 from MCV-Software/dependabot/pip/cx-freeze-8.4.0
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump cx-freeze from 8.3.0 to 8.4.0
2025-08-12 17:05:46 +02:00
dependabot[bot]
4070c1bb43 Bump cx-freeze from 8.3.0 to 8.4.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.3.0 to 8.4.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Changelog](https://github.com/marcelotduarte/cx_Freeze/blob/main/CHANGELOG.md)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.3.0...8.4.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 15:04:43 +00:00
José Manuel Delicado
73d9474679 Merge pull request #823 from MCV-Software/dependabot/pip/charset-normalizer-3.4.3
Bump charset-normalizer from 3.4.2 to 3.4.3
2025-08-12 12:39:13 +02:00
dependabot[bot]
2bf1c68492 Bump charset-normalizer from 3.4.2 to 3.4.3
Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.2 to 3.4.3.
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-version: 3.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 10:04:56 +00:00
José Manuel Delicado
f60beb3eab Merge pull request #821 from MCV-Software/dependabot/pip/coverage-7.10.3
Bump coverage from 7.10.2 to 7.10.3
2025-08-12 12:02:00 +02:00
José Manuel Delicado
f00029a154 Merge pull request #822 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20250809
Bump types-python-dateutil from 2.9.0.20250708 to 2.9.0.20250809
2025-08-12 12:01:26 +02:00
dependabot[bot]
7ed053c929 Bump types-python-dateutil from 2.9.0.20250708 to 2.9.0.20250809
Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20250708 to 2.9.0.20250809.
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-version: 2.9.0.20250809
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 09:52:14 +00:00
dependabot[bot]
0de60d085a Bump coverage from 7.10.2 to 7.10.3
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.10.2 to 7.10.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.10.2...7.10.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.10.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 08:38:36 +00:00
zvonimir stanecic
e8443cd526 Translated using Weblate (Polish)
Currently translated at 76.6% (543 of 708 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/pl/
2025-08-10 16:08:18 +00:00
José Manuel Delicado
12981ee707 Merge pull request #820 from MCV-Software/dependabot/pip/coverage-7.10.2
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump coverage from 7.10.1 to 7.10.2
2025-08-05 13:12:44 +02:00
dependabot[bot]
3d1b9b9c5e Bump coverage from 7.10.1 to 7.10.2
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.10.1 to 7.10.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.10.1...7.10.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 10:51:40 +00:00
José Manuel Delicado
dd3d1308b7 Merge pull request #819 from MCV-Software/dependabot/pip/certifi-2025.8.3
Bump certifi from 2025.7.14 to 2025.8.3
2025-08-05 09:20:06 +02:00
dependabot[bot]
0fdca4d842 Bump certifi from 2025.7.14 to 2025.8.3
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.7.14 to 2025.8.3.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.14...2025.08.03)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.8.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 07:14:56 +00:00
José Manuel Delicado
985e5d42ea Merge pull request #818 from MCV-Software/dependabot/pip/coverage-7.10.1
Some checks failed
Update translation files / update_catalogs (push) Failing after 54s
Bump coverage from 7.9.2 to 7.10.1
2025-07-29 08:42:29 +02:00
dependabot[bot]
80f44a99ca Bump coverage from 7.9.2 to 7.10.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.9.2 to 7.10.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.9.2...7.10.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.10.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 01:50:50 +00:00
José Manuel Delicado
04692fb708 Merge pull request #815 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20250708
Some checks failed
Update translation files / update_catalogs (push) Failing after 1m40s
Bump types-python-dateutil from 2.9.0.20250516 to 2.9.0.20250708
2025-07-15 07:35:42 +02:00
José Manuel Delicado
3cb9a8983d Merge pull request #816 from MCV-Software/dependabot/pip/certifi-2025.7.14
Bump certifi from 2025.6.15 to 2025.7.14
2025-07-15 07:35:22 +02:00
José Manuel Delicado
29dfa709ef Merge pull request #817 from MCV-Software/dependabot/pip/pywin32-311
Bump pywin32 from 310 to 311
2025-07-15 07:35:05 +02:00
dependabot[bot]
7dbfeeced9 Bump pywin32 from 310 to 311
---
updated-dependencies:
- dependency-name: pywin32
  dependency-version: '311'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 05:16:19 +00:00
dependabot[bot]
655828946c Bump certifi from 2025.6.15 to 2025.7.14
---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.14
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 05:06:24 +00:00
dependabot[bot]
ca91fe1cbe Bump types-python-dateutil from 2.9.0.20250516 to 2.9.0.20250708
---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-version: 2.9.0.20250708
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 04:46:28 +00:00
José Manuel Delicado
c2ce5bde82 Merge pull request #814 from MCV-Software/dependabot/pip/coverage-7.9.2
Some checks failed
Update translation files / update_catalogs (push) Failing after 22s
Bump coverage from 7.9.1 to 7.9.2
2025-07-07 17:55:54 +02:00
dependabot[bot]
4bb65fe624 Bump coverage from 7.9.1 to 7.9.2
---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 15:55:02 +00:00
José Manuel Delicado
28bcb0f52f Merge pull request #813 from MCV-Software/dependabot/pip/pillow-11.3.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 10m55s
Bump pillow from 11.2.1 to 11.3.0
2025-07-01 21:35:45 +02:00
dependabot[bot]
49a8cd4e65 Bump pillow from 11.2.1 to 11.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.2.1 to 11.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.2.1...11.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 11.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 17:31:41 +00:00
José Manuel Delicado
e428b41d85 Merge pull request #810 from MCV-Software/dependabot/pip/pytest-8.4.1
Some checks failed
Update translation files / update_catalogs (push) Failing after 21s
Bump pytest from 8.4.0 to 8.4.1
2025-06-24 07:31:15 +02:00
José Manuel Delicado
a929db05d2 Merge pull request #811 from MCV-Software/dependabot/pip/oauthlib-3.3.1
Bump oauthlib from 3.2.2 to 3.3.1
2025-06-24 07:30:56 +02:00
José Manuel Delicado
a624a97d14 Merge pull request #812 from MCV-Software/dependabot/pip/markdown-3.8.2
Bump markdown from 3.8 to 3.8.2
2025-06-24 07:30:35 +02:00
dependabot[bot]
60ac77adf5 Bump markdown from 3.8 to 3.8.2
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.8 to 3.8.2.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.8...3.8.2)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 02:04:17 +00:00
dependabot[bot]
5cd5179c3e Bump oauthlib from 3.2.2 to 3.3.1
Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.2.2 to 3.3.1.
- [Release notes](https://github.com/oauthlib/oauthlib/releases)
- [Changelog](https://github.com/oauthlib/oauthlib/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/oauthlib/oauthlib/compare/v3.2.2...v3.3.1)

---
updated-dependencies:
- dependency-name: oauthlib
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 01:20:40 +00:00
dependabot[bot]
6c9ef7ea54 Bump pytest from 8.4.0 to 8.4.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.0 to 8.4.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.0...8.4.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 01:11:24 +00:00
José Manuel Delicado
6872f4fd1c Merge pull request #809 from MCV-Software/dependabot/pip/urllib3-2.5.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 22s
Bump urllib3 from 2.4.0 to 2.5.0
2025-06-19 21:12:18 +02:00
dependabot[bot]
a45e7dd7eb Bump urllib3 from 2.4.0 to 2.5.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-19 05:27:02 +00:00
José Manuel Delicado
ea8d8a9296 Merge pull request #808 from MCV-Software/dependabot/pip/coverage-7.9.1
Bump coverage from 7.8.2 to 7.9.1
2025-06-16 21:55:40 +02:00
José Manuel Delicado
66bc366da3 Merge pull request #807 from MCV-Software/dependabot/pip/certifi-2025.6.15
Bump certifi from 2025.4.26 to 2025.6.15
2025-06-16 21:55:16 +02:00
dependabot[bot]
267875c70a Bump coverage from 7.8.2 to 7.9.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.8.2 to 7.9.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.8.2...7.9.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 19:54:39 +00:00
dependabot[bot]
e68ba5778a Bump certifi from 2025.4.26 to 2025.6.15
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.4.26 to 2025.6.15.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.6.15
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 19:54:30 +00:00
José Manuel Delicado
82bcf1dbbf Merge pull request #806 from MCV-Software/dependabot/pip/requests-2.32.4
Some checks failed
Update translation files / update_catalogs (push) Failing after 23s
Bump requests from 2.32.3 to 2.32.4
2025-06-10 07:31:32 +02:00
José Manuel Delicado
4779c1d004 Merge pull request #805 from MCV-Software/dependabot/pip/zipp-3.23.0
Bump zipp from 3.22.0 to 3.23.0
2025-06-10 07:31:14 +02:00
dependabot[bot]
e295e60fc0 Bump requests from 2.32.3 to 2.32.4
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 23:34:45 +00:00
dependabot[bot]
e383f15ee8 Bump zipp from 3.22.0 to 3.23.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.22.0 to 3.23.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.22.0...v3.23.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 3.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 23:29:40 +00:00
José Manuel Delicado
aacbdabee3 Merge pull request #803 from MCV-Software/dependabot/pip/pytest-8.4.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 23s
Bump pytest from 8.3.5 to 8.4.0
2025-06-03 07:33:03 +02:00
dependabot[bot]
f290bd80f1 Bump pytest from 8.3.5 to 8.4.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.5 to 8.4.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.5...8.4.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 23:42:11 +00:00
José Manuel Delicado
4a0dbd2140 Merge pull request #801 from MCV-Software/dependabot/pip/zipp-3.22.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 21s
Bump zipp from 3.21.0 to 3.22.0
2025-05-27 07:27:50 +02:00
José Manuel Delicado
4de969d9cd Merge pull request #802 from MCV-Software/dependabot/pip/coverage-7.8.2
Bump coverage from 7.8.0 to 7.8.2
2025-05-27 07:27:32 +02:00
dependabot[bot]
b1ad31b2ee Bump coverage from 7.8.0 to 7.8.2
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.8.0 to 7.8.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.8.0...7.8.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 23:14:32 +00:00
dependabot[bot]
92f7bfeebd Bump zipp from 3.21.0 to 3.22.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.21.0 to 3.22.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.21.0...v3.22.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 23:14:27 +00:00
José Manuel Delicado
b4288ce51e Merge pull request #797 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20250516
Some checks failed
Update translation files / update_catalogs (push) Failing after 22s
Bump types-python-dateutil from 2.9.0.20241206 to 2.9.0.20250516
2025-05-20 07:32:48 +02:00
José Manuel Delicado
345ec6ffb0 Merge pull request #798 from MCV-Software/dependabot/pip/pluggy-1.6.0
Bump pluggy from 1.5.0 to 1.6.0
2025-05-20 07:32:23 +02:00
dependabot[bot]
436e58dae0 Bump types-python-dateutil from 2.9.0.20241206 to 2.9.0.20250516
Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20241206 to 2.9.0.20250516.
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-version: 2.9.0.20250516
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 23:44:18 +00:00
dependabot[bot]
48d55de460 Bump pluggy from 1.5.0 to 1.6.0
Bumps [pluggy](https://github.com/pytest-dev/pluggy) from 1.5.0 to 1.6.0.
- [Changelog](https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pluggy/compare/1.5.0...1.6.0)

---
updated-dependencies:
- dependency-name: pluggy
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 23:44:18 +00:00
José Manuel Delicado
b15151ddf3 Merge pull request #795 from MCV-Software/dependabot/pip/cx-freeze-8.3.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 21s
Bump cx-freeze from 8.2.0 to 8.3.0
2025-05-13 07:27:45 +02:00
dependabot[bot]
a2312e8874 Bump cx-freeze from 8.2.0 to 8.3.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.2.0 to 8.3.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.2.0...8.3.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-13 00:08:32 +00:00
José Manuel Delicado
663431ef5d Merge pull request #791 from MCV-Software/dependabot/pip/charset-normalizer-3.4.2
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump charset-normalizer from 3.4.1 to 3.4.2
2025-05-05 19:12:21 +02:00
José Manuel Delicado
f3cba380ba Merge pull request #792 from MCV-Software/dependabot/pip/deepl-1.22.0
Bump deepl from 1.21.1 to 1.22.0
2025-05-05 19:12:01 +02:00
dependabot[bot]
4c8c7ed384 Bump deepl from 1.21.1 to 1.22.0
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.21.1 to 1.22.0.
- [Release notes](https://github.com/DeepLcom/deepl-python/releases)
- [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.21.1...v1.22.0)

---
updated-dependencies:
- dependency-name: deepl
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 17:10:46 +00:00
dependabot[bot]
0395b372bd Bump charset-normalizer from 3.4.1 to 3.4.2
Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.2)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-version: 3.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 17:10:42 +00:00
José Manuel Delicado
a2c5bbe65c Merge pull request #787 from MCV-Software/dependabot/pip/cx-freeze-8.2.0
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump cx-freeze from 8.1.0 to 8.2.0
2025-04-29 09:00:42 +02:00
José Manuel Delicado
b0ca33c9d8 Merge pull request #788 from MCV-Software/dependabot/pip/certifi-2025.4.26
Bump certifi from 2025.1.31 to 2025.4.26
2025-04-29 09:00:24 +02:00
José Manuel Delicado
350b25cc67 Merge pull request #790 from MCV-Software/dependabot/pip/importlib-metadata-8.7.0
Bump importlib-metadata from 8.6.1 to 8.7.0
2025-04-29 08:59:36 +02:00
dependabot[bot]
51cf283421 Bump importlib-metadata from 8.6.1 to 8.7.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.6.1 to 8.7.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.6.1...v8.7.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-version: 8.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:45:00 +00:00
dependabot[bot]
fb227886d2 Bump certifi from 2025.1.31 to 2025.4.26
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.1.31 to 2025.4.26.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.01.31...2025.04.26)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.4.26
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:10:18 +00:00
dependabot[bot]
0d49b11411 Bump cx-freeze from 8.1.0 to 8.2.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.1.0...8.2.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:05:33 +00:00
José Manuel Delicado
43af826eb0 Merge pull request #786 from MCV-Software/dependabot/pip/packaging-25.0
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump packaging from 24.2 to 25.0
2025-04-22 07:30:01 +02:00
dependabot[bot]
b56379e485 Bump packaging from 24.2 to 25.0
Bumps [packaging](https://github.com/pypa/packaging) from 24.2 to 25.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.2...25.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '25.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 23:22:41 +00:00
José Manuel Delicado
f8c770947f Merge pull request #783 from MCV-Software/dependabot/pip/wxpython-4.2.3
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-04-15 08:51:47 +02:00
José Manuel Delicado
a55dc1b4aa Merge pull request #781 from MCV-Software/dependabot/pip/urllib3-2.4.0 2025-04-15 08:51:10 +02:00
José Manuel Delicado
cd146e9cf6 Merge pull request #782 from MCV-Software/dependabot/pip/markdown-3.8 2025-04-15 08:50:46 +02:00
José Manuel Delicado
ecb56ae4f0 Merge pull request #784 from MCV-Software/dependabot/pip/pillow-11.2.1 2025-04-15 08:50:10 +02:00
dependabot[bot]
e58543d6c4 Bump pillow from 11.1.0 to 11.2.1
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to 11.2.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.1.0...11.2.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 11.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 23:16:56 +00:00
dependabot[bot]
35917ee05a Bump wxpython from 4.2.2 to 4.2.3
Bumps [wxpython](https://github.com/wxWidgets/Phoenix) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/wxWidgets/Phoenix/releases)
- [Changelog](https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst)
- [Commits](https://github.com/wxWidgets/Phoenix/compare/wxPython-4.2.2...wxPython-4.2.3)

---
updated-dependencies:
- dependency-name: wxpython
  dependency-version: 4.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 23:16:47 +00:00
dependabot[bot]
411465db67 Bump markdown from 3.7 to 3.8
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.7...3.8)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.8'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 23:15:07 +00:00
dependabot[bot]
8eed4a12c9 Bump urllib3 from 2.3.0 to 2.4.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.3.0...2.4.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 23:10:38 +00:00
manuelcortez
894f3fd113 Updated translation catalogs 2025-04-13 01:18:40 +00:00
José Manuel Delicado
014c510061 Merge pull request #780 from MCV-Software/dependabot/pip/cx-freeze-8.1.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 20s
2025-04-08 07:43:06 +02:00
dependabot[bot]
f55ff3a3a9 Bump cx-freeze from 8.0.0 to 8.1.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.0.0...8.1.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 00:33:21 +00:00
manuelcortez
67145df1b6 Updated translation catalogs 2025-04-06 00:55:59 +00:00
José Manuel Delicado
0b8f124088 Merge pull request #777 from MCV-Software/dependabot/pip/coverage-7.8.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 44s
Bump coverage from 7.7.1 to 7.8.0
2025-04-01 07:50:59 +02:00
dependabot[bot]
12e80dc7e2 Bump coverage from 7.7.1 to 7.8.0
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.7.1 to 7.8.0.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.7.1...7.8.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 00:27:43 +00:00
manuelcortez
f58b1b03d2 Updated translation catalogs 2025-03-30 00:55:54 +00:00
José Manuel Delicado
8fc627b77a Merge pull request #773 from MCV-Software/dependabot/pip/iniconfig-2.1.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 2m2s
Bump iniconfig from 2.0.0 to 2.1.0
2025-03-25 07:45:54 +01:00
José Manuel Delicado
f99282025b Merge pull request #774 from MCV-Software/dependabot/pip/coverage-7.7.1
Bump coverage from 7.7.0 to 7.7.1
2025-03-25 07:45:16 +01:00
dependabot[bot]
04916588c3 Bump coverage from 7.7.0 to 7.7.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.7.0 to 7.7.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.7.0...7.7.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 06:44:49 +00:00
José Manuel Delicado
c6501664ee Merge pull request #776 from MCV-Software/dependabot/pip/cx-freeze-8.0.0
Bump cx-freeze from 7.2.10 to 8.0.0
2025-03-25 07:43:30 +01:00
dependabot[bot]
f5ba3fdf14 Bump cx-freeze from 7.2.10 to 8.0.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.10 to 8.0.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.10...8.0.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 01:54:06 +00:00
dependabot[bot]
e6be7c2563 Bump iniconfig from 2.0.0 to 2.1.0
Bumps [iniconfig](https://github.com/pytest-dev/iniconfig) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/pytest-dev/iniconfig/releases)
- [Changelog](https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG)
- [Commits](https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: iniconfig
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 01:22:18 +00:00
manuelcortez
35cba4c6c6 Updated translation catalogs 2025-03-23 00:55:55 +00:00
José Manuel Delicado
4e11d2562a Merge pull request #769 from MCV-Software/dependabot/pip/attrs-25.3.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 12s
Bump attrs from 25.1.0 to 25.3.0
2025-03-18 07:47:17 +01:00
José Manuel Delicado
00a97a66a4 Merge pull request #770 from MCV-Software/dependabot/pip/coverage-7.7.0
Bump coverage from 7.6.12 to 7.7.0
2025-03-18 07:47:01 +01:00
José Manuel Delicado
0030b1c65d Merge pull request #771 from MCV-Software/dependabot/pip/pywin32-310
Bump pywin32 from 309 to 310
2025-03-18 07:46:47 +01:00
José Manuel Delicado
689afb0682 Merge pull request #772 from MCV-Software/dependabot/pip/deepl-1.21.1
Bump deepl from 1.21.0 to 1.21.1
2025-03-18 07:46:33 +01:00
dependabot[bot]
08316733d3 Bump deepl from 1.21.0 to 1.21.1
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/DeepLcom/deepl-python/releases)
- [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.21.0...v1.21.1)

---
updated-dependencies:
- dependency-name: deepl
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 23:34:51 +00:00
dependabot[bot]
e5bdddd45c Bump pywin32 from 309 to 310
Bumps [pywin32](https://github.com/mhammond/pywin32) from 309 to 310.
- [Release notes](https://github.com/mhammond/pywin32/releases)
- [Changelog](https://github.com/mhammond/pywin32/blob/main/CHANGES.txt)
- [Commits](https://github.com/mhammond/pywin32/commits)

---
updated-dependencies:
- dependency-name: pywin32
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 23:33:31 +00:00
dependabot[bot]
b3cd888424 Bump coverage from 7.6.12 to 7.7.0
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.12 to 7.7.0.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.12...7.7.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 23:32:22 +00:00
dependabot[bot]
f9577de904 Bump attrs from 25.1.0 to 25.3.0
Bumps [attrs](https://github.com/sponsors/hynek) from 25.1.0 to 25.3.0.
- [Commits](https://github.com/sponsors/hynek/commits)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 23:32:01 +00:00
manuelcortez
b011879b0d Updated translation catalogs 2025-03-16 00:55:53 +00:00
José Manuel Delicado
6a64147d96 Merge pull request #768 from MCV-Software/dependabot/pip/pywin32-309
Some checks failed
Update translation files / update_catalogs (push) Failing after 1m24s
Bump pywin32 from 308 to 309
2025-03-11 07:32:30 +01:00
dependabot[bot]
a45138d68b Bump pywin32 from 308 to 309
Bumps [pywin32](https://github.com/mhammond/pywin32) from 308 to 309.
- [Release notes](https://github.com/mhammond/pywin32/releases)
- [Changelog](https://github.com/mhammond/pywin32/blob/main/CHANGES.txt)
- [Commits](https://github.com/mhammond/pywin32/commits)

---
updated-dependencies:
- dependency-name: pywin32
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 23:40:54 +00:00
Corentin Bacqué-Cazenave
47bb008710 Translated using Weblate (French)
Currently translated at 100.0% (708 of 708 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2025-03-10 03:23:01 +00:00
a64cc0a28c Translated using Weblate (Spanish)
Currently translated at 99.8% (707 of 708 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/es/
2025-03-10 03:23:00 +00:00
manuelcortez
a5afd1b1a8 Updated translation catalogs 2025-03-09 00:55:21 +00:00
487282d512 Merge pull request #765 from MCV-Software/revert-764-dependabot/pip/setuptools-70.0.0
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Revert "Bump setuptools from 69.0.0 to 70.0.0"
2025-03-08 15:06:00 -06:00
54d0f70f38 Revert "Bump setuptools from 69.0.0 to 70.0.0" 2025-03-08 15:04:17 -06:00
José Manuel Delicado
b78eec35f8 Merge pull request #764 from MCV-Software/dependabot/pip/setuptools-70.0.0
Bump setuptools from 69.0.0 to 70.0.0
2025-03-08 22:02:40 +01:00
dependabot[bot]
84b8932df9 Bump setuptools from 69.0.0 to 70.0.0
Bumps [setuptools](https://github.com/pypa/setuptools) from 69.0.0 to 70.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v69.0.0...v70.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-08 20:29:52 +00:00
128575df05 Fixed a typo 2025-03-08 14:28:26 -06:00
64af7dc02b Added new release notes 2025-03-08 14:11:46 -06:00
6a8ef9b523 Include a previous setuptools version 2025-03-08 14:10:49 -06:00
2a4a17fdeb Fixed update links 2025-03-08 13:57:30 -06:00
Mira P
bea28d8d19 Translated using Weblate (Bulgarian)
Currently translated at 28.7% (200 of 696 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/bg/
2025-03-08 18:23:01 +00:00
Corentin Bacqué-Cazenave
89a89778aa Translated using Weblate (French)
Currently translated at 100.0% (674 of 674 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2025-03-08 18:23:00 +00:00
2b4a66aa05 Bumped to a new version 2025-03-08 11:59:48 -06:00
70a1c9fbcc Minimal code cleanup 2025-03-08 11:57:09 -06:00
76dae8bcf8 Prepare changelog for release 2025-03-08 11:51:43 -06:00
b432873500 Fix some typos on changelog 2025-03-08 11:32:03 -06:00
45bee2bf57 Updated changelog 2025-03-08 11:15:47 -06:00
921fe631e0 Merge pull request #763 from MCV-Software/features/pinned-posts
Mastodon: Loads pinned posts in user timelines and supports announcing when the focused post is pinned
2025-03-08 11:08:16 -06:00
582d14708f Improve pinned post parsing for templates 2025-03-08 11:06:15 -06:00
ea79165362 Adjust the way pinned posts are sorted 2025-03-08 05:21:20 -06:00
460d71075b Expose status of pinned posts in variable templates 2025-03-08 01:31:50 -06:00
3d7d1142d3 Attempt to load pinned posts when loading a timeline for an user 2025-03-08 01:15:34 -06:00
6aa84daf5e Merge pull request #762 from MCV-Software/feature/filters
Mastodon: adds Filter support
2025-03-08 00:50:26 -06:00
b37edc3712 disable action buttons on filter manager when reloading data 2025-03-07 13:05:37 -06:00
9ff772f098 cleaned filter dialogs. Added filter management (mostly done) 2025-03-07 13:01:08 -06:00
Mira P
6974c6beba Added translation using Weblate (Bulgarian) 2025-03-07 17:15:29 +00:00
ff196693df Translated using Weblate (Spanish)
Currently translated at 100.0% (674 of 674 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/es/
2025-03-07 17:15:29 +00:00
00e5766f90 Bind Filter create function to menu bar 2025-03-07 10:13:34 -06:00
3f72185817 Add filter creation within TWBlue 2025-03-07 10:13:13 -06:00
03a90922d8 Added bulgarian translation catalog 2025-03-06 13:14:00 -06:00
38fe9c149b Added controller to add and update filters 2025-03-05 13:12:22 -06:00
cdee0a620c Added filters dialog 2025-03-05 13:12:04 -06:00
fccabf6eb5 Respect filters also when getting previous items 2025-03-03 12:00:33 -06:00
3dae674c4e for 'warn' filtered posts, parse and display a modified text on them (we must add a way to display those later) 2025-03-03 11:59:14 -06:00
c76134b064 Avoid adding hidden posts by filters to the list of objects 2025-03-03 11:58:11 -06:00
284c2bd87f added functions to evaluate filter and retrieve context from a buffer 2025-03-03 11:57:37 -06:00
543295fc21 Updated changelog 2025-03-03 10:20:37 -06:00
José Manuel Delicado
894cc24eca Merge pull request #760 from MCV-Software/dependabot/pip/mastodon-py-2.0.1
Bump mastodon-py from 2.0.0 to 2.0.1
2025-03-03 07:47:07 +01:00
José Manuel Delicado
49849605c4 Merge pull request #761 from MCV-Software/dependabot/pip/pytest-8.3.5
Bump pytest from 8.3.4 to 8.3.5
2025-03-03 07:46:34 +01:00
dependabot[bot]
fc18e71f40 Bump pytest from 8.3.4 to 8.3.5
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.4 to 8.3.5.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.4...8.3.5)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 06:45:45 +00:00
dependabot[bot]
595458aa46 Bump mastodon-py from 2.0.0 to 2.0.1
Bumps [mastodon-py](https://github.com/halcy/Mastodon.py) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/halcy/Mastodon.py/releases)
- [Changelog](https://github.com/halcy/Mastodon.py/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/halcy/Mastodon.py/compare/2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: mastodon-py
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 06:45:40 +00:00
manuelcortez
87e1f7eb7a Updated translation catalogs 2025-03-02 00:55:47 +00:00
José Manuel Delicado
eefe2ad454 Merge pull request #759 from MCV-Software/dependabot/pip/decorator-5.2.1
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump decorator from 5.1.1 to 5.2.1
2025-02-24 20:22:55 +01:00
dependabot[bot]
928f207668 Bump decorator from 5.1.1 to 5.2.1
Bumps [decorator](https://github.com/micheles/decorator) from 5.1.1 to 5.2.1.
- [Release notes](https://github.com/micheles/decorator/releases)
- [Changelog](https://github.com/micheles/decorator/blob/5.2.1/CHANGES.md)
- [Commits](https://github.com/micheles/decorator/compare/5.1.1...5.2.1)

---
updated-dependencies:
- dependency-name: decorator
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:21:52 +00:00
manuelcortez
7c75c2ddec Updated translation catalogs 2025-02-23 00:55:49 +00:00
469a398db7 Merge pull request #755 from MCV-Software/dependabot/pip/mastodon-py-2.0.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 1m46s
Bump mastodon-py from 1.8.1 to 2.0.0
2025-02-18 08:40:39 -06:00
dependabot[bot]
5f1671ac54 Bump mastodon-py from 1.8.1 to 2.0.0
Bumps [mastodon-py](https://github.com/halcy/Mastodon.py) from 1.8.1 to 2.0.0.
- [Release notes](https://github.com/halcy/Mastodon.py/releases)
- [Changelog](https://github.com/halcy/Mastodon.py/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/halcy/Mastodon.py/compare/1.8.1...2.0.0)

---
updated-dependencies:
- dependency-name: mastodon-py
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 06:31:23 +00:00
José Manuel Delicado
67728021d2 Merge pull request #756 from MCV-Software/dependabot/pip/coverage-7.6.12
Bump coverage from 7.6.11 to 7.6.12
2025-02-18 07:30:12 +01:00
José Manuel Delicado
2eaf5bf6da Merge pull request #757 from MCV-Software/dependabot/pip/psutil-7.0.0
Bump psutil from 6.1.1 to 7.0.0
2025-02-18 07:29:51 +01:00
José Manuel Delicado
12b7c9de89 Merge pull request #758 from MCV-Software/dependabot/pip/numpy-2.2.3
Bump numpy from 2.2.2 to 2.2.3
2025-02-18 07:28:59 +01:00
dependabot[bot]
fbd0adf292 Bump numpy from 2.2.2 to 2.2.3
Bumps [numpy](https://github.com/numpy/numpy) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.2.2...v2.2.3)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 23:51:24 +00:00
dependabot[bot]
38bd99c2f1 Bump psutil from 6.1.1 to 7.0.0
Bumps [psutil](https://github.com/giampaolo/psutil) from 6.1.1 to 7.0.0.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-6.1.1...release-7.0.0)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 23:51:13 +00:00
dependabot[bot]
879a251209 Bump coverage from 7.6.11 to 7.6.12
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.11 to 7.6.12.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.11...7.6.12)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 23:51:09 +00:00
manuelcortez
976703aa36 Updated translation catalogs 2025-02-16 00:55:48 +00:00
José Manuel Delicado
95042dca93 Merge pull request #754 from MCV-Software/dependabot/pip/cx-freeze-7.2.10
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump cx-freeze from 7.2.9 to 7.2.10
2025-02-11 07:32:20 +01:00
dependabot[bot]
0a46403f6c Bump cx-freeze from 7.2.9 to 7.2.10
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.9 to 7.2.10.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.9...7.2.10)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 06:31:36 +00:00
José Manuel Delicado
f958e47265 Merge pull request #753 from MCV-Software/dependabot/pip/coverage-7.6.11
Bump coverage from 7.6.10 to 7.6.11
2025-02-11 07:30:20 +01:00
dependabot[bot]
831ea5225e Bump coverage from 7.6.10 to 7.6.11
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.10 to 7.6.11.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.10...7.6.11)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 23:40:59 +00:00
manuelcortez
5a7cf68858 Updated translation catalogs 2025-02-09 00:55:39 +00:00
6219b082de Merge pull request #750 from MCV-Software/dependabot/pip/attrs-25.1.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 47s
Bump attrs from 24.3.0 to 25.1.0
2025-02-03 18:46:21 -06:00
321079a639 Merge pull request #751 from MCV-Software/dependabot/pip/cx-freeze-7.2.9
Bump cx-freeze from 7.2.8 to 7.2.9
2025-02-03 18:45:55 -06:00
425860de98 Merge pull request #752 from MCV-Software/dependabot/pip/certifi-2025.1.31
Bump certifi from 2024.12.14 to 2025.1.31
2025-02-03 18:45:06 -06:00
dependabot[bot]
fb85aac231 Bump certifi from 2024.12.14 to 2025.1.31
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.12.14 to 2025.1.31.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.12.14...2025.01.31)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 23:44:36 +00:00
dependabot[bot]
86adc942ca Bump cx-freeze from 7.2.8 to 7.2.9
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.8 to 7.2.9.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.8...7.2.9)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 23:44:32 +00:00
manuelcortez
1ec37d5a1c Updated translation catalogs 2025-02-02 00:55:40 +00:00
dependabot[bot]
bae927411f Bump attrs from 24.3.0 to 25.1.0
Bumps [attrs](https://github.com/sponsors/hynek) from 24.3.0 to 25.1.0.
- [Commits](https://github.com/sponsors/hynek/commits)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 23:36:54 +00:00
manuelcortez
528146310a Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-26 00:55:33 +00:00
José Manuel Delicado
0d2e256254 Merge pull request #747 from MCV-Software/dependabot/pip/numpy-2.2.2
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-23 00:12:44 +01:00
José Manuel Delicado
b425462cc6 Merge pull request #748 from MCV-Software/dependabot/pip/deepl-1.21.0 2025-01-23 00:12:14 +01:00
José Manuel Delicado
2ad93154de Merge pull request #749 from MCV-Software/dependabot/pip/importlib-metadata-8.6.1 2025-01-23 00:11:42 +01:00
dependabot[bot]
e905040c68 Bump importlib-metadata from 8.5.0 to 8.6.1
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.5.0 to 8.6.1.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.5.0...v8.6.1)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 23:15:16 +00:00
dependabot[bot]
db53593fef Bump deepl from 1.20.0 to 1.21.0
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.20.0 to 1.21.0.
- [Release notes](https://github.com/DeepLcom/deepl-python/releases)
- [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.20.0...v1.21.0)

---
updated-dependencies:
- dependency-name: deepl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 23:15:12 +00:00
dependabot[bot]
35bb5282bc Bump numpy from 2.2.1 to 2.2.2
Bumps [numpy](https://github.com/numpy/numpy) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.2.1...v2.2.2)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 23:15:09 +00:00
manuelcortez
608f2a248d Updated translation catalogs 2025-01-19 00:55:42 +00:00
manuelcortez
2525e5ca0d Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-12 00:55:55 +00:00
José Manuel Delicado
5c014bcb07 Merge pull request #745 from MCV-Software/dependabot/pip/pillow-11.1.0
Bump pillow from 11.0.0 to 11.1.0
2025-01-07 01:12:50 +01:00
José Manuel Delicado
f81e31529d Merge pull request #746 from MCV-Software/dependabot/pip/cx-freeze-7.2.8
Bump cx-freeze from 7.2.7 to 7.2.8
2025-01-07 01:12:36 +01:00
dependabot[bot]
f874fb3f81 Bump cx-freeze from 7.2.7 to 7.2.8
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.7 to 7.2.8.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.7...7.2.8)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 23:34:24 +00:00
dependabot[bot]
ca19afe3a0 Bump pillow from 11.0.0 to 11.1.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.0.0 to 11.1.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.0.0...11.1.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 23:34:13 +00:00
manuelcortez
930c0d6529 Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-05 00:55:50 +00:00
a84305b6d3 doc: updated changelog 2024-12-31 19:10:48 -06:00
6b97c5123f mastodon: Language should be automatically suggested for posts during creation, replies or when recovering from an error 2024-12-31 18:51:00 -06:00
0322939cba mastodon: Adds language selector on post dialog. Language for posts will be set via account's default language, post language or via TWBlue's user language 2024-12-31 18:48:27 -06:00
8ed80da82c mastodon: Set API version at 4.3.2. Retrieves instance supported languages upon startup. 2024-12-31 18:44:04 -06:00
90acd9ebea Revert lief to v0.15.1 due to cx_freeze requirements 2024-12-30 23:01:49 -06:00
José Manuel Delicado
58152ef3dc Merge pull request #742 from MCV-Software/dependabot/pip/lief-0.16.1
Bump lief from 0.16.0 to 0.16.1
2024-12-31 00:44:06 +01:00
José Manuel Delicado
b433f0a113 Merge pull request #743 from MCV-Software/dependabot/pip/charset-normalizer-3.4.1
Bump charset-normalizer from 3.4.0 to 3.4.1
2024-12-31 00:43:50 +01:00
José Manuel Delicado
2192675071 Merge pull request #744 from MCV-Software/dependabot/pip/coverage-7.6.10
Bump coverage from 7.6.9 to 7.6.10
2024-12-31 00:43:31 +01:00
dependabot[bot]
000516678c Bump coverage from 7.6.9 to 7.6.10
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.9 to 7.6.10.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.9...7.6.10)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 23:41:54 +00:00
dependabot[bot]
1e382b55f1 Bump charset-normalizer from 3.4.0 to 3.4.1
Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.0...3.4.1)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 23:41:49 +00:00
dependabot[bot]
8a7b9e9368 Bump lief from 0.16.0 to 0.16.1
Bumps [lief](https://github.com/lief-project/LIEF) from 0.16.0 to 0.16.1.
- [Release notes](https://github.com/lief-project/LIEF/releases)
- [Commits](https://github.com/lief-project/LIEF/compare/0.16.0...0.16.1)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 23:41:41 +00:00
manuelcortez
26bede0b05 Updated translation catalogs 2024-12-29 00:55:53 +00:00
José Manuel Delicado
8a9d034d60 Merge pull request #740 from MCV-Software/dependabot/pip/numpy-2.2.1
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump numpy from 2.2.0 to 2.2.1
2024-12-23 09:23:28 +01:00
José Manuel Delicado
4a46896372 Merge pull request #739 from MCV-Software/dependabot/pip/urllib3-2.3.0
Bump urllib3 from 2.2.3 to 2.3.0
2024-12-23 09:22:54 +01:00
José Manuel Delicado
4352e1510d Merge pull request #738 from MCV-Software/dependabot/pip/psutil-6.1.1
Bump psutil from 6.1.0 to 6.1.1
2024-12-23 09:22:35 +01:00
dependabot[bot]
c4728fbb34 Bump numpy from 2.2.0 to 2.2.1
Bumps [numpy](https://github.com/numpy/numpy) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 08:22:03 +00:00
dependabot[bot]
f82dc9b3b8 Bump urllib3 from 2.2.3 to 2.3.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.3 to 2.3.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.3.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 08:21:53 +00:00
dependabot[bot]
403e4c2719 Bump psutil from 6.1.0 to 6.1.1
Bumps [psutil](https://github.com/giampaolo/psutil) from 6.1.0 to 6.1.1.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-6.1.0...release-6.1.1)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 08:21:46 +00:00
manuelcortez
2b7dbe0a2c Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-12-22 00:55:54 +00:00
José Manuel Delicado
8b1744fe01 Merge pull request #736 from MCV-Software/dependabot/pip/six-1.17.0
Bump six from 1.16.0 to 1.17.0
2024-12-17 07:31:25 +01:00
José Manuel Delicado
c21bb125b9 Merge pull request #737 from MCV-Software/dependabot/pip/lief-0.16.0
Bump lief from 0.15.1 to 0.16.0
2024-12-17 07:31:06 +01:00
dependabot[bot]
4ef3406a07 Bump lief from 0.15.1 to 0.16.0
Bumps [lief](https://github.com/lief-project/LIEF) from 0.15.1 to 0.16.0.
- [Release notes](https://github.com/lief-project/LIEF/releases)
- [Commits](https://github.com/lief-project/LIEF/compare/0.15.1...0.16.0)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 23:45:32 +00:00
dependabot[bot]
28954a4968 Bump six from 1.16.0 to 1.17.0
Bumps [six](https://github.com/benjaminp/six) from 1.16.0 to 1.17.0.
- [Changelog](https://github.com/benjaminp/six/blob/main/CHANGES)
- [Commits](https://github.com/benjaminp/six/compare/1.16.0...1.17.0)

---
updated-dependencies:
- dependency-name: six
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 23:45:22 +00:00
José Manuel Delicado
77bd3c8290 Merge pull request #735 from MCV-Software/dependabot/pip/attrs-24.3.0
Bump attrs from 24.2.0 to 24.3.0
2024-12-16 17:04:44 +01:00
José Manuel Delicado
fba1854795 Merge pull request #734 from MCV-Software/dependabot/pip/coverage-7.6.9
Bump coverage from 7.6.8 to 7.6.9
2024-12-16 17:04:18 +01:00
José Manuel Delicado
d21bf7c97d Merge pull request #733 from MCV-Software/dependabot/pip/numpy-2.2.0
Bump numpy from 2.1.3 to 2.2.0
2024-12-16 17:03:55 +01:00
José Manuel Delicado
f2db08ad7f Merge pull request #732 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20241206
Bump types-python-dateutil from 2.9.0.20241003 to 2.9.0.20241206
2024-12-16 17:03:32 +01:00
José Manuel Delicado
14248ed0ff Merge pull request #731 from MCV-Software/dependabot/pip/certifi-2024.12.14
Bump certifi from 2024.8.30 to 2024.12.14
2024-12-16 17:03:13 +01:00
dependabot[bot]
7fdc48fbaf Bump attrs from 24.2.0 to 24.3.0
Bumps [attrs](https://github.com/sponsors/hynek) from 24.2.0 to 24.3.0.
- [Commits](https://github.com/sponsors/hynek/commits)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 16:01:53 +00:00
dependabot[bot]
aec18b1bcf Bump coverage from 7.6.8 to 7.6.9
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.8 to 7.6.9.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.8...7.6.9)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 16:01:49 +00:00
dependabot[bot]
b07bc39e57 Bump numpy from 2.1.3 to 2.2.0
Bumps [numpy](https://github.com/numpy/numpy) from 2.1.3 to 2.2.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.1.3...v2.2.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 16:01:41 +00:00
dependabot[bot]
78eee2c2d8 Bump types-python-dateutil from 2.9.0.20241003 to 2.9.0.20241206
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20241003 to 2.9.0.20241206.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 16:01:31 +00:00
dependabot[bot]
8c170d12e2 Bump certifi from 2024.8.30 to 2024.12.14
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.8.30 to 2024.12.14.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 16:01:28 +00:00
manuelcortez
deb84ba2c4 Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Failing after 43s
2024-12-15 00:56:03 +00:00
manuelcortez
ea3286b452 Updated translation catalogs 2024-12-08 00:56:09 +00:00
José Manuel Delicado
84d2e4b4bd Merge pull request #730 from MCV-Software/dependabot/pip/pytest-8.3.4
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump pytest from 8.3.3 to 8.3.4
2024-12-03 00:38:16 +01:00
José Manuel Delicado
e0ba68f1ed Merge pull request #729 from MCV-Software/dependabot/pip/cx-freeze-7.2.7
Bump cx-freeze from 7.2.6 to 7.2.7
2024-12-03 00:37:59 +01:00
dependabot[bot]
1ede045625 Bump pytest from 8.3.3 to 8.3.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.3 to 8.3.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...8.3.4)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 23:35:28 +00:00
dependabot[bot]
b844fec832 Bump cx-freeze from 7.2.6 to 7.2.7
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.6 to 7.2.7.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.6...7.2.7)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 23:35:17 +00:00
manuelcortez
2ab15b3f6e Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-12-01 00:56:19 +00:00
6910809a97 Merge pull request #727 from Mohamed00/moreShortcutWorkage
Fixed more shortcut conflicts
2024-11-29 13:26:29 -06:00
Mohamed
0f19ac0a3f Missed some spots 2024-11-29 14:00:27 -05:00
Mohamed
05c397c252 Fixed more shortcut conflicts. Shortcut project complete, hopefully. Or something like that. 2024-11-29 13:53:04 -05:00
329010e8e0 Merge pull request #725 from Mohamed00/fixShortcutConflict
Fixed shortcut conflict, added some more
2024-11-27 13:12:49 -06:00
Mohamed
ec1b8a0df2 Better shortcut, add shortcuts for add followers and following to database checkboxes in scan dialog as well 2024-11-27 14:04:54 -05:00
Mohamed
9c3868bfc9 Fixed scan account keyboard shortcut which conflicted with the shortcut for the save button 2024-11-27 13:54:36 -05:00
40689caef6 Mastodon: read long posts in GUI should be improved and work in all kinds of buffers 2024-11-26 23:23:36 -06:00
021dd0ae52 Mastodon: Fixed 'read long posts in GUI'. Now it should work as expected 2024-11-26 22:57:21 -06:00
002d0a5709 Mastodon: Allow to create user timelines from community local buffers 2024-11-26 22:44:38 -06:00
10b17b2d6f Merge branch 'next-gen' of github.com:mcv-software/twblue into next-gen 2024-11-26 22:36:19 -06:00
0f5a10c3fa Merge pull request #647 from Mohamed00/shortcutAllTheSettings
Added more keyboard shortcuts
2024-11-26 22:35:35 -06:00
590d91c2d4 Merge pull request #647 from Mohamed00/shortcutAllTheSettings
Added more keyboard shortcuts
2024-11-26 21:51:03 -06:00
5f7f34f29d Merge pull request #644 from Mohamed00/communityShortcut
Added keyboard shortcut for create community timeline action
2024-11-26 21:50:35 -06:00
José Manuel Delicado
90be9a09bf Merge pull request #723 from MCV-Software/dependabot/pip/coverage-7.6.8
Bump coverage from 7.6.7 to 7.6.8
2024-11-25 21:17:05 +01:00
dependabot[bot]
8445140df9 Bump coverage from 7.6.7 to 7.6.8
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.7 to 7.6.8.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.7...7.6.8)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 20:16:20 +00:00
José Manuel Delicado
4fc8bc1ddc Merge pull request #724 from MCV-Software/dependabot/pip/cx-freeze-7.2.6
Bump cx-freeze from 7.2.5 to 7.2.6
2024-11-25 21:14:53 +01:00
dependabot[bot]
3ebc137208 Bump cx-freeze from 7.2.5 to 7.2.6
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.5 to 7.2.6.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.5...7.2.6)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 20:08:20 +00:00
manuelcortez
0ff0cc9cd9 Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-11-24 00:55:56 +00:00
José Manuel Delicado
6d63195f72 Merge pull request #721 from MCV-Software/dependabot/pip/coverage-7.6.7
Bump coverage from 7.6.4 to 7.6.7
2024-11-19 07:31:13 +01:00
José Manuel Delicado
3129b0961e Merge pull request #722 from MCV-Software/dependabot/pip/deepl-1.20.0
Bump deepl from 1.19.1 to 1.20.0
2024-11-19 07:30:56 +01:00
dependabot[bot]
156c62cc43 Bump deepl from 1.19.1 to 1.20.0
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.19.1 to 1.20.0.
- [Release notes](https://github.com/DeepLcom/deepl-python/releases)
- [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.19.1...v1.20.0)

---
updated-dependencies:
- dependency-name: deepl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 23:50:23 +00:00
dependabot[bot]
81af079fb5 Bump coverage from 7.6.4 to 7.6.7
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.4 to 7.6.7.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.4...7.6.7)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 23:50:16 +00:00
manuelcortez
987b4a3f32 Updated translation catalogs 2024-11-17 00:55:51 +00:00
José Manuel Delicado
a426e23138 Merge pull request #718 from MCV-Software/dependabot/pip/cx-freeze-7.2.5
Some checks failed
Update translation files / update_catalogs (push) Failing after 54s
Bump cx-freeze from 7.2.4 to 7.2.5
2024-11-12 07:30:08 +01:00
José Manuel Delicado
7a66d9aaae Merge pull request #719 from MCV-Software/dependabot/pip/packaging-24.2
Bump packaging from 24.1 to 24.2
2024-11-12 07:29:52 +01:00
José Manuel Delicado
aa54cd6f24 Merge pull request #720 from MCV-Software/dependabot/pip/zipp-3.21.0
Bump zipp from 3.20.2 to 3.21.0
2024-11-12 07:29:38 +01:00
dependabot[bot]
8e7366c5ed Bump zipp from 3.20.2 to 3.21.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.20.2 to 3.21.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.20.2...v3.21.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 23:33:55 +00:00
dependabot[bot]
1088190830 Bump packaging from 24.1 to 24.2
Bumps [packaging](https://github.com/pypa/packaging) from 24.1 to 24.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.1...24.2)

---
updated-dependencies:
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 23:33:47 +00:00
dependabot[bot]
1e009bdd11 Bump cx-freeze from 7.2.4 to 7.2.5
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.4 to 7.2.5.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.4...7.2.5)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 23:33:44 +00:00
manuelcortez
2a031ab1ef Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-11-10 00:55:38 +00:00
José Manuel Delicado
ce9099c230 Merge pull request #716 from MCV-Software/dependabot/pip/numpy-2.1.3
Bump numpy from 2.1.2 to 2.1.3
2024-11-05 07:25:07 +01:00
José Manuel Delicado
396b8a5465 Merge pull request #717 from MCV-Software/dependabot/pip/cx-freeze-7.2.4
Bump cx-freeze from 7.2.3 to 7.2.4
2024-11-05 07:24:53 +01:00
dependabot[bot]
799f432ea4 Bump cx-freeze from 7.2.3 to 7.2.4
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.3 to 7.2.4.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.3...7.2.4)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 23:18:27 +00:00
dependabot[bot]
c0cf43b12d Bump numpy from 2.1.2 to 2.1.3
Bumps [numpy](https://github.com/numpy/numpy) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.1.2...v2.1.3)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 23:18:23 +00:00
manuelcortez
98a1398c17 Updated translation catalogs 2024-11-03 00:55:46 +00:00
manuelcortez
979b42dd2c Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Failing after 4m37s
2024-10-27 00:55:53 +00:00
José Manuel Delicado
bcfee1489f Merge pull request #713 from MCV-Software/dependabot/pip/psutil-6.1.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 4m38s
Bump psutil from 6.0.0 to 6.1.0
2024-10-22 07:29:32 +02:00
José Manuel Delicado
4f33a3e765 Merge pull request #714 from MCV-Software/dependabot/pip/coverage-7.6.4
Bump coverage from 7.6.3 to 7.6.4
2024-10-22 07:29:15 +02:00
José Manuel Delicado
d424783689 Merge pull request #715 from MCV-Software/dependabot/pip/pillow-11.0.0
Bump pillow from 10.4.0 to 11.0.0
2024-10-22 07:28:56 +02:00
dependabot[bot]
dd6d771d6e Bump pillow from 10.4.0 to 11.0.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.4.0 to 11.0.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.4.0...11.0.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:38:54 +00:00
dependabot[bot]
898fc6d81a Bump coverage from 7.6.3 to 7.6.4
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.3 to 7.6.4.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.3...7.6.4)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:38:39 +00:00
dependabot[bot]
eb2ff2f543 Bump psutil from 6.0.0 to 6.1.0
Bumps [psutil](https://github.com/giampaolo/psutil) from 6.0.0 to 6.1.0.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-6.0.0...release-6.1.0)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:38:32 +00:00
manuelcortez
b33c975632 Updated translation catalogs 2024-10-20 00:55:45 +00:00
José Manuel Delicado
e3acbf2b76 Merge pull request #712 from MCV-Software/dependabot/pip/coverage-7.6.3
Some checks failed
Update translation files / update_catalogs (push) Failing after 5m8s
Bump coverage from 7.6.1 to 7.6.3
2024-10-15 07:19:31 +02:00
José Manuel Delicado
68625880f8 Merge pull request #711 from MCV-Software/dependabot/pip/cx-logging-3.2.1
Bump cx-logging from 3.2.0 to 3.2.1
2024-10-15 07:19:11 +02:00
José Manuel Delicado
9dfd2cd2b6 Merge pull request #710 from MCV-Software/dependabot/pip/pywin32-308
Bump pywin32 from 307 to 308
2024-10-15 07:18:57 +02:00
José Manuel Delicado
8d22b475ce Merge pull request #709 from MCV-Software/dependabot/pip/charset-normalizer-3.4.0
Bump charset-normalizer from 3.3.2 to 3.4.0
2024-10-15 07:18:43 +02:00
dependabot[bot]
ed68871645 Bump coverage from 7.6.1 to 7.6.3
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.1 to 7.6.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.1...7.6.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:44:22 +00:00
dependabot[bot]
6860f5a6f3 Bump cx-logging from 3.2.0 to 3.2.1
Bumps [cx-logging](https://github.com/anthony-tuininga/cx_Logging) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/anthony-tuininga/cx_Logging/releases)
- [Commits](https://github.com/anthony-tuininga/cx_Logging/compare/v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: cx-logging
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:44:14 +00:00
dependabot[bot]
d57cae035d Bump pywin32 from 307 to 308
Bumps [pywin32](https://github.com/mhammond/pywin32) from 307 to 308.
- [Release notes](https://github.com/mhammond/pywin32/releases)
- [Changelog](https://github.com/mhammond/pywin32/blob/main/CHANGES.txt)
- [Commits](https://github.com/mhammond/pywin32/commits)

---
updated-dependencies:
- dependency-name: pywin32
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:44:10 +00:00
dependabot[bot]
7d3b2a8181 Bump charset-normalizer from 3.3.2 to 3.4.0
Bumps [charset-normalizer](https://github.com/Ousret/charset_normalizer) from 3.3.2 to 3.4.0.
- [Release notes](https://github.com/Ousret/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:44:08 +00:00
manuelcortez
0907e05d81 Updated translation catalogs 2024-10-13 00:55:44 +00:00
José Manuel Delicado
955a6e27d3 Merge pull request #707 from MCV-Software/dependabot/pip/python-vlc-3.0.21203
Bump python-vlc from 3.0.20123 to 3.0.21203
2024-10-08 07:30:47 +02:00
dependabot[bot]
41d56259da Bump python-vlc from 3.0.20123 to 3.0.21203
Bumps [python-vlc](https://github.com/oaubert/python-vlc) from 3.0.20123 to 3.0.21203.
- [Commits](https://github.com/oaubert/python-vlc/commits)

---
updated-dependencies:
- dependency-name: python-vlc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 05:30:35 +00:00
José Manuel Delicado
230146d20e Merge pull request #704 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20241003
Bump types-python-dateutil from 2.9.0.20240906 to 2.9.0.20241003
2024-10-08 07:29:33 +02:00
José Manuel Delicado
793315c151 Merge pull request #705 from MCV-Software/dependabot/pip/numpy-2.1.2
Bump numpy from 2.1.1 to 2.1.2
2024-10-08 07:29:14 +02:00
José Manuel Delicado
84d120d17b Merge pull request #706 from MCV-Software/dependabot/pip/pywin32-307
Bump pywin32 from 306 to 307
2024-10-08 07:28:36 +02:00
José Manuel Delicado
13e598c212 Merge pull request #708 from MCV-Software/dependabot/pip/cx-freeze-7.2.3
Bump cx-freeze from 7.2.2 to 7.2.3
2024-10-08 07:28:19 +02:00
dependabot[bot]
8d9af25797 Bump cx-freeze from 7.2.2 to 7.2.3
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.2 to 7.2.3.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.2...7.2.3)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:55:31 +00:00
dependabot[bot]
9ba426c101 Bump pywin32 from 306 to 307
Bumps [pywin32](https://github.com/mhammond/pywin32) from 306 to 307.
- [Release notes](https://github.com/mhammond/pywin32/releases)
- [Changelog](https://github.com/mhammond/pywin32/blob/main/CHANGES.txt)
- [Commits](https://github.com/mhammond/pywin32/commits)

---
updated-dependencies:
- dependency-name: pywin32
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:55:23 +00:00
dependabot[bot]
be9ad7d3ba Bump numpy from 2.1.1 to 2.1.2
Bumps [numpy](https://github.com/numpy/numpy) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:55:18 +00:00
dependabot[bot]
1ad9f11c1b Bump types-python-dateutil from 2.9.0.20240906 to 2.9.0.20241003
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20240906 to 2.9.0.20241003.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:55:13 +00:00
manuelcortez
ab07faec2d Updated translation catalogs 2024-10-06 00:55:45 +00:00
manuelcortez
3bd7357b10 Updated translation catalogs 2024-09-29 00:55:48 +00:00
José Manuel Delicado
8e9d5333ef Merge pull request #700 from MCV-Software/dependabot/pip/configobj-5.0.9
Bump configobj from 5.0.8 to 5.0.9
2024-09-24 07:29:26 +02:00
José Manuel Delicado
bd5433f9ba Merge pull request #701 from MCV-Software/dependabot/pip/deepl-1.19.1
Bump deepl from 1.18.0 to 1.19.1
2024-09-24 07:29:08 +02:00
José Manuel Delicado
0a72669396 Merge pull request #702 from MCV-Software/dependabot/pip/importlib-metadata-8.5.0
Bump importlib-metadata from 8.4.0 to 8.5.0
2024-09-24 07:28:48 +02:00
José Manuel Delicado
c951549942 Merge pull request #703 from MCV-Software/dependabot/pip/cx-freeze-7.2.2
Bump cx-freeze from 7.2.0 to 7.2.2
2024-09-24 07:28:31 +02:00
dependabot[bot]
3c5a856383 Bump cx-freeze from 7.2.0 to 7.2.2
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.2.0 to 7.2.2.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.2.0...7.2.2)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 23:43:44 +00:00
dependabot[bot]
48753291c3 Bump importlib-metadata from 8.4.0 to 8.5.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.4.0 to 8.5.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.4.0...v8.5.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 23:43:41 +00:00
dependabot[bot]
1f11fd4503 Bump deepl from 1.18.0 to 1.19.1
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.18.0 to 1.19.1.
- [Release notes](https://github.com/DeepLcom/deepl-python/releases)
- [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.18.0...v1.19.1)

---
updated-dependencies:
- dependency-name: deepl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 23:43:33 +00:00
dependabot[bot]
e968d4df7c Bump configobj from 5.0.8 to 5.0.9
Bumps [configobj](https://github.com/DiffSK/configobj) from 5.0.8 to 5.0.9.
- [Release notes](https://github.com/DiffSK/configobj/releases)
- [Changelog](https://github.com/DiffSK/configobj/blob/release/CHANGES.rst)
- [Commits](https://github.com/DiffSK/configobj/compare/v5.0.8...v5.0.9)

---
updated-dependencies:
- dependency-name: configobj
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 23:43:29 +00:00
manuelcortez
c30b1a61ad Updated translation catalogs 2024-09-22 00:55:42 +00:00
José Manuel Delicado
5376a63375 Merge pull request #695 from MCV-Software/dependabot/pip/wxpython-4.2.2
Bump wxpython from 4.2.1 to 4.2.2
2024-09-17 07:39:36 +02:00
José Manuel Delicado
5b4d2accbf Merge pull request #696 from MCV-Software/dependabot/pip/pytest-8.3.3
Bump pytest from 8.3.2 to 8.3.3
2024-09-17 07:39:17 +02:00
José Manuel Delicado
95714425b3 Merge pull request #697 from MCV-Software/dependabot/pip/urllib3-2.2.3
Bump urllib3 from 2.2.2 to 2.2.3
2024-09-17 07:39:02 +02:00
José Manuel Delicado
62ae44b1c6 Merge pull request #698 from MCV-Software/dependabot/pip/zipp-3.20.2
Bump zipp from 3.20.1 to 3.20.2
2024-09-17 07:38:48 +02:00
José Manuel Delicado
b14f5ffd00 Merge pull request #699 from MCV-Software/dependabot/pip/idna-3.10
Bump idna from 3.8 to 3.10
2024-09-17 07:37:52 +02:00
dependabot[bot]
4ad6cf6f34 Bump idna from 3.8 to 3.10
Bumps [idna](https://github.com/kjd/idna) from 3.8 to 3.10.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.8...v3.10)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 23:33:34 +00:00
dependabot[bot]
c41c19a03a Bump zipp from 3.20.1 to 3.20.2
Bumps [zipp](https://github.com/jaraco/zipp) from 3.20.1 to 3.20.2.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.20.1...v3.20.2)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 23:33:30 +00:00
dependabot[bot]
f34c4a66ff Bump urllib3 from 2.2.2 to 2.2.3
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.2...2.2.3)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 23:33:25 +00:00
dependabot[bot]
b57fb401b9 Bump pytest from 8.3.2 to 8.3.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.2 to 8.3.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 23:33:22 +00:00
dependabot[bot]
13aeb23972 Bump wxpython from 4.2.1 to 4.2.2
Bumps [wxpython](https://github.com/wxWidgets/Phoenix) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/wxWidgets/Phoenix/releases)
- [Changelog](https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst)
- [Commits](https://github.com/wxWidgets/Phoenix/compare/wxPython-4.2.1...wxPython-4.2.2)

---
updated-dependencies:
- dependency-name: wxpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 23:33:19 +00:00
manuelcortez
9a4015b448 Updated translation catalogs 2024-09-15 00:55:43 +00:00
José Manuel Delicado
634c41cca5 Merge pull request #693 from MCV-Software/dependabot/pip/numpy-2.1.1
Bump numpy from 2.1.0 to 2.1.1
2024-09-10 07:28:38 +02:00
José Manuel Delicado
e12e237f05 Merge pull request #694 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20240906
Bump types-python-dateutil from 2.9.0.20240821 to 2.9.0.20240906
2024-09-10 07:28:23 +02:00
dependabot[bot]
23762fe0c0 Bump types-python-dateutil from 2.9.0.20240821 to 2.9.0.20240906
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20240821 to 2.9.0.20240906.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 23:55:08 +00:00
dependabot[bot]
a8831abe6c Bump numpy from 2.1.0 to 2.1.1
Bumps [numpy](https://github.com/numpy/numpy) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 23:55:02 +00:00
manuelcortez
dae7e39cf0 Updated translation catalogs 2024-09-08 00:55:38 +00:00
José Manuel Delicado
06f55753bc Merge pull request #692 from MCV-Software/dependabot/pip/certifi-2024.8.30
Bump certifi from 2024.7.4 to 2024.8.30
2024-09-03 07:28:24 +02:00
dependabot[bot]
2c856d928b Bump certifi from 2024.7.4 to 2024.8.30
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.7.4 to 2024.8.30.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.07.04...2024.08.30)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 23:28:56 +00:00
manuelcortez
f616574c91 Updated translation catalogs 2024-09-01 00:55:56 +00:00
José Manuel Delicado
d55e1937ee Merge pull request #688 from MCV-Software/dependabot/pip/idna-3.8
Bump idna from 3.7 to 3.8
2024-08-27 07:36:18 +02:00
dependabot[bot]
d58b1316e6 Bump idna from 3.7 to 3.8
Bumps [idna](https://github.com/kjd/idna) from 3.7 to 3.8.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.7...v3.8)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-27 05:35:17 +00:00
José Manuel Delicado
298d935285 Merge pull request #689 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20240821
Bump types-python-dateutil from 2.9.0.20240316 to 2.9.0.20240821
2024-08-27 07:34:30 +02:00
José Manuel Delicado
6287def612 Merge pull request #690 from MCV-Software/dependabot/pip/zipp-3.20.1
Bump zipp from 3.20.0 to 3.20.1
2024-08-27 07:34:14 +02:00
José Manuel Delicado
4577952a71 Merge pull request #691 from MCV-Software/dependabot/pip/importlib-metadata-8.4.0
Bump importlib-metadata from 8.3.0 to 8.4.0
2024-08-27 07:34:01 +02:00
dependabot[bot]
e03edf22ad Bump importlib-metadata from 8.3.0 to 8.4.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.3.0 to 8.4.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.3.0...v8.4.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 23:45:25 +00:00
dependabot[bot]
2a0e265411 Bump zipp from 3.20.0 to 3.20.1
Bumps [zipp](https://github.com/jaraco/zipp) from 3.20.0 to 3.20.1.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.20.0...v3.20.1)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 23:45:22 +00:00
dependabot[bot]
31f5835de8 Bump types-python-dateutil from 2.9.0.20240316 to 2.9.0.20240821
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20240316 to 2.9.0.20240821.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 23:45:15 +00:00
manuelcortez
b69e4f376f Updated translation catalogs 2024-08-25 00:55:31 +00:00
José Manuel Delicado
9883a3bd9d Merge pull request #685 from MCV-Software/dependabot/pip/importlib-metadata-8.3.0
Bump importlib-metadata from 8.2.0 to 8.3.0
2024-08-20 07:31:02 +02:00
José Manuel Delicado
57bb08cd04 Merge pull request #686 from MCV-Software/dependabot/pip/markdown-3.7
Bump markdown from 3.6 to 3.7
2024-08-20 07:30:47 +02:00
José Manuel Delicado
2059e476fb Merge pull request #687 from MCV-Software/dependabot/pip/numpy-2.1.0
Bump numpy from 2.0.1 to 2.1.0
2024-08-20 07:30:32 +02:00
dependabot[bot]
6611bdafc3 Bump numpy from 2.0.1 to 2.1.0
Bumps [numpy](https://github.com/numpy/numpy) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.0.1...v2.1.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 23:28:44 +00:00
dependabot[bot]
563ca968e6 Bump markdown from 3.6 to 3.7
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.6 to 3.7.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.6...3.7)

---
updated-dependencies:
- dependency-name: markdown
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 23:28:37 +00:00
dependabot[bot]
fe457fabe6 Bump importlib-metadata from 8.2.0 to 8.3.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.2.0 to 8.3.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.2.0...v8.3.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 23:28:31 +00:00
manuelcortez
d31f226b11 Updated translation catalogs 2024-08-18 00:55:21 +00:00
José Manuel Delicado
418590f82d Merge pull request #683 from MCV-Software/dependabot/pip/zipp-3.20.0 2024-08-13 06:56:14 +02:00
José Manuel Delicado
61a8429870 Merge pull request #682 from MCV-Software/dependabot/pip/attrs-24.2.0 2024-08-13 06:55:22 +02:00
dependabot[bot]
1849532c58 Bump zipp from 3.19.2 to 3.20.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.19.2 to 3.20.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.19.2...v3.20.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 23:48:36 +00:00
dependabot[bot]
72285e4620 Bump attrs from 24.1.0 to 24.2.0
Bumps [attrs](https://github.com/sponsors/hynek) from 24.1.0 to 24.2.0.
- [Commits](https://github.com/sponsors/hynek/commits)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 23:48:33 +00:00
manuelcortez
77e4dcef04 Updated translation catalogs 2024-08-11 00:55:26 +00:00
José Manuel Delicado
3bba679d48 Merge pull request #681 from MCV-Software/dependabot/pip/coverage-7.6.1
Bump coverage from 7.6.0 to 7.6.1
2024-08-06 08:58:17 +02:00
José Manuel Delicado
71677c27e3 Merge pull request #680 from MCV-Software/dependabot/pip/attrs-24.1.0
Bump attrs from 23.2.0 to 24.1.0
2024-08-06 08:58:02 +02:00
dependabot[bot]
6d78004dc7 Bump coverage from 7.6.0 to 7.6.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.0 to 7.6.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.6.0...7.6.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-06 00:01:47 +00:00
dependabot[bot]
32a320fdf8 Bump attrs from 23.2.0 to 24.1.0
Bumps [attrs](https://github.com/sponsors/hynek) from 23.2.0 to 24.1.0.
- [Commits](https://github.com/sponsors/hynek/commits)

---
updated-dependencies:
- dependency-name: attrs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-06 00:01:43 +00:00
manuelcortez
2325872a38 Updated translation catalogs 2024-08-04 00:55:37 +00:00
José Manuel Delicado
93e52492d3 Merge pull request #679 from MCV-Software/dependabot/pip/pytest-8.3.2
Bump pytest from 8.3.1 to 8.3.2
2024-07-30 07:25:46 +02:00
José Manuel Delicado
05e226f812 Merge pull request #678 from MCV-Software/dependabot/pip/lief-0.15.1
Bump lief from 0.15.0 to 0.15.1
2024-07-30 07:25:25 +02:00
José Manuel Delicado
92d15e0905 Merge pull request #677 from MCV-Software/dependabot/pip/importlib-metadata-8.2.0
Bump importlib-metadata from 8.0.0 to 8.2.0
2024-07-30 07:25:06 +02:00
dependabot[bot]
83a38951a9 Bump pytest from 8.3.1 to 8.3.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.1 to 8.3.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.1...8.3.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 23:05:45 +00:00
dependabot[bot]
63cb6c0df0 Bump lief from 0.15.0 to 0.15.1
Bumps [lief](https://github.com/lief-project/LIEF) from 0.15.0 to 0.15.1.
- [Release notes](https://github.com/lief-project/LIEF/releases)
- [Commits](https://github.com/lief-project/LIEF/compare/0.15.0...0.15.1)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 23:05:42 +00:00
dependabot[bot]
70202a66a3 Bump importlib-metadata from 8.0.0 to 8.2.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.0.0 to 8.2.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.0.0...v8.2.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 23:05:33 +00:00
manuelcortez
cc30c676ef Updated translation catalogs 2024-07-28 00:55:28 +00:00
José Manuel Delicado
5132b7dbeb Merge pull request #673 from MCV-Software/dependabot/pip/cx-freeze-7.2.0
Bump cx-freeze from 7.1.1 to 7.2.0
2024-07-23 07:41:48 +02:00
José Manuel Delicado
bab9215059 Merge pull request #674 from MCV-Software/dependabot/pip/pytest-8.3.1
Bump pytest from 8.2.2 to 8.3.1
2024-07-23 07:41:28 +02:00
José Manuel Delicado
d63ca0281b Merge pull request #675 from MCV-Software/dependabot/pip/numpy-2.0.1
Bump numpy from 2.0.0 to 2.0.1
2024-07-23 07:41:11 +02:00
José Manuel Delicado
c0ce551727 Merge pull request #676 from MCV-Software/dependabot/pip/lief-0.15.0
Bump lief from 0.14.1 to 0.15.0
2024-07-23 07:40:56 +02:00
dependabot[bot]
2937ee6794 Bump lief from 0.14.1 to 0.15.0
Bumps [lief](https://github.com/sponsors/lief-project) from 0.14.1 to 0.15.0.
- [Commits](https://github.com/sponsors/lief-project/commits)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 23:59:21 +00:00
dependabot[bot]
ae39b9496d Bump numpy from 2.0.0 to 2.0.1
Bumps [numpy](https://github.com/numpy/numpy) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 23:59:18 +00:00
dependabot[bot]
3dc226a15a Bump pytest from 8.2.2 to 8.3.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.2.2 to 8.3.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.2.2...8.3.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 23:59:14 +00:00
dependabot[bot]
f1fcba5aa7 Bump cx-freeze from 7.1.1 to 7.2.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.1.1 to 7.2.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.1.1...7.2.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 23:59:04 +00:00
manuelcortez
6fde0eea08 Updated translation catalogs 2024-07-21 00:55:23 +00:00
José Manuel Delicado
19509cc1fa Merge pull request #671 from MCV-Software/dependabot/pip/coverage-7.6.0
Bump coverage from 7.5.4 to 7.6.0
2024-07-16 07:27:44 +02:00
dependabot[bot]
5ab652a7f7 Bump coverage from 7.5.4 to 7.6.0
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.4 to 7.6.0.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.5.4...7.6.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 23:54:33 +00:00
manuelcortez
767608584d Updated translation catalogs 2024-07-14 00:55:25 +00:00
manuelcortez
1cb6f4889b Updated translation catalogs 2024-07-07 00:55:20 +00:00
José Manuel Delicado
465ada9296 Merge pull request #670 from MCV-Software/dependabot/pip/certifi-2024.7.4
Bump certifi from 2024.6.2 to 2024.7.4
2024-07-06 09:38:13 +02:00
dependabot[bot]
6b78f91bc7 Bump certifi from 2024.6.2 to 2024.7.4
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.6.2 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.06.02...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-06 02:25:33 +00:00
José Manuel Delicado
f13aad9d7f Merge pull request #667 from MCV-Software/dependabot/pip/importlib-metadata-8.0.0
Bump importlib-metadata from 7.2.1 to 8.0.0
2024-07-02 07:31:36 +02:00
José Manuel Delicado
e72b4cd997 Merge pull request #668 from MCV-Software/dependabot/pip/pillow-10.4.0
Bump pillow from 10.3.0 to 10.4.0
2024-07-02 07:31:19 +02:00
José Manuel Delicado
9d13060d65 Merge pull request #669 from MCV-Software/dependabot/pip/numpy-2.0.0
Bump numpy from 1.26.4 to 2.0.0
2024-07-02 07:30:57 +02:00
dependabot[bot]
edb0f0cb2a Bump numpy from 1.26.4 to 2.0.0
Bumps [numpy](https://github.com/numpy/numpy) from 1.26.4 to 2.0.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.26.4...v2.0.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 23:58:40 +00:00
dependabot[bot]
06f68eacf8 Bump pillow from 10.3.0 to 10.4.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.3.0...10.4.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 23:58:23 +00:00
dependabot[bot]
3ac12bb179 Bump importlib-metadata from 7.2.1 to 8.0.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.2.1 to 8.0.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.2.1...v8.0.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 23:58:13 +00:00
manuelcortez
ee294908ff Updated translation catalogs 2024-06-30 00:55:20 +00:00
José Manuel Delicado
1b5bb3b7ae Merge pull request #662 from MCV-Software/dependabot/pip/psutil-6.0.0
Bump psutil from 5.9.8 to 6.0.0
2024-06-25 07:28:54 +02:00
José Manuel Delicado
9142cad3c2 Merge pull request #663 from MCV-Software/dependabot/pip/packaging-24.1
Bump packaging from 24.0 to 24.1
2024-06-25 07:28:35 +02:00
José Manuel Delicado
81c09e6759 Merge pull request #664 from MCV-Software/dependabot/pip/importlib-metadata-7.2.1
Bump importlib-metadata from 7.1.0 to 7.2.1
2024-06-25 07:28:19 +02:00
José Manuel Delicado
db7d032916 Merge pull request #665 from MCV-Software/dependabot/pip/coverage-7.5.4
Bump coverage from 7.5.3 to 7.5.4
2024-06-25 07:28:01 +02:00
José Manuel Delicado
69729f5ac0 Merge pull request #666 from MCV-Software/dependabot/pip/pytest-8.2.2
Bump pytest from 8.2.1 to 8.2.2
2024-06-25 07:27:44 +02:00
dependabot[bot]
d5235e7881 Bump pytest from 8.2.1 to 8.2.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.2.1 to 8.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.2.1...8.2.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 23:29:25 +00:00
dependabot[bot]
9e4691bc05 Bump coverage from 7.5.3 to 7.5.4
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.5.3...7.5.4)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 23:29:18 +00:00
dependabot[bot]
738182cf3a Bump importlib-metadata from 7.1.0 to 7.2.1
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.1.0 to 7.2.1.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.1.0...v7.2.1)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 23:29:07 +00:00
dependabot[bot]
ab2def8145 Bump packaging from 24.0 to 24.1
Bumps [packaging](https://github.com/pypa/packaging) from 24.0 to 24.1.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.0...24.1)

---
updated-dependencies:
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 23:29:03 +00:00
dependabot[bot]
9226ecdd90 Bump psutil from 5.9.8 to 6.0.0
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.8 to 6.0.0.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.8...release-6.0.0)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 23:28:57 +00:00
manuelcortez
0ec60eb54f Updated translation catalogs 2024-06-23 00:55:12 +00:00
José Manuel Delicado
ae08334335 Merge pull request #654 from MCV-Software/dependabot/pip/requests-2.32.3
Bump requests from 2.32.2 to 2.32.3
2024-06-18 14:58:59 +02:00
José Manuel Delicado
a0aa6262f9 Merge pull request #657 from MCV-Software/dependabot/pip/certifi-2024.6.2
Bump certifi from 2024.2.2 to 2024.6.2
2024-06-18 14:58:44 +02:00
José Manuel Delicado
10b8b4214e Merge pull request #655 from MCV-Software/dependabot/pip/coverage-7.5.3
Bump coverage from 7.5.2 to 7.5.3
2024-06-18 07:36:08 +02:00
dependabot[bot]
cea32f95d0 Bump coverage from 7.5.2 to 7.5.3
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.5.2...7.5.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 05:34:51 +00:00
José Manuel Delicado
b27be24cb7 Merge pull request #660 from MCV-Software/dependabot/pip/urllib3-2.2.2
Bump urllib3 from 2.2.1 to 2.2.2
2024-06-18 07:33:51 +02:00
José Manuel Delicado
5c321e7601 Merge pull request #661 from MCV-Software/dependabot/pip/cx-freeze-7.1.1
Bump cx-freeze from 7.1.0 to 7.1.1
2024-06-18 07:33:33 +02:00
dependabot[bot]
1ebbd90701 Bump cx-freeze from 7.1.0 to 7.1.1
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.1.0...7.1.1)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 23:49:06 +00:00
dependabot[bot]
70883d844b Bump urllib3 from 2.2.1 to 2.2.2
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.1...2.2.2)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 22:52:58 +00:00
manuelcortez
d01085427a Updated translation catalogs 2024-06-16 00:55:19 +00:00
José Manuel Delicado
ee74605b19 Merge pull request #659 from MCV-Software/dependabot/pip/zipp-3.19.2
Bump zipp from 3.19.0 to 3.19.2
2024-06-11 07:29:50 +02:00
dependabot[bot]
aaf7fca14a Bump zipp from 3.19.0 to 3.19.2
Bumps [zipp](https://github.com/jaraco/zipp) from 3.19.0 to 3.19.2.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.19.0...v3.19.2)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-10 23:49:28 +00:00
manuelcortez
9ed6af000d Updated translation catalogs 2024-06-09 00:55:13 +00:00
Corentin Bacqué-Cazenave
d24f114636 Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2024-06-04 10:03:12 -06:00
dependabot[bot]
fd3ac675f4 Bump certifi from 2024.2.2 to 2024.6.2
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.6.2.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.06.02)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:43:55 +00:00
dependabot[bot]
4d161c3c7c Bump requests from 2.32.2 to 2.32.3
Bumps [requests](https://github.com/psf/requests) from 2.32.2 to 2.32.3.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.3)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:43:32 +00:00
Riku
89dd25370a Translated using Weblate (Japanese)
Currently translated at 100.0% (669 of 669 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/ja/
2024-06-02 20:46:32 -06:00
manuelcortez
cdeb0ece1c Updated translation catalogs 2024-06-02 00:55:10 +00:00
José Manuel Delicado
13c6094a89 Merge pull request #652 from MCV-Software/dependabot/pip/cx-freeze-7.1.0
Bump cx-freeze from 7.0.0 to 7.1.0
2024-05-28 08:12:09 +02:00
dependabot[bot]
2fd756aaff Bump cx-freeze from 7.0.0 to 7.1.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/7.0.0...7.1.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 06:10:10 +00:00
José Manuel Delicado
9eb87d50f6 Merge pull request #650 from MCV-Software/dependabot/pip/zipp-3.19.0
Bump zipp from 3.18.2 to 3.19.0
2024-05-28 08:09:21 +02:00
José Manuel Delicado
1ec32bf119 Merge pull request #651 from MCV-Software/dependabot/pip/requests-2.32.2
Bump requests from 2.32.1 to 2.32.2
2024-05-28 08:09:02 +02:00
José Manuel Delicado
9df58cc7b5 Merge pull request #653 from MCV-Software/dependabot/pip/coverage-7.5.2
Bump coverage from 7.5.1 to 7.5.2
2024-05-28 08:08:25 +02:00
dependabot[bot]
281a6853d8 Bump coverage from 7.5.1 to 7.5.2
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.5.1...7.5.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 23:24:57 +00:00
dependabot[bot]
5223d64f59 Bump requests from 2.32.1 to 2.32.2
Bumps [requests](https://github.com/psf/requests) from 2.32.1 to 2.32.2.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.1...v2.32.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 23:24:45 +00:00
dependabot[bot]
915dcad2e9 Bump zipp from 3.18.2 to 3.19.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.18.2 to 3.19.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.18.2...v3.19.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 23:24:42 +00:00
manuelcortez
a2ebbcba60 Updated translation catalogs 2024-05-26 00:55:14 +00:00
Corentin Bacqué-Cazenave
089c984fbb Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2024-05-25 00:46:32 -06:00
Mohamed
9d66b23c8e Impoved persons template shortcut 2024-05-24 18:35:35 -04:00
Mohamed
33ccb0a8a9 Improved shortcut for proxy server 2024-05-24 18:31:11 -04:00
Mohamed
c06c6beff4 Added keyboard shortcuts for account and global settings dialogs 2024-05-24 18:24:33 -04:00
438115d8e8 Fix: Removed line previously used for debug. Should close #637 2024-05-24 15:40:36 -06:00
650747f423 Merge pull request #646 from Mohamed00/communityTimelineShortcuts
Added keyboard shortcuts in community timeline dialog
2024-05-24 15:36:47 -06:00
Mohamed
80dd29fb13 Added keyboard shortcuts for radio buttons in community timeline dialog 2024-05-24 17:19:03 -04:00
28283c72a3 Merge pull request #645 from Mohamed00/viewProfileShortcuts
Added keyboard shortcuts to view profile dialog
2024-05-23 21:24:36 -06:00
Mohamed
30ce19ad6c Added keyboard shortcuts to view profile dialog 2024-05-23 19:54:47 -04:00
a17616b3dc Release TWBlue 2024.05.23 2024-05-23 17:29:28 -06:00
Corentin Bacqué-Cazenave
d5ad0fede5 Translated using Weblate (French)
Currently translated at 97.0% (650 of 670 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2024-05-23 13:15:20 -06:00
52ee056759 Translated using Weblate (Spanish)
Currently translated at 99.4% (666 of 670 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/es/
2024-05-23 09:59:46 -06:00
fe43ce562c Feat: Read long posts from GUI 2024-05-22 17:55:52 -06:00
503bf72b11 change: Removed some settings that are no longer needed from our global settings dialog. 2024-05-22 17:42:23 -06:00
14a956d207 Change: Change the way sessions are named to put the account first, then the social network. 2024-05-22 16:28:06 -06:00
Mohamed
cd9756ae61 Added keyboard shortcut for create community timeline action 2024-05-21 14:59:47 -04:00
68651ff736 Feat: Open conversations from community timelines. 2024-05-21 12:50:43 -06:00
49c32ad4b8 doc: Updated changelog 2024-05-21 12:43:00 -06:00
bd69745cef Merge pull request #643 from Mohamed00/profileShortcuts
Added keyboard shortcuts to update profile dialog
2024-05-21 12:28:34 -06:00
Mohamed
404e545a6d Added keyboard shortcuts to update profile dialog 2024-05-21 13:36:10 -04:00
23468c7c63 Merge pull request #640 from MCV-Software/dependabot/pip/requests-2.32.1
Bump requests from 2.31.0 to 2.32.1
2024-05-20 17:38:29 -06:00
fb08352a91 Merge pull request #641 from MCV-Software/dependabot/pip/pytest-8.2.1
Bump pytest from 8.2.0 to 8.2.1
2024-05-20 17:38:04 -06:00
00b33550f4 Merge pull request #642 from MCV-Software/dependabot/pip/zipp-3.18.2
Bump zipp from 3.18.1 to 3.18.2
2024-05-20 17:37:35 -06:00
dependabot[bot]
1b61545375 ---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 23:10:10 +00:00
dependabot[bot]
31beabe86e ---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 23:10:04 +00:00
dependabot[bot]
bb531a41d0 ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 23:09:51 +00:00
6db1e0b79c fix: Display unicode characters on some dialogs 2024-05-19 19:05:03 -06:00
94ad7ce180 Fix: Added proper name to local and federated timelines for instances on startup. 2024-05-19 19:04:34 -06:00
manuelcortez
7112d0e159 Updated translation catalogs 2024-05-19 00:55:03 +00:00
5620635a36 Updated version files 2024-05-18 18:51:14 -06:00
24767437f5 Fixes 2024-05-18 18:41:33 -06:00
0858b17f17 Updated CI script 2024-05-18 18:34:14 -06:00
e91391a3fa More edits to update file 2024-05-18 18:25:43 -06:00
3320aa5509 Fixed a link 2024-05-18 18:19:52 -06:00
4bb21e15f8 Updated website of TWBlue on installer script 2024-05-18 18:07:43 -06:00
41d585226a Updated Release notes 2024-05-18 18:04:45 -06:00
9c2511561a Code cleanup 2024-05-18 17:24:28 -06:00
cd7279e83b Change: Added check for valid communities when creating a community timeline 2024-05-18 16:53:57 -06:00
533f15de55 Feat: Added support to display local and public timelines for remote instances 2024-05-18 14:17:06 -06:00
10d2c47f9a Updated code for handler 2024-05-17 17:46:49 -06:00
b39ccb9f2c Started implementation of community timelines 2024-05-17 17:45:47 -06:00
2a1d86f917 Feat: Added muting posts. 2024-05-17 16:38:26 -06:00
aee2a3b8b2 Feat: display users who boosted or favorited a post. 2024-05-17 13:58:54 -06:00
fd1a64c7b8 fix: Switch to Windows 11 keymap when running Windows 11. Closes #494 2024-05-16 10:52:11 -06:00
a5cd118b99 change: Improved translation services' settings. Closes #632 2024-05-16 08:58:41 -06:00
ee4f254825 Feat: Replaced old translator module. The new translator can translate by using LibreTranslate or DeepL with an user provided API key 2024-05-15 13:56:30 -06:00
manuelcortez
a1eb546f23 Updated translation catalogs 2024-05-12 00:55:02 +00:00
74360ac50f Change: on SessionManager, identify via nodeinfo which kind of platform we are talking with and create gts or mastodon sessions accordingly. 2024-05-11 18:06:44 -06:00
c05dc4b211 Feat: Added initial session to provide support to GoToSocial instances. 2024-05-11 18:05:29 -06:00
5ad29130b9 Change: Add type to mastodon default config so we can track which kind of session we currently detect on authorisation. 2024-05-11 18:02:04 -06:00
a322507f8b Change: Dropped googletrans as is no longer maintaned. 2024-05-11 01:23:46 -06:00
José Manuel Delicado
ea60f308c6 Merge pull request #634 from MCV-Software/dependabot/pip/hstspreload-2024.5.1
Bump hstspreload from 2024.3.1 to 2024.5.1
2024-05-07 07:38:11 +02:00
José Manuel Delicado
c784ca0cd5 Merge pull request #635 from MCV-Software/dependabot/pip/coverage-7.5.1
Bump coverage from 7.5.0 to 7.5.1
2024-05-07 07:37:18 +02:00
dependabot[bot]
04aa4b72f8 Bump coverage from 7.5.0 to 7.5.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.5.0...7.5.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 00:00:20 +00:00
dependabot[bot]
d4a6b95ea4 Bump hstspreload from 2024.3.1 to 2024.5.1
Bumps [hstspreload](https://github.com/sethmlarson/hstspreload) from 2024.3.1 to 2024.5.1.
- [Commits](https://github.com/sethmlarson/hstspreload/compare/2024.3.1...2024.5.1)

---
updated-dependencies:
- dependency-name: hstspreload
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 00:00:10 +00:00
manuelcortez
ce9c2b4456 Updated translation catalogs 2024-05-05 00:55:01 +00:00
José Manuel Delicado
7752fa6f58 Merge pull request #630 from MCV-Software/dependabot/pip/pytest-8.2.0
Bump pytest from 8.1.1 to 8.2.0
2024-04-30 19:12:44 +02:00
José Manuel Delicado
cfbdab9b9b Merge pull request #631 from MCV-Software/dependabot/pip/coverage-7.5.0
Bump coverage from 7.4.4 to 7.5.0
2024-04-30 18:59:10 +02:00
dependabot[bot]
8c43525d6a Bump coverage from 7.4.4 to 7.5.0
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.4.4 to 7.5.0.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.4...7.5.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 23:52:27 +00:00
dependabot[bot]
6321ae68b5 Bump pytest from 8.1.1 to 8.2.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.1 to 8.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.1.1...8.2.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 23:52:17 +00:00
manuelcortez
1552c412bb Updated translation catalogs 2024-04-28 00:55:00 +00:00
José Manuel Delicado
1b46c21aa0 Merge pull request #628 from MCV-Software/dependabot/pip/pluggy-1.5.0
Bump pluggy from 1.4.0 to 1.5.0
2024-04-23 07:36:13 +02:00
José Manuel Delicado
47f02ce0df Merge pull request #629 from MCV-Software/dependabot/pip/cx-freeze-7.0.0
Bump cx-freeze from 6.15.16 to 7.0.0
2024-04-23 07:35:54 +02:00
dependabot[bot]
72f10f3654 Bump cx-freeze from 6.15.16 to 7.0.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 6.15.16 to 7.0.0.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/6.15.16...7.0.0)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 23:14:18 +00:00
dependabot[bot]
d2dbdb9a71 Bump pluggy from 1.4.0 to 1.5.0
Bumps [pluggy](https://github.com/pytest-dev/pluggy) from 1.4.0 to 1.5.0.
- [Changelog](https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pluggy/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: pluggy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 23:14:06 +00:00
manuelcortez
ad2a800dad Updated translation catalogs 2024-04-21 00:54:58 +00:00
manuelcortez
174a5fad61 Updated translation catalogs 2024-04-14 00:54:58 +00:00
José Manuel Delicado
fa17af13af Merge pull request #627 from MCV-Software/dependabot/pip/idna-3.7
Bump idna from 3.6 to 3.7
2024-04-12 07:31:18 +02:00
dependabot[bot]
d2322afeba Bump idna from 3.6 to 3.7
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 04:25:39 +00:00
manuelcortez
1c7ffb1f97 Updated translation catalogs 2024-04-07 00:54:55 +00:00
José Manuel Delicado
f1f83e875b Merge pull request #624 from MCV-Software/dependabot/pip/httpcore-1.0.5
Bump httpcore from 1.0.4 to 1.0.5
2024-04-02 07:33:46 +02:00
José Manuel Delicado
ed3b25ec85 Merge pull request #625 from MCV-Software/dependabot/pip/pillow-10.3.0
Bump pillow from 10.2.0 to 10.3.0
2024-04-02 07:33:28 +02:00
dependabot[bot]
3ccd9018ed Bump pillow from 10.2.0 to 10.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 23:19:55 +00:00
dependabot[bot]
5da35a3039 Bump httpcore from 1.0.4 to 1.0.5
Bumps [httpcore](https://github.com/encode/httpcore) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/encode/httpcore/releases)
- [Changelog](https://github.com/encode/httpcore/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpcore/compare/1.0.4...1.0.5)

---
updated-dependencies:
- dependency-name: httpcore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 23:19:47 +00:00
manuelcortez
11d9414670 Updated translation catalogs 2024-03-31 00:54:59 +00:00
José Manuel Delicado
6169bcfbc7 Merge pull request #622 from MCV-Software/dependabot/pip/importlib-metadata-7.1.0
Bump importlib-metadata from 7.0.2 to 7.1.0
2024-03-26 07:33:18 +01:00
José Manuel Delicado
82791fa648 Merge pull request #621 from MCV-Software/dependabot/pip/cx-logging-3.2.0
Bump cx-logging from 3.1.0 to 3.2.0
2024-03-26 07:33:02 +01:00
José Manuel Delicado
ada246863c Merge pull request #620 from MCV-Software/dependabot/pip/requests-oauthlib-2.0.0
Bump requests-oauthlib from 1.4.0 to 2.0.0
2024-03-26 07:32:46 +01:00
dependabot[bot]
1ac04422f9 Bump importlib-metadata from 7.0.2 to 7.1.0
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.0.2 to 7.1.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 23:09:54 +00:00
dependabot[bot]
184b000f78 Bump cx-logging from 3.1.0 to 3.2.0
Bumps [cx-logging](https://github.com/anthony-tuininga/cx_Logging) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/anthony-tuininga/cx_Logging/releases)
- [Commits](https://github.com/anthony-tuininga/cx_Logging/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: cx-logging
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 23:09:44 +00:00
dependabot[bot]
1aa2ded0bb Bump requests-oauthlib from 1.4.0 to 2.0.0
Bumps [requests-oauthlib](https://github.com/requests/requests-oauthlib) from 1.4.0 to 2.0.0.
- [Release notes](https://github.com/requests/requests-oauthlib/releases)
- [Changelog](https://github.com/requests/requests-oauthlib/blob/master/HISTORY.rst)
- [Commits](https://github.com/requests/requests-oauthlib/compare/v1.4.0...v2.0.0)

---
updated-dependencies:
- dependency-name: requests-oauthlib
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 23:09:37 +00:00
manuelcortez
eba2d34223 Updated translation catalogs 2024-03-24 00:55:05 +00:00
José Manuel Delicado
75e6027381 Merge pull request #615 from MCV-Software/dependabot/pip/coverage-7.4.4
Bump coverage from 7.4.3 to 7.4.4
2024-03-19 07:39:23 +01:00
dependabot[bot]
698b1d8ae8 Bump coverage from 7.4.3 to 7.4.4
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.4.4)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-19 06:38:25 +00:00
José Manuel Delicado
86dc45bc2b Merge pull request #616 from MCV-Software/dependabot/pip/markdown-3.6
Bump markdown from 3.5.2 to 3.6
2024-03-19 07:37:45 +01:00
José Manuel Delicado
74f403b750 Merge pull request #617 from MCV-Software/dependabot/pip/cx-freeze-6.15.16
Bump cx-freeze from 6.15.15 to 6.15.16
2024-03-19 07:37:26 +01:00
José Manuel Delicado
9422fd6fad Merge pull request #618 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20240316
Bump types-python-dateutil from 2.8.19.20240311 to 2.9.0.20240316
2024-03-19 07:37:04 +01:00
José Manuel Delicado
0546679452 Merge pull request #619 from MCV-Software/dependabot/pip/zipp-3.18.1
Bump zipp from 3.17.0 to 3.18.1
2024-03-19 07:36:50 +01:00
dependabot[bot]
4adf8e4a47 Bump zipp from 3.17.0 to 3.18.1
Bumps [zipp](https://github.com/jaraco/zipp) from 3.17.0 to 3.18.1.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.17.0...v3.18.1)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 23:29:32 +00:00
dependabot[bot]
69c6fb1ee6 Bump types-python-dateutil from 2.8.19.20240311 to 2.9.0.20240316
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.20240311 to 2.9.0.20240316.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 23:29:28 +00:00
dependabot[bot]
e59d3da0fb Bump cx-freeze from 6.15.15 to 6.15.16
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 6.15.15 to 6.15.16.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/6.15.15...6.15.16)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 23:29:22 +00:00
dependabot[bot]
a3163f4a08 Bump markdown from 3.5.2 to 3.6
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.5.2 to 3.6.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.5.2...3.6)

---
updated-dependencies:
- dependency-name: markdown
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 23:29:17 +00:00
manuelcortez
b8bcff3157 Updated translation catalogs 2024-03-17 00:54:46 +00:00
José Manuel Delicado
72df3fa115 Merge pull request #610 from MCV-Software/dependabot/pip/importlib-metadata-7.0.2
Bump importlib-metadata from 7.0.1 to 7.0.2
2024-03-12 07:40:59 +01:00
José Manuel Delicado
afb9d0414e Merge pull request #611 from MCV-Software/dependabot/pip/types-python-dateutil-2.8.19.20240311
Bump types-python-dateutil from 2.8.19.20240106 to 2.8.19.20240311
2024-03-12 07:40:45 +01:00
José Manuel Delicado
327bc99924 Merge pull request #612 from MCV-Software/dependabot/pip/packaging-24.0
Bump packaging from 23.2 to 24.0
2024-03-12 07:40:18 +01:00
José Manuel Delicado
b8b93a900a Merge pull request #613 from MCV-Software/dependabot/pip/pytest-8.1.1
Bump pytest from 8.0.2 to 8.1.1
2024-03-12 07:40:04 +01:00
José Manuel Delicado
185d4c295b Merge pull request #614 from MCV-Software/dependabot/pip/requests-oauthlib-1.4.0
Bump requests-oauthlib from 1.3.1 to 1.4.0
2024-03-12 07:39:51 +01:00
dependabot[bot]
4c3ef2dda5 Bump requests-oauthlib from 1.3.1 to 1.4.0
Bumps [requests-oauthlib](https://github.com/requests/requests-oauthlib) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/requests/requests-oauthlib/releases)
- [Changelog](https://github.com/requests/requests-oauthlib/blob/master/HISTORY.rst)
- [Commits](https://github.com/requests/requests-oauthlib/compare/v1.3.1...v1.4.0)

---
updated-dependencies:
- dependency-name: requests-oauthlib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 23:23:19 +00:00
dependabot[bot]
34ca6ca7d1 Bump pytest from 8.0.2 to 8.1.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.0.2 to 8.1.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.1.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 23:23:15 +00:00
dependabot[bot]
37728ce9ba Bump packaging from 23.2 to 24.0
Bumps [packaging](https://github.com/pypa/packaging) from 23.2 to 24.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/23.2...24.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 23:22:59 +00:00
dependabot[bot]
479b4f8a76 Bump types-python-dateutil from 2.8.19.20240106 to 2.8.19.20240311
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.20240106 to 2.8.19.20240311.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 23:22:55 +00:00
dependabot[bot]
0a853d9dfd Bump importlib-metadata from 7.0.1 to 7.0.2
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 23:22:49 +00:00
manuelcortez
9f1d3b1fb2 Updated translation catalogs 2024-03-10 00:54:45 +00:00
José Manuel Delicado
ba0fe23080 Merge pull request #603 from MCV-Software/dependabot/pip/httpx-0.27.0
Bump httpx from 0.26.0 to 0.27.0
2024-03-05 07:38:24 +01:00
dependabot[bot]
f06208106d Bump httpx from 0.26.0 to 0.27.0
Bumps [httpx](https://github.com/encode/httpx) from 0.26.0 to 0.27.0.
- [Release notes](https://github.com/encode/httpx/releases)
- [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpx/compare/0.26.0...0.27.0)

---
updated-dependencies:
- dependency-name: httpx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-05 06:34:47 +00:00
José Manuel Delicado
5e074d40cf Merge pull request #606 from MCV-Software/dependabot/pip/future-1.0.0
Bump future from 0.18.3 to 1.0.0
2024-03-05 07:33:59 +01:00
José Manuel Delicado
1eddebb775 Merge pull request #607 from MCV-Software/dependabot/pip/hstspreload-2024.3.1
Bump hstspreload from 2024.2.1 to 2024.3.1
2024-03-05 07:33:40 +01:00
José Manuel Delicado
9906047f16 Merge pull request #608 from MCV-Software/dependabot/pip/python-dateutil-2.9.0.post0
Bump python-dateutil from 2.8.2 to 2.9.0.post0
2024-03-05 07:33:19 +01:00
dependabot[bot]
6bccfe08b7 Bump python-dateutil from 2.8.2 to 2.9.0.post0
Bumps [python-dateutil](https://github.com/dateutil/dateutil) from 2.8.2 to 2.9.0.post0.
- [Release notes](https://github.com/dateutil/dateutil/releases)
- [Changelog](https://github.com/dateutil/dateutil/blob/master/NEWS)
- [Commits](https://github.com/dateutil/dateutil/compare/2.8.2...2.9.0.post0)

---
updated-dependencies:
- dependency-name: python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 23:40:22 +00:00
dependabot[bot]
ff25f7cbd2 Bump hstspreload from 2024.2.1 to 2024.3.1
Bumps [hstspreload](https://github.com/sethmlarson/hstspreload) from 2024.2.1 to 2024.3.1.
- [Commits](https://github.com/sethmlarson/hstspreload/compare/2024.2.1...2024.3.1)

---
updated-dependencies:
- dependency-name: hstspreload
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 23:40:13 +00:00
dependabot[bot]
98aeafa0cc Bump future from 0.18.3 to 1.0.0
Bumps [future](https://github.com/PythonCharmers/python-future) from 0.18.3 to 1.0.0.
- [Release notes](https://github.com/PythonCharmers/python-future/releases)
- [Changelog](https://github.com/PythonCharmers/python-future/blob/master/docs/changelog.rst)
- [Commits](https://github.com/PythonCharmers/python-future/compare/v0.18.3...v1.0.0)

---
updated-dependencies:
- dependency-name: future
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 23:40:03 +00:00
manuelcortez
32fbf0417c Updated translation catalogs 2024-03-03 00:54:47 +00:00
José Manuel Delicado
3ed52ae1a8 Merge pull request #601 from MCV-Software/dependabot/pip/sniffio-1.3.1
Bump sniffio from 1.3.0 to 1.3.1
2024-02-27 07:41:51 +01:00
José Manuel Delicado
9b8f989c35 Merge pull request #602 from MCV-Software/dependabot/pip/pytest-8.0.2
Bump pytest from 8.0.1 to 8.0.2
2024-02-27 07:41:36 +01:00
José Manuel Delicado
0b6d93b376 Merge pull request #604 from MCV-Software/dependabot/pip/httpcore-1.0.4
Bump httpcore from 1.0.3 to 1.0.4
2024-02-27 07:40:58 +01:00
José Manuel Delicado
b2282e47eb Merge pull request #605 from MCV-Software/dependabot/pip/coverage-7.4.3
Bump coverage from 7.4.0 to 7.4.3
2024-02-27 07:40:43 +01:00
dependabot[bot]
0e5fd4d2a1 Bump coverage from 7.4.0 to 7.4.3
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.4.0 to 7.4.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.0...7.4.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 23:21:00 +00:00
dependabot[bot]
d10fa02d75 Bump httpcore from 1.0.3 to 1.0.4
Bumps [httpcore](https://github.com/encode/httpcore) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/encode/httpcore/releases)
- [Changelog](https://github.com/encode/httpcore/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpcore/compare/1.0.3...1.0.4)

---
updated-dependencies:
- dependency-name: httpcore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 23:20:48 +00:00
dependabot[bot]
ce9f3c0be4 Bump pytest from 8.0.1 to 8.0.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.1...8.0.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 23:20:37 +00:00
dependabot[bot]
c404beda68 Bump sniffio from 1.3.0 to 1.3.1
Bumps [sniffio](https://github.com/python-trio/sniffio) from 1.3.0 to 1.3.1.
- [Commits](https://github.com/python-trio/sniffio/compare/v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: sniffio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 23:20:28 +00:00
manuelcortez
e503766eee Updated translation catalogs 2024-02-25 00:54:56 +00:00
José Manuel Delicado
29188ead9c Merge pull request #598 from MCV-Software/dependabot/pip/httpcore-1.0.3
Bump httpcore from 1.0.2 to 1.0.3
2024-02-20 07:37:04 +01:00
José Manuel Delicado
39525f8cb3 Merge pull request #599 from MCV-Software/dependabot/pip/urllib3-2.2.1
Bump urllib3 from 2.2.0 to 2.2.1
2024-02-20 07:36:47 +01:00
José Manuel Delicado
d7ca5c3820 Merge pull request #600 from MCV-Software/dependabot/pip/pytest-8.0.1
Bump pytest from 8.0.0 to 8.0.1
2024-02-20 07:36:32 +01:00
dependabot[bot]
cb1d06f05d Bump pytest from 8.0.0 to 8.0.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.0...8.0.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 23:21:14 +00:00
dependabot[bot]
177cf1a896 Bump urllib3 from 2.2.0 to 2.2.1
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.0...2.2.1)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 23:21:03 +00:00
dependabot[bot]
d93620a74f Bump httpcore from 1.0.2 to 1.0.3
Bumps [httpcore](https://github.com/encode/httpcore) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/encode/httpcore/releases)
- [Changelog](https://github.com/encode/httpcore/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpcore/compare/1.0.2...1.0.3)

---
updated-dependencies:
- dependency-name: httpcore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 23:21:00 +00:00
manuelcortez
a571cef885 Updated translation catalogs 2024-02-18 00:54:56 +00:00
José Manuel Delicado
37f2870950 Merge pull request #595 from MCV-Software/dependabot/pip/lief-0.14.1
Bump lief from 0.14.0 to 0.14.1
2024-02-13 07:47:33 +01:00
José Manuel Delicado
7a31f8e474 Merge pull request #596 from MCV-Software/dependabot/pip/cx-freeze-6.15.15
Bump cx-freeze from 6.15.14 to 6.15.15
2024-02-13 07:47:16 +01:00
José Manuel Delicado
f5a9578331 Merge pull request #597 from MCV-Software/dependabot/pip/numpy-1.26.4
Bump numpy from 1.26.3 to 1.26.4
2024-02-13 07:46:59 +01:00
dependabot[bot]
c9e41a534e Bump numpy from 1.26.3 to 1.26.4
Bumps [numpy](https://github.com/numpy/numpy) from 1.26.3 to 1.26.4.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.26.3...v1.26.4)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 23:51:03 +00:00
dependabot[bot]
90df276479 Bump cx-freeze from 6.15.14 to 6.15.15
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 6.15.14 to 6.15.15.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/6.15.14...6.15.15)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 23:50:53 +00:00
dependabot[bot]
b6a3324dc9 Bump lief from 0.14.0 to 0.14.1
Bumps [lief](https://github.com/sponsors/lief-project) from 0.14.0 to 0.14.1.
- [Commits](https://github.com/sponsors/lief-project/commits)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 23:50:47 +00:00
manuelcortez
ed83d6b839 Updated translation catalogs 2024-02-11 00:55:06 +00:00
d6d3f0810c Fix: Add search buffers inside searches in GUI 2024-02-07 12:14:06 -06:00
9f80891e1d Fix: Open actions dialogue from followers and following buffers. Closes #575 2024-02-07 12:04:24 -06:00
José Manuel Delicado
04853165b3 Merge pull request #591 from MCV-Software/dependabot/pip/certifi-2024.2.2
Bump certifi from 2023.11.17 to 2024.2.2
2024-02-06 07:42:59 +01:00
José Manuel Delicado
8777fde660 Merge pull request #592 from MCV-Software/dependabot/pip/hstspreload-2024.2.1
Bump hstspreload from 2024.1.5 to 2024.2.1
2024-02-06 07:42:38 +01:00
José Manuel Delicado
8a6d505205 Merge pull request #593 from MCV-Software/dependabot/pip/urllib3-2.2.0
Bump urllib3 from 2.1.0 to 2.2.0
2024-02-06 07:42:17 +01:00
José Manuel Delicado
e53848fd33 Merge pull request #594 from MCV-Software/dependabot/pip/cx-freeze-6.15.14
Bump cx-freeze from 6.15.13 to 6.15.14
2024-02-06 07:42:00 +01:00
dependabot[bot]
a533dccb38 Bump cx-freeze from 6.15.13 to 6.15.14
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 6.15.13 to 6.15.14.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/6.15.13...6.15.14)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:43:28 +00:00
dependabot[bot]
7fb5ff3927 Bump urllib3 from 2.1.0 to 2.2.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.1.0...2.2.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:43:22 +00:00
dependabot[bot]
a8301c0df3 Bump hstspreload from 2024.1.5 to 2024.2.1
Bumps [hstspreload](https://github.com/sethmlarson/hstspreload) from 2024.1.5 to 2024.2.1.
- [Commits](https://github.com/sethmlarson/hstspreload/compare/2024.1.5...2024.2.1)

---
updated-dependencies:
- dependency-name: hstspreload
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:43:17 +00:00
dependabot[bot]
227b1934a8 Bump certifi from 2023.11.17 to 2024.2.2
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.11.17 to 2024.2.2.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:43:13 +00:00
manuelcortez
4161392e12 Updated translation catalogs 2024-02-04 00:54:59 +00:00
José Manuel Delicado
9294310d65 Merge pull request #588 from MCV-Software/dependabot/pip/cx-freeze-6.15.13
Bump cx-freeze from 6.15.12 to 6.15.13
2024-01-30 07:37:00 +01:00
José Manuel Delicado
1a1248e445 Merge pull request #589 from MCV-Software/dependabot/pip/pluggy-1.4.0
Bump pluggy from 1.3.0 to 1.4.0
2024-01-30 07:36:31 +01:00
José Manuel Delicado
ad0a100838 Merge pull request #590 from MCV-Software/dependabot/pip/pytest-8.0.0
Bump pytest from 7.4.4 to 8.0.0
2024-01-30 07:36:10 +01:00
dependabot[bot]
30b87d447c Bump pytest from 7.4.4 to 8.0.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.4 to 8.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.4...8.0.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 23:50:08 +00:00
dependabot[bot]
085f63bcb5 Bump pluggy from 1.3.0 to 1.4.0
Bumps [pluggy](https://github.com/pytest-dev/pluggy) from 1.3.0 to 1.4.0.
- [Changelog](https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pluggy/compare/1.3.0...1.4.0)

---
updated-dependencies:
- dependency-name: pluggy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 23:49:54 +00:00
dependabot[bot]
5ac71413ce Bump cx-freeze from 6.15.12 to 6.15.13
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 6.15.12 to 6.15.13.
- [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases)
- [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/6.15.12...6.15.13)

---
updated-dependencies:
- dependency-name: cx-freeze
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 23:49:50 +00:00
manuelcortez
9765a1d9f4 Updated translation catalogs 2024-01-28 00:54:48 +00:00
José Manuel Delicado
bcf05d344a Merge pull request #585 from MCV-Software/dependabot/pip/psutil-5.9.8
Bump psutil from 5.9.7 to 5.9.8
2024-01-23 07:44:38 +01:00
José Manuel Delicado
cfdc3abf08 Merge pull request #586 from MCV-Software/dependabot/pip/lief-0.14.0
Bump lief from 0.13.2 to 0.14.0
2024-01-23 07:43:54 +01:00
dependabot[bot]
7c93366b37 Bump lief from 0.13.2 to 0.14.0
Bumps [lief](https://github.com/sponsors/lief-project) from 0.13.2 to 0.14.0.
- [Commits](https://github.com/sponsors/lief-project/commits)

---
updated-dependencies:
- dependency-name: lief
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 23:31:00 +00:00
dependabot[bot]
614f2b3aaa Bump psutil from 5.9.7 to 5.9.8
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.7 to 5.9.8.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.7...release-5.9.8)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 23:30:57 +00:00
manuelcortez
65d7ff8f8b Updated translation catalogs 2024-01-21 00:55:14 +00:00
José Manuel Delicado
70a2635dc2 Merge pull request #584 from MCV-Software/dependabot/pip/markdown-3.5.2
Bump markdown from 3.5.1 to 3.5.2
2024-01-16 07:35:00 +01:00
dependabot[bot]
eef6637f85 Bump markdown from 3.5.1 to 3.5.2
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.5.1...3.5.2)

---
updated-dependencies:
- dependency-name: markdown
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-15 23:17:05 +00:00
manuelcortez
cd5fb8747b Updated translation catalogs 2024-01-14 00:55:19 +00:00
José Manuel Delicado
cedbb77eb5 Merge pull request #580 from MCV-Software/dependabot/pip/hyperframe-6.0.1
Bump hyperframe from 5.2.0 to 6.0.1
2024-01-09 07:50:27 +01:00
dependabot[bot]
4f6f98f56f Bump hyperframe from 5.2.0 to 6.0.1
Bumps [hyperframe](https://github.com/python-hyper/hyperframe) from 5.2.0 to 6.0.1.
- [Changelog](https://github.com/python-hyper/hyperframe/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/python-hyper/hyperframe/compare/v5.2.0...v6.0.1)

---
updated-dependencies:
- dependency-name: hyperframe
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 06:49:34 +00:00
José Manuel Delicado
18a89df400 Merge pull request #579 from MCV-Software/dependabot/pip/httpcore-1.0.2
Bump httpcore from 0.9.1 to 1.0.2
2024-01-09 07:43:23 +01:00
José Manuel Delicado
935c7d7fa2 Merge pull request #578 from MCV-Software/dependabot/pip/h11-0.14.0
Bump h11 from 0.9.0 to 0.14.0
2024-01-09 07:42:08 +01:00
dependabot[bot]
dab7b42bee Bump httpcore from 0.9.1 to 1.0.2
Bumps [httpcore](https://github.com/encode/httpcore) from 0.9.1 to 1.0.2.
- [Release notes](https://github.com/encode/httpcore/releases)
- [Changelog](https://github.com/encode/httpcore/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpcore/compare/0.9.1...1.0.2)

---
updated-dependencies:
- dependency-name: httpcore
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 06:42:06 +00:00
dependabot[bot]
58749b83af Bump h11 from 0.9.0 to 0.14.0
Bumps [h11](https://github.com/python-hyper/h11) from 0.9.0 to 0.14.0.
- [Commits](https://github.com/python-hyper/h11/compare/v0.9.0...v0.14.0)

---
updated-dependencies:
- dependency-name: h11
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 06:41:50 +00:00
José Manuel Delicado
7249fbfc01 Merge pull request #577 from MCV-Software/dependabot/pip/idna-3.6
Bump idna from 2.10 to 3.6
2024-01-09 07:41:29 +01:00
José Manuel Delicado
e926d4f817 Merge pull request #576 from MCV-Software/dependabot/pip/h2-4.1.0
Bump h2 from 3.2.0 to 4.1.0
2024-01-09 07:40:22 +01:00
dependabot[bot]
870d6ed147 Bump idna from 2.10 to 3.6
Bumps [idna](https://github.com/kjd/idna) from 2.10 to 3.6.
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v2.10...v3.6)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 23:50:57 +00:00
dependabot[bot]
6e10f8e31c Bump h2 from 3.2.0 to 4.1.0
Bumps [h2](https://github.com/python-hyper/h2) from 3.2.0 to 4.1.0.
- [Changelog](https://github.com/python-hyper/h2/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/python-hyper/h2/compare/v3.2.0...v4.1.0)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 23:50:53 +00:00
434328056e Merge branch 'next-gen' of github.com:mcv-software/twblue into next-gen 2024-01-07 18:30:52 -06:00
36420d6a5b Fix: Added missing parameter coming from WX Widgets to some calls. Fixes GUI buttons not responding when pressed in most buffers 2024-01-07 18:28:29 -06:00
José Manuel Delicado
ccd3edd2da Merge pull request #571 from MCV-Software/dependabot/pip/httpx-0.26.0
Bump httpx from 0.13.3 to 0.26.0
2024-01-07 10:10:02 +01:00
José Manuel Delicado
c3744fb680 Merge pull request #572 from MCV-Software/dependabot/pip/chardet-5.2.0
Bump chardet from 3.0.4 to 5.2.0
2024-01-07 10:05:49 +01:00
dependabot[bot]
4d89e8c437 Bump httpx from 0.13.3 to 0.26.0
Bumps [httpx](https://github.com/encode/httpx) from 0.13.3 to 0.26.0.
- [Release notes](https://github.com/encode/httpx/releases)
- [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpx/compare/0.13.3...0.26.0)

---
updated-dependencies:
- dependency-name: httpx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-07 09:03:43 +00:00
José Manuel Delicado
d3cc46b723 Merge pull request #573 from MCV-Software/dependabot/pip/rfc3986-2.0.0
Bump rfc3986 from 1.5.0 to 2.0.0
2024-01-07 10:03:26 +01:00
José Manuel Delicado
dc7d9b6923 Merge pull request #574 from MCV-Software/dependabot/pip/hpack-4.0.0
Bump hpack from 3.0.0 to 4.0.0
2024-01-07 10:02:46 +01:00
dependabot[bot]
22c5147c92 Bump hpack from 3.0.0 to 4.0.0
Bumps [hpack](https://github.com/python-hyper/hpack) from 3.0.0 to 4.0.0.
- [Changelog](https://github.com/python-hyper/hpack/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/python-hyper/hpack/compare/v3.0.0...v4.0.0)

---
updated-dependencies:
- dependency-name: hpack
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-07 01:49:41 +00:00
dependabot[bot]
dda3d21008 Bump rfc3986 from 1.5.0 to 2.0.0
Bumps [rfc3986](https://github.com/python-hyper/rfc3986) from 1.5.0 to 2.0.0.
- [Commits](https://github.com/python-hyper/rfc3986/compare/1.5.0...2.0.0)

---
updated-dependencies:
- dependency-name: rfc3986
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-07 01:49:38 +00:00
dependabot[bot]
871562fa4c Bump chardet from 3.0.4 to 5.2.0
Bumps [chardet](https://github.com/chardet/chardet) from 3.0.4 to 5.2.0.
- [Release notes](https://github.com/chardet/chardet/releases)
- [Commits](https://github.com/chardet/chardet/compare/3.0.4...5.2.0)

---
updated-dependencies:
- dependency-name: chardet
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-07 01:49:27 +00:00
88ddace811 Added dependabot config 2024-01-06 19:48:53 -06:00
8d1b0c73df Update Python requirements to include versions we currently use 2024-01-06 19:45:22 -06:00
3e3396687d Merge branch 'next-gen' of github.com:mcv-software/twblue into next-gen 2024-01-06 19:08:46 -06:00
c9c78105a5 Added info about new version on updater 2024-01-06 19:08:28 -06:00
manuelcortez
49898c4407 Updated translation catalogs 2024-01-07 00:55:13 +00:00
José Manuel Delicado
46c897221f Merge pull request #569 from Arfs6/fixed-generating-documentation-readme
Fixed documentation generation step in readme
2024-01-06 10:25:14 +01:00
Abdulqadir Ahmad
7a83e399fc documentation: Changed document_importer.py to documentation_importer.py in documentation generation of README 2024-01-06 08:34:12 +01:00
147e13bb26 More fixes 2024-01-05 17:28:17 -06:00
faa54108fa Second attempt 2024-01-05 17:13:02 -06:00
44c1dbe6e0 Fix portable creation 2024-01-05 17:04:51 -06:00
85 changed files with 32638 additions and 17920 deletions

13
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "pip" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
ignore:
- dependency-name: "lief"

View File

@@ -34,11 +34,16 @@ jobs:
cd scripts
makensis twblue.nsi
- name: Create portable
working-directory: scripts\TWBlue64
run: |
7z a -tzip TWBlue_portable.zip .
- name: Create new release
env:
gh_token: ${{ github.token }}
run: |
mkdir .release-assets
mv scripts\TWBlue_setup.exe .release-assets\TWBlue_setup_${{github.ref_name}}.exe
7z a -tzip .release-assets\TWBlue_portable_${{github.ref_name}}.zip scripts\TWBlue64
gh release create release -F "release-notes.md" -t "${{github.ref_name}}" .release-assets\TWBlue_setup_${{github.ref_name}}.exe .release-assets\TWBlue_portable_${{github.ref_name}}.zip
mv scripts\TWBlue64\TWBlue_portable.zip .release-assets\TWBlue_portable_${{github.ref_name}}.zip
gh release create "${{github.ref_name}}" -F "release-notes.md" -t "${{github.ref_name}}" .release-assets\TWBlue_setup_${{github.ref_name}}.exe .release-assets\TWBlue_portable_${{github.ref_name}}.zip

View File

@@ -75,7 +75,7 @@ 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 documentation_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.
@@ -108,4 +108,4 @@ To manage translations in TWBlue, you can install the [Babel package.](https://p
pybabel extract -o twblue.pot --msgid-bugs-address "manuel@manuelcortez.net" --copyright-holder "MCV software" --input-dirs ..\src
```
Take into account, though, that we use [weblate](https://weblate.mcvsoftware.com) to track translation work for TWBlue. If you wish to be part of our translation team, please open an issue so we can create an account for you in Weblate.
Take into account, though, that we use [weblate](https://weblate.mcvsoftware.com) to track translation work for TWBlue. If you wish to be part of our translation team, please open an issue so we can create an account for you in Weblate.

View File

@@ -2,6 +2,43 @@ TWBlue Changelog
## changes in this version
In this version, we have focused on providing initial support for Mastodon filters and pinned posts. From TWBlue, it is now possible to initially use filters for posts in most buffers, as well as manage them (create, edit, and delete filters, in addition to adding keywords). A new variable has also been added for post templates in the invisible interface that allows displaying whether a post has been pinned by its author.
* Mastodon:
* Added filters support to TWBlue. Filters are only implemented in posts for the moment. TWBlue will, depending in the selected settings, hide behind a content warning or completely ignore a post based on filters. Also it is possible to add, delete or edit filters from the buffer menu in the menu bar.
* A language selector has been added for posting in TWBlue. It is now possible to choose the language in which a post will be made, which will be useful for content filtering and other language-dependent features. The default language can be chosen based on your Mastodon accounts language, the language of the post youre replying to, or, if no automatic selection is possible, TWBlues own language will be used by default.
* TWBlue now supports announcing (via a new template variable for posts) pinned posts. You can edit your posts template and use the $pinned variable. When reading the post, TWBlue will indicate if the post is pinned. Also, when loading an user timeline, pinned posts will be loaded at the top or bottom of the buffer according to local settings.
* TWBlue should be able to display all posts in the post displayer dialog.
* reading long posts in the graphical user interface should work better.
## Changes in version 2024.5.23
* Core:
* The way sessions are named has been changed. Now the account is indicated first, followed by the social network it belongs to.
* An option has been added to the global options dialog that allows for the reading of long posts in the graphical interface. This is especially useful since, by default, the graphical interface can only display a limited number of characters in the post.
* Some options that are no longer necessary in the application have been removed from the global settings dialog.
* Mastodon:
* fixed an error that caused TWBlue to not display some posts correctly.
* Fixed name for community timelines when created during startup. Now it should be clear if it's a federated or local timeline.
* Defined shortcuts to fields on the update profile dialog so it will be easier to navigate.
* Now it is possible to load conversations directly from community timelines.
## Changes in version 2024.5.19
In this version of TWBlue, which is being released several months after the previous one, we focused on adding initial support for GoToSocial-type networks. GoToSocial is a server for creating decentralized networks similar to Mastodon. Its API is very similar but retains some differences. In this version, TWBlue can be used to log into GoToSocial accounts, although there will be some features, such as the Streaming API and Markdown support, that are not yet functional. Another significant addition is support for creating community timelines, which will allow you to load the local and public timeline of remote instances. This is useful if your instance does not federate directly with them, as it will allow you to see posts from other communities and interact directly with them. Finally, the translation module has been rewritten; it now supports using LibreTranslate by default and DeepL, for which an API key is required. Below is the detailed list of changes:
* Core:
* Added Initial Support to GoToSocial. Some features are not fully implemented yet, although GoToXocial instances should be able to be used as normal sessions in TWBlue. Streaming, poll options and markdown are not supported but planned for the near future.
* The translation module has been rewritten. Now, instead of offering translations with Google Translator, the user can choose between [LibreTranslate,](https://github.com/LibreTranslate/LibreTranslate) which requires no configuration thanks to the [instance of the NVDA Spanish community;](https://translate.nvda.es) or translate using [DeepL,](https://deepl.com) for which it is necessary to create an account on DeepL and [subscribe to a DeepL API Free plan](https://support.deepl.com/hc/en-us/articles/360021200939-DeepL-API-Free) to obtain the API key which can be used to translate up to 500000 characters every month. The API key can be entered in the global options dialog, under a new tab called translation services. When translating a text, the translation engine can be changed. When changing the translation engine, the target language must be selected again before translation takes place.
* TWBlue should be able to switch to Windows 11 Keymap when running under Windows 11. ([#494](https://github.com/mcv-software/twblue/issues/494))
* Mastodon:
* Added support for viewing communities: A community timeline is the local or public timeline of another instance. This is especially useful when the instance one is part of does not federate with other remote instances. The posts displayed are only those that are shared publicly. It is possible to interact with the posts from community timelines, but it should be noted that TWBlue will take some time to retrieve the post one wishes to interact with.
* When viewing a post, a button displays the number of boosts and times it has been added to favorites. Clicking on that button will open a list of users who have interacted with the post. From that list, it is possible to view profiles and perform common user actions.
* Now it is possible to mute conversations in Mastodon sessions. To do this, there is a button that can be called "Mute" or "Unmute Conversation" in the dialog to display the post. Conversations that have been muted will not generate notifications or mentions when they receive new replies. Only conversations that you are a part of can be muted.
* Fixed an error that caused TWBlue to be unable to properly display the user action dialog from the followers or following buffer. ([#575](https://github.com/mcv-software/twblue/issues/575))
## changes in version 2024.01.05
* Core:
* The TWBlue website will no longer be available on the twblue.es domain. Beginning in January 2024, TWBlue will live at https://twblue.mcvsoftware.com. Also, we will start releasing versions on [gitHub releases](https://github.com/mcv-software/twblue/releases) so it will be easier to track specific versions.
* As of the first release of TWBlue in 2024, we will officially stop generating 32-bit (X86) compatible binaries due to the increasing difficulty of generating versions compatible with this architecture in modern Python.

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,10 @@
## Changelog
* Core:
* The TWBlue website will no longer be available on the twblue.es domain. Beginning in January 2024, TWBlue will live at https://twblue.mcvsoftware.com. Also, we will start releasing versions on [gitHub releases](https://github.com/mcv-software/twblue/releases) so it will be easier to track specific versions.
* As of the first release of TWBlue in 2024, we will officially stop generating 32-bit (X86) compatible binaries due to the increasing difficulty of generating versions compatible with this architecture in modern Python.
* TWBlue should be more reliable when checking for updates.
* If running from source, automatic updates will not be checked as this works only for distribution. ([#540](https://github.com/MCV-Software/TWBlue/pull/540))
* Fixed the 'report an error' item in the help menu. Now this item redirects to our gitHub issue tracker. ([#524](https://github.com/MCV-Software/TWBlue/pull/524))
In this version, we have focused on providing initial support for Mastodon filters and pinned posts. From TWBlue, it is now possible to initially use filters for posts in most buffers, as well as manage them (create, edit, and delete filters, in addition to adding keywords). A new variable has also been added for post templates in the invisible interface that allows displaying whether a post has been pinned by its author.
* Mastodon:
* Implemented actions for the notifications buffer on a mastodon instance. Actions can be performed from the contextual menu on every notification, or by using invisible keystrokes. ([#517](https://github.com/mcv-software/twblue/issues/517))
* Implemented update profile dialog. ([#547](https://github.com/MCV-Software/TWBlue/pull/547))
* It is possible to display an user profile from the user menu within the menu bar, or by using the invisible keystroke for user details. ([#555](https://github.com/MCV-Software/TWBlue/pull/555))
* Added possibility to vote in polls. This is mapped to Alt+Win+Shift+V in the invisible keymaps for windows 10/11.
* Added posts search. Take into account that Mastodon instances should be configured with full text search enabled. Search for posts only include posts the logged-in user has interacted with. ([#541](https://github.com/MCV-Software/TWBlue/pull/541))
* Added user autocompletion settings in account settings dialog, so it is possible to ask TWBlue to scan mastodon accounts and add people from followers and following buffers. For now, user autocompletion can be used only when composing new posts or replies.
* TWBlue should be able to ignore deleted direct messages or messages from deleted accounts. Previously, a direct message that no longer existed in the instance caused errors when loading the direct messages buffer and could potentially affect notifications as well.
* TWBlue should be able to ignore notifications from deleted accounts or posts.
* Added filters support to TWBlue. Filters are only implemented in posts for the moment. TWBlue will, depending in the selected settings, hide behind a content warning or completely ignore a post based on filters. Also it is possible to add, delete or edit filters from the buffer menu in the menu bar.
* A language selector has been added for posting in TWBlue. It is now possible to choose the language in which a post will be made, which will be useful for content filtering and other language-dependent features. The default language can be chosen based on your Mastodon accounts language, the language of the post youre replying to, or, if no automatic selection is possible, TWBlues own language will be used by default.
* TWBlue now supports announcing (via a new template variable for posts) pinned posts. You can edit your posts template and use the $pinned variable. When reading the post, TWBlue will indicate if the post is pinned. Also, when loading an user timeline, pinned posts will be loaded at the top or bottom of the buffer according to local settings.
* TWBlue should be able to display all posts in the post displayer dialog.
* reading long posts in the graphical user interface should work better.

View File

@@ -1,55 +1,58 @@
wxpython
pytest
coverage
wheel
future
configobj
markdown
requests
oauthlib
requests-oauthlib
requests-toolbelt
pypubsub
arrow
python-dateutil
winpaths
PySocks
win_inet_pton
# Install the latest RC of this lib
# see https://github.com/ssut/py-googletrans/issues/234
googletrans==4.0.0-rc1
idna<3,>=2.5
chardet
urllib3
youtube-dl
python-vlc
pypiwin32
pywin32
certifi
backports.functools_lru_cache
cx_freeze
twitter-text-parser
mastodon.py
pyenchant
sqlitedict
cx-Logging
h11
h2
hpack
hstspreload
httpcore
httpx
hyperframe
rfc3986
sniffio
attrs
importlib-metadata
numpy
pillow
charset-normalizer
demoji
psutil
git+https://github.com/accessibleapps/libloader
git+https://github.com/accessibleapps/platform_utils
git+https://github.com/accessibleapps/accessible_output2
git+https://github.com/accessibleapps/sound_lib
accessible_output2 @ git+https://github.com/accessibleapps/accessible_output2@57bda997d98e87dd78aa049e7021cf777871619b
arrow==1.3.0
attrs==25.3.0
backports.functools-lru-cache==2.0.0
blurhash==1.1.5
certifi==2025.8.3
chardet==5.2.0
charset-normalizer==3.4.3
colorama==0.4.6
configobj==5.0.9
coverage==7.10.4
cx-Freeze==8.4.0
cx-Logging==3.2.1
decorator==5.2.1
demoji==1.1.0
deepl==1.22.0
future==1.0.0
idna==3.10
importlib-metadata==8.7.0
iniconfig==2.1.0
libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267
libretranslatepy==2.1.4
lief==0.15.1
Markdown==3.8.2
Mastodon.py==2.1.0
numpy==2.2.3
oauthlib==3.3.1
packaging==25.0
pillow==11.3.0
platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38
pluggy==1.6.0
psutil==7.0.0
pyenchant==3.2.2
pypiwin32==223
Pypubsub==4.0.3
PySocks==1.7.1
pytest==8.4.1
python-dateutil==2.9.0.post0
python-magic-bin==0.4.14
python-vlc==3.0.21203
pywin32==311
requests==2.32.5
requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
rfc3986==2.0.0
setuptools==69.0.0
six==1.17.0
sniffio==1.3.1
sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2
sqlitedict==2.1.0
twitter-text-parser==3.0.0
types-python-dateutil==2.9.0.20250809
urllib3==2.5.0
win-inet-pton==1.1.0
winpaths==0.2
wxPython==4.2.3
youtube-dl==2021.12.17
zipp==3.23.0

View File

@@ -27,7 +27,7 @@ var StartMenuFolder
!insertmacro MUI_PAGE_STARTMENU startmenu $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_LINK "Visit TWBlue website"
!define MUI_FINISHPAGE_LINK_LOCATION "https://twblue.es"
!define MUI_FINISHPAGE_LINK_LOCATION "https://twblue.mcvsoftware.com"
!define MUI_FINISHPAGE_RUN "$INSTDIR\TWBlue.exe"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
@@ -65,7 +65,7 @@ CreateShortCut "$DESKTOP\TWBlue.lnk" "$INSTDIR\TWBlue.exe"
!insertmacro MUI_STARTMENU_WRITE_BEGIN startmenu
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\TWBlue.lnk" "$INSTDIR\TWBlue.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\TWBlue on the web.lnk" "http://twblue.es"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\TWBlue on the web.lnk" "https://twblue.mcvsoftware.com"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
WriteUninstaller "$INSTDIR\Uninstall.exe"
@@ -74,7 +74,7 @@ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "U
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.95"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "URLInfoAbout" "https://twblue.es"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "URLInfoAbout" "https://twblue.mcvsoftware.com"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "VersionMajor" 0
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "VersionMinor" 0
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\twblue" "NoModify" 1

View File

@@ -9,8 +9,7 @@ update_period = integer(default=2)
hide_gui = boolean(default=False)
voice_enabled = boolean(default=False)
ask_at_exit = boolean(default=True)
autostart = boolean(default=False)
handle_longtweets = boolean(default=True)
read_long_posts_in_gui = boolean(default=True)
use_invisible_keyboard_shorcuts = boolean(default=True)
play_ready_sound = boolean(default=True)
speak_ready_msg = boolean(default=True)
@@ -18,9 +17,6 @@ log_level = string(default="error")
load_keymap = string(default="default.keymap")
donation_dialog_displayed = boolean(default=False)
check_for_updates = boolean(default=True)
remember_mention_and_longtweet = boolean(default=False)
longtweet = boolean(default=false)
mention_all = boolean(default=False)
no_streaming = boolean(default=False)
[proxy]
@@ -28,4 +24,10 @@ type = integer(default=0)
server = string(default="")
port = integer(default=8080)
user = string(default="")
password = string(default="")
password = string(default="")
[translator]
engine=string(default="LibreTranslate")
lt_api_url=string(default="https://translate.nvda.es")
lt_api_key=string(default="")
deepl_api_key = string(default="")

View File

@@ -1,5 +1,6 @@
# -*- coding: cp1252 -*-
import os
import sys
import config_utils
import paths
import logging
@@ -21,7 +22,10 @@ def setup ():
log.debug("Loading keymap...")
global keymap
if float(platform.version()[:2]) >= 10 and app["app-settings"]["load_keymap"] == "default.keymap":
app["app-settings"]["load_keymap"] = "Windows 10.keymap"
if sys.getwindowsversion().build > 22000:
app["app-settings"]["load_keymap"] = "Windows11.keymap"
else:
app["app-settings"]["load_keymap"] = "Windows 10.keymap"
app.write()
global changed_keymap
changed_keymap = True

View File

@@ -5,3 +5,4 @@ from .conversations import ConversationBuffer, ConversationListBuffer
from .users import UserBuffer
from .notifications import NotificationsBuffer
from .search import SearchBuffer
from .community import CommunityBuffer

View File

@@ -70,7 +70,7 @@ class BaseBuffer(base.Buffer):
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, posts=post_data, visibility=post.get_visibility(), **kwargs)
call_threaded(self.session.send_post, posts=post_data, visibility=post.get_visibility(), language=post.get_language(), **kwargs)
if hasattr(post.message, "destroy"):
post.message.destroy()
@@ -108,13 +108,28 @@ class BaseBuffer(base.Buffer):
min_id = self.session.db[self.name][0].id
else:
min_id = self.session.db[self.name][-1].id
# loads pinned posts from user accounts.
# Load those posts only when there are no items previously loaded.
if "-timeline" in self.name and "account_statuses" in self.function and len(self.session.db.get(self.name, [])) == 0:
pinned_posts = self.session.api.account_statuses(pinned=True, limit=count, *self.args, **self.kwargs)
pinned_posts.reverse()
else:
pinned_posts = None
try:
results = getattr(self.session.api, self.function)(min_id=min_id, limit=count, *self.args, **self.kwargs)
results.reverse()
except Exception as e:
log.exception("Error %s" % (str(e)))
return
if self.session.settings["general"]["reverse_timelines"]:
if pinned_posts != None and len(pinned_posts) > 0:
amount_of_pinned_posts = self.session.order_buffer(self.name, pinned_posts)
number_of_items = self.session.order_buffer(self.name, results)
if self.session.settings["general"]["reverse_timelines"] == False:
if pinned_posts != None and len(pinned_posts) > 0:
amount_of_pinned_posts = self.session.order_buffer(self.name, pinned_posts)
if pinned_posts != None and len(pinned_posts) > 0:
number_of_items = amount_of_pinned_posts+number_of_items
log.debug("Number of items retrieved: %d" % (number_of_items,))
if hasattr(self, "finished_timeline") and self.finished_timeline == False:
if "-timeline" in self.name:
@@ -157,6 +172,9 @@ class BaseBuffer(base.Buffer):
items_db = self.session.db[self.name]
for i in items:
if utils.find_item(i, self.session.db[self.name]) == None:
filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(self.name))
if filter_status == "hide":
continue
elements.append(i)
if self.session.settings["general"]["reverse_timelines"] == False:
items_db.insert(0, i)
@@ -320,7 +338,7 @@ class BaseBuffer(base.Buffer):
return False
return True
def reply(self, item=None, *args, **kwargs):
def reply(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
visibility = item.visibility
@@ -335,16 +353,19 @@ class BaseBuffer(base.Buffer):
visibility = "unlisted"
if item.reblog != None:
users = ["@{} ".format(user.acct) for user in item.reblog.mentions if user.id != self.session.db["user_id"]]
language = item.reblog.language
if item.reblog.account.acct != item.account.acct and "@{} ".format(item.reblog.account.acct) not in users:
users.append("@{} ".format(item.reblog.account.acct))
else:
users = ["@{} ".format(user.acct) for user in item.mentions if user.id != self.session.db["user_id"]]
language = item.language
if "@{} ".format(item.account.acct) not in users and item.account.id != self.session.db["user_id"]:
users.insert(0, "@{} ".format(item.account.acct))
users_str = "".join(users)
post = messages.post(session=self.session, title=title, caption=caption, text=users_str)
visibility_settings = dict(public=0, unlisted=1, private=2, direct=3)
post.message.visibility.SetSelection(visibility_settings.get(visibility))
post.set_language(language)
# Respect content warning settings.
if item.sensitive:
post.message.sensitive.SetValue(item.sensitive)
@@ -353,11 +374,11 @@ class BaseBuffer(base.Buffer):
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=post.get_visibility())
call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=post.get_visibility(), language=post.get_language())
if hasattr(post.message, "destroy"):
post.message.destroy()
def send_message(self, item=None, *args, **kwargs):
def send_message(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
title = _("Conversation with {}").format(item.account.username)
@@ -380,11 +401,11 @@ class BaseBuffer(base.Buffer):
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, posts=post_data, visibility="direct", reply_to=item.id)
call_threaded(self.session.send_post, posts=post_data, visibility="direct", reply_to=item.id, language=post.get_language())
if hasattr(post.message, "destroy"):
post.message.destroy()
def share_item(self, item=None, *args, **kwargs):
def share_item(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
if self.can_share(item=item) == False:
@@ -406,6 +427,8 @@ class BaseBuffer(base.Buffer):
original_date = arrow.get(self.session.db[self.name][self.buffer.list.get_selected()].created_at)
ts = original_date.humanize(locale=languageHandler.getLanguage())
self.buffer.list.list.SetItem(self.buffer.list.get_selected(), 2, ts)
if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus():
wx.CallLater(40, output.speak, self.get_message(), interrupt=True)
if self.session.settings['sound']['indicate_audio'] and utils.is_audio_or_video(post):
self.session.sound.play("audio.ogg")
if self.session.settings['sound']['indicate_img'] and utils.is_image(post):
@@ -414,7 +437,7 @@ class BaseBuffer(base.Buffer):
pub.sendMessage("toggleShare", shareable=can_share)
self.buffer.boost.Enable(can_share)
def audio(self, item=None, *args, **kwargs):
def audio(self, event=None, item=None, *args, **kwargs):
if sound.URLPlayer.player.is_playing():
return sound.URLPlayer.stop_audio()
if item == None:
@@ -489,7 +512,7 @@ class BaseBuffer(base.Buffer):
return item.reblog.url
return item.url
def open_in_browser(self, item=None, *args, **kwargs):
def open_in_browser(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
url = self.get_item_url(item=item)
@@ -510,7 +533,7 @@ class BaseBuffer(base.Buffer):
item = item.reblog
call_threaded(self.session.api_call, call_name="status_unfavourite", preexec_message=_("Removing from favorites..."), _sound="favourite.ogg", id=item.id)
def toggle_favorite(self, item=None, *args, **kwargs):
def toggle_favorite(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
if item.reblog != None:
@@ -525,7 +548,7 @@ class BaseBuffer(base.Buffer):
else:
call_threaded(self.session.api_call, call_name="status_unfavourite", preexec_message=_("Removing from favorites..."), _sound="favourite.ogg", id=item.id)
def toggle_bookmark(self, item=None, *args, **kwargs):
def toggle_bookmark(self, event=None, item=None, *args, **kwargs):
if item == None:
item = self.get_item()
if item.reblog != None:
@@ -549,8 +572,7 @@ class BaseBuffer(base.Buffer):
except MastodonNotFoundError:
output.speak(_("No status found with that ID"))
return
# print(post)
msg = messages.viewPost(item, offset_hours=self.session.db["utc_offset"], item_url=self.get_item_url(item=item))
msg = messages.viewPost(self.session, item, offset_hours=self.session.db["utc_offset"], item_url=self.get_item_url(item=item))
def ocr_image(self):
post = self.get_item()
@@ -591,8 +613,11 @@ class BaseBuffer(base.Buffer):
response = viewer.message.ShowModal()
viewer.message.Destroy()
def vote(self):
post = self.get_item()
def vote(self, item=None):
if item == None:
post = self.get_item()
else:
post = item
if not hasattr(post, "poll") or post.poll == None:
return
poll = post.poll
@@ -616,14 +641,14 @@ class BaseBuffer(base.Buffer):
return
poll = self.session.api_call(call_name="poll_vote", id=poll.id, choices=options, preexec_message=_("Sending vote..."))
def post_from_error(self, visibility, reply_to, data):
def post_from_error(self, visibility, reply_to, data, lang):
title = _("Post")
caption = _("Write your post here")
post = messages.post(session=self.session, title=title, caption=caption)
post.set_post_data(visibility=visibility, data=data)
post.set_post_data(visibility=visibility, data=data, language=language)
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, posts=post_data, reply_to=reply_to, visibility=post.get_visibility())
call_threaded(self.session.send_post, posts=post_data, reply_to=reply_to, visibility=post.get_visibility(), language=post.get_language())
if hasattr(post.message, "destroy"):
post.message.destroy()

View File

@@ -0,0 +1,160 @@
# -*- coding: utf-8 -*-
import time
import logging
import mastodon
import widgetUtils
import output
from wxUI import commonMessageDialogs
from sessions.mastodon import utils
from . import base
log = logging.getLogger("controller.buffers.mastodon.community")
class CommunityBuffer(base.BaseBuffer):
def __init__(self, community_url, *args, **kwargs):
super(CommunityBuffer, self).__init__(*args, **kwargs)
self.community_url = community_url
self.community_api = mastodon.Mastodon(api_base_url=self.community_url)
self.timeline = kwargs.get("timeline", "local")
self.kwargs.pop("timeline")
def get_buffer_name(self):
type = _("Local") if self.timeline == "local" else _("Federated")
instance = self.community_url.replace("https://", "")
return _(f"{type} timeline for {instance}")
def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False):
current_time = time.time()
if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True:
self.execution_time = current_time
log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type))
log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs))
count = self.session.settings["general"]["max_posts_per_call"]
min_id = None
# toDo: Implement reverse timelines properly here.
if self.name in self.session.db and len(self.session.db[self.name]) > 0:
if self.session.settings["general"]["reverse_timelines"]:
min_id = self.session.db[self.name][0].id
else:
min_id = self.session.db[self.name][-1].id
try:
results = self.community_api.timeline(timeline=self.timeline, min_id=min_id, limit=count, *self.args, **self.kwargs)
results.reverse()
except Exception as e:
log.exception("Error %s" % (str(e)))
return
number_of_items = self.session.order_buffer(self.name, results)
log.debug("Number of items retrieved: %d" % (number_of_items,))
self.put_items_on_list(number_of_items)
if number_of_items > 0 and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True:
self.session.sound.play(self.sound)
# Autoread settings
if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]:
self.auto_read(number_of_items)
return number_of_items
def get_more_items(self):
elements = []
if self.session.settings["general"]["reverse_timelines"] == False:
max_id = self.session.db[self.name][0].id
else:
max_id = self.session.db[self.name][-1].id
try:
items = self.community_api.timeline(timeline=self.timeline, max_id=max_id, limit=self.session.settings["general"]["max_posts_per_call"], *self.args, **self.kwargs)
except Exception as e:
log.exception("Error %s" % (str(e)))
return
items_db = self.session.db[self.name]
for i in items:
if utils.find_item(i, self.session.db[self.name]) == None:
elements.append(i)
if self.session.settings["general"]["reverse_timelines"] == False:
items_db.insert(0, i)
else:
items_db.append(i)
self.session.db[self.name] = items_db
selection = self.buffer.list.get_selected()
log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function))
safe = True
if self.session.settings["general"]["read_preferences_from_instance"]:
safe = self.session.expand_spoilers == False
if self.session.settings["general"]["reverse_timelines"] == False:
for i in elements:
post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe)
self.buffer.list.insert_item(True, *post)
else:
for i in elements:
post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe)
self.buffer.list.insert_item(False, *post)
self.buffer.list.select_item(selection)
output.speak(_(u"%s items retrieved") % (str(len(elements))), True)
def remove_buffer(self, force=False):
if force == False:
dlg = commonMessageDialogs.remove_buffer()
else:
dlg = widgetUtils.YES
if dlg == widgetUtils.YES:
tl_info = f"{self.timeline}@{self.community_url}"
self.session.settings["other_buffers"]["communities"].remove(tl_info)
self.session.settings.write()
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
return False
def get_item_from_instance(self, *args, **kwargs):
item = self.get_item()
try:
results = self.session.api.search(q=item.url, resolve=True, result_type="statuses")
except Exception as e:
log.exception("Error when searching for remote post.")
return None
item = results["statuses"][0]
return item
def reply(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).reply(item=item)
def send_message(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).send_message(item=item)
def share_item(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).share_item(item=item)
def add_to_favorites(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).add_to_favorite(item=item)
def remove_from_favorites(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).remove_from_favorites(item=item)
def toggle_favorite(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).toggle_favorite(item=item)
def toggle_bookmark(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).toggle_bookmark(item=item)
def vote(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).vote(item=item)
def view_item(self, *args, **kwargs):
item = self.get_item_from_instance()
if item != None:
super(CommunityBuffer, self).view_item(item=item)

View File

@@ -4,6 +4,7 @@ import logging
import wx
import widgetUtils
import output
import config
from mastodon import MastodonNotFoundError
from controller.mastodon import messages
from controller.buffers.mastodon.base import BaseBuffer
@@ -162,6 +163,8 @@ class ConversationListBuffer(BaseBuffer):
def onFocus(self, *args, **kwargs):
post = self.get_item()
if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus():
wx.CallLater(40, output.speak, self.get_message(), interrupt=True)
if self.session.settings['sound']['indicate_audio'] and utils.is_audio_or_video(post):
self.session.sound.play("audio.ogg")
if self.session.settings['sound']['indicate_img'] and utils.is_image(post):
@@ -188,7 +191,7 @@ class ConversationListBuffer(BaseBuffer):
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=visibility)
call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=visibility, language=post.get_language())
if hasattr(post.message, "destroy"):
post.message.destroy()

View File

@@ -56,6 +56,9 @@ class MentionsBuffer(BaseBuffer):
items_db = self.session.db[self.name]
for i in items:
if utils.find_item(i, self.session.db[self.name]) == None:
filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(self.name))
if filter_status == "hide":
continue
elements.append(i)
if self.session.settings["general"]["reverse_timelines"] == False:
items_db.insert(0, i)

View File

@@ -1,8 +1,12 @@
# -*- coding: utf-8 -*-
import time
import logging
import arrow
import widgetUtils
import wx
import output
import languageHandler
import config
from pubsub import pub
from controller.buffers.mastodon.base import BaseBuffer
from controller.mastodon import messages
@@ -38,8 +42,11 @@ class NotificationsBuffer(BaseBuffer):
original_date = arrow.get(self.session.db[self.name][self.buffer.list.get_selected()].created_at)
ts = original_date.humanize(locale=languageHandler.getLanguage())
self.buffer.list.list.SetItem(self.buffer.list.get_selected(), 1, ts)
if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus():
wx.CallLater(40, output.speak, self.get_message(), interrupt=True)
def bind_events(self):
self.buffer.set_focus_function(self.onFocus)
widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event)
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_status, self.buffer.post)
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.destroy_status, self.buffer.dismiss)
@@ -119,7 +126,7 @@ class NotificationsBuffer(BaseBuffer):
response = post.message.ShowModal()
if response == wx.ID_OK:
post_data = post.get_data()
call_threaded(self.session.send_post, posts=post_data, visibility="direct")
call_threaded(self.session.send_post, posts=post_data, visibility="direct", language=post.get_language())
if hasattr(post.message, "destroy"):
post.message.destroy()

View File

@@ -153,6 +153,7 @@ class Controller(object):
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.toggle_buffer_mute, self.view.mute_buffer)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_timeline, self.view.timeline)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_favs_timeline, self.view.favs)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.community_timeline, self.view.community_timeline)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_conversation, menuitem=self.view.view_conversation)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.seekLeft, menuitem=self.view.seekLeft)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.seekRight, menuitem=self.view.seekRight)
@@ -164,6 +165,8 @@ class Controller(object):
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.update_buffer, self.view.update_buffer)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.manage_aliases, self.view.manageAliases)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.report_error, self.view.reportError)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.create_filter, self.view.filter)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.manage_filters, self.view.manage_filters)
def set_systray_icon(self):
self.systrayIcon = sysTrayIcon.SysTrayIcon()
@@ -846,7 +849,14 @@ class Controller(object):
def register_invisible_keyboard_shorcuts(self, keymap):
if config.changed_keymap:
commonMessageDialogs.changed_keymap()
build_number = sys.getwindowsversion().build
if build_number > 22000:
system = "Windows 11"
keystroke_editor_shortcut = "Control+Win+Alt+K"
else:
system = "Windows 10"
keystroke_editor_shortcut = "Win+Alt+K"
commonMessageDialogs.changed_keymap(system, keystroke_editor_shortcut)
# Make sure we pass a keymap without undefined keystrokes.
new_keymap = {key: keymap[key] for key in keymap.keys() if keymap[key] != ""}
self.keyboard_handler = WXKeyboardHandler(self.view)
@@ -1078,10 +1088,10 @@ class Controller(object):
# if "direct_messages" not in buffer.session.settings["other_buffers"]["muted_buffers"]:
# self.notify(buffer.session, sound_to_play)
def mastodon_error_post(self, name, reply_to, visibility, posts):
def mastodon_error_post(self, name, reply_to, visibility, posts, language):
home = self.search_buffer("home_timeline", name)
if home != None:
wx.CallAfter(home.post_from_error, visibility=visibility, reply_to=reply_to, data=posts)
wx.CallAfter(home.post_from_error, visibility=visibility, reply_to=reply_to, data=posts, lang=language)
def change_buffer_title(self, name, buffer, title):
buffer_index = self.view.search(buffer, name)
@@ -1141,3 +1151,21 @@ class Controller(object):
handler = self.get_handler(type=buffer.session.type)
if handler and hasattr(handler, 'openFollowingTimeline'):
handler.openFollowingTimeline(self, buffer, user)
def community_timeline(self, *args, user=None):
buffer = self.get_best_buffer()
handler = self.get_handler(type=buffer.session.type)
if handler and hasattr(handler, 'community_timeline'):
handler.community_timeline(self, buffer)
def create_filter(self, *args, **kwargs):
buffer = self.get_best_buffer()
handler = self.get_handler(type=buffer.session.type)
if handler and hasattr(handler, 'create_filter'):
handler.create_filter(self, buffer)
def manage_filters(self, *args, **kwargs):
buffer = self.get_best_buffer()
handler = self.get_handler(type=buffer.session.type)
if handler and hasattr(handler, 'manage_filters'):
handler.manage_filters(self, buffer)

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1,112 @@
# -*- coding: utf-8 -*-
import widgetUtils
from wxUI.dialogs.mastodon.filters import create_filter as dialog
from mastodon import MastodonAPIError
class CreateFilterController(object):
def __init__(self, session, filter_data=None):
super(CreateFilterController, self).__init__()
self.session = session
self.filter_data = filter_data
self.dialog = dialog.CreateFilterDialog(parent=None)
if self.filter_data is not None:
self.keywords = self.filter_data.get("keywords")
self.load_filter_data()
else:
self.keywords = []
widgetUtils.connect_event(self.dialog.keyword_panel.add_button, widgetUtils.BUTTON_PRESSED, self.on_add_keyword)
widgetUtils.connect_event(self.dialog.keyword_panel.remove_button, widgetUtils.BUTTON_PRESSED, self.on_remove_keyword)
def on_add_keyword(self, event):
""" Adds a keyword to the list. """
keyword = self.dialog.keyword_panel.keyword_text.GetValue().strip()
whole_word = self.dialog.keyword_panel.whole_word_checkbox.GetValue()
if keyword:
for idx, kw in enumerate(self.keywords):
if kw['keyword'] == keyword:
return
keyword_data = {
'keyword': keyword,
'whole_word': whole_word
}
self.keywords.append(keyword_data)
self.dialog.keyword_panel.add_keyword(keyword, whole_word)
def on_remove_keyword(self, event):
removed = self.dialog.keyword_panel.remove_keyword()
if removed is not None:
self.keywords.pop(removed)
def get_expires_in_seconds(self, selection, value):
if selection == 0:
return None
if selection == 1:
return value * 3600
elif selection == 2:
return value * 86400
elif selection == 3:
return value * 604800
elif selection == 4:
return value * 2592000
return None
def set_expires_in(self, seconds):
if seconds is None:
self.dialog.expiration_choice.SetSelection(0)
self.dialog.expiration_value.Enable(False)
return
if seconds % 2592000 == 0 and seconds >= 2592000:
self.dialog.expiration_choice.SetSelection(4)
self.dialog.expiration_value.SetValue(seconds // 2592000)
elif seconds % 604800 == 0 and seconds >= 604800:
self.dialog.expiration_choice.SetSelection(3)
self.dialog.expiration_value.SetValue(seconds // 604800)
elif seconds % 86400 == 0 and seconds >= 86400:
self.dialog.expiration_choice.SetSelection(2)
self.dialog.expiration_value.SetValue(seconds // 86400)
else:
self.dialog.expiration_choice.SetSelection(1)
self.dialog.expiration_value.SetValue(max(1, seconds // 3600))
self.dialog.expiration_value.Enable(True)
def load_filter_data(self):
if 'title' in self.filter_data:
self.dialog.name_ctrl.SetValue(self.filter_data['title'])
self.dialog.SetTitle(_("Update Filter: {}").format(self.filter_data['title']))
if 'context' in self.filter_data:
for context in self.filter_data['context']:
if context in self.dialog.context_checkboxes:
self.dialog.context_checkboxes[context].SetValue(True)
if 'filter_action' in self.filter_data:
action_index = self.dialog.actions.index(self.filter_data['filter_action']) if self.filter_data['filter_action'] in self.dialog.actions else 0
self.dialog.action_choice.SetSelection(action_index)
if 'expires_in' in self.filter_data:
self.set_expires_in(self.filter_data['expires_in'])
print(self.filter_data)
if 'keywords' in self.filter_data:
self.keywords = self.filter_data['keywords']
self.dialog.keyword_panel.set_keywords(self.filter_data['keywords'])
def get_filter_data(self):
filter_data = {
'title': self.dialog.name_ctrl.GetValue(),
'context': [],
'filter_action': self.dialog.actions[self.dialog.action_choice.GetSelection()],
'expires_in': self.get_expires_in_seconds(selection=self.dialog.expiration_choice.GetSelection(), value=self.dialog.expiration_value.GetValue()),
'keywords_attributes': self.keywords
}
for context, checkbox in self.dialog.context_checkboxes.items():
if checkbox.GetValue():
filter_data['context'].append(context)
return filter_data
def get_response(self):
response = self.dialog.ShowModal()
if response == widgetUtils.OK:
filter_data = self.get_filter_data()
if self.filter_data == None:
result = self.session.api.create_filter_v2(**filter_data)
else:
result = self.session.api.update_filter_v2(filter_id=self.filter_data['id'], **filter_data)
return result
return None

View File

@@ -0,0 +1,99 @@
# -*- coding: utf-8 -*-
import datetime
import wx
import widgetUtils
from wxUI import commonMessageDialogs
from wxUI.dialogs.mastodon.filters import manage_filters as dialog
from . import create_filter
from mastodon import MastodonError
class ManageFiltersController(object):
def __init__(self, session):
super(ManageFiltersController, self).__init__()
self.session = session
self.selected_filter_idx = -1
self.error_loading = False
self.dialog = dialog.ManageFiltersDialog(parent=None)
self.dialog.filter_list.Bind(wx.EVT_LIST_ITEM_SELECTED, self.on_filter_selected)
self.dialog.filter_list.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.on_filter_deselected)
widgetUtils.connect_event(self.dialog.add_button, wx.EVT_BUTTON, self.on_add_filter)
widgetUtils.connect_event(self.dialog.edit_button, wx.EVT_BUTTON, self.on_edit_filter)
widgetUtils.connect_event(self.dialog.remove_button, wx.EVT_BUTTON, self.on_remove_filter)
self.load_filter_data()
def on_filter_selected(self, event):
"""Handle filter selection event."""
self.selected_filter_idx = event.GetIndex()
self.dialog.edit_button.Enable()
self.dialog.remove_button.Enable()
def on_filter_deselected(self, event):
"""Handle filter deselection event."""
self.selected_filter_idx = -1
self.dialog.edit_button.Disable()
self.dialog.remove_button.Disable()
def get_selected_filter_id(self):
"""Get the ID of the currently selected filter."""
if self.selected_filter_idx != -1:
return self.dialog.filter_list.GetItemData(self.selected_filter_idx)
return None
def load_filter_data(self):
try:
filters = self.session.api.filters_v2()
self.dialog.filter_list.DeleteAllItems()
self.on_filter_deselected(None)
for i, filter_obj in enumerate(filters):
index = self.dialog.filter_list.InsertItem(i, filter_obj.title)
keyword_count = len(filter_obj.keywords)
self.dialog.filter_list.SetItem(index, 1, str(keyword_count))
contexts = ", ".join(filter_obj.context)
self.dialog.filter_list.SetItem(index, 2, contexts)
self.dialog.filter_list.SetItem(index, 3, filter_obj.filter_action)
if filter_obj.expires_at:
expiry_str = filter_obj.expires_at.strftime("%Y-%m-%d %H:%M")
else:
expiry_str = _("Never")
self.dialog.filter_list.SetItem(index, 4, expiry_str)
self.dialog.filter_list.SetItemData(index, int(filter_obj.id) if isinstance(filter_obj.id, (int, str)) else 0)
except MastodonError as e:
commonMessageDialogs.error_loading_filters()
self.error_loading = True
def on_add_filter(self, *args, **kwargs):
filterController = create_filter.CreateFilterController(self.session)
try:
filter = filterController.get_response()
self.load_filter_data()
except MastodonError as error:
commonMessageDialogs.error_adding_filter()
return self.on_add_filter()
def on_edit_filter(self, *args, **kwargs):
filter_id = self.get_selected_filter_id()
if filter_id == None:
return
try:
filter_data = self.session.api.filter_v2(filter_id)
filterController = create_filter.CreateFilterController(self.session, filter_data=filter_data)
filterController.get_response()
self.load_filter_data()
except MastodonError as error:
commonMessageDialogs.error_adding_filter()
def on_remove_filter(self, *args, **kwargs):
filter_id = self.get_selected_filter_id()
if filter_id == None:
return
dlg = commonMessageDialogs.remove_filter()
if dlg == widgetUtils.NO:
return
try:
self.session.api.delete_filter_v2(filter_id)
self.load_filter_data()
except MastodonError as error:
commonMessageDialogs.error_removing_filter()
def get_response(self):
return self.dialog.ShowModal() == wx.ID_OK

View File

@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
import wx
import logging
import mastodon
import output
from mastodon import MastodonError
from pubsub import pub
from mysc import restart
from mysc.thread_utils import call_threaded
@@ -10,9 +12,10 @@ from wxUI.dialogs.mastodon import dialogs
from wxUI.dialogs import userAliasDialogs
from wxUI import commonMessageDialogs
from wxUI.dialogs.mastodon import updateProfile as update_profile_dialogs
from wxUI.dialogs.mastodon import showUserProfile
from wxUI.dialogs.mastodon import showUserProfile, communityTimeline
from sessions.mastodon.utils import html_filter
from . import userActions, settings
from .filters import create_filter, manage_filters
log = logging.getLogger("controller.mastodon.handler")
@@ -48,9 +51,9 @@ class Handler(object):
details=_("Show user profile"),
favs=None,
# In buffer Menu.
trends=None,
filter=None,
manage_filters=None
community_timeline =_("Create c&ommunity timeline"),
filter=_("Create a &filter"),
manage_filters=_("&Manage filters")
)
# Name for the "tweet" menu in the menu bar.
self.item_menu = _("&Post")
@@ -102,9 +105,16 @@ class Handler(object):
# for i in session.settings["other_buffers"]["lists"]:
# pub.sendMessage("createBuffer", buffer_type="ListBuffer", session_type=session.type, buffer_title=_(u"List for {}").format(i), parent_tab=lists_position, start=False, kwargs=dict(parent=controller.view.nb, function="list_timeline", name="%s-list" % (i,), sessionObject=session, name, bufferType=None, sound="list_tweet.ogg", list_id=utils.find_list(i, session.db["lists"]), include_ext_alt_text=True, tweet_mode="extended"))
pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Searches"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="searches", account=name))
searches_position =controller.view.search("searches", session.db["user_name"])
searches_position =controller.view.search("searches", name)
for term in session.settings["other_buffers"]["post_searches"]:
pub.sendMessage("createBuffer", buffer_type="SearchBuffer", session_type=session.type, buffer_title=_("Search for {}").format(term), parent_tab=searches_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_post", function="search", name="%s-searchterm" % (term,), sessionObject=session, account=session.get_name(), sound="search_updated.ogg", q=term, result_type="statuses"))
pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Communities"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="communities", account=name))
communities_position =controller.view.search("communities", name)
for community in session.settings["other_buffers"]["communities"]:
bufftype = _("Local") if community.split("@")[0] == "local" else _("federated")
community_name = community.split("@")[1].replace("https://", "")
title = _(f"{bufftype} timeline for {community_name}")
pub.sendMessage("createBuffer", buffer_type="CommunityBuffer", session_type=session.type, buffer_title=title, parent_tab=communities_position, start=True, kwargs=dict(parent=controller.view.nb, function="timeline", compose_func="compose_post", name=community, sessionObject=session, community_url=community.split("@")[1], account=session.get_name(), sound="search_updated.ogg", timeline=community.split("@")[0]))
# for i in session.settings["other_buffers"]["trending_topic_buffers"]:
# pub.sendMessage("createBuffer", buffer_type="TrendsBuffer", session_type=session.type, buffer_title=_("Trending topics for %s") % (i), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="%s_tt" % (i,), sessionObject=session, name, trendsFor=i, sound="trends_updated.ogg"))
@@ -121,7 +131,12 @@ class Handler(object):
pub.sendMessage("buffer-title-changed", buffer=buffer)
def open_conversation(self, controller, buffer):
post = buffer.get_item()
# detect if we are in a community buffer.
# Community buffers are special because we'll need to retrieve the object locally at first.
if hasattr(buffer, "community_url"):
post = buffer.get_item_from_instance()
else:
post = buffer.get_item()
if post.reblog != None:
post = post.reblog
conversations_position =controller.view.search("direct_messages", buffer.session.get_name())
@@ -130,7 +145,11 @@ class Handler(object):
def follow(self, buffer):
if not hasattr(buffer, "get_item"):
return
item = buffer.get_item()
# Community buffers are special because we'll need to retrieve the object locally at first.
if hasattr(buffer, "community_url"):
item = buffer.get_item_from_instance()
else:
item = buffer.get_item()
if buffer.type == "user":
users = [item.acct]
elif buffer.type == "baseBuffer":
@@ -151,7 +170,11 @@ class Handler(object):
users.insert(0, status.reblog.account.acct)
else:
users = [user.acct for user in status.mentions if user.id != buffer.session.db["user_id"]]
if item.account.acct not in users:
if hasattr(item, "account"):
acct = item.account.acct
else:
acct = item.acct
if acct not in users:
users.insert(0, item.account.acct)
u = userActions.userActions(buffer.session, users)
@@ -178,7 +201,10 @@ class Handler(object):
def open_timeline(self, controller, buffer):
if not hasattr(buffer, "get_item"):
return
item = buffer.get_item()
if hasattr(buffer, "community_url"):
item = buffer.get_item_from_instance()
else:
item = buffer.get_item()
if buffer.type == "user":
users = [item.acct]
elif buffer.type == "baseBuffer":
@@ -355,3 +381,42 @@ class Handler(object):
user = buffer.session.api.account(selectedUser[-1])
dlg = showUserProfile.ShowUserProfile(user)
dlg.ShowModal()
def community_timeline(self, controller, buffer):
dlg = communityTimeline.CommunityTimeline()
if dlg.ShowModal() != wx.ID_OK:
return
url = dlg.url.GetValue()
bufftype = dlg.get_action()
local_api = mastodon.Mastodon(api_base_url=url)
try:
instance = local_api.instance()
except MastodonError:
commonMessageDialogs.invalid_instance()
return
if bufftype == "local":
title = _(f"Local timeline for {url.replace('https://', '')}")
else:
title = _(f"Federated timeline for {url}")
bufftype = "public"
dlg.Destroy()
tl_info = f"{bufftype}@{url}"
if tl_info in buffer.session.settings["other_buffers"]["communities"]:
return # buffer already exists.
buffer.session.settings["other_buffers"]["communities"].append(tl_info)
buffer.session.settings.write()
communities_position =controller.view.search("communities", buffer.session.get_name())
pub.sendMessage("createBuffer", buffer_type="CommunityBuffer", session_type=buffer.session.type, buffer_title=title, parent_tab=communities_position, start=True, kwargs=dict(parent=controller.view.nb, function="timeline", name=tl_info, sessionObject=buffer.session, account=buffer.session.get_name(), sound="tweet_timeline.ogg", community_url=url, timeline=bufftype))
def create_filter(self, controller, buffer):
filterController = create_filter.CreateFilterController(buffer.session)
try:
filter = filterController.get_response()
except MastodonError as error:
log.exception("Error adding filter.")
commonMessageDialogs.error_adding_filter()
return self.create_filter(controller=controller, buffer=buffer)
def manage_filters(self, controller, buffer):
manageFiltersController = manage_filters.ManageFiltersController(buffer.session)
manageFiltersController.get_response()

View File

@@ -5,11 +5,14 @@ import wx
import widgetUtils
import config
import output
import languageHandler
from twitter_text import parse_tweet, config
from mastodon import MastodonError
from controller import messages
from sessions.mastodon import templates
from wxUI.dialogs.mastodon import postDialogs
from extra.autocompletionUsers import completion
from . import userList
def character_count(post_text, post_cw, character_limit=500):
# We will use text for counting character limit only.
@@ -30,9 +33,12 @@ class post(messages.basicMessage):
self.max = session.char_limit
self.title = title
self.session = session
self.message = postDialogs.Post(caption=caption, text=text, *args, **kwargs)
langs = self.session.supported_languages
display_langs = [l.name for l in langs]
self.message = postDialogs.Post(caption=caption, text=text, languages=display_langs, *args, **kwargs)
self.message.SetTitle(title)
self.message.text.SetInsertionPoint(len(self.message.text.GetValue()))
self.set_language(self.session.default_language)
widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck)
widgetUtils.connect_event(self.message.text, widgetUtils.ENTERED_TEXT, self.text_processor)
widgetUtils.connect_event(self.message.spoiler, widgetUtils.ENTERED_TEXT, self.text_processor)
@@ -68,7 +74,21 @@ class post(messages.basicMessage):
self.add_post(event=None, update_gui=False)
return self.thread
def set_post_data(self, visibility, data):
def set_language(self, language=None):
""" Attempt to set the default language for a post. """
# language can be provided in a post (replying or recovering from errors).
# Also it can be provided in user preferences (retrieved in the session).
# If no language is provided, let's fallback to TWBlue's user language.
if language != None:
language_code = language
else:
# Let's cut langcode_VARIANT to ISO-639 two letter code only.
language_code = languageHandler.curLang[:2]
for lang in self.session.supported_languages:
if lang.code == language_code:
self.message.language.SetStringSelection(lang.name)
def set_post_data(self, visibility, data, language):
if len(data) == 0:
return
if len(data) > 1:
@@ -85,6 +105,7 @@ class post(messages.basicMessage):
self.message.on_sensitivity_changed()
for attachment in self.attachments:
self.message.add_item(item=[attachment["file"], attachment["type"], attachment["description"]])
self.set_language(language)
self.text_processor()
def text_processor(self, *args, **kwargs):
@@ -229,15 +250,24 @@ class post(messages.basicMessage):
visibility_settings = ["public", "unlisted", "private", "direct"]
return visibility_settings[self.message.visibility.GetSelection()]
def get_language(self):
langs = self.session.supported_languages
lang = self.message.language.GetSelection()
if lang >= 0:
return langs[lang].code
return None
def set_visibility(self, setting):
visibility_settings = ["public", "unlisted", "private", "direct"]
visibility_setting = visibility_settings.index(setting)
self.message.visibility.SetSelection(setting)
class viewPost(post):
def __init__(self, post, offset_hours=0, date="", item_url=""):
def __init__(self, session, post, offset_hours=0, date="", item_url=""):
self.session = session
if post.reblog != None:
post = post.reblog
self.post_id = post.id
author = post.account.display_name if post.account.display_name != "" else post.account.username
title = _(u"Post from {}").format(author)
image_description = templates.process_image_descriptions(post.media_attachments)
@@ -254,6 +284,12 @@ class viewPost(post):
else:
source = source_obj.get("name")
self.message = postDialogs.viewPost(text=text, boosts_count=boost_count, favs_count=favs_count, source=source, date=date, privacy=privacy)
participants = [post.account.id] + [account.id for account in post.mentions]
if self.session.db["user_id"] in participants:
self.message.mute.Enable(True)
if post.muted:
self.message.mute.SetLabel(_("Unmute conversation"))
widgetUtils.connect_event(self.message.mute, widgetUtils.BUTTON_PRESSED, self.mute_unmute)
self.message.SetTitle(title)
if image_description != "":
self.message.image_description.Enable(True)
@@ -264,12 +300,42 @@ class viewPost(post):
widgetUtils.connect_event(self.message.share, widgetUtils.BUTTON_PRESSED, self.share)
self.item_url = item_url
widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate)
widgetUtils.connect_event(self.message.boosts_button, widgetUtils.BUTTON_PRESSED, self.on_boosts)
widgetUtils.connect_event(self.message.favorites_button, widgetUtils.BUTTON_PRESSED, self.on_favorites)
self.message.ShowModal()
# We won't need text_processor in this dialog, so let's avoid it.
def text_processor(self):
pass
def mute_unmute(self, *args, **kwargs):
post = self.session.api.status(self.post_id)
if post.muted == True:
action = "status_unmute"
new_label = _("Mute conversation")
msg = _("Conversation unmuted.")
else:
action = "status_mute"
new_label = _("Unmute conversation")
msg = _("Conversation muted.")
try:
getattr(self.session.api, action)(self.post_id)
self.message.mute.SetLabel(new_label)
output.speak(msg)
except MastodonError:
return
def on_boosts(self, *args, **kwargs):
users = self.session.api.status_reblogged_by(self.post_id)
title = _("people who boosted this post")
user_list = userList.MastodonUserList(session=self.session, users=users, title=title)
def on_favorites(self, *args, **kwargs):
users = self.session.api.status_favourited_by(self.post_id)
title = _("people who favorited this post")
user_list = userList.MastodonUserList(session=self.session, users=users, title=title)
def share(self, *args, **kwargs):
if hasattr(self, "item_url"):
output.copy(self.item_url)

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from mastodon import MastodonError
from wxUI.dialogs.mastodon import showUserProfile
from controller.userList import UserListController
from . import userActions
class MastodonUserList(UserListController):
def process_users(self, users):
return [dict(id=user.id, display_name=f"{user.display_name} (@{user.acct})", acct=user.acct) for user in users]
def on_actions(self, *args, **kwargs):
user = self.dialog.user_list.GetSelection()
user_account = self.users[user]
u = userActions.userActions(self.session, [user_account.get("acct")])
def on_details(self, *args, **kwargs):
user = self.dialog.user_list.GetSelection()
user_id = self.users[user].get("id")
try:
user_object = self.session.api.account(user_id)
except MastodonError:
return
dlg = showUserProfile.ShowUserProfile(user_object)
dlg.ShowModal()

View File

@@ -1,25 +1,21 @@
# -*- coding: utf-8 -*-
import widgetUtils
import output
from extra import translator, SpellChecker
import config
from extra import SpellChecker
from extra.translator import TranslatorController
class basicMessage(object):
def translate(self, event=None):
dlg = translator.gui.translateDialog()
if dlg.get_response() == widgetUtils.OK:
text_to_translate = self.message.text.GetValue()
language_dict = translator.translator.available_languages()
for k in language_dict:
if language_dict[k] == dlg.dest_lang.GetStringSelection():
dst = k
msg = translator.translator.translate(text=text_to_translate, target=dst)
self.message.text.ChangeValue(msg)
self.message.text.SetInsertionPoint(len(self.message.text.GetValue()))
self.text_processor()
self.message.text.SetFocus()
output.speak(_(u"Translated"))
else:
t = TranslatorController(self.message.text.GetValue())
if t.response == False:
return
msg = t.translate()
self.message.text.ChangeValue(msg)
self.message.text.SetInsertionPoint(len(self.message.text.GetValue()))
self.text_processor()
self.message.text.SetFocus()
output.speak(_(u"Translated"))
def text_processor(self, *args, **kwargs):
pass

View File

@@ -6,7 +6,6 @@ import config
import languageHandler
import application
from pubsub import pub
from mysc import autostart as autostart_windows
from wxUI.dialogs import configuration
from wxUI import commonMessageDialogs
@@ -48,21 +47,16 @@ class globalSettingsController(object):
self.dialog.create_general(langs,self.kmfriendlies)
self.dialog.general.language.SetSelection(id)
self.dialog.general.km.SetSelection(self.kmid)
if paths.mode == "installed":
self.dialog.set_value("general", "autostart", config.app["app-settings"]["autostart"])
else:
self.dialog.general.autostart.Enable(False)
self.dialog.set_value("general", "ask_at_exit", config.app["app-settings"]["ask_at_exit"])
self.dialog.set_value("general", "no_streaming", config.app["app-settings"]["no_streaming"])
self.dialog.set_value("general", "play_ready_sound", config.app["app-settings"]["play_ready_sound"])
self.dialog.set_value("general", "speak_ready_msg", config.app["app-settings"]["speak_ready_msg"])
self.dialog.set_value("general", "handle_longtweets", config.app["app-settings"]["handle_longtweets"])
self.dialog.set_value("general", "read_long_posts_in_gui", config.app["app-settings"]["read_long_posts_in_gui"])
self.dialog.set_value("general", "use_invisible_shorcuts", config.app["app-settings"]["use_invisible_keyboard_shorcuts"])
self.dialog.set_value("general", "disable_sapi5", config.app["app-settings"]["voice_enabled"])
self.dialog.set_value("general", "hide_gui", config.app["app-settings"]["hide_gui"])
self.dialog.set_value("general", "update_period", config.app["app-settings"]["update_period"])
self.dialog.set_value("general", "check_for_updates", config.app["app-settings"]["check_for_updates"])
self.dialog.set_value("general", "remember_mention_and_longtweet", config.app["app-settings"]["remember_mention_and_longtweet"])
proxyTypes = [_("System default"), _("HTTP"), _("SOCKS v4"), _("SOCKS v4 with DNS support"), _("SOCKS v5"), _("SOCKS v5 with DNS support")]
self.dialog.create_proxy(proxyTypes)
try:
@@ -73,7 +67,10 @@ class globalSettingsController(object):
self.dialog.set_value("proxy", "port", config.app["proxy"]["port"])
self.dialog.set_value("proxy", "user", config.app["proxy"]["user"])
self.dialog.set_value("proxy", "password", config.app["proxy"]["password"])
self.dialog.create_translator_panel()
self.dialog.set_value("translator_panel", "libre_api_url", config.app["translator"]["lt_api_url"])
self.dialog.set_value("translator_panel", "libre_api_key", config.app["translator"]["lt_api_key"])
self.dialog.set_value("translator_panel", "deepL_api_key", config.app["translator"]["deepl_api_key"])
self.dialog.realize()
self.response = self.dialog.get_response()
@@ -89,9 +86,6 @@ class globalSettingsController(object):
kmFile.close()
log.debug("Triggered app restart due to a keymap change.")
self.needs_restart = True
if config.app["app-settings"]["autostart"] != self.dialog.get_value("general", "autostart") and paths.mode == "installed":
config.app["app-settings"]["autostart"] = self.dialog.get_value("general", "autostart")
autostart_windows.setAutoStart(application.name, enable=self.dialog.get_value("general", "autostart"))
if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] != self.dialog.get_value("general", "use_invisible_shorcuts"):
config.app["app-settings"]["use_invisible_keyboard_shorcuts"] = self.dialog.get_value("general", "use_invisible_shorcuts")
pub.sendMessage("invisible-shorcuts-changed", registered=self.dialog.get_value("general", "use_invisible_shorcuts"))
@@ -106,11 +100,10 @@ class globalSettingsController(object):
config.app["app-settings"]["voice_enabled"] = self.dialog.get_value("general", "disable_sapi5")
config.app["app-settings"]["hide_gui"] = self.dialog.get_value("general", "hide_gui")
config.app["app-settings"]["ask_at_exit"] = self.dialog.get_value("general", "ask_at_exit")
config.app["app-settings"]["handle_longtweets"] = self.dialog.get_value("general", "handle_longtweets")
config.app["app-settings"]["read_long_posts_in_gui"] = self.dialog.get_value("general", "read_long_posts_in_gui")
config.app["app-settings"]["play_ready_sound"] = self.dialog.get_value("general", "play_ready_sound")
config.app["app-settings"]["speak_ready_msg"] = self.dialog.get_value("general", "speak_ready_msg")
config.app["app-settings"]["check_for_updates"] = self.dialog.get_value("general", "check_for_updates")
config.app["app-settings"]["remember_mention_and_longtweet"] = self.dialog.get_value("general", "remember_mention_and_longtweet")
if config.app["proxy"]["type"]!=self.dialog.get_value("proxy", "type") or config.app["proxy"]["server"] != self.dialog.get_value("proxy", "server") or config.app["proxy"]["port"] != self.dialog.get_value("proxy", "port") or config.app["proxy"]["user"] != self.dialog.get_value("proxy", "user") or config.app["proxy"]["password"] != self.dialog.get_value("proxy", "password"):
if self.is_started == True:
self.needs_restart = True
@@ -120,4 +113,7 @@ class globalSettingsController(object):
config.app["proxy"]["port"] = self.dialog.get_value("proxy", "port")
config.app["proxy"]["user"] = self.dialog.get_value("proxy", "user")
config.app["proxy"]["password"] = self.dialog.get_value("proxy", "password")
config.app["translator"]["lt_api_url"] = self.dialog.get_value("translator_panel", "libre_api_url")
config.app["translator"]["lt_api_key"] = self.dialog.get_value("translator_panel", "libre_api_key")
config.app["translator"]["deepl_api_key"] = self.dialog.get_value("translator_panel", "deepL_api_key")
config.app.write()

View File

@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
import widgetUtils
from pubsub import pub
from wxUI.dialogs import userList
class UserListController(object):
def __init__(self, users, session, title):
super(UserListController, self).__init__()
self.session = session
self.users = self.process_users(users)
self.dialog = userList.UserListDialog(title=title, users=[user.get("display_name", user.get("acct")) for user in self.users])
widgetUtils.connect_event(self.dialog.actions_button, widgetUtils.BUTTON_PRESSED, self.on_actions)
widgetUtils.connect_event(self.dialog.details_button, widgetUtils.BUTTON_PRESSED, self.on_details)
self.dialog.ShowModal()
def process_users(self, users):
return {}
def on_actions(self):
pass
def on_details(self, *args, **kwargs):
pass

View File

@@ -8,8 +8,8 @@ class autocompletionScanDialog(widgetUtils.BaseDialog):
super(autocompletionScanDialog, self).__init__(parent=None, id=-1, title=_(u"Autocomplete users' settings"))
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
self.followers = wx.CheckBox(panel, -1, _("Add followers to database"))
self.friends = wx.CheckBox(panel, -1, _("Add following to database"))
self.followers = wx.CheckBox(panel, -1, _("Add &followers to database"))
self.friends = wx.CheckBox(panel, -1, _("Add f&ollowing to database"))
sizer.Add(self.followers, 0, wx.ALL, 5)
sizer.Add(self.friends, 0, wx.ALL, 5)
ok = wx.Button(panel, wx.ID_OK)

View File

@@ -1,5 +1,2 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
from . import translator
from . import wx_ui as gui
from .translator import TranslatorController

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
import config
from deepl import Translator
def translate(text: str, target_language: str) -> str:
key = config.app["translator"]["deepl_api_key"]
t = Translator(key)
return t.translate_text(text, target_lang=target_language).text
def languages():
key = config.app["translator"]["deepl_api_key"]
t = Translator(key)
langs = t.get_target_languages()
return langs

View File

@@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
""" Modified Libretranslatepy module which adds an user agent for making requests against more instances. """
import json
from typing import Any, Dict
from urllib import request, parse
from libretranslatepy import LibreTranslateAPI
class CustomLibreTranslateAPI(LibreTranslateAPI):
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
def _create_request(self, url: str, method: str, data: Dict[str, str]) -> request.Request:
url_params = parse.urlencode(data)
req = request.Request(url, method=method, data=url_params.encode())
req.add_header("User-Agent", self.USER_AGENT)
return req
def translate(self, q: str, source: str = "en", target: str = "es", timeout: int | None = None) -> Any:
url = self.url + "translate"
params: Dict[str, str] = {"q": q, "source": source, "target": target}
if self.api_key is not None:
params["api_key"] = self.api_key
req = self._create_request(url=url, method="POST", data=params)
response = request.urlopen(req, timeout=timeout)
response_str = response.read().decode()
return json.loads(response_str)["translatedText"]
def detect(self, q: str, timeout: int | None = None) -> Any:
url = self.url + "detect"
params: Dict[str, str] = {"q": q}
if self.api_key is not None:
params["api_key"] = self.api_key
req = self._create_request(url=url, method="POST", data=params)
response = request.urlopen(req, timeout=timeout)
response_str = response.read().decode()
return json.loads(response_str)
def languages(self, timeout: int | None = None) -> Any:
url = self.url + "languages"
params: Dict[str, str] = dict()
if self.api_key is not None:
params["api_key"] = self.api_key
req = self._create_request(url=url, method="GET", data=params)
response = request.urlopen(req, timeout=timeout)
response_str = response.read().decode()
return json.loads(response_str)

View File

@@ -1,116 +1,58 @@
# -*- coding: utf-8 -*-
import logging
from googletrans import Translator, LANGUAGES
import threading
import wx
import config
from pubsub import pub
from . engines import libre_translate, deep_l
from .wx_ui import translateDialog
log = logging.getLogger("extras.translator")
# create a single translator instance
# see https://github.com/ssut/py-googletrans/issues/234
t = None
class TranslatorController(object):
def __init__(self, text):
super(TranslatorController, self).__init__()
self.text = text
self.languages = []
self.response = False
self.dialog = translateDialog()
pub.subscribe(self.on_engine_changed, "translator.engine_changed")
if config.app["translator"]["engine"] == "LibreTranslate":
self.dialog.engine_select.SetSelection(0)
elif config.app["translator"]["engine"] == "DeepL":
self.dialog.engine_select.SetSelection(1)
threading.Thread(target=self.load_languages).start()
if self.dialog.ShowModal() == wx.ID_OK:
self.response = True
for k in self.language_dict:
if self.language_dict[k] == self.dialog.dest_lang.GetStringSelection():
self.target_language= k
pub.unsubscribe(self.on_engine_changed, "translator.engine_changed")
def translate(text="", target="en"):
global t
log.debug("Received translation request for language %s, text=%s" % (target, text))
if t == None:
t = Translator()
vars = dict(text=text, dest=target)
return t.translate(**vars).text
def load_languages(self):
self.language_dict = self.get_languages()
self.languages = [self.language_dict[k] for k in self.language_dict]
self.dialog.set_languages(self.languages)
supported_langs = None
def on_engine_changed(self, engine):
config.app["translator"]["engine"] = engine
config.app.write()
threading.Thread(target=self.load_languages).start()
languages = {
"af": _(u"Afrikaans"),
"sq": _(u"Albanian"),
"am": _(u"Amharic"),
"ar": _(u"Arabic"),
"hy": _(u"Armenian"),
"az": _(u"Azerbaijani"),
"eu": _(u"Basque"),
"be": _(u"Belarusian"),
"bn": _(u"Bengali"),
"bh": _(u"Bihari"),
"bg": _(u"Bulgarian"),
"my": _(u"Burmese"),
"ca": _(u"Catalan"),
"chr": _(u"Cherokee"),
"zh": _(u"Chinese"),
"zh-CN": _(u"Chinese_simplified"),
"zh-TW": _(u"Chinese_traditional"),
"hr": _(u"Croatian"),
"cs": _(u"Czech"),
"da": _(u"Danish"),
"dv": _(u"Dhivehi"),
"nl": _(u"Dutch"),
"en": _(u"English"),
"eo": _(u"Esperanto"),
"et": _(u"Estonian"),
"tl": _(u"Filipino"),
"fi": _(u"Finnish"),
"fr": _(u"French"),
"gl": _(u"Galician"),
"ka": _(u"Georgian"),
"de": _(u"German"),
"el": _(u"Greek"),
"gn": _(u"Guarani"),
"gu": _(u"Gujarati"),
"iw": _(u"Hebrew"),
"hi": _(u"Hindi"),
"hu": _(u"Hungarian"),
"is": _(u"Icelandic"),
"id": _(u"Indonesian"),
"iu": _(u"Inuktitut"),
"ga": _(u"Irish"),
"it": _(u"Italian"),
"ja": _(u"Japanese"),
"kn": _(u"Kannada"),
"kk": _(u"Kazakh"),
"km": _(u"Khmer"),
"ko": _(u"Korean"),
"ku": _(u"Kurdish"),
"ky": _(u"Kyrgyz"),
"lo": _(u"Laothian"),
"lv": _(u"Latvian"),
"lt": _(u"Lithuanian"),
"mk": _(u"Macedonian"),
"ms": _(u"Malay"),
"ml": _(u"Malayalam"),
"mt": _(u"Maltese"),
"mr": _(u"Marathi"),
"mn": _(u"Mongolian"),
"ne": _(u"Nepali"),
"no": _(u"Norwegian"),
"or": _(u"Oriya"),
"ps": _(u"Pashto"),
"fa": _(u"Persian"),
"pl": _(u"Polish"),
"pt": _(u"Portuguese"),
"pa": _(u"Punjabi"),
"ro": _(u"Romanian"),
"ru": _(u"Russian"),
"sa": _(u"Sanskrit"),
"sr": _(u"Serbian"),
"sd": _(u"Sindhi"),
"si": _(u"Sinhalese"),
"sk": _(u"Slovak"),
"sl": _(u"Slovenian"),
"es": _(u"Spanish"),
"sw": _(u"Swahili"),
"sv": _(u"Swedish"),
"tg": _(u"Tajik"),
"ta": _(u"Tamil"),
"tl": _(u"Tagalog"),
"te": _(u"Telugu"),
"th": _(u"Thai"),
"bo": _(u"Tibetan"),
"tr": _(u"Turkish"),
"uk": _(u"Ukrainian"),
"ur": _(u"Urdu"),
"uz": _(u"Uzbek"),
"ug": _(u"Uighur"),
"vi": _(u"Vietnamese"),
"cy": _(u"Welsh"),
"yi": _(u"Yiddish")
}
def translate(self):
log.debug("Received translation request for language %s, text=%s" % (self.target_language, self.text))
if config.app["translator"].get("engine") == "LibreTranslate":
translator = libre_translate.CustomLibreTranslateAPI(config.app["translator"]["lt_api_url"], config.app["translator"]["lt_api_key"])
vars = dict(q=self.text, target=self.target_language)
return translator.translate(**vars)
elif config.app["translator"]["engine"] == "DeepL" and config.app["translator"]["deepl_api_key"] != "":
return deep_l.translate(text=self.text, target_language=self.target_language)
def available_languages():
return dict(sorted(languages.items(), key=lambda x: x[1]))
def get_languages(self):
languages = {}
if config.app["translator"].get("engine") == "LibreTranslate":
translator = libre_translate.CustomLibreTranslateAPI(config.app["translator"]["lt_api_url"], config.app["translator"]["lt_api_key"])
languages = {l.get("code"): l.get("name") for l in translator.languages()}
elif config.app["translator"]["engine"] == "DeepL" and config.app["translator"]["deepl_api_key"] != "":
languages = {language.code: language.name for language in deep_l.languages()}
return dict(sorted(languages.items(), key=lambda x: x[1]))

View File

@@ -16,23 +16,26 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from . import translator
import wx
from pubsub import pub
from wxUI.dialogs import baseDialog
class translateDialog(baseDialog.BaseWXDialog):
def __init__(self):
languages = []
language_dict = translator.available_languages()
for k in language_dict:
languages.append(language_dict[k])
super(translateDialog, self).__init__(None, -1, title=_(u"Translate message"))
self.engines = ["LibreTranslate", "DeepL"]
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
staticEngine = wx.StaticText(panel, -1, _(u"Translation engine"))
self.engine_select = wx.ComboBox(panel, -1, choices=self.engines, style=wx.CB_READONLY)
self.engine_select.Bind(wx.EVT_COMBOBOX, lambda event: pub.sendMessage("translator.engine_changed", engine=self.engine_select.GetValue()))
staticDest = wx.StaticText(panel, -1, _(u"Target language"))
self.dest_lang = wx.ComboBox(panel, -1, choices=languages, style = wx.CB_READONLY)
self.dest_lang = wx.ComboBox(panel, -1, style = wx.CB_READONLY)
self.dest_lang.SetFocus()
self.dest_lang.SetSelection(0)
engineSizer = wx.BoxSizer(wx.HORIZONTAL)
engineSizer.Add(staticEngine)
engineSizer.Add(self.engine_select)
listSizer = wx.BoxSizer(wx.HORIZONTAL)
listSizer.Add(staticDest)
listSizer.Add(self.dest_lang)
@@ -40,6 +43,14 @@ class translateDialog(baseDialog.BaseWXDialog):
ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL)
self.SetEscapeId(wx.ID_CANCEL)
sizer.Add(engineSizer, 0, wx.EXPAND | wx.ALL, 5)
sizer.Add(listSizer, 0, wx.EXPAND | wx.ALL, 5)
sizer.Add(ok, 0, wx.ALIGN_CENTER | wx.ALL, 5)
sizer.Add(cancel, 0, wx.ALIGN_CENTER | wx.ALL, 5)
panel.SetSizer(sizer)
def set_languages(self, languages):
wx.CallAfter(self.dest_lang.SetItems, languages)
def get(self, control):
return getattr(self, control).GetSelection()

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

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

Binary file not shown.

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

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

Binary file not shown.

File diff suppressed because it is too large Load Diff

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

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
import httpcore
httpcore.SyncHTTPTransport = httpcore.AsyncHTTPProxy
import sys
import os
import platform

View File

@@ -3,6 +3,7 @@ access_token = string(default="")
instance = string(default="")
user_name = string(default="")
ignored_clients = list(default=list())
type = string(default="mastodon")
[general]
relative_times = boolean(default=True)
@@ -29,6 +30,7 @@ indicate_img = boolean(default=True)
[other_buffers]
timelines = list(default=list())
searches = list(default=list())
communities = list(default=list())
lists = list(default=list())
followers_timelines = list(default=list())
following_timelines = list(default=list())

View File

@@ -1,44 +0,0 @@
from __future__ import unicode_literals
from future import standard_library
standard_library.install_aliases()
from builtins import str
import winreg
import os
import sys
from platform_utils import paths
RUN_REGKEY = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
def is_installed(app_subkey):
"""Checks if the currently running copy is installed or portable variant. Requires the name of the application subkey found under the uninstall section in Windows registry."""
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%s" % app_subkey)
inst_dir = winreg.QueryValueEx(key,"InstallLocation")[0]
except WindowsError:
return False
winreg.CloseKey(key)
try:
return os.stat(inst_dir) == os.stat(paths.app_path())
except WindowsError:
return False
def getAutoStart(app_name):
"""Queries if the automatic startup should be set for the application or not, depending on it's current state."""
try:
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_REGKEY)
val = winreg.QueryValueEx(key, str(app_name))[0]
return os.stat(val) == os.stat(sys.argv[0])
except (WindowsError, OSError):
return False
def setAutoStart(app_name, enable=True):
"""Configures automatic startup for the application, if the enable argument is set to True. If set to False, deletes the application AutoStart value."""
if getAutoStart(app_name) == enable:
return
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_REGKEY, 0, winreg.KEY_WRITE)
if enable:
winreg.SetValueEx(key, str(app_name), None, winreg.REG_SZ, paths.get_executable())
else:
winreg.DeleteValue(key, str(app_name))

View File

@@ -14,6 +14,7 @@ import application
from pubsub import pub
from controller import settings
from sessions.mastodon import session as MastodonSession
from sessions.gotosocial import session as GotosocialSession
from . import manager
from . import wxUI as view
@@ -68,7 +69,7 @@ class sessionManagerController(object):
name = _("{account_name}@{instance} (Mastodon)").format(account_name=config_test["mastodon"]["user_name"], instance=config_test["mastodon"]["instance"].replace("https://", ""))
if config_test["mastodon"]["instance"] != "" and config_test["mastodon"]["access_token"] != "":
sessionsList.append(name)
self.sessions.append(dict(type="mastodon", id=i))
self.sessions.append(dict(type=config_test["mastodon"].get("type", "mastodon"), id=i))
else:
try:
log.debug("Deleting session %s" % (i,))
@@ -94,6 +95,8 @@ class sessionManagerController(object):
# Create the session object based in session type.
if i.get("type") == "mastodon":
s = MastodonSession.Session(i.get("id"))
elif i.get("type") == "gotosocial":
s = GotosocialSession.Session(i.get("id"))
s.get_configuration()
if i.get("id") not in config.app["sessions"]["ignored_sessions"]:
try:
@@ -116,7 +119,7 @@ class sessionManagerController(object):
s = MastodonSession.Session(location)
result = s.authorise()
if result == True:
self.sessions.append(dict(id=location, type=type))
self.sessions.append(dict(id=location, type=s.settings["mastodon"].get("type")))
self.view.add_new_session_to_list()
def remove_account(self, index):

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1,13 @@
from sessions.mastodon import session
class Session(session.Session):
# disable version check so Mastodon.py won't throw exceptions.
version_check_mode = "none"
name = "GoToSocial"
def get_lists(self):
""" Gets the lists that the user is subscribed to and stores them in the database. Returns None."""
self.db["lists"] = []
def get_muted_users(self):
self.db["muted_users"] = []

View File

@@ -17,6 +17,9 @@ def compose_post(post, db, settings, relative_times, show_screen_names, safe=Tru
text = _("Boosted from @{}: {}").format(post.reblog.account.acct, templates.process_text(post.reblog, safe=safe))
else:
text = templates.process_text(post, safe=safe)
filtered = utils.evaluate_filters(post=post, current_context="home")
if filtered != None:
text = _("hidden by filter {}").format(filtered)
source = post.get("application", "")
# "" means remote user, None for legacy apps so we should cover both sides.
if source != None and source != "":
@@ -73,4 +76,7 @@ def compose_notification(notification, db, settings, relative_times, show_screen
text = _("A poll in which you have voted has expired: {status}").format(status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe)))
elif notification.type == "follow_request":
text = _("{username} wants to follow you.").format(username=user)
filtered = utils.evaluate_filters(post=notification, current_context="notifications")
if filtered != None:
text = _("hidden by filter {}").format(filtered)
return [user, text, ts]

View File

@@ -11,7 +11,7 @@ import config
import config_utils
import output
import application
from mastodon import MastodonError, MastodonAPIError, MastodonNotFoundError, MastodonUnauthorizedError
from mastodon import MastodonError, MastodonAPIError, MastodonNotFoundError, MastodonUnauthorizedError, MastodonVersionError
from pubsub import pub
from mysc.thread_utils import call_threaded
from sessions import base
@@ -19,19 +19,23 @@ from sessions.mastodon import utils, streaming
log = logging.getLogger("sessions.mastodonSession")
MASTODON_VERSION = "4.0.1"
MASTODON_VERSION = "4.3.2"
class Session(base.baseSession):
version_check_mode = "created"
name = "Mastodon"
def __init__(self, *args, **kwargs):
super(Session, self).__init__(*args, **kwargs)
self.config_spec = "mastodon.defaults"
self.supported_languages = []
self.default_language = None
self.type = "mastodon"
self.db["pagination_info"] = dict()
self.char_limit = 500
self.post_visibility = "public"
self.expand_spoilers = False
self.software = "mastodon"
pub.subscribe(self.on_status, "mastodon.status_received")
pub.subscribe(self.on_status_updated, "mastodon.status_updated")
pub.subscribe(self.on_notification, "mastodon.notification_received")
@@ -40,17 +44,20 @@ class Session(base.baseSession):
if self.settings["mastodon"]["access_token"] != None and self.settings["mastodon"]["instance"] != None:
try:
log.debug("Logging in to Mastodon instance {}...".format(self.settings["mastodon"]["instance"]))
self.api = mastodon.Mastodon(access_token=self.settings["mastodon"]["access_token"], api_base_url=self.settings["mastodon"]["instance"], mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version))
self.api = mastodon.Mastodon(access_token=self.settings["mastodon"]["access_token"], api_base_url=self.settings["mastodon"]["instance"], mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version), version_check_mode=self.version_check_mode)
if verify_credentials == True:
credentials = self.api.account_verify_credentials()
self.db["user_name"] = credentials["username"]
self.db["user_id"] = credentials["id"]
if hasattr(credentials, "source") and hasattr(credentials.source, "language"):
log.info(f"Setting default language on account {credentials.username} to {credentials.source.language}")
self.default_language = credentials.source.language
self.settings["mastodon"]["user_name"] = credentials["username"]
self.logged = True
log.debug("Logged.")
self.counter = 0
except MastodonError:
log.exception("The login attempt failed.")
log.exception(f"The login attempt failed on instance {self.settings['mastodon']['instance']}.")
self.logged = False
else:
self.logged = False
@@ -67,7 +74,7 @@ class Session(base.baseSession):
return
try:
client_id, client_secret = mastodon.Mastodon.create_app("TWBlue", api_base_url=authorisation_dialog.GetValue(), website="https://twblue.es")
temporary_api = mastodon.Mastodon(client_id=client_id, client_secret=client_secret, api_base_url=instance, mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version))
temporary_api = mastodon.Mastodon(client_id=client_id, client_secret=client_secret, api_base_url=instance, mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version), version_check_mode="none") # disable version check so we can handle more platforms than Mastodon.
auth_url = temporary_api.auth_request_url()
except MastodonError:
dlg = wx.MessageDialog(None, _("We could not connect to your mastodon instance. Please verify that the domain exists and the instance is accessible via a web browser."), _("Instance error"), wx.ICON_ERROR)
@@ -90,6 +97,13 @@ class Session(base.baseSession):
return
self.create_session_folder()
self.get_configuration()
# handle when the instance is GoTosocial.
# this might be extended for other activity pub software later on.
nodeinfo = temporary_api.instance_nodeinfo()
if nodeinfo.software.get("name") == "gotosocial":
self.settings["mastodon"]["type"] = nodeinfo.software.get("name")
# GoToSocial doesn't support certain buffers so we redefine all of them here.
self.settings["general"]["buffer_order"] = ['home', 'local', 'mentions', 'sent', 'favorites', 'bookmarks', 'followers', 'following', 'blocked', 'notifications']
self.settings["mastodon"]["access_token"] = access_token
self.settings["mastodon"]["instance"] = instance
self.settings.write()
@@ -103,7 +117,10 @@ class Session(base.baseSession):
self.db["utc_offset"] = offset
instance = self.api.instance()
if len(self.supported_languages) == 0:
self.supported_languages = instance.languages
try:
self.supported_languages = self.api.instance_languages()
except (Exception, MastodonVersionError):
pass
self.get_lists()
self.get_muted_users()
# determine instance custom characters limit.
@@ -117,11 +134,20 @@ class Session(base.baseSession):
def get_lists(self):
""" Gets the lists that the user is subscribed to and stores them in the database. Returns None."""
if self.software == "gotosocial":
self.db["lists"] = []
return
self.db["lists"] = self.api.lists()
def get_muted_users(self):
### ToDo: Use a function to retrieve all muted users.
self.db["muted_users"] = self.api.mutes()
if self.software == "gotosocial":
self.db["muted_users"] = []
return
try:
self.db["muted_users"] = self.api.mutes()
except MastodonNotFoundError:
self.db["muted_users"] = []
def order_buffer(self, name, data, ignore_older=False):
num = 0
@@ -144,6 +170,9 @@ class Session(base.baseSession):
log.error("Ignoring an older tweet... Last id: {0}, tweet id: {1}".format(last_id, i.id))
continue
if utils.find_item(i, self.db[name]) == None:
filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(name))
if filter_status == "hide":
continue
if self.settings["general"]["reverse_timelines"] == False: objects.append(i)
else: objects.insert(0, i)
num = num+1
@@ -188,17 +217,17 @@ class Session(base.baseSession):
self.sound.play(_sound)
return val
def send_post(self, reply_to=None, visibility=None, posts=[]):
def send_post(self, reply_to=None, visibility=None, language=None, posts=[]):
""" Convenience function to send a thread. """
in_reply_to_id = reply_to
for obj in posts:
text = obj.get("text")
if len(obj["attachments"]) == 0:
try:
item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, visibility=visibility, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"])
item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, visibility=visibility, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"], language=language)
# If it fails, let's basically send an event with all passed info so we will catch it later.
except Exception as e:
pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts)
pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts, lang=language)
return
if item != None:
in_reply_to_id = item["id"]
@@ -212,23 +241,25 @@ class Session(base.baseSession):
for i in obj["attachments"]:
media = self.api_call("media_post", media_file=i["file"], description=i["description"], synchronous=True)
media_ids.append(media.id)
item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, media_ids=media_ids, visibility=visibility, poll=poll, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"])
item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, media_ids=media_ids, visibility=visibility, poll=poll, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"], language=language)
if item != None:
in_reply_to_id = item["id"]
except Exception as e:
pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts)
pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts, lang=language)
return
def get_name(self):
instance = self.settings["mastodon"]["instance"]
instance = instance.replace("https://", "")
user = self.settings["mastodon"]["user_name"]
return "Mastodon: {}@{}".format(user, instance)
return "{}@{} ({})".format(user, instance, self.name)
def start_streaming(self):
if self.settings["general"]["disable_streaming"]:
log.info("Streaming is disabled for session {}. Skipping...".format(self.get_name()))
return
if self.software == "gotosocial":
return
listener = streaming.StreamListener(session_name=self.get_name(), user_id=self.db["user_id"])
try:
stream_healthy = self.api.stream_healthy()

View File

@@ -9,7 +9,7 @@ from . import utils, compose
# This will be used for the edit template dialog.
# Available variables for post objects.
# safe_text will be the content warning in case a post contains one, text will always be the full text, no matter if has a content warning or not.
post_variables = ["date", "display_name", "screen_name", "source", "lang", "safe_text", "text", "image_descriptions", "visibility"]
post_variables = ["date", "display_name", "screen_name", "source", "lang", "safe_text", "text", "image_descriptions", "visibility", "pinned"]
person_variables = ["display_name", "screen_name", "description", "followers", "following", "favorites", "posts", "created_at"]
conversation_variables = ["users", "last_post"]
notification_variables = ["display_name", "screen_name", "text", "date"]
@@ -57,6 +57,7 @@ def render_post(post, template, settings, relative_times=False, offset_hours=0):
$text: Toot text. This always displays the full text, even if there is a content warning present.
$image_descriptions: Information regarding image descriptions added by twitter users.
$visibility: post's visibility: public, not listed, followers only or direct.
$pinned: Wether the post is pinned or not (if not pinned, this will be blank).
"""
global post_variables
available_data = dict(source="")
@@ -75,6 +76,9 @@ def render_post(post, template, settings, relative_times=False, offset_hours=0):
else:
text = process_text(post, safe=False)
safe_text = process_text(post)
filtered = utils.evaluate_filters(post=post, current_context="home")
if filtered != None:
text = _("hidden by filter {}").format(filtered)
visibility_settings = dict(public=_("Public"), unlisted=_("Not listed"), private=_("Followers only"), direct=_("Direct"))
visibility = visibility_settings.get(post.visibility)
available_data.update(lang=post.language, text=text, safe_text=safe_text, visibility=visibility)
@@ -85,6 +89,12 @@ def render_post(post, template, settings, relative_times=False, offset_hours=0):
else:
image_descriptions = process_image_descriptions(post.media_attachments)
available_data.update(image_descriptions=image_descriptions)
# Process if the post is pinned
if post.get("pinned", False):
pinned = _("Pinned.")
else:
pinned = ""
available_data.update(pinned=pinned)
result = Template(_(template)).safe_substitute(**available_data)
return result
@@ -161,6 +171,9 @@ def render_notification(notification, template, post_template, settings, relativ
text = _("A poll in which you have voted has expired: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours))
elif notification.type == "follow_request":
text = _("wants to follow you.")
filtered = utils.evaluate_filters(post=notification, current_context="notifications")
if filtered != None:
text = _("hidden by filter {}").format(filtered)
available_data.update(text=text)
result = Template(_(template)).safe_substitute(**available_data)
result = result.replace(" . ", "")

View File

@@ -1,6 +1,7 @@
import re
import demoji
from html.parser import HTMLParser
from datetime import datetime, timezone
url_re = re.compile('<a\s*href=[\'|"](.*?)[\'"].*?>')
@@ -91,3 +92,59 @@ def demoji_user(name, settings):
user = re.sub(r":(.*?):", "", user)
return user
return name
def get_current_context(buffer: str) -> str:
""" Gets the name of a buffer and returns the context it belongs to. useful for filtering. """
if buffer == "home_timeline":
return "home"
elif buffer == "mentions" or buffer == "notifications":
return "notifications"
def evaluate_filters(post: dict, current_context: str) -> str | None:
"""
Evaluates the 'filtered' attribute of a Mastodon post to determine its visibility,
considering the current context, expiration, and matches (keywords or status).
Parameters:
post (dict): A dictionary representing a Mastodon post.
current_context (str): The context in which the post is displayed
(e.g., "home", "notifications", "public", "thread", or "profile").
Returns:
- "hide" if any applicable filter indicates the post should be hidden.
- A string with the filter's title if an applicable "warn" filter is present.
- None if no applicable filters are found, meaning the post should be shown normally.
"""
filters = post.get("filtered", None)
if filters == None:
return
warn_filter_title = None
now = datetime.now(timezone.utc)
for result in filters:
filter_data = result.get("filter", {})
# Check if the filter applies to the current context.
filter_contexts = filter_data.get("context", [])
if current_context not in filter_contexts:
continue # Skip filters not applicable in this context
# Check if the filter has expired.
expires_at = filter_data.get("expires_at")
if expires_at is not None:
# If expires_at is a string, attempt to parse it.
if isinstance(expires_at, str):
try:
expiration_dt = datetime.fromisoformat(expires_at)
except ValueError:
continue # Skip if the date format is invalid
else:
expiration_dt = expires_at
if expiration_dt < now:
continue # Skip expired filters
action = filter_data.get("filter_action", "")
if action == "hide":
return "hide"
elif action == "warn":
title = filter_data.get("title", "")
warn_filter_title = title if title else "warn"
if warn_filter_title:
return warn_filter_title
return None

View File

@@ -29,8 +29,8 @@ def donation():
dlg = wx.MessageDialog(None, _(u"If you like {0} we need your help to keep it going. Help us by donating to the project. This will help us pay for the server, the domain and some other things to ensure that {0} will be actively maintained. Your donation will give us the means to continue the development of {0}, and to keep {0} free. Would you like to donate now?").format(application.name), _(u"We need your help"), wx.ICON_QUESTION|wx.YES_NO)
return dlg.ShowModal()
def changed_keymap():
return wx.MessageDialog(None, _(u"TWBlue has detected that you're running windows 10 and has changed the default keymap to the Windows 10 keymap. It means that some keyboard shorcuts could be different. Please check the keystroke editor by pressing Alt+Win+K to see all available keystrokes for this keymap."), _(u"Information"), wx.OK).ShowModal()
def changed_keymap(system, keystroke_editor_shortcut):
return wx.MessageDialog(None, _(f"TWBlue has detected that you're running {system} and has changed the default keymap to the {system} keymap. It means that some keyboard shorcuts could be different. Please check the keystroke editor by pressing {keystroke_editor_shortcut} to see all available keystrokes for this keymap."), _(u"Information"), wx.OK).ShowModal()
def invalid_configuration():
return wx.MessageDialog(None, _("The configuration file is invalid."), _("Error"), wx.ICON_ERROR).ShowModal()
@@ -44,3 +44,18 @@ def cant_update_source() -> wx.MessageDialog:
"""
dlg = wx.MessageDialog(None, _("Sorry, you can't update while running {} from source.").format(application.name), _("Error"), wx.OK)
return dlg.ShowModal()
def invalid_instance():
return wx.MessageDialog(None, _("the provided instance is invalid. Please try again."), _("Invalid instance"), wx.ICON_ERROR).ShowModal()
def error_adding_filter():
return wx.MessageDialog(None, _("TWBlue was unable to add or update the filter with the specified settings. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal()
def error_loading_filters():
return wx.MessageDialog(None, _("TWBlue was unable to load your filters from the instance. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal()
def remove_filter():
dlg = wx.MessageDialog(None, _("Do you really want to delete this filter ?"), _("Delete filter"), wx.ICON_QUESTION|wx.YES_NO)
return dlg.ShowModal()
def error_removing_filters():
return wx.MessageDialog(None, _("TWBlue was unable to remove the filter you specified. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal()

View File

@@ -1,4 +1,4 @@
from __future__ import unicode_literals
# -*- coding: utf-8 -*-
import wx
class BaseWXDialog(wx.Dialog):

View File

@@ -12,47 +12,43 @@ class general(wx.Panel, baseDialog.BaseWXDialog):
def __init__(self, parent, languages,keymaps):
super(general, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
language = wx.StaticText(self, -1, _(u"Language"))
language = wx.StaticText(self, -1, _(u"&Language"))
self.language = wx.ListBox(self, -1, choices=languages)
self.language.SetSize(self.language.GetBestSize())
langBox = wx.BoxSizer(wx.HORIZONTAL)
langBox.Add(language, 0, wx.ALL, 5)
langBox.Add(self.language, 0, wx.ALL, 5)
sizer.Add(langBox, 0, wx.ALL, 5)
self.autostart = wx.CheckBox(self, -1, _(u"Run {0} at Windows startup").format(application.name,))
self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting {0}").format(application.name,))
sizer.Add(self.autostart, 0, wx.ALL, 5)
self.ask_at_exit = wx.CheckBox(self, -1, _(U"&Ask before exiting {0}").format(application.name,))
sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
self.no_streaming = wx.CheckBox(self, -1, _(U"Disable Streaming functions"))
self.no_streaming = wx.CheckBox(self, -1, _(U"&Disable Streaming functions"))
sizer.Add(self.no_streaming, 0, wx.ALL, 5)
updatePeriodBox = wx.BoxSizer(wx.HORIZONTAL)
updatePeriodBox.Add(wx.StaticText(self, -1, _(u"Buffer update interval, in minutes")), 0, wx.ALL, 5)
updatePeriodBox.Add(wx.StaticText(self, -1, _(u"&Buffer update interval, in minutes")), 0, wx.ALL, 5)
self.update_period = wx.SpinCtrl(self, wx.ID_ANY)
self.update_period.SetRange(1, 30)
self.update_period.SetSize(self.update_period.GetBestSize())
updatePeriodBox.Add(self.update_period, 0, wx.ALL, 5)
sizer.Add(updatePeriodBox, 0, wx.ALL, 5)
self.play_ready_sound = wx.CheckBox(self, -1, _(U"Play a sound when {0} launches").format(application.name,))
self.play_ready_sound = wx.CheckBox(self, -1, _(U"Pla&y a sound when {0} launches").format(application.name,))
sizer.Add(self.play_ready_sound, 0, wx.ALL, 5)
self.speak_ready_msg = wx.CheckBox(self, -1, _(U"Speak a message when {0} launches").format(application.name,))
self.speak_ready_msg = wx.CheckBox(self, -1, _(U"Sp&eak a message when {0} launches").format(application.name,))
sizer.Add(self.speak_ready_msg, 0, wx.ALL, 5)
self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"Use invisible interface's keyboard shortcuts while GUI is visible"))
self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"&Use invisible interface's keyboard shortcuts while GUI is visible"))
sizer.Add(self.use_invisible_shorcuts, 0, wx.ALL, 5)
self.disable_sapi5 = wx.CheckBox(self, -1, _(u"Activate Sapi5 when any other screen reader is not being run"))
self.disable_sapi5 = wx.CheckBox(self, -1, _(u"A&ctivate Sapi5 when any other screen reader is not being run"))
sizer.Add(self.disable_sapi5, 0, wx.ALL, 5)
self.hide_gui = wx.CheckBox(self, -1, _(u"Hide GUI on launch"))
self.hide_gui = wx.CheckBox(self, -1, _(u"&Hide GUI on launch"))
sizer.Add(self.hide_gui, 0, wx.ALL, 5)
self.handle_longtweets = wx.CheckBox(self, wx.ID_ANY, _(u"Use Codeofdusk's longtweet handlers (may decrease client performance)"))
sizer.Add(self.handle_longtweets, 0, wx.ALL, 5)
self.remember_mention_and_longtweet = wx.CheckBox(self, -1, _(u"Remember state for mention all and long tweet"))
sizer.Add(self.remember_mention_and_longtweet, 0, wx.ALL, 5)
self.read_long_posts_in_gui = wx.CheckBox(self, wx.ID_ANY, _("&Read long posts in GUI"))
sizer.Add(self.read_long_posts_in_gui, 0, wx.ALL, 5)
kmbox = wx.BoxSizer(wx.VERTICAL)
km_label = wx.StaticText(self, -1, _(u"Keymap"))
km_label = wx.StaticText(self, -1, _(u"&Keymap"))
self.km = wx.ComboBox(self, -1, choices=keymaps, style=wx.CB_READONLY)
self.km.SetSize(self.km.GetBestSize())
kmbox.Add(km_label, 0, wx.ALL, 5)
kmbox.Add(self.km, 0, wx.ALL, 5)
self.check_for_updates = wx.CheckBox(self, -1, _(U"Check for updates when {0} launches").format(application.name,))
self.check_for_updates = wx.CheckBox(self, -1, _(U"Check for u&pdates when {0} launches").format(application.name,))
sizer.Add(self.check_for_updates, 0, wx.ALL, 5)
sizer.Add(kmbox, 0, wx.ALL, 5)
self.SetSizer(sizer)
@@ -62,32 +58,32 @@ class proxy(wx.Panel, baseDialog.BaseWXDialog):
def __init__(self, parent, proxyTypes):
super(proxy, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
type=wx.StaticText(self, wx.ID_ANY, _(u"Proxy type: "))
type=wx.StaticText(self, wx.ID_ANY, _(u"Proxy &type: "))
self.type=wx.ComboBox(self, -1, choices=proxyTypes, style=wx.CB_READONLY)
self.type.SetSize(self.type.GetBestSize())
typeBox = wx.BoxSizer(wx.HORIZONTAL)
typeBox.Add(type, 0, wx.ALL, 5)
typeBox.Add(self.type, 0, wx.ALL, 5)
sizer.Add(typeBox, 0, wx.ALL, 5)
lbl = wx.StaticText(self, wx.ID_ANY, _(u"Proxy server: "))
lbl = wx.StaticText(self, wx.ID_ANY, _(u"Proxy s&erver: "))
self.server = wx.TextCtrl(self, -1)
serverBox = wx.BoxSizer(wx.HORIZONTAL)
serverBox.Add(lbl, 0, wx.ALL, 5)
serverBox.Add(self.server, 0, wx.ALL, 5)
sizer.Add(serverBox, 0, wx.ALL, 5)
lbl = wx.StaticText(self, wx.ID_ANY, _(u"Port: "))
lbl = wx.StaticText(self, wx.ID_ANY, _(u"&Port: "))
self.port = wx.SpinCtrl(self, wx.ID_ANY, min=1, max=65535)
portBox = wx.BoxSizer(wx.HORIZONTAL)
portBox.Add(lbl, 0, wx.ALL, 5)
portBox.Add(self.port, 0, wx.ALL, 5)
sizer.Add(portBox, 0, wx.ALL, 5)
lbl = wx.StaticText(self, wx.ID_ANY, _(u"User: "))
lbl = wx.StaticText(self, wx.ID_ANY, _(u"&User: "))
self.user = wx.TextCtrl(self, wx.ID_ANY)
userBox = wx.BoxSizer(wx.HORIZONTAL)
userBox.Add(lbl, 0, wx.ALL, 5)
userBox.Add(self.user, 0, wx.ALL, 5)
sizer.Add(userBox, 0, wx.ALL, 5)
lbl = wx.StaticText(self, wx.ID_ANY, _(u"Password: "))
lbl = wx.StaticText(self, wx.ID_ANY, _(u"P&assword: "))
self.password = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PASSWORD)
passwordBox = wx.BoxSizer(wx.HORIZONTAL)
passwordBox.Add(lbl, 0, wx.ALL, 5)
@@ -99,9 +95,9 @@ class reporting(wx.Panel, baseDialog.BaseWXDialog):
def __init__(self, parent):
super(reporting, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
self.speech_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic speech feedback"))
self.speech_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic s&peech feedback"))
sizer.Add(self.speech_reporting, 0, wx.ALL, 5)
self.braille_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic Braille feedback"))
self.braille_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic &Braille feedback"))
sizer.Add(self.braille_reporting, 0, wx.ALL, 5)
self.SetSizer(sizer)
@@ -112,9 +108,9 @@ class other_buffers(wx.Panel):
self.buffers = widgets.list(self, _(u"Buffer"), _(u"Name"), _(u"Status"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT)
sizer.Add(self.buffers.list, 0, wx.ALL, 5)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.toggle_state = wx.Button(self, -1, _(u"Show/hide"))
self.up = wx.Button(self, -1, _(u"Move up"))
self.down = wx.Button(self, -1, _(u"Move down"))
self.toggle_state = wx.Button(self, -1, _(u"S&how/hide"))
self.up = wx.Button(self, -1, _(u"Move &up"))
self.down = wx.Button(self, -1, _(u"Move &down"))
btnSizer.Add(self.toggle_state, 0, wx.ALL, 5)
btnSizer.Add(self.up, 0, wx.ALL, 5)
btnSizer.Add(self.down, 0, wx.ALL, 5)
@@ -201,6 +197,30 @@ class other_buffers(wx.Panel):
buffers_list.append(self.buffers.get_text_column(i, 0))
return buffers_list
class TranslatorPanel(wx.Panel, baseDialog.BaseWXDialog):
def __init__(self, parent):
super(TranslatorPanel, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
lbl_libre_url = wx.StaticText(self, wx.ID_ANY, _(u"&LibreTranslate API URL: "))
self.libre_api_url = wx.TextCtrl(self, wx.ID_ANY)
libreUrlBox = wx.BoxSizer(wx.HORIZONTAL)
libreUrlBox.Add(lbl_libre_url, 0, wx.ALL, 5)
libreUrlBox.Add(self.libre_api_url, 1, wx.ALL | wx.EXPAND, 5)
sizer.Add(libreUrlBox, 0, wx.ALL | wx.EXPAND, 5)
lbl_libre_api_key = wx.StaticText(self, wx.ID_ANY, _(u"LibreTranslate API &Key (optional): "))
self.libre_api_key = wx.TextCtrl(self, wx.ID_ANY)
libreApiKeyBox = wx.BoxSizer(wx.HORIZONTAL)
libreApiKeyBox.Add(lbl_libre_api_key, 0, wx.ALL, 5)
libreApiKeyBox.Add(self.libre_api_key, 1, wx.ALL | wx.EXPAND, 5)
sizer.Add(libreApiKeyBox, 0, wx.ALL | wx.EXPAND, 5)
lbl_deepL_api_key = wx.StaticText(self, wx.ID_ANY, _(u"&DeepL API Key: "))
self.deepL_api_key = wx.TextCtrl(self, wx.ID_ANY)
deepLApiKeyBox = wx.BoxSizer(wx.HORIZONTAL)
deepLApiKeyBox.Add(lbl_deepL_api_key, 0, wx.ALL, 5)
deepLApiKeyBox.Add(self.deepL_api_key, 1, wx.ALL | wx.EXPAND, 5)
sizer.Add(deepLApiKeyBox, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(sizer)
class configurationDialog(baseDialog.BaseWXDialog):
def set_title(self, title):
self.SetTitle(title)
@@ -221,12 +241,16 @@ class configurationDialog(baseDialog.BaseWXDialog):
self.proxy = proxy(self.notebook, proxyTypes)
self.notebook.AddPage(self.proxy, _(u"Proxy"))
def create_translator_panel(self):
self.translator_panel= TranslatorPanel(self.notebook)
self.notebook.AddPage(self.translator_panel, _("Translation services"))
def realize(self):
self.sizer.Add(self.notebook, 0, wx.ALL, 5)
ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL)
ok = wx.Button(self.panel, wx.ID_OK, _(u"Save"))
ok = wx.Button(self.panel, wx.ID_OK, _(u"&Save"))
ok.SetDefault()
cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"Close"))
cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"&Close"))
self.SetEscapeId(cancel.GetId())
ok_cancel_box.Add(ok, 0, wx.ALL, 5)
ok_cancel_box.Add(cancel, 0, wx.ALL, 5)

View File

@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
import wx
class CommunityTimeline(wx.Dialog):
def __init__(self, *args, **kwargs):
super(CommunityTimeline, self).__init__(parent=None, *args, **kwargs)
panel = wx.Panel(self)
communitySizer = wx.BoxSizer()
self.SetTitle(_("Create community timeline"))
communityLabel = wx.StaticText(panel, -1, _("Community URL"))
self.url = wx.TextCtrl(panel, -1)
self.url.SetFocus()
communitySizer.Add(communityLabel, 0, wx.ALL, 5)
communitySizer.Add(self.url, 0, wx.ALL, 5)
actionSizer = wx.BoxSizer(wx.VERTICAL)
label2 = wx.StaticText(panel, -1, _(u"Buffer type"))
self.local= wx.RadioButton(panel, -1, _("&Local timeline"), style=wx.RB_GROUP)
self.federated= wx.RadioButton(panel, -1, _("&Federated Timeline"))
hSizer = wx.BoxSizer(wx.HORIZONTAL)
hSizer.Add(label2, 0, wx.ALL, 5)
actionSizer.Add(self.local, 0, wx.ALL, 5)
actionSizer.Add(self.federated, 0, wx.ALL, 5)
hSizer.Add(actionSizer, 0, wx.ALL, 5)
sizer = wx.BoxSizer(wx.VERTICAL)
ok = wx.Button(panel, wx.ID_OK, _(u"&OK"))
ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close"))
btnsizer = wx.BoxSizer()
btnsizer.Add(ok)
btnsizer.Add(cancel)
sizer.Add(communitySizer)
sizer.Add(hSizer, 0, wx.ALL, 5)
sizer.Add(btnsizer)
panel.SetSizer(sizer)
def get_action(self):
if self.local.GetValue() == True: return "local"
elif self.federated.GetValue() == True: return "federated"

View File

@@ -12,49 +12,49 @@ class generalAccount(wx.Panel, baseDialog.BaseWXDialog):
super(generalAccount, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
userAutocompletionBox = wx.StaticBox(self, label=_("User autocompletion settings"))
self.userAutocompletionScan = wx.Button(self, wx.ID_ANY, _("Scan account and add followers and following users to the user autocompletion database"))
self.userAutocompletionManage = wx.Button(self, wx.ID_ANY, _("Manage autocompletion database"))
self.userAutocompletionScan = wx.Button(self, wx.ID_ANY, _("Scan acc&ount and add followers and following users to the user autocompletion database"))
self.userAutocompletionManage = wx.Button(self, wx.ID_ANY, _("&Manage autocompletion database"))
autocompletionSizer = wx.StaticBoxSizer(userAutocompletionBox, wx.HORIZONTAL)
autocompletionSizer.Add(self.userAutocompletionScan, 0, wx.ALL, 5)
autocompletionSizer.Add(self.userAutocompletionManage, 0, wx.ALL, 5)
sizer.Add(autocompletionSizer, 0, wx.ALL, 5)
self.disable_streaming = wx.CheckBox(self, wx.ID_ANY, _("Disable Streaming API endpoints"))
self.disable_streaming = wx.CheckBox(self, wx.ID_ANY, _("&Disable Streaming API endpoints"))
sizer.Add(self.disable_streaming, 0, wx.ALL, 5)
self.relative_time = wx.CheckBox(self, wx.ID_ANY, _("Relative timestamps"))
self.relative_time = wx.CheckBox(self, wx.ID_ANY, _("&Relative timestamps"))
sizer.Add(self.relative_time, 0, wx.ALL, 5)
self.read_preferences_from_instance = wx.CheckBox(self, wx.ID_ANY, _("Read preferences from instance (default visibility when publishing and displaying sensitive content)"))
self.read_preferences_from_instance = wx.CheckBox(self, wx.ID_ANY, _("R&ead preferences from instance (default visibility when publishing and displaying sensitive content)"))
sizer.Add(self.read_preferences_from_instance, 0, wx.ALL, 5)
itemsPerCallBox = wx.BoxSizer(wx.HORIZONTAL)
itemsPerCallBox.Add(wx.StaticText(self, -1, _("Items on each API call")), 0, wx.ALL, 5)
itemsPerCallBox.Add(wx.StaticText(self, -1, _("&Items on each API call")), 0, wx.ALL, 5)
self.itemsPerApiCall = wx.SpinCtrl(self, wx.ID_ANY)
self.itemsPerApiCall.SetRange(0, 40)
self.itemsPerApiCall.SetSize(self.itemsPerApiCall.GetBestSize())
itemsPerCallBox.Add(self.itemsPerApiCall, 0, wx.ALL, 5)
sizer.Add(itemsPerCallBox, 0, wx.ALL, 5)
self.reverse_timelines = wx.CheckBox(self, wx.ID_ANY, _("Inverted buffers: The newest items will be shown at the beginning while the oldest at the end"))
self.reverse_timelines = wx.CheckBox(self, wx.ID_ANY, _("I&nverted buffers: The newest items will be shown at the beginning while the oldest at the end"))
sizer.Add(self.reverse_timelines, 0, wx.ALL, 5)
self.ask_before_boost = wx.CheckBox(self, wx.ID_ANY, _("Ask confirmation before boosting a post"))
self.ask_before_boost = wx.CheckBox(self, wx.ID_ANY, _("&Ask confirmation before boosting a post"))
sizer.Add(self.ask_before_boost, 0, wx.ALL, 5)
self.show_screen_names = wx.CheckBox(self, wx.ID_ANY, _("Show screen names instead of full names"))
self.show_screen_names = wx.CheckBox(self, wx.ID_ANY, _("S&how screen names instead of full names"))
sizer.Add(self.show_screen_names, 0, wx.ALL, 5)
self.hide_emojis = wx.CheckBox(self, wx.ID_ANY, _("hide emojis in usernames"))
self.hide_emojis = wx.CheckBox(self, wx.ID_ANY, _("Hide e&mojis in usernames"))
sizer.Add(self.hide_emojis, 0, wx.ALL, 5)
PersistSizeLabel = wx.StaticText(self, -1, _("Number of items per buffer to cache in database (0 to disable caching, blank for unlimited)"))
PersistSizeLabel = wx.StaticText(self, -1, _("&Number of items per buffer to cache in database (0 to disable caching, blank for unlimited)"))
self.persist_size = wx.TextCtrl(self, -1)
sizer.Add(PersistSizeLabel, 0, wx.ALL, 5)
sizer.Add(self.persist_size, 0, wx.ALL, 5)
self.load_cache_in_memory = wx.CheckBox(self, wx.NewId(), _("Load cache for items in memory (much faster in big datasets but requires more RAM)"))
self.load_cache_in_memory = wx.CheckBox(self, wx.NewId(), _("&Load cache for items in memory (much faster in big datasets but requires more RAM)"))
self.SetSizer(sizer)
class templates(wx.Panel, baseDialog.BaseWXDialog):
def __init__(self, parent, post_template, conversation_template, person_template):
super(templates, self).__init__(parent)
sizer = wx.BoxSizer(wx.VERTICAL)
self.post = wx.Button(self, wx.ID_ANY, _("Edit template for posts. Current template: {}").format(post_template))
self.post = wx.Button(self, wx.ID_ANY, _("Edit template for &posts. Current template: {}").format(post_template))
sizer.Add(self.post, 0, wx.ALL, 5)
self.conversation = wx.Button(self, wx.ID_ANY, _("Edit template for conversations. Current template: {}").format(conversation_template))
self.conversation = wx.Button(self, wx.ID_ANY, _("Edit template for c&onversations. Current template: {}").format(conversation_template))
sizer.Add(self.conversation, 0, wx.ALL, 5)
self.person = wx.Button(self, wx.ID_ANY, _("Edit template for persons. Current template: {}").format(person_template))
self.person = wx.Button(self, wx.ID_ANY, _("Edit template for p&ersons. Current template: {}").format(person_template))
sizer.Add(self.person, 0, wx.ALL, 5)
self.SetSizer(sizer)
@@ -62,7 +62,7 @@ class sound(wx.Panel):
def __init__(self, parent, input_devices, output_devices, soundpacks):
wx.Panel.__init__(self, parent)
sizer = wx.BoxSizer(wx.VERTICAL)
volume = wx.StaticText(self, -1, _(u"Volume"))
volume = wx.StaticText(self, -1, _(u"&Volume"))
self.volumeCtrl = wx.Slider(self)
# Connect a key handler here to handle volume slider being inverted when moving with up and down arrows.
# see https://github.com/manuelcortez/TWBlue/issues/261
@@ -73,16 +73,16 @@ class sound(wx.Panel):
volumeBox.Add(volume, 0, wx.ALL, 5)
volumeBox.Add(self.volumeCtrl, 0, wx.ALL, 5)
sizer.Add(volumeBox, 0, wx.ALL, 5)
self.session_mute = wx.CheckBox(self, -1, _(u"Session mute"))
self.session_mute = wx.CheckBox(self, -1, _(u"S&ession mute"))
sizer.Add(self.session_mute, 0, wx.ALL, 5)
output_label = wx.StaticText(self, -1, _(u"Output device"))
output_label = wx.StaticText(self, -1, _(u"&Output device"))
self.output = wx.ComboBox(self, -1, choices=output_devices, style=wx.CB_READONLY)
self.output.SetSize(self.output.GetBestSize())
outputBox = wx.BoxSizer(wx.HORIZONTAL)
outputBox.Add(output_label, 0, wx.ALL, 5)
outputBox.Add(self.output, 0, wx.ALL, 5)
sizer.Add(outputBox, 0, wx.ALL, 5)
input_label = wx.StaticText(self, -1, _(u"Input device"))
input_label = wx.StaticText(self, -1, _(u"&Input device"))
self.input = wx.ComboBox(self, -1, choices=input_devices, style=wx.CB_READONLY)
self.input.SetSize(self.input.GetBestSize())
inputBox = wx.BoxSizer(wx.HORIZONTAL)
@@ -90,15 +90,15 @@ class sound(wx.Panel):
inputBox.Add(self.input, 0, wx.ALL, 5)
sizer.Add(inputBox, 0, wx.ALL, 5)
soundBox = wx.BoxSizer(wx.VERTICAL)
soundpack_label = wx.StaticText(self, -1, _(u"Sound pack"))
soundpack_label = wx.StaticText(self, -1, _(u"Sound &pack"))
self.soundpack = wx.ComboBox(self, -1, choices=soundpacks, style=wx.CB_READONLY)
self.soundpack.SetSize(self.soundpack.GetBestSize())
soundBox.Add(soundpack_label, 0, wx.ALL, 5)
soundBox.Add(self.soundpack, 0, wx.ALL, 5)
sizer.Add(soundBox, 0, wx.ALL, 5)
self.indicate_audio = wx.CheckBox(self, -1, _("Indicate audio or video in posts with sound"))
self.indicate_audio = wx.CheckBox(self, -1, _("Indicate &audio or video in posts with sound"))
sizer.Add(self.indicate_audio, 0, wx.ALL, 5)
self.indicate_img = wx.CheckBox(self, -1, _("Indicate posts containing images with sound"))
self.indicate_img = wx.CheckBox(self, -1, _("Indicate posts containing i&mages with sound"))
sizer.Add(self.indicate_img, 0, wx.ALL, 5)
self.SetSizer(sizer)
@@ -121,7 +121,7 @@ class extrasPanel(wx.Panel):
def __init__(self, parent, ocr_languages=[], translation_languages=[]):
super(extrasPanel, self).__init__(parent)
mainSizer = wx.BoxSizer(wx.VERTICAL)
OCRBox = wx.StaticBox(self, label=_(u"Language for OCR"))
OCRBox = wx.StaticBox(self, label=_(u"&Language for OCR"))
self.ocr_lang = wx.ListBox(self, -1, choices=ocr_languages)
self.ocr_lang.SetSize(self.ocr_lang.GetBestSize())
ocrLanguageSizer = wx.StaticBoxSizer(OCRBox, wx.HORIZONTAL)
@@ -167,9 +167,9 @@ class configurationDialog(baseDialog.BaseWXDialog):
def realize(self):
self.sizer.Add(self.notebook, 0, wx.ALL, 5)
ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL)
ok = wx.Button(self.panel, wx.ID_OK, _(u"Save"))
ok = wx.Button(self.panel, wx.ID_OK, _(u"&Save"))
ok.SetDefault()
cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"Close"))
cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"&Close"))
self.SetEscapeId(cancel.GetId())
ok_cancel_box.Add(ok, 0, wx.ALL, 5)
ok_cancel_box.Add(cancel, 0, wx.ALL, 5)

View File

@@ -1,7 +0,0 @@
ffmpeg -hwaccel qsv -c:v h264_qsv -i "$1" -map 0 -c copy -c:v hevc_qsv -preset slow -global_quality 22 -look_ahead 1 "final/${1%.*}.mkv"
#!/bin/bash
for i in *.wmv;
do
ffmpeg -i "$i" -c:v libx264 -c:a aac -vf scale=640:480 -crf 20 "final/$i.mp4"
done

View File

@@ -0,0 +1,146 @@
# -*- coding: utf-8 -*-
import wx
class FilterKeywordPanel(wx.Panel):
"""panel to handle filter's keywords. """
def __init__(self, parent):
super(FilterKeywordPanel, self).__init__(parent)
self.keywords = []
# Add widgets
list_panel = wx.Panel(self)
self.keyword_list = wx.ListCtrl(list_panel, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL)
self.keyword_list.InsertColumn(0, _("Keyword"))
self.keyword_list.InsertColumn(1, _("Whole word"))
self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE_USEHEADER)
self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER)
list_sizer = wx.BoxSizer(wx.VERTICAL)
list_sizer.Add(self.keyword_list, 1, wx.EXPAND)
list_panel.SetSizer(list_sizer)
keyword_label = wx.StaticText(self, wx.ID_ANY, label=_("Keyword:"))
self.keyword_text = wx.TextCtrl(self, wx.ID_ANY)
keyword_sizer = wx.BoxSizer(wx.VERTICAL)
keyword_sizer.Add(keyword_label, 0, wx.RIGHT, 5)
keyword_sizer.Add(self.keyword_text, 0, wx.EXPAND)
self.whole_word_checkbox = wx.CheckBox(self, wx.ID_ANY, label=_("Whole word"))
self.add_button = wx.Button(self, wx.ID_ANY, label=_("Add"))
self.remove_button = wx.Button(self, wx.ID_ANY, label=_("Remove"))
input_sizer = wx.BoxSizer(wx.HORIZONTAL)
input_sizer.Add(keyword_sizer, 1, wx.RIGHT, 5)
input_sizer.Add(self.whole_word_checkbox, 0)
button_sizer = wx.BoxSizer(wx.HORIZONTAL)
button_sizer.Add(self.add_button, 0, wx.RIGHT, 5)
button_sizer.Add(self.remove_button, 0)
main_sizer = wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(wx.StaticText(self, label=_("Palabras clave a filtrar:")), 0, wx.BOTTOM, 5)
main_sizer.Add(list_panel, 1, wx.EXPAND | wx.BOTTOM, 5)
main_sizer.Add(input_sizer, 0, wx.EXPAND | wx.BOTTOM, 5)
main_sizer.Add(button_sizer, 0, wx.ALIGN_RIGHT)
self.SetSizer(main_sizer)
def add_keyword(self, keyword, whole_word=False):
""" Adds a keyword to the list. """
index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), keyword)
self.keyword_list.SetItem(index, 1, _("Yes") if whole_word else _("No"))
self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER)
self.keyword_text.Clear()
self.whole_word_checkbox.SetValue(False)
def remove_keyword(self):
""" Remove a keyword from the list. """
selection = self.keyword_list.GetFirstSelected()
if selection != -1:
self.keyword_list.DeleteItem(selection)
return selection
def set_keywords(self, keywords):
""" Set the list of keyword. """
self.keyword_list.DeleteAllItems()
for keyword_data in keywords:
if isinstance(keyword_data, dict):
kw = keyword_data.get('keyword', '')
whole_word = keyword_data.get('whole_word', False)
self.keywords.append({'keyword': kw, 'whole_word': whole_word})
index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), kw)
self.keyword_list.SetItem(index, 1, _("Yes") if whole_word else _("No"))
else:
self.keywords.append({'keyword': keyword_data, 'whole_word': False})
index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), keyword_data)
self.keyword_list.SetItem(index, 1, _("No"))
self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER)
class CreateFilterDialog(wx.Dialog):
def __init__(self, parent, title=_("New filter")):
super(CreateFilterDialog, self).__init__(parent, title=title, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
self.contexts = ["home", "public", "notifications", "thread", "account"]
self.context_labels = {
"home": _("Home timeline"),
"public": _("Public statuses"),
"notifications": _("Notifications"),
"thread": _("Threads"),
"account": _("Profiles")
}
self.actions = ["hide", "warn"]
self.action_labels = {
"hide": _("Hide posts"),
"warn": _("Set a content warning to posts")
}
self.expiration_options = [
("never", _("Never")),
("hours", _("Hours")),
("days", _("Days")),
("weeks", _("Weeks")),
("months", _("months"))
]
main_sizer = wx.BoxSizer(wx.VERTICAL)
name_label = wx.StaticText(self, wx.ID_ANY, label=_("Title:"))
self.name_ctrl = wx.TextCtrl(self, wx.ID_ANY)
name_sizer = wx.BoxSizer(wx.HORIZONTAL)
name_sizer.Add(name_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
name_sizer.Add(self.name_ctrl, 1, wx.EXPAND)
main_sizer.Add(name_sizer, 0, wx.EXPAND | wx.ALL, 10)
static_box = wx.StaticBox(self, wx.ID_ANY, label=_("Apply to:"))
context_sizer = wx.StaticBoxSizer(static_box, wx.VERTICAL)
self.context_checkboxes = {}
context_grid = wx.FlexGridSizer(rows=3, cols=2, vgap=5, hgap=10)
for context in self.contexts:
checkbox = wx.CheckBox(static_box, wx.ID_ANY, label=self.context_labels[context])
self.context_checkboxes[context] = checkbox
context_grid.Add(checkbox)
context_sizer.Add(context_grid, 0, wx.ALL, 10)
main_sizer.Add(context_sizer, 0, wx.EXPAND | wx.ALL, 10)
action_label = wx.StaticText(self, wx.ID_ANY, label=_("Action:"))
self.action_choice = wx.Choice(self, wx.ID_ANY)
for action in self.actions:
self.action_choice.Append(self.action_labels[action])
action_sizer = wx.BoxSizer(wx.HORIZONTAL)
action_sizer.Add(action_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
action_sizer.Add(self.action_choice, 1)
main_sizer.Add(action_sizer, 0, wx.EXPAND | wx.ALL, 10)
expiration_label = wx.StaticText(self, wx.ID_ANY, label=_("Expires in:"))
self.expiration_choice = wx.Choice(self, wx.ID_ANY)
for e, label in self.expiration_options:
self.expiration_choice.Append(label)
self.expiration_value = wx.SpinCtrl(self, wx.ID_ANY, min=1, max=9999, initial=1)
self.expiration_value.Enable(False)
self.expiration_choice.Bind(wx.EVT_CHOICE, self.on_expiration_changed)
expiration_sizer = wx.BoxSizer(wx.HORIZONTAL)
expiration_sizer.Add(expiration_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
expiration_sizer.Add(self.expiration_choice, 1, wx.RIGHT, 5)
expiration_sizer.Add(self.expiration_value, 0)
main_sizer.Add(expiration_sizer, 0, wx.EXPAND | wx.ALL, 10)
self.keyword_panel = FilterKeywordPanel(self)
main_sizer.Add(self.keyword_panel, 1, wx.EXPAND | wx.ALL, 10)
button_sizer = self.CreateButtonSizer(wx.OK | wx.CANCEL)
main_sizer.Add(button_sizer, 0, wx.EXPAND | wx.ALL, 10)
self.SetSizer(main_sizer)
self.SetSize((450, 550))
self.action_choice.SetSelection(0)
self.expiration_choice.SetSelection(0)
wx.CallAfter(self.name_ctrl.SetFocus)
def on_expiration_changed(self, event):
selection = self.expiration_choice.GetSelection()
self.expiration_value.Enable(selection != 0)

View File

@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
import wx
class ManageFiltersDialog(wx.Dialog):
"""
A dialog that displays a list of Mastodon filters and provides controls
to add, edit and remove them.
"""
def __init__(self, parent, title=_("Filters"), *args, **kwargs):
"""Initialize the filters view dialog. """
super(ManageFiltersDialog, self).__init__(parent, title=title, *args, **kwargs)
main_sizer = wx.BoxSizer(wx.VERTICAL)
self.filter_list = wx.ListCtrl(self, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.BORDER_SUNKEN)
self.filter_list.InsertColumn(0, _("Title"), width=150)
self.filter_list.InsertColumn(1, _("Keywords"), width=80)
self.filter_list.InsertColumn(2, _("Contexts"), width=150)
self.filter_list.InsertColumn(3, _("Action"), width=100)
self.filter_list.InsertColumn(4, _("Expires"), width=150)
main_sizer.Add(self.filter_list, 1, wx.EXPAND | wx.ALL, 10)
button_sizer = wx.BoxSizer(wx.HORIZONTAL)
self.add_button = wx.Button(self, label=_("Add"))
self.edit_button = wx.Button(self, label=_("Edit"))
self.remove_button = wx.Button(self, label=_("Remove"))
close_button = wx.Button(self, wx.ID_CLOSE)
self.edit_button.Disable()
self.remove_button.Disable()
button_sizer.Add(self.add_button, 0, wx.RIGHT, 5)
button_sizer.Add(self.edit_button, 0, wx.RIGHT, 5)
button_sizer.Add(self.remove_button, 0, wx.RIGHT, 5)
button_sizer.Add((0, 0), 1, wx.EXPAND) # Spacer to push close button to right
button_sizer.Add(close_button, 0)
self.SetEscapeId(close_button.GetId())
main_sizer.Add(button_sizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 10)
self.SetSizer(main_sizer)

View File

@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
import wx
class Post(wx.Dialog):
def __init__(self, caption=_("Post"), text="", *args, **kwds):
def __init__(self, caption=_("Post"), text="", languages=[], *args, **kwds):
super(Post, self).__init__(parent=None, id=wx.ID_ANY, *args, **kwds)
main_sizer = wx.BoxSizer(wx.VERTICAL)
post_sizer = wx.WrapSizer(wx.VERTICAL)
@@ -48,6 +49,12 @@ class Post(wx.Dialog):
self.visibility = wx.ComboBox(self, wx.ID_ANY, choices=[_("Public"), _("Not listed"), _("Followers only"), _("Direct")], style=wx.CB_DROPDOWN | wx.CB_READONLY | wx.CB_SIMPLE)
self.visibility.SetSelection(0)
visibility_sizer.Add(self.visibility, 0, 0, 0)
language_sizer = wx.BoxSizer(wx.HORIZONTAL)
post_actions_sizer.Add(language_sizer, 0, wx.RIGHT, 20)
lang_label = wx.StaticText(self, wx.ID_ANY, _("Language"))
language_sizer.Add(lang_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
self.language = wx.ComboBox(self, wx.ID_ANY, choices=languages, style=wx.CB_DROPDOWN | wx.CB_READONLY)
language_sizer.Add(self.language, 0, wx.ALIGN_CENTER_VERTICAL, 0)
self.add = wx.Button(self, wx.ID_ANY, _("A&dd"))
self.sensitive = wx.CheckBox(self, wx.ID_ANY, _("S&ensitive content"))
self.sensitive.SetValue(False)
@@ -164,80 +171,83 @@ class Post(wx.Dialog):
def unable_to_attach_poll(self, *args, **kwargs):
return wx.MessageDialog(self, _("You can add a poll or media files. In order to add your poll, please remove other attachments first."), _("Error adding poll"), wx.ICON_ERROR).ShowModal()
class viewPost(wx.Dialog):
def set_title(self, lenght):
self.SetTitle(_("Post - %i characters ") % (lenght,))
def set_title(self, length):
self.SetTitle(_("Post - %i characters ") % length)
def __init__(self, text="", boosts_count=0, favs_count=0, source="", date="", privacy="", *args, **kwargs):
super(viewPost, self).__init__(parent=None, id=wx.ID_ANY, size=(850,850))
super(viewPost, self).__init__(parent=None, id=wx.ID_ANY, size=(850, 850))
self.init_ui(text, boosts_count, favs_count, source, date, privacy)
def init_ui(self, text, boosts_count, favs_count, source, date, privacy):
panel = wx.Panel(self)
label = wx.StaticText(panel, -1, _("Post"))
self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
self.text.SetFocus()
textBox = wx.BoxSizer(wx.HORIZONTAL)
textBox.Add(label, 0, wx.ALL, 5)
textBox.Add(self.text, 1, wx.EXPAND, 5)
mainBox = wx.BoxSizer(wx.VERTICAL)
mainBox.Add(textBox, 0, wx.ALL, 5)
label2 = wx.StaticText(panel, -1, _("Image description"))
self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
main_sizer = wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(self.create_text_section(panel, text), 1, wx.EXPAND | wx.ALL, 5)
main_sizer.Add(self.create_image_description_section(panel), 1, wx.EXPAND | wx.ALL, 5)
main_sizer.Add(self.create_info_section(panel, privacy, boosts_count, favs_count, source, date), 0, wx.EXPAND | wx.ALL, 5)
main_sizer.Add(self.create_buttons_section(panel), 0, wx.ALIGN_RIGHT | wx.ALL, 5)
panel.SetSizer(main_sizer)
self.SetClientSize(main_sizer.CalcMin())
def create_text_section(self, panel, text):
sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Post")), wx.VERTICAL)
self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY | wx.TE_MULTILINE)
sizer.Add(self.text, 1, wx.EXPAND | wx.ALL, 5)
return sizer
def create_image_description_section(self, panel):
sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Image description")), wx.VERTICAL)
self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY | wx.TE_MULTILINE)
self.image_description.Enable(False)
iBox = wx.BoxSizer(wx.HORIZONTAL)
iBox.Add(label2, 0, wx.ALL, 5)
iBox.Add(self.image_description, 1, wx.EXPAND, 5)
mainBox.Add(iBox, 0, wx.ALL, 5)
privacyLabel = wx.StaticText(panel, -1, _("Privacy"))
privacy = wx.TextCtrl(panel, -1, privacy, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
privacyBox = wx.BoxSizer(wx.HORIZONTAL)
privacyBox.Add(privacyLabel, 0, wx.ALL, 5)
privacyBox.Add(privacy, 0, wx.ALL, 5)
boostsCountLabel = wx.StaticText(panel, -1, _(u"Boosts: "))
boostsCount = wx.TextCtrl(panel, -1, str(boosts_count), size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
boostBox = wx.BoxSizer(wx.HORIZONTAL)
boostBox.Add(boostsCountLabel, 0, wx.ALL, 5)
boostBox.Add(boostsCount, 0, wx.ALL, 5)
favsCountLabel = wx.StaticText(panel, -1, _("Favorites: "))
favsCount = wx.TextCtrl(panel, -1, str(favs_count), size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
favsBox = wx.BoxSizer(wx.HORIZONTAL)
favsBox.Add(favsCountLabel, 0, wx.ALL, 5)
favsBox.Add(favsCount, 0, wx.ALL, 5)
sourceLabel = wx.StaticText(panel, -1, _("Source: "))
source = wx.TextCtrl(panel, -1, source, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
sourceBox = wx.BoxSizer(wx.HORIZONTAL)
sourceBox.Add(sourceLabel, 0, wx.ALL, 5)
sourceBox.Add(source, 0, wx.ALL, 5)
dateLabel = wx.StaticText(panel, -1, _(u"Date: "))
date = wx.TextCtrl(panel, -1, date, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
dateBox = wx.BoxSizer(wx.HORIZONTAL)
dateBox.Add(dateLabel, 0, wx.ALL, 5)
dateBox.Add(date, 0, wx.ALL, 5)
infoBox = wx.BoxSizer(wx.HORIZONTAL)
infoBox.Add(privacyBox, 0, wx.ALL, 5)
infoBox.Add(boostBox, 0, wx.ALL, 5)
infoBox.Add(favsBox, 0, wx.ALL, 5)
infoBox.Add(sourceBox, 0, wx.ALL, 5)
mainBox.Add(infoBox, 0, wx.ALL, 5)
mainBox.Add(dateBox, 0, wx.ALL, 5)
sizer.Add(self.image_description, 1, wx.EXPAND | wx.ALL, 5)
return sizer
def create_info_section(self, panel, privacy, boosts_count, favs_count, source, date):
sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Information")), wx.VERTICAL)
flex_sizer = wx.FlexGridSizer(cols=3, hgap=10, vgap=10)
flex_sizer.AddGrowableCol(1)
flex_sizer.Add(wx.StaticText(panel, -1, _("Privacy")), 0, wx.ALIGN_CENTER_VERTICAL)
flex_sizer.Add(wx.TextCtrl(panel, -1, privacy, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND)
flex_sizer.Add(self.create_boosts_section(panel, boosts_count), 1, wx.EXPAND | wx.ALL, 5)
flex_sizer.Add(self.create_favorites_section(panel, favs_count), 1, wx.EXPAND | wx.ALL, 5)
flex_sizer.Add(wx.StaticText(panel, -1, _("Source")), 0, wx.ALIGN_CENTER_VERTICAL)
flex_sizer.Add(wx.TextCtrl(panel, -1, source, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND)
flex_sizer.Add(wx.StaticText(panel, -1, _("Date")), 0, wx.ALIGN_CENTER_VERTICAL)
flex_sizer.Add(wx.TextCtrl(panel, -1, date, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND)
sizer.Add(flex_sizer, 1, wx.EXPAND | wx.ALL, 5)
return sizer
def create_boosts_section(self, panel, boosts_count):
sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Boosts")), wx.VERTICAL)
self.boosts_button = wx.Button(panel, -1, str(boosts_count))
self.boosts_button.SetToolTip(_("View users who boosted this post"))
sizer.Add(self.boosts_button, 1, wx.EXPAND | wx.ALL, 5)
return sizer
def create_favorites_section(self, panel, favs_count):
sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Favorites")), wx.VERTICAL)
self.favorites_button = wx.Button(panel, -1, str(favs_count))
self.favorites_button.SetToolTip(_("View users who favorited this post"))
sizer.Add(self.favorites_button, 1, wx.EXPAND | wx.ALL, 5)
return sizer
def create_buttons_section(self, panel):
sizer = wx.BoxSizer(wx.HORIZONTAL)
self.mute = wx.Button(panel, wx.ID_ANY, _("Mute conversation"))
self.mute.Enable(False)
self.share = wx.Button(panel, wx.ID_ANY, _("Copy link to clipboard"))
self.share.Enable(False)
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
self.translateButton = wx.Button(panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
cancelButton = wx.Button(panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
self.spellcheck = wx.Button(panel, wx.ID_ANY, _("Check &spelling..."))
self.translateButton = wx.Button(panel, wx.ID_ANY, _("&Translate..."))
cancelButton = wx.Button(panel, wx.ID_CANCEL, _("C&lose"))
cancelButton.SetDefault()
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
buttonsBox.Add(self.share, 0, wx.ALL, 5)
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
buttonsBox.Add(self.translateButton, 0, wx.ALL, 5)
buttonsBox.Add(cancelButton, 0, wx.ALL, 5)
mainBox.Add(buttonsBox, 0, wx.ALL, 5)
selectId = wx.ID_ANY
self.Bind(wx.EVT_MENU, self.onSelect, id=selectId)
self.accel_tbl = wx.AcceleratorTable([
(wx.ACCEL_CTRL, ord('A'), selectId),
])
self.SetAcceleratorTable(self.accel_tbl)
panel.SetSizer(mainBox)
self.SetClientSize(mainBox.CalcMin())
sizer.Add(self.mute, 0, wx.ALL, 5)
sizer.Add(self.share, 0, wx.ALL, 5)
sizer.Add(self.spellcheck, 0, wx.ALL, 5)
sizer.Add(self.translateButton, 0, wx.ALL, 5)
sizer.Add(cancelButton, 0, wx.ALL, 5)
return sizer
def set_text(self, text):
self.text.ChangeValue(text)

View File

@@ -76,27 +76,27 @@ class ShowUserProfile(wx.Dialog):
mainSizer = wx.GridSizer(2, 5, 5)
# create widgets
nameLabel = wx.StaticText(self.panel, label=_("Name: "))
nameLabel = wx.StaticText(self.panel, label=_("&Name: "))
name = self.createTextCtrl(user.display_name, size=(200, 30))
mainSizer.Add(nameLabel, wx.SizerFlags().Center())
mainSizer.Add(name, wx.SizerFlags().Center())
urlLabel = wx.StaticText(self.panel, label=_("URL: "))
urlLabel = wx.StaticText(self.panel, label=_("&URL: "))
url = self.createTextCtrl(user.url, size=(200, 30))
mainSizer.Add(urlLabel, wx.SizerFlags().Center())
mainSizer.Add(url, wx.SizerFlags().Center())
bioLabel = wx.StaticText(self.panel, label=_("Bio: "))
bioLabel = wx.StaticText(self.panel, label=_("&Bio: "))
bio = self.createTextCtrl(html_filter(user.note), (400, 60))
mainSizer.Add(bioLabel, wx.SizerFlags().Center())
mainSizer.Add(bio, wx.SizerFlags().Center())
joinLabel = wx.StaticText(self.panel, label=_("Joined at: "))
joinLabel = wx.StaticText(self.panel, label=_("&Joined at: "))
joinText = self.createTextCtrl(user.created_at.strftime('%d %B, %Y'), (80, 30))
mainSizer.Add(joinLabel, wx.SizerFlags().Center())
mainSizer.Add(joinText, wx.SizerFlags().Center())
actions = wx.Button(self.panel, label=_("Actions"))
actions = wx.Button(self.panel, label=_("&Actions"))
actions.Bind(wx.EVT_BUTTON, self.onAction)
mainSizer.Add(actions, wx.SizerFlags().Center())
@@ -119,7 +119,7 @@ class ShowUserProfile(wx.Dialog):
self.fields = []
for num, field in enumerate(user.fields):
labelSizer = wx.BoxSizer(wx.HORIZONTAL)
labelLabel = wx.StaticText(self.panel, label=_("Field {} - Label: ").format(num + 1))
labelLabel = wx.StaticText(self.panel, label=_("Field &{} - Label: ").format(num + 1))
labelSizer.Add(labelLabel, wx.SizerFlags().Center().Border(wx.ALL, 5))
labelText = self.createTextCtrl(html_filter(field.name), (230, 30), True)
labelSizer.Add(labelText, wx.SizerFlags().Expand().Border(wx.ALL, 5))
@@ -134,40 +134,40 @@ class ShowUserProfile(wx.Dialog):
bullSwitch = {True: _('Yes'), False: _('No'), None: _('No')}
privateSizer = wx.BoxSizer(wx.HORIZONTAL)
privateLabel = wx.StaticText(self.panel, label=_("Private account: "))
privateLabel = wx.StaticText(self.panel, label=_("&Private account: "))
private = self.createTextCtrl(bullSwitch[user.locked], (30, 30))
privateSizer.Add(privateLabel, wx.SizerFlags().Center())
privateSizer.Add(private, wx.SizerFlags().Center())
mainSizer.Add(privateSizer, 0, wx.ALL | wx.CENTER)
botSizer = wx.BoxSizer(wx.HORIZONTAL)
botLabel = wx.StaticText(self.panel, label=_("Bot account: "))
botLabel = wx.StaticText(self.panel, label=_("&Bot account: "))
botText = self.createTextCtrl(bullSwitch[user.bot], (30, 30))
botSizer.Add(botLabel, wx.SizerFlags().Center())
botSizer.Add(botText, wx.SizerFlags().Center())
mainSizer.Add(botSizer, 0, wx.ALL | wx.CENTER)
discoverSizer = wx.BoxSizer(wx.HORIZONTAL)
discoverLabel = wx.StaticText(self.panel, label=_("Discoverable account: "))
discoverLabel = wx.StaticText(self.panel, label=_("&Discoverable account: "))
discoverText = self.createTextCtrl(bullSwitch[user.discoverable], (30, 30))
discoverSizer.Add(discoverLabel, wx.SizerFlags().Center())
discoverSizer.Add(discoverText, wx.SizerFlags().Center())
mainSizer.Add(discoverSizer, 0, wx.ALL | wx.CENTER)
posts = wx.Button(self.panel, label=_("{} posts. Click to open posts timeline").format(user.statuses_count))
posts = wx.Button(self.panel, label=_("{} p&osts. Click to open posts timeline").format(user.statuses_count))
# posts.SetToolTip(_("Click to open {}'s posts").format(user.display_name))
posts.Bind(wx.EVT_BUTTON, self.onPost)
mainSizer.Add(posts, wx.SizerFlags().Center())
following = wx.Button(self.panel, label=_("{} following. Click to open Following timeline").format(user.following_count))
following = wx.Button(self.panel, label=_("{} &following. Click to open Following timeline").format(user.following_count))
mainSizer.Add(following, wx.SizerFlags().Center())
following.Bind(wx.EVT_BUTTON, self.onFollowing)
followers = wx.Button(self.panel, label=_("{} followers. Click to open followers timeline").format(user.followers_count))
followers = wx.Button(self.panel, label=_("{} fo&llowers. Click to open followers timeline").format(user.followers_count))
mainSizer.Add(followers, wx.SizerFlags().Center())
followers.Bind(wx.EVT_BUTTON, self.onFollowers)
close = wx.Button(self.panel, wx.ID_CLOSE, _("Close"))
close = wx.Button(self.panel, wx.ID_CLOSE, _("&Close"))
self.SetEscapeId(close.GetId())
close.SetDefault()
wrapperSizer.Add(mainSizer, 0, wx.CENTER)

View File

@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import requests
from io import BytesIO
@@ -39,14 +40,14 @@ class UpdateProfileDialog(wx.Dialog):
sizer = wx.BoxSizer(wx.VERTICAL)
# create widgets
display_name_label = wx.StaticText(panel, label=_("Display Name"))
display_name_label = wx.StaticText(panel, label=_("&Display Name"))
self.display_name = wx.TextCtrl(panel, value=display_name, style= wx.TE_PROCESS_ENTER, size=(200, 30))
name_sizer = wx.BoxSizer(wx.HORIZONTAL)
name_sizer.Add(display_name_label, wx.SizerFlags().Center())
name_sizer.Add(self.display_name, wx.SizerFlags().Center())
sizer.Add(name_sizer, wx.CENTER)
bio_label = wx.StaticText(panel, label=_("Bio"))
bio_label = wx.StaticText(panel, label=_("&Bio"))
self.bio = wx.TextCtrl(panel, value=note, style=wx.TE_PROCESS_ENTER | wx.TE_MULTILINE, size=(400, 60))
bio_sizer = wx.BoxSizer(wx.HORIZONTAL)
bio_sizer.Add(bio_label, wx.SizerFlags().Center())
@@ -67,7 +68,7 @@ class UpdateProfileDialog(wx.Dialog):
self.header_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap())
self.header_image.AcceptsFocusFromKeyboard = return_true
self.change_header = wx.Button(panel, label=_("Change header"))
self.change_header = wx.Button(panel, label=_("Change &header"))
header_sizer = wx.BoxSizer(wx.HORIZONTAL)
header_sizer.Add(header_label, wx.SizerFlags().Center())
header_sizer.Add(self.header_image, wx.SizerFlags().Center())
@@ -88,7 +89,7 @@ class UpdateProfileDialog(wx.Dialog):
self.avatar_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap())
self.avatar_image.AcceptsFocusFromKeyboard = return_true
self.change_avatar = wx.Button(panel, label=_("Change avatar"))
self.change_avatar = wx.Button(panel, label=_("Change &avatar"))
avatar_sizer = wx.BoxSizer(wx.HORIZONTAL)
avatar_sizer.Add(avatar_label, wx.SizerFlags().Center())
avatar_sizer.Add(self.avatar_image, wx.SizerFlags().Center())
@@ -98,7 +99,7 @@ class UpdateProfileDialog(wx.Dialog):
self.fields = []
for i in range(1, 5):
field_sizer = wx.BoxSizer(wx.HORIZONTAL)
field_label = wx.StaticText(panel, label=_("Field {}: Label").format(i))
field_label = wx.StaticText(panel, label=_("Field &{}: Label").format(i))
field_sizer.Add(field_label, wx.SizerFlags().Center().Border(wx.ALL, 5))
label_textctrl = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER | wx.TE_MULTILINE, size=(200, 30))
@@ -116,11 +117,11 @@ class UpdateProfileDialog(wx.Dialog):
sizer.Add(field_sizer, 0, wx.CENTER)
self.fields.append((label_textctrl, content_textctrl))
self.locked = wx.CheckBox(panel, label=_("Private account"))
self.locked = wx.CheckBox(panel, label=_("&Private account"))
self.locked.SetValue(locked)
self.bot = wx.CheckBox(panel, label=_("Bot account"))
self.bot = wx.CheckBox(panel, label=_("&Bot account"))
self.bot.SetValue(bot)
self.discoverable = wx.CheckBox(panel, label=_("Discoverable account"))
self.discoverable = wx.CheckBox(panel, label=_("&Discoverable account"))
self.discoverable.SetValue(discoverable)
sizer.Add(self.locked, wx.SizerFlags().Expand().Border(wx.ALL, 5))
sizer.Add(self.bot, wx.SizerFlags().Expand().Border(wx.ALL, 5))

View File

@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
import wx
class UserListDialog(wx.Dialog):
def __init__(self, parent=None, title="", users=[]):
super(UserListDialog, self).__init__(parent=parent, title=title, size=(400, 300))
self.users = users
self.init_ui()
def init_ui(self):
panel = wx.Panel(self)
main_sizer = wx.BoxSizer(wx.VERTICAL)
title_text = wx.StaticText(panel, label=self.GetTitle())
title_font = title_text.GetFont()
title_font.PointSize += 2
title_font = title_font.Bold()
title_text.SetFont(title_font)
main_sizer.Add(title_text, 0, wx.ALIGN_CENTER | wx.TOP, 10)
user_list_box = wx.StaticBox(panel, wx.ID_ANY, "Users")
user_list_sizer = wx.StaticBoxSizer(user_list_box, wx.VERTICAL)
self.user_list = wx.ListBox(panel, wx.ID_ANY, choices=self.users, style=wx.LB_SINGLE)
user_list_sizer.Add(self.user_list, 1, wx.EXPAND | wx.ALL, 10)
main_sizer.Add(user_list_sizer, 1, wx.EXPAND | wx.ALL, 15)
buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
self.actions_button = wx.Button(panel, wx.ID_ANY, "Actions")
buttons_sizer.Add(self.actions_button, 0, wx.RIGHT, 10)
self.details_button = wx.Button(panel, wx.ID_ANY, _("View profile"))
buttons_sizer.Add(self.details_button, 0, wx.RIGHT, 10)
close_button = wx.Button(panel, wx.ID_CANCEL, "Close")
buttons_sizer.Add(close_button, 0)
main_sizer.Add(buttons_sizer, 0, wx.ALIGN_CENTER | wx.BOTTOM, 15)
panel.SetSizer(main_sizer)
# self.SetSizerAndFit(main_sizer)

View File

@@ -52,6 +52,7 @@ class mainFrame(wx.Frame):
# buffer menu
self.menubar_buffer = wx.Menu()
self.update_buffer = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Update buffer"))
self.community_timeline = self.menubar_buffer.Append(wx.ID_ANY, _("Create community timeline"))
self.trends = self.menubar_buffer.Append(wx.ID_ANY, _(u"New &trending topics buffer..."))
self.filter = self.menubar_buffer.Append(wx.ID_ANY, _(u"Create a &filter"))
self.manage_filters = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Manage filters"))

View File

@@ -1,7 +1,7 @@
{"current_version": "2023.04.13",
"description": "Stops support for Twitter session on Feb 9, updates to mastodon sessions. Please avoid using autoupdate as it will not work.",
{"current_version": "2025.03.08",
"description": "Initial filter support, added pinned posts. Fixed some minor issues.",
"date": "unknown",
"downloads":
{"Windows32": "https://twblue.es/pubs/twblue_x86.zip",
"Windows64": "https://twblue.es/pubs/twblue_x64.zip"}
{"Windows32": "https://github.com/MCV-Software/TWBlue/releases/download/v2025.03.08/TWBlue_portable_v2024.05.23.zip",
"Windows64": "https://github.com/MCV-Software/TWBlue/releases/download/v2025.03.08/TWBlue_portable_v2025.03.08.zip"}
}