Create a formattable label, increase fill bar label sizes

fsp_feeds
Tyler Goodlet 2021-08-24 09:28:11 -04:00
parent c4d5ca008e
commit 80b01ed8cf
1 changed files with 65 additions and 23 deletions

View File

@ -22,7 +22,7 @@ from __future__ import annotations
from contextlib import asynccontextmanager
from functools import partial
from textwrap import dedent
from typing import Optional
from typing import Optional, Any
import trio
from PyQt5 import QtCore, QtGui
@ -219,24 +219,14 @@ class FieldsForm(QWidget):
) -> QtGui.QLabel:
# add label to left of search bar
self.label = label = QtGui.QLabel()
# self.label = label = QtGui.QLabel()
font_size = font_size or self._font_size - 2
label.setStyleSheet(
f"""QLabel {{
color : {hcolor(font_color)};
font-size : {font_size}px;
}}
"""
)
label.setFont(_font.font)
label.setTextFormat(Qt.MarkdownText) # markdown
label.setMargin(0)
label.setText(name)
label.setAlignment(
QtCore.Qt.AlignVCenter
| QtCore.Qt.AlignLeft
self.label = label = FormatLabel(
fmt_str=name,
font=_font.font,
font_size=font_size,
font_color=font_color,
)
# for later lookup
@ -530,6 +520,56 @@ class FillStatusBar(QProgressBar):
self.setValue(value)
class FormatLabel(QLabel):
def __init__(
self,
fmt_str: str,
font: QtGui.QFont,
font_size: int,
font_color: str,
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
# unformatted content if ``fmt_str`` isn't meant to be
# unformatted).
self.fmt_str = fmt_str
self.setText(fmt_str)
self.setStyleSheet(
f"""QLabel {{
color : {hcolor(font_color)};
font-size : {font_size}px;
}}
"""
)
self.setFont(_font.font)
self.setTextFormat(Qt.MarkdownText) # markdown
self.setMargin(0)
self.setAlignment(
QtCore.Qt.AlignVCenter
| QtCore.Qt.AlignLeft
)
self.setText(self.fmt_str)
def format(
self,
fields: dict[str, Any],
) -> str:
out = self.fmt_str.format(**fields)
self.setText(out)
return out
def mk_fill_status_bar(
fields: FieldsForm,
@ -544,8 +584,10 @@ def mk_fill_status_bar(
# indent = bracket_val / (1 + 5/8)
# TODO: once things are sized to screen
bar_label_font_size = _font.px_size - 3
label_font = DpiAwareFont()
label_font._set_qfont_px_size(_font.px_size - 6)
label_font._set_qfont_px_size(bar_label_font_size)
br = label_font.boundingRect(f'{3.32:.1f}% port')
w, h = br.width(), br.height()
bar_h = 8/3 * w
@ -556,7 +598,7 @@ def mk_fill_status_bar(
dedent(f"""
-{30}% PnL
"""),
font_size=_font.px_size - 6,
font_size=bar_label_font_size,
font_color='gunmetal',
)
@ -584,15 +626,15 @@ def mk_fill_status_bar(
dedent(f"""
{3.32:.1f}% port
"""),
font_size=_font.px_size - 6,
font_size=bar_label_font_size,
font_color='gunmetal',
)
bottom_label = fields.add_field_label(
dedent(f"""
{5e3/4/1e3:.2f}k $fill\n
{5e3/4/1e3:.2f}k step\n
"""),
font_size=_font.px_size - 6,
font_size=bar_label_font_size,
font_color='gunmetal',
)
@ -649,7 +691,7 @@ def mk_order_pane_layout(
'default_value': [
'$ size',
'# units',
'% of port',
# '% of port',
],
},
'disti_weight': {