diff --git a/piker/data/feed.py b/piker/data/feed.py index 7264c8e6..05834e9d 100644 --- a/piker/data/feed.py +++ b/piker/data/feed.py @@ -39,6 +39,7 @@ from typing import ( AsyncContextManager, Awaitable, Sequence, + TYPE_CHECKING, ) import trio @@ -75,6 +76,10 @@ from ._sampling import ( uniform_rate_send, ) +if TYPE_CHECKING: + from tractor._addr import Address + from tractor.msg.types import Aid + class Sub(Struct, frozen=True): ''' @@ -899,19 +904,19 @@ async def open_feed( feed.portals[brokermod] = portal # fill out "status info" that the UI can show - host, port = portal.channel.raddr - if host == '127.0.0.1': - host = 'localhost' - + chan: tractor.Channel = portal.chan + raddr: Address = chan.raddr + aid: Aid = chan.aid + # TAG_feed_status_update feed.status.update({ - 'actor_name': portal.channel.uid[0], - 'host': host, - 'port': port, + 'actor_id': aid, + 'actor_short_id': f'{aid.name}@{aid.pid}', + 'ipc': chan.raddr.proto_key, + 'ipc_addr': raddr, 'hist_shm': 'NA', 'rt_shm': 'NA', - 'throttle_rate': tick_throttle, + 'throttle_hz': tick_throttle, }) - # feed.status.update(init_msg.pop('status', {})) # (allocate and) connect to any feed bus for this broker bus_ctxs.append( diff --git a/piker/ui/_feedstatus.py b/piker/ui/_feedstatus.py index 1c9eb772..ea262876 100644 --- a/piker/ui/_feedstatus.py +++ b/piker/ui/_feedstatus.py @@ -18,10 +18,11 @@ Feed status and controls widget(s) for embedding in a UI-pane. """ - from __future__ import annotations -from textwrap import dedent -from typing import TYPE_CHECKING +from typing import ( + Any, + TYPE_CHECKING, +) # from PyQt5.QtCore import Qt @@ -49,35 +50,55 @@ def mk_feed_label( a feed control protocol. ''' - status = feed.status + status: dict[str, Any] = feed.status assert status - msg = dedent(""" - actor: **{actor_name}**\n - |_ @**{host}:{port}**\n - """) + # SO tips on ws/nls, + # https://stackoverflow.com/a/15721400 + ws: str = ' ' + # nl: str = '
' # dun work? + actor_info_repr: str = ( + f')> **{status["actor_short_id"]}**\n' + '\n' # bc md? + ) - for key, val in status.items(): - if key in ('host', 'port', 'actor_name'): - continue - msg += f'\n|_ {key}: **{{{key}}}**\n' + # fields to select *IN* for display + # (see `.data.feed.open_feed()` status + # update -> TAG_feed_status_update) + for key in [ + 'ipc', + 'hist_shm', + 'rt_shm', + 'throttle_hz', + ]: + # NOTE, the 2nd key is filled via `.format()` updates. + actor_info_repr += ( + f'\n' # bc md? + f'{ws}|_{key}: **{{{key}}}**\n' + ) + # ^TODO? formatting and content.. + # -[ ] showing which fqme is "forward" on the + # chart/fsp/order-mode? + # '|_ flows: **{symbols}**\n' + # + # -[x] why isn't the indent working? + # => markdown, now solved.. feed_label = FormatLabel( - fmt_str=msg, - # |_ streams: **{symbols}**\n + fmt_str=actor_info_repr, font=_font.font, font_size=_font_small.px_size, font_color='default_lightest', ) + # ?TODO, remove this? # form.vbox.setAlignment(feed_label, Qt.AlignBottom) # form.vbox.setAlignment(Qt.AlignBottom) - _ = chart.height() - ( - form.height() + - form.fill_bar.height() - # feed_label.height() - ) + # _ = chart.height() - ( + # form.height() + + # form.fill_bar.height() + # # feed_label.height() + # ) feed_label.format(**feed.status) - return feed_label diff --git a/piker/ui/_label.py b/piker/ui/_label.py index 0e90b7fe..07956e4a 100644 --- a/piker/ui/_label.py +++ b/piker/ui/_label.py @@ -285,18 +285,20 @@ class FormatLabel(QLabel): font_size: int, font_color: str, + use_md: bool = True, + parent=None, ) -> None: super().__init__(parent) - # by default set the format string verbatim and expect user to - # call ``.format()`` later (presumably they'll notice the + # by default set the format string verbatim and expect user + # to call ``.format()`` later (presumably they'll notice the # unformatted content if ``fmt_str`` isn't meant to be # unformatted). self.fmt_str = fmt_str - self.setText(fmt_str) + # self.setText(fmt_str) # ?TODO, why here? self.setStyleSheet( f"""QLabel {{ @@ -306,9 +308,10 @@ class FormatLabel(QLabel): """ ) self.setFont(_font.font) - self.setTextFormat( - Qt.TextFormat.MarkdownText - ) + if use_md: + self.setTextFormat( + Qt.TextFormat.MarkdownText + ) self.setMargin(0) self.setSizePolicy( @@ -316,7 +319,10 @@ class FormatLabel(QLabel): size_policy.Expanding, ) self.setAlignment( - Qt.AlignVCenter | Qt.AlignLeft + Qt.AlignLeft + | + Qt.AlignBottom + # Qt.AlignVCenter ) self.setText(self.fmt_str)