[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 11/13] python/aqmp-tui: Add ability to highlight messages
|
From: |
G S Niteesh Babu |
|
Subject: |
[PATCH v3 11/13] python/aqmp-tui: Add ability to highlight messages |
|
Date: |
Sat, 31 Jul 2021 01:48:44 +0530 |
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
- [PATCH v3 01/13] python/aqmp: Fix wait_closed work-around for python 3.6, (continued)
- [PATCH v3 01/13] python/aqmp: Fix wait_closed work-around for python 3.6, G S Niteesh Babu, 2021/07/30
- [PATCH v3 02/13] python: disable pylint errors for aqmp-tui, G S Niteesh Babu, 2021/07/30
- [PATCH v3 03/13] python: Add dependencies for AQMP TUI, G S Niteesh Babu, 2021/07/30
- [PATCH v3 04/13] python/aqmp-tui: Add AQMP TUI draft, G S Niteesh Babu, 2021/07/30
- [PATCH v3 05/13] python: add entry point for aqmp-tui, G S Niteesh Babu, 2021/07/30
- [PATCH v3 06/13] python/aqmp-tui: Added type annotations for aqmp-tui, G S Niteesh Babu, 2021/07/30
- [PATCH v3 07/13] python: add optional pygments dependency, G S Niteesh Babu, 2021/07/30
- [PATCH v3 08/13] python/aqmp-tui: add syntax highlighting, G S Niteesh Babu, 2021/07/30
- [PATCH v3 09/13] python/aqmp-tui: Add QMP connection manager, G S Niteesh Babu, 2021/07/30
- [PATCH v3 10/13] python/aqmp-tui: Add scrolling to history box, G S Niteesh Babu, 2021/07/30
- [PATCH v3 11/13] python/aqmp-tui: Add ability to highlight messages,
G S Niteesh Babu <=
- [PATCH v3 12/13] python/aqmp-tui: Add pyperclip dependency, G S Niteesh Babu, 2021/07/30
- [PATCH v3 13/13] python/aqmp-tui: Allow copying message from TUI, G S Niteesh Babu, 2021/07/30