Build out feed status label, add to top of sidepane
parent
bc42d625fc
commit
3e25be6321
|
@ -21,7 +21,6 @@ Text entry "forms" widgets (mostly for configuration and UI user input).
|
|||
from __future__ import annotations
|
||||
from contextlib import asynccontextmanager
|
||||
from functools import partial
|
||||
from textwrap import dedent
|
||||
from typing import (
|
||||
Optional, Any, Callable, Awaitable
|
||||
)
|
||||
|
@ -320,14 +319,14 @@ class FieldsForm(QWidget):
|
|||
self.vbox = QVBoxLayout(self)
|
||||
# self.vbox.setAlignment(Qt.AlignVCenter)
|
||||
self.vbox.setAlignment(Qt.AlignBottom)
|
||||
self.vbox.setContentsMargins(0, 4, 3, 6)
|
||||
self.vbox.setContentsMargins(3, 6, 3, 6)
|
||||
self.vbox.setSpacing(0)
|
||||
|
||||
# split layout for the (<label>: |<widget>|) parameters entry
|
||||
self.form = QFormLayout()
|
||||
self.form.setAlignment(Qt.AlignTop | Qt.AlignLeft)
|
||||
self.form.setContentsMargins(0, 0, 0, 0)
|
||||
self.form.setSpacing(3)
|
||||
self.form.setContentsMargins(0, 0, 3, 0)
|
||||
self.form.setSpacing(0)
|
||||
self.form.setHorizontalSpacing(0)
|
||||
|
||||
self.vbox.addLayout(self.form, stretch=1/3)
|
||||
|
@ -645,9 +644,7 @@ def mk_fill_status_bar(
|
|||
# PnL on lhs
|
||||
bar_labels_lhs = QVBoxLayout()
|
||||
left_label = form.add_field_label(
|
||||
dedent("""
|
||||
{pnl:>+.2%} pnl
|
||||
"""),
|
||||
'{pnl:>+.2%} pnl',
|
||||
font_size=bar_label_font_size,
|
||||
font_color='gunmetal',
|
||||
)
|
||||
|
@ -674,18 +671,13 @@ def mk_fill_status_bar(
|
|||
# https://docs.python.org/3/library/string.html#grammar-token-precision
|
||||
|
||||
top_label = form.add_field_label(
|
||||
# {limit:.1f} limit
|
||||
dedent("""
|
||||
{limit}
|
||||
"""),
|
||||
'{limit}',
|
||||
font_size=bar_label_font_size,
|
||||
font_color='gunmetal',
|
||||
)
|
||||
|
||||
bottom_label = form.add_field_label(
|
||||
dedent("""
|
||||
x: {step_size}\n
|
||||
"""),
|
||||
'x: {step_size}',
|
||||
font_size=bar_label_font_size,
|
||||
font_color='gunmetal',
|
||||
)
|
||||
|
@ -788,29 +780,10 @@ def mk_order_pane_layout(
|
|||
# add pp fill bar + spacing
|
||||
vbox.addLayout(hbox, stretch=1/3)
|
||||
|
||||
# TODO: status labels for brokerd real-time info
|
||||
# feed_label = form.add_field_label(
|
||||
# dedent("""
|
||||
# brokerd.ib\n
|
||||
# |_@{host}:{port}\n
|
||||
# |_consumers: {cons}\n
|
||||
# |_streams: {streams}\n
|
||||
# |_shms: {streams}\n
|
||||
# """),
|
||||
# font_size=_font_small.px_size,
|
||||
# )
|
||||
|
||||
# # add feed info label
|
||||
# vbox.addWidget(
|
||||
# feed_label,
|
||||
# alignment=Qt.AlignBottom,
|
||||
# # stretch=1/3,
|
||||
# )
|
||||
|
||||
# TODO: handle resize events and appropriately scale this
|
||||
# to the sidepane height?
|
||||
# https://doc.qt.io/qt-5/layout.html#adding-widgets-to-a-layout
|
||||
vbox.setSpacing(_font.px_size * 1.375)
|
||||
# vbox.setSpacing(_font.px_size * 1.375)
|
||||
|
||||
form.show()
|
||||
return form
|
||||
|
|
|
@ -45,6 +45,7 @@ from ._position import (
|
|||
PositionTracker,
|
||||
SettingsPane,
|
||||
)
|
||||
from ._label import FormatLabel
|
||||
from ._window import MultiStatus
|
||||
from ..clearing._messages import Order
|
||||
from ._forms import open_form_input_handling
|
||||
|
@ -623,6 +624,64 @@ async def open_order_mode(
|
|||
|
||||
# setup order mode sidepane widgets
|
||||
form = chart.sidepane
|
||||
vbox = form.vbox
|
||||
|
||||
from textwrap import dedent
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
|
||||
from ._style import _font, _font_small
|
||||
from ..calc import humanize
|
||||
|
||||
feed_label = FormatLabel(
|
||||
fmt_str=dedent("""
|
||||
actor: **{actor_name}**\n
|
||||
|_ @**{host}:{port}**\n
|
||||
|_ throttle_hz: **{throttle_rate}**\n
|
||||
|_ streams: **{symbols}**\n
|
||||
|_ shm: **{shm}**\n
|
||||
"""),
|
||||
font=_font.font,
|
||||
font_size=_font_small.px_size - 1,
|
||||
font_color='default_lightest',
|
||||
)
|
||||
|
||||
form.feed_label = feed_label
|
||||
|
||||
# add feed info label
|
||||
# vbox.addWidget(
|
||||
vbox.insertWidget(
|
||||
0,
|
||||
feed_label,
|
||||
alignment=Qt.AlignBottom,
|
||||
# stretch=1/3,
|
||||
)
|
||||
# vbox.setAlignment(feed_label, Qt.AlignBottom)
|
||||
# vbox.setAlignment(Qt.AlignBottom)
|
||||
blank_h = chart.height() - (
|
||||
form.height() +
|
||||
form.fill_bar.height()
|
||||
# feed_label.height()
|
||||
)
|
||||
# await tractor.breakpoint()
|
||||
|
||||
# vbox.setSpacing(round(blank_h / 3) - 2*_font.px_size)
|
||||
vbox.setSpacing((1 + 5/8)*_font.px_size)
|
||||
|
||||
# fill in brokerd feed info
|
||||
host, port = feed.portal.channel.raddr
|
||||
if host == '127.0.0.1':
|
||||
host = 'localhost'
|
||||
mpshm = feed.shm._shm
|
||||
shmstr = f'{humanize(mpshm.size)}'
|
||||
form.feed_label.format(
|
||||
actor_name=feed.portal.channel.uid[0],
|
||||
host=host,
|
||||
port=port,
|
||||
symbols=len(feed.symbols),
|
||||
shm=shmstr,
|
||||
throttle_rate=feed.throttle_rate,
|
||||
)
|
||||
|
||||
order_pane = SettingsPane(
|
||||
form=form,
|
||||
|
|
Loading…
Reference in New Issue