app: add F1 self-deafen toggle and bold TX indicator
This commit is contained in:
@@ -11,9 +11,10 @@ tuimble --host mumble.example.com --user myname
|
|||||||
|
|
||||||
| Key | Action |
|
| Key | Action |
|
||||||
|-----|--------|
|
|-----|--------|
|
||||||
| `q` | Quit |
|
| `F1` | Toggle self-deafen |
|
||||||
| `F4` | Push-to-talk (configurable) |
|
| `F4` | Push-to-talk (configurable) |
|
||||||
| `Enter` | Send message |
|
| `Enter` | Send message |
|
||||||
|
| `q` | Quit |
|
||||||
| `Ctrl+C` | Quit |
|
| `Ctrl+C` | Quit |
|
||||||
|
|
||||||
## Push-to-Talk Modes
|
## Push-to-Talk Modes
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ class StatusBar(Static):
|
|||||||
|
|
||||||
ptt_active = reactive(False)
|
ptt_active = reactive(False)
|
||||||
connected = reactive(False)
|
connected = reactive(False)
|
||||||
|
self_deaf = reactive(False)
|
||||||
server_info = reactive("")
|
server_info = reactive("")
|
||||||
|
|
||||||
def render(self) -> str:
|
def render(self) -> str:
|
||||||
@@ -67,17 +68,20 @@ class StatusBar(Static):
|
|||||||
|
|
||||||
if self.ptt_active:
|
if self.ptt_active:
|
||||||
ptt_sym = "[#e0af68]\u25cf[/]"
|
ptt_sym = "[#e0af68]\u25cf[/]"
|
||||||
ptt_full = f"{ptt_sym} TX"
|
ptt_full = f"{ptt_sym} [bold]TX[/bold]"
|
||||||
else:
|
else:
|
||||||
ptt_sym = "[#565f89]\u25cb[/]"
|
ptt_sym = "[#565f89]\u25cb[/]"
|
||||||
ptt_full = f"{ptt_sym} idle"
|
ptt_full = f"{ptt_sym} idle"
|
||||||
|
|
||||||
|
deaf_sym = "[#f7768e]\u2298[/]" if self.self_deaf else ""
|
||||||
|
deaf_full = "[#f7768e]\u2298[/] deaf" if self.self_deaf else ""
|
||||||
|
|
||||||
if w < 40:
|
if w < 40:
|
||||||
return f" {conn_sym} {ptt_sym}"
|
return f" {conn_sym} {deaf_sym}{ptt_sym}"
|
||||||
if w < 60:
|
if w < 60:
|
||||||
return f" {conn_full} {ptt_full}"
|
return f" {conn_full} {deaf_full}{' ' if deaf_full else ''}{ptt_full}"
|
||||||
info = f" [dim]{self.server_info}[/]" if self.server_info else ""
|
info = f" [dim]{self.server_info}[/]" if self.server_info else ""
|
||||||
return f" {conn_full} {ptt_full}{info}"
|
return f" {conn_full} {deaf_full}{' ' if deaf_full else ''}{ptt_full}{info}"
|
||||||
|
|
||||||
|
|
||||||
class ChannelTree(Static):
|
class ChannelTree(Static):
|
||||||
@@ -238,6 +242,7 @@ class TuimbleApp(App):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
|
("f1", "toggle_deaf", "Deafen"),
|
||||||
("q", "quit", "Quit"),
|
("q", "quit", "Quit"),
|
||||||
("ctrl+c", "quit", "Quit"),
|
("ctrl+c", "quit", "Quit"),
|
||||||
]
|
]
|
||||||
@@ -406,6 +411,21 @@ class TuimbleApp(App):
|
|||||||
tree = self.query_one("#sidebar", ChannelTree)
|
tree = self.query_one("#sidebar", ChannelTree)
|
||||||
tree.set_state(channels, users_by_channel)
|
tree.set_state(channels, users_by_channel)
|
||||||
|
|
||||||
|
# -- deafen --------------------------------------------------------------
|
||||||
|
|
||||||
|
def action_toggle_deaf(self) -> None:
|
||||||
|
"""Toggle self-deafen."""
|
||||||
|
deafened = not self._audio.deafened
|
||||||
|
self._audio.deafened = deafened
|
||||||
|
self._client.set_self_deaf(deafened)
|
||||||
|
status = self.query_one("#status", StatusBar)
|
||||||
|
status.self_deaf = deafened
|
||||||
|
chatlog = self.query_one("#chatlog", ChatLog)
|
||||||
|
if deafened:
|
||||||
|
chatlog.write("[#f7768e]\u2298 deafened[/]")
|
||||||
|
else:
|
||||||
|
chatlog.write("[#9ece6a]\u2713 undeafened[/]")
|
||||||
|
|
||||||
# -- PTT -----------------------------------------------------------------
|
# -- PTT -----------------------------------------------------------------
|
||||||
|
|
||||||
def on_key(self, event: events.Key) -> None:
|
def on_key(self, event: events.Key) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user