From: G S Niteesh Babu <niteesh.gs@gmail.com>
To: qemu-devel@nongnu.org
Cc: ehabkost@redhat.com, kchamart@redhat.com, jsnow@redhat.com,
armbru@redhat.com, wainersm@redhat.com,
G S Niteesh Babu <niteesh.gs@gmail.com>,
stefanha@redhat.com, crosa@redhat.com, eblake@redhat.com
Subject: [PATCH v3 11/13] python/aqmp-tui: Add ability to highlight messages
Date: Sat, 31 Jul 2021 01:48:44 +0530 [thread overview]
Message-ID: <20210730201846.5147-12-niteesh.gs@gmail.com> (raw)
In-Reply-To: <20210730201846.5147-1-niteesh.gs@gmail.com>
Adds ability to highlight messages in the history box. The messages
can be selected using up/down arrow keys.
This can be enhanced in the future to apply specific settings to
a particular message.
Signed-off-by: G S Niteesh Babu <niteesh.gs@gmail.com>
---
python/qemu/aqmp/aqmp_tui.py | 50 ++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/python/qemu/aqmp/aqmp_tui.py b/python/qemu/aqmp/aqmp_tui.py
index fb828b1a27..4bae0d4e89 100644
--- a/python/qemu/aqmp/aqmp_tui.py
+++ b/python/qemu/aqmp/aqmp_tui.py
@@ -344,6 +344,7 @@ def __init__(self, master: App) -> None:
self.master = master
self.history = urwid.SimpleFocusListWalker([])
super().__init__(self.history)
+ self.highlighting = -1
def add_to_history(self,
history: Union[str, List[Tuple[str, str]]]) -> None:
@@ -351,8 +352,57 @@ def add_to_history(self,
if self.history:
self.history.set_focus(len(self.history) - 1)
+ def _remove_highlighting(self) -> None:
+ assert self.highlighting != -1
+ pos = self.highlighting
+ widget = self.history[pos]
+ widget = widget.original_widget
+ self.history[pos] = widget
+
+ def _update_highlighting(self) -> None:
+ assert self.highlighting != -1
+ pos = self.highlighting
+ widget = self.history[pos]
+ self.history[pos] = urwid.LineBox(widget)
+
+ def keypress(self, size: Tuple[int, int], key: str) -> Optional[str]:
+ if key == 'up':
+ if self.highlighting != -1:
+ pos = self.highlighting
+ self._remove_highlighting()
+ pos = max(pos - 1, 0)
+ self.highlighting = pos
+ else:
+ self.highlighting = len(self.history) - 1
+ self._update_highlighting()
+ self.change_focus(size, self.highlighting)
+ return None
+ if key == 'down':
+ pos = self.highlighting
+ if pos == -1:
+ return None
+
+ self._remove_highlighting()
+ if pos == len(self.history) - 1:
+ self.highlighting = -1
+ else:
+ self.highlighting = pos + 1
+ self._update_highlighting()
+ self.change_focus(size, self.highlighting)
+ return None
+
+ # Remove highlighting if someother key is pressed
+ if self.highlighting != -1:
+ self._remove_highlighting()
+ self.highlighting = -1
+ return super().keypress(size, key) # type: ignore
+
def mouse_event(self, size: Tuple[int, int], _event: str, button: float,
_x: int, _y: int, focus: bool) -> None:
+ if self.highlighting != -1:
+ self._remove_highlighting()
+ self.highlighting = -1
+
# Scroll only on focus. Therefore it is required to
# click on the widget to enable scrolling.
if not focus:
--
2.17.1
next prev parent reply other threads:[~2021-07-30 20:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-30 20:18 [PATCH v3 00/13] AQMP TUI Draft G S Niteesh Babu
2021-07-30 20:18 ` [PATCH v3 01/13] python/aqmp: Fix wait_closed work-around for python 3.6 G S Niteesh Babu
2021-08-05 17:28 ` John Snow
2021-08-10 19:54 ` Niteesh G. S.
2021-07-30 20:18 ` [PATCH v3 02/13] python: disable pylint errors for aqmp-tui G S Niteesh Babu
2021-08-05 17:39 ` John Snow
2021-07-30 20:18 ` [PATCH v3 03/13] python: Add dependencies for AQMP TUI G S Niteesh Babu
2021-08-05 17:44 ` John Snow
2021-07-30 20:18 ` [PATCH v3 04/13] python/aqmp-tui: Add AQMP TUI draft G S Niteesh Babu
2021-08-05 18:58 ` John Snow
2021-08-13 15:10 ` Niteesh G. S.
2021-08-18 18:22 ` John Snow
2021-08-18 19:45 ` Niteesh G. S.
2021-08-05 19:11 ` John Snow
2021-08-13 14:38 ` Niteesh G. S.
2021-07-30 20:18 ` [PATCH v3 05/13] python: add entry point for aqmp-tui G S Niteesh Babu
2021-08-05 19:14 ` John Snow
2021-07-30 20:18 ` [PATCH v3 06/13] python/aqmp-tui: Added type annotations " G S Niteesh Babu
2021-08-05 19:56 ` John Snow
2021-08-10 17:12 ` Niteesh G. S.
2021-07-30 20:18 ` [PATCH v3 07/13] python: add optional pygments dependency G S Niteesh Babu
2021-08-16 19:37 ` John Snow
2021-07-30 20:18 ` [PATCH v3 08/13] python/aqmp-tui: add syntax highlighting G S Niteesh Babu
2021-08-16 19:44 ` John Snow
2021-08-16 21:19 ` Niteesh G. S.
2021-08-18 18:55 ` John Snow
2021-07-30 20:18 ` [PATCH v3 09/13] python/aqmp-tui: Add QMP connection manager G S Niteesh Babu
2021-08-17 4:50 ` John Snow
2021-08-17 19:06 ` Niteesh G. S.
2021-08-18 19:36 ` John Snow
2021-08-20 19:31 ` John Snow
2021-07-30 20:18 ` [PATCH v3 10/13] python/aqmp-tui: Add scrolling to history box G S Niteesh Babu
2021-07-30 20:18 ` G S Niteesh Babu [this message]
2021-07-30 20:18 ` [PATCH v3 12/13] python/aqmp-tui: Add pyperclip dependency G S Niteesh Babu
2021-07-30 20:18 ` [PATCH v3 13/13] python/aqmp-tui: Allow copying message from TUI G S Niteesh Babu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210730201846.5147-12-niteesh.gs@gmail.com \
--to=niteesh.gs@gmail.com \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=jsnow@redhat.com \
--cc=kchamart@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).