Compare commits

..

25 Commits

Author SHA1 Message Date
José Manuel Delicado
25f563464b Merge pull request #870 from MCV-Software/dependabot/pip/cx-freeze-8.5.0
Some checks failed
Update translation files / update_catalogs (push) Failing after 24s
Bump cx-freeze from 8.4.1 to 8.5.0
2025-11-24 21:16:13 +01:00
dependabot[bot]
08bb5b41c9 Bump cx-freeze from 8.4.1 to 8.5.0
Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.4.1 to 8.5.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.4.1...8.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 20:15:03 +00:00
José Manuel Delicado
486001a46c Merge pull request #871 from MCV-Software/dependabot/pip/coverage-7.12.0
Bump coverage from 7.11.3 to 7.12.0
2025-11-24 20:53:32 +01:00
dependabot[bot]
4e255b5f6e Bump coverage from 7.11.3 to 7.12.0
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.11.3 to 7.12.0.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.11.3...7.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 19:37:03 +00:00
José Manuel Delicado
877040b086 Merge pull request #867 from MCV-Software/dependabot/pip/pytest-9.0.1
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump pytest from 9.0.0 to 9.0.1
2025-11-18 07:26:51 +01:00
José Manuel Delicado
c294b967ae Merge pull request #868 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20251115
Bump types-python-dateutil from 2.9.0.20251108 to 2.9.0.20251115
2025-11-18 07:26:31 +01:00
José Manuel Delicado
16cc1fec8b Merge pull request #869 from MCV-Software/dependabot/pip/deepl-1.25.0
Bump deepl from 1.24.0 to 1.25.0
2025-11-18 07:26:11 +01:00
dependabot[bot]
fed6f6da60 Bump deepl from 1.24.0 to 1.25.0
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.24.0 to 1.25.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.24.0...v1.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 23:07:54 +00:00
dependabot[bot]
89160497e4 Bump types-python-dateutil from 2.9.0.20251108 to 2.9.0.20251115
Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20251108 to 2.9.0.20251115.
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 23:07:49 +00:00
dependabot[bot]
beb621de97 Bump pytest from 9.0.0 to 9.0.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.0 to 9.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/9.0.0...9.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 23:07:43 +00:00
José Manuel Delicado
b46fadd375 Merge pull request #864 from MCV-Software/dependabot/pip/numpy-2.3.5
Bump numpy from 2.3.4 to 2.3.5
2025-11-17 22:40:11 +01:00
José Manuel Delicado
f0fbfab3b3 Merge pull request #865 from MCV-Software/dependabot/pip/certifi-2025.11.12
Bump certifi from 2025.10.5 to 2025.11.12
2025-11-17 22:39:52 +01:00
José Manuel Delicado
f83a3e16ce Merge pull request #866 from MCV-Software/dependabot/pip/coverage-7.11.3
Bump coverage from 7.11.0 to 7.11.3
2025-11-17 22:39:34 +01:00
dependabot[bot]
b309d23c8b Bump coverage from 7.11.0 to 7.11.3
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.11.0 to 7.11.3.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.11.0...7.11.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 21:38:43 +00:00
dependabot[bot]
d879a9de5c Bump certifi from 2025.10.5 to 2025.11.12
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.10.5 to 2025.11.12.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.10.05...2025.11.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 21:38:38 +00:00
dependabot[bot]
b419f8fb23 Bump numpy from 2.3.4 to 2.3.5
Bumps [numpy](https://github.com/numpy/numpy) from 2.3.4 to 2.3.5.
- [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.3.4...v2.3.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 21:38:36 +00:00
José Manuel Delicado
7a4a454376 Merge pull request #861 from MCV-Software/dependabot/pip/pytest-9.0.0
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Bump pytest from 8.4.2 to 9.0.0
2025-11-11 07:33:08 +01:00
José Manuel Delicado
e94ea49142 Merge pull request #862 from MCV-Software/dependabot/pip/types-python-dateutil-2.9.0.20251108
Bump types-python-dateutil from 2.9.0.20251008 to 2.9.0.20251108
2025-11-11 07:32:31 +01:00
José Manuel Delicado
56415c7506 Merge pull request #863 from MCV-Software/dependabot/pip/deepl-1.24.0
Bump deepl from 1.23.0 to 1.24.0
2025-11-11 07:32:06 +01:00
dependabot[bot]
c8879e7998 Bump deepl from 1.23.0 to 1.24.0
Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.23.0 to 1.24.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.23.0...v1.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 23:08:42 +00:00
dependabot[bot]
8fb30edf31 Bump types-python-dateutil from 2.9.0.20251008 to 2.9.0.20251108
Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20251008 to 2.9.0.20251108.
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 23:08:36 +00:00
dependabot[bot]
3db6ee3a17 Bump pytest from 8.4.2 to 9.0.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.2 to 9.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/8.4.2...9.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 23:08:33 +00:00
e4520a14e8 Merge pull request #842 from Mohamed00/evenMoreShortcuts
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Added and improved more shortcuts
2025-11-07 09:54:14 -06:00
Mohamed
b1bf2ea95f Updated shortcut for Bot account so it's not the same as bio. Also updated shortcut for posts 2025-10-20 17:18:12 -04:00
Mohamed
a4d5066156 Added shortcuts to the database manager and some more to the menu bar. Also fixed shortcuts for seeking so they're not both s 2025-10-02 16:26:50 -04:00
9 changed files with 26 additions and 62 deletions

View File

@@ -3,17 +3,17 @@ arrow==1.4.0
attrs==25.4.0
backports.functools-lru-cache==2.0.0
blurhash==1.1.5
certifi==2025.10.5
certifi==2025.11.12
chardet==5.2.0
charset-normalizer==3.4.4
colorama==0.4.6
configobj==5.0.9
coverage==7.11.0
cx-Freeze==8.4.1
coverage==7.12.0
cx-Freeze==8.5.0
cx-Logging==3.2.1
decorator==5.2.1
demoji==1.1.0
deepl==1.23.0
deepl==1.25.0
future==1.0.0
idna==3.11
importlib-metadata==8.7.0
@@ -23,7 +23,7 @@ libretranslatepy==2.1.4
lief==0.15.1
Markdown==3.10
Mastodon.py==2.1.4
numpy==2.3.4
numpy==2.3.5
oauthlib==3.3.1
packaging==25.0
pillow==12.0.0
@@ -34,7 +34,7 @@ pyenchant==3.3.0
pypiwin32==223
Pypubsub==4.0.3
PySocks==1.7.1
pytest==8.4.2
pytest==9.0.1
python-dateutil==2.9.0.post0
python-magic-bin==0.4.14
python-vlc==3.0.21203
@@ -49,7 +49,7 @@ 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.20251008
types-python-dateutil==2.9.0.20251115
urllib3==2.5.0
win-inet-pton==1.1.0
winpaths==0.2

View File

@@ -48,7 +48,7 @@ class Handler(object):
addAlias=_("Add a&lias"),
addToList=None,
removeFromList=None,
details=_("Show user profile"),
details=_("S&how user profile"),
favs=None,
# In buffer Menu.
community_timeline =_("Create c&ommunity timeline"),

View File

@@ -13,8 +13,8 @@ class autocompletionManageDialog(widgetUtils.BaseDialog):
self.users = widgets.list(panel, _(u"Username"), _(u"Name"), style=wx.LC_REPORT)
sizer.Add(label, 0, wx.ALL, 5)
sizer.Add(self.users.list, 0, wx.ALL, 5)
self.add = wx.Button(panel, -1, _(u"Add user"))
self.remove = wx.Button(panel, -1, _(u"Remove user"))
self.add = wx.Button(panel, -1, _(u"&Add user"))
self.remove = wx.Button(panel, -1, _(u"&Remove user"))
optionsBox = wx.BoxSizer(wx.HORIZONTAL)
optionsBox.Add(self.add, 0, wx.ALL, 5)
optionsBox.Add(self.remove, 0, wx.ALL, 5)

View File

@@ -17,11 +17,6 @@ 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)
# Handle quoted posts
if hasattr(post, 'quote') and post.quote != None and hasattr(post.quote, 'quoted_status') and post.quote.quoted_status != None:
quoted_user = post.quote.quoted_status.account.acct
quoted_text = templates.process_text(post.quote.quoted_status, safe=safe)
text = text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_text)
filtered = utils.evaluate_filters(post=post, current_context="home")
if filtered != None:
text = _("hidden by filter {}").format(filtered)

View File

@@ -76,13 +76,6 @@ def render_post(post, template, settings, relative_times=False, offset_hours=0):
else:
text = process_text(post, safe=False)
safe_text = process_text(post)
# Handle quoted posts
if hasattr(post, 'quote') and post.quote != None and hasattr(post.quote, 'quoted_status') and post.quote.quoted_status != None:
quoted_user = post.quote.quoted_status.account.acct
quoted_text = process_text(post.quote.quoted_status, safe=False)
quoted_safe_text = process_text(post.quote.quoted_status, safe=True)
text = text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_text)
safe_text = safe_text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_safe_text)
filtered = utils.evaluate_filters(post=post, current_context="home")
if filtered != None:
text = _("hidden by filter {}").format(filtered)

View File

@@ -3,47 +3,23 @@ import demoji
from html.parser import HTMLParser
from datetime import datetime, timezone
url_re = re.compile(r'<a\s*href=[\'|"](.*?)[\'"].*?>')
url_re = re.compile('<a\s*href=[\'|"](.*?)[\'"].*?>')
class HTMLFilter(HTMLParser):
# Classes to ignore when parsing HTML
IGNORED_CLASSES = ["quote-inline"]
text = ""
first_paragraph = True
skip_depth = 0 # Track nesting depth of ignored elements
def handle_data(self, data):
# Only add data if we're not inside an ignored element
if self.skip_depth == 0:
self.text += data
self.text += data
def handle_starttag(self, tag, attrs):
# Check if this tag has a class that should be ignored
attrs_dict = dict(attrs)
tag_class = attrs_dict.get("class", "")
# Check if any ignored class is present in this tag
should_skip = any(ignored_class in tag_class for ignored_class in self.IGNORED_CLASSES)
if should_skip:
self.skip_depth += 1
elif self.skip_depth == 0: # Only process tags if we're not skipping
if tag == "br":
self.text = self.text+"\n"
elif tag == "p":
if self.first_paragraph:
self.first_paragraph = False
else:
self.text = self.text+"\n\n"
else:
# We're inside a skipped element, increment depth for nested tags
self.skip_depth += 1
def handle_endtag(self, tag):
# Decrement skip depth when closing any tag while skipping
if self.skip_depth > 0:
self.skip_depth -= 1
if tag == "br":
self.text = self.text+"\n"
elif tag == "p":
if self.first_paragraph:
self.first_paragraph = False
else:
self.text = self.text+"\n\n"
def html_filter(data):
f = HTMLFilter()

View File

@@ -141,7 +141,7 @@ class ShowUserProfile(wx.Dialog):
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=_("B&ot account: "))
botText = self.createTextCtrl(bullSwitch[user.bot], (30, 30))
botSizer.Add(botLabel, wx.SizerFlags().Center())
botSizer.Add(botText, wx.SizerFlags().Center())
@@ -154,7 +154,7 @@ class ShowUserProfile(wx.Dialog):
discoverSizer.Add(discoverText, wx.SizerFlags().Center())
mainSizer.Add(discoverSizer, 0, wx.ALL | wx.CENTER)
posts = wx.Button(self.panel, label=_("{} p&osts. Click to open posts timeline").format(user.statuses_count))
posts = wx.Button(self.panel, label=_("{} pos&ts. 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())

View File

@@ -119,7 +119,7 @@ class UpdateProfileDialog(wx.Dialog):
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=_("B&ot account"))
self.bot.SetValue(bot)
self.discoverable = wx.CheckBox(panel, label=_("&Discoverable account"))
self.discoverable.SetValue(discoverable)

View File

@@ -19,7 +19,7 @@ class mainFrame(wx.Frame):
self.menuitem_search = self.menubar_application.Append(wx.ID_ANY, _(u"&Search"))
self.lists = self.menubar_application.Append(wx.ID_ANY, _(u"&Lists manager"))
self.lists.Enable(False)
self.manageAliases = self.menubar_application.Append(wx.ID_ANY, _("Manage user aliases"))
self.manageAliases = self.menubar_application.Append(wx.ID_ANY, _("M&anage user aliases"))
self.keystroke_editor = self.menubar_application.Append(wx.ID_ANY, _(u"&Edit keystrokes"))
self.account_settings = self.menubar_application.Append(wx.ID_ANY, _(u"Account se&ttings"))
self.prefs = self.menubar_application.Append(wx.ID_PREFERENCES, _(u"&Global settings"))
@@ -56,7 +56,7 @@ class mainFrame(wx.Frame):
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"))
self.find = self.menubar_buffer.Append(wx.ID_ANY, _(u"Find a string in the currently focused buffer..."))
self.find = self.menubar_buffer.Append(wx.ID_ANY, _(u"F&ind a string in the currently focused buffer..."))
self.load_previous_items = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Load previous items"))
self.menubar_buffer.AppendSeparator()
self.mute_buffer = self.menubar_buffer.AppendCheckItem(wx.ID_ANY, _(u"&Mute"))
@@ -66,8 +66,8 @@ class mainFrame(wx.Frame):
# audio menu
self.menubar_audio = wx.Menu()
self.seekLeft = self.menubar_audio.Append(wx.ID_ANY, _(u"&Seek back 5 seconds"))
self.seekRight = self.menubar_audio.Append(wx.ID_ANY, _(u"&Seek forward 5 seconds"))
self.seekLeft = self.menubar_audio.Append(wx.ID_ANY, _(u"Seek &back 5 seconds"))
self.seekRight = self.menubar_audio.Append(wx.ID_ANY, _(u"Seek &forward 5 seconds"))
# Help Menu
self.menubar_help = wx.Menu()