From ff0fbeafa3fb3b651541f149ca257129e675a8ae Mon Sep 17 00:00:00 2001 From: Manuel Cortez Date: Tue, 13 Jul 2021 17:22:20 -0500 Subject: [PATCH] Modified keystrokeEditor to allow undefined keystrokes --- doc/changelog.md | 3 ++- src/keystrokeEditor/constants.py | 3 ++- src/keystrokeEditor/keystrokeEditor.py | 15 ++++++++++++--- src/keystrokeEditor/wx_ui.py | 9 +++++++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/doc/changelog.md b/doc/changelog.md index 905e29af..e0b555bd 100644 --- a/doc/changelog.md +++ b/doc/changelog.md @@ -2,7 +2,8 @@ ## changes in this version -* Added user aliases to TWBlue. This feature allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. For adding an alias to an user, select the "add alias" option in the user menu, located in the menu bar. This feature works only if you have set display screen names unchecked. ([#389](https://github.com/manuelcortez/TWBlue/pull/389)) +* Added user aliases to TWBlue. This feature allows you to rename user's display names on Twitter, so the next time you'll read an user it will be announced as you configured. For adding an alias to an user, select the "add alias" option in the user menu, located in the menu bar. This feature works only if you have set display screen names unchecked. Users are displayed with their display name in people buffers only. This action is supported in all keymaps, although it is undefined by default. ([#389](https://github.com/manuelcortez/TWBlue/pull/389)) +* It is possible to undefine keystrokes in the current keymap in TWBlue. This allows you, for example, to redefine keystrokes completely. * Added a limited version of the Twitter's Streaming API: The Streaming API will work only for tweets, and will receive tweets only by people you follow. Protected users are not possible to be streamed. It is possible that during high tweet traffic, the Stream might get disconnected at times, but TWBlue should be capable of detecting this problem and reconnecting the stream again. ([#385](https://github.com/manuelcortez/TWBlue/pull/385)) * Fixed an issue that made TWBlue to not show a dialog when attempting to show a profile for a suspended user. ([#387](https://github.com/manuelcortez/TWBlue/issues/387)) * Added support for Twitter audio and videos: Tweets which contains audio or videos will be detected as audio items, and you can playback those with the regular command to play audios. ([#384,](https://github.com/manuelcortez/TWBlue/pull/384)) diff --git a/src/keystrokeEditor/constants.py b/src/keystrokeEditor/constants.py index b14616bc..2d176ac1 100644 --- a/src/keystrokeEditor/constants.py +++ b/src/keystrokeEditor/constants.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals actions = { "up": _(u"Go up in the current buffer"), "down": _(u"Go down in the current buffer"), @@ -57,4 +56,6 @@ actions = { "audio": _(u"Try to play an audio file"), "update_buffer": _(u"Updates the buffer and retrieves possible lost items there."), "ocr_image": _(u"Extracts the text from a picture and displays the result in a dialog."), + "add_alias": _("Adds an alias to an user"), } + \ No newline at end of file diff --git a/src/keystrokeEditor/keystrokeEditor.py b/src/keystrokeEditor/keystrokeEditor.py index 720e1b1b..1af14b23 100644 --- a/src/keystrokeEditor/keystrokeEditor.py +++ b/src/keystrokeEditor/keystrokeEditor.py @@ -1,7 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import unicode_literals -from builtins import object import widgetUtils import config from . import wx_ui @@ -18,6 +15,7 @@ class KeystrokeEditor(object): self.hold_map = self.map.copy() self.dialog.put_keystrokes(constants.actions, self.map) widgetUtils.connect_event(self.dialog.edit, widgetUtils.BUTTON_PRESSED, self.edit_keystroke) + widgetUtils.connect_event(self.dialog.undefine, widgetUtils.BUTTON_PRESSED, self.undefine_keystroke) widgetUtils.connect_event(self.dialog.execute, widgetUtils.BUTTON_PRESSED, self.execute_action) self.dialog.get_response() @@ -33,6 +31,17 @@ class KeystrokeEditor(object): self.map[action] = new_keystroke self.dialog.put_keystrokes(constants.actions, self.map) + def undefine_keystroke(self, *args, **kwargs): + action = self.dialog.actions[self.dialog.get_action()] + keystroke = self.map.get(action) + if keystroke == None: + return + answer = self.dialog.undefine_keystroke_confirmation() + if answer == widgetUtils.YES: + self.map[action] = "" + self.changed = True + self.dialog.put_keystrokes(constants.actions, self.map) + def set_keystroke(self, keystroke, dialog): for i in keystroke.split("+"): if hasattr(dialog, i): diff --git a/src/keystrokeEditor/wx_ui.py b/src/keystrokeEditor/wx_ui.py index 51c03e69..ddb2e6a5 100644 --- a/src/keystrokeEditor/wx_ui.py +++ b/src/keystrokeEditor/wx_ui.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals import wx from multiplatform_widgets import widgets from wxUI.dialogs import baseDialog @@ -18,6 +17,7 @@ class keystrokeEditorDialog(baseDialog.BaseWXDialog): firstSizer.Add(self.keys.list, 0, wx.ALL, 5) self.edit = wx.Button(panel, -1, _(u"Edit")) self.edit.SetDefault() + self.undefine = wx.Button(panel, -1, _("Undefine keystroke")) self.execute = wx.Button(panel, -1, _(u"Execute action")) close = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) secondSizer = wx.BoxSizer(wx.HORIZONTAL) @@ -37,13 +37,18 @@ class keystrokeEditorDialog(baseDialog.BaseWXDialog): continue action = actions[i] self.actions.append(i) - keystroke = keystrokes[i] + keystroke = keystrokes.get(i) + if keystroke == "": + keystroke = _("Undefined") self.keys.insert_item(False, *[action, keystroke]) self.keys.select_item(selection) def get_action(self): return self.keys.get_selected() + def undefine_keystroke_confirmation(self): + return wx.MessageDialog(self, _("Are you sure you want to undefine this keystroke?"), _("Undefine keystroke"), wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION).ShowModal() + class editKeystrokeDialog(baseDialog.BaseWXDialog): def __init__(self): super(editKeystrokeDialog, self).__init__(parent=None, id=-1, title=_(u"Editing keystroke"))