Create a formattable label, increase fill bar label sizes
parent
c4d5ca008e
commit
80b01ed8cf
|
@ -22,7 +22,7 @@ from __future__ import annotations
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
from typing import Optional
|
from typing import Optional, Any
|
||||||
|
|
||||||
import trio
|
import trio
|
||||||
from PyQt5 import QtCore, QtGui
|
from PyQt5 import QtCore, QtGui
|
||||||
|
@ -219,24 +219,14 @@ class FieldsForm(QWidget):
|
||||||
) -> QtGui.QLabel:
|
) -> QtGui.QLabel:
|
||||||
|
|
||||||
# add label to left of search bar
|
# 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
|
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)
|
self.label = label = FormatLabel(
|
||||||
|
fmt_str=name,
|
||||||
label.setAlignment(
|
font=_font.font,
|
||||||
QtCore.Qt.AlignVCenter
|
font_size=font_size,
|
||||||
| QtCore.Qt.AlignLeft
|
font_color=font_color,
|
||||||
)
|
)
|
||||||
|
|
||||||
# for later lookup
|
# for later lookup
|
||||||
|
@ -530,6 +520,56 @@ class FillStatusBar(QProgressBar):
|
||||||
self.setValue(value)
|
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(
|
def mk_fill_status_bar(
|
||||||
|
|
||||||
fields: FieldsForm,
|
fields: FieldsForm,
|
||||||
|
@ -544,8 +584,10 @@ def mk_fill_status_bar(
|
||||||
# indent = bracket_val / (1 + 5/8)
|
# indent = bracket_val / (1 + 5/8)
|
||||||
|
|
||||||
# TODO: once things are sized to screen
|
# TODO: once things are sized to screen
|
||||||
|
bar_label_font_size = _font.px_size - 3
|
||||||
|
|
||||||
label_font = DpiAwareFont()
|
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')
|
br = label_font.boundingRect(f'{3.32:.1f}% port')
|
||||||
w, h = br.width(), br.height()
|
w, h = br.width(), br.height()
|
||||||
bar_h = 8/3 * w
|
bar_h = 8/3 * w
|
||||||
|
@ -556,7 +598,7 @@ def mk_fill_status_bar(
|
||||||
dedent(f"""
|
dedent(f"""
|
||||||
-{30}% PnL
|
-{30}% PnL
|
||||||
"""),
|
"""),
|
||||||
font_size=_font.px_size - 6,
|
font_size=bar_label_font_size,
|
||||||
font_color='gunmetal',
|
font_color='gunmetal',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -584,15 +626,15 @@ def mk_fill_status_bar(
|
||||||
dedent(f"""
|
dedent(f"""
|
||||||
{3.32:.1f}% port
|
{3.32:.1f}% port
|
||||||
"""),
|
"""),
|
||||||
font_size=_font.px_size - 6,
|
font_size=bar_label_font_size,
|
||||||
font_color='gunmetal',
|
font_color='gunmetal',
|
||||||
)
|
)
|
||||||
|
|
||||||
bottom_label = fields.add_field_label(
|
bottom_label = fields.add_field_label(
|
||||||
dedent(f"""
|
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',
|
font_color='gunmetal',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -649,7 +691,7 @@ def mk_order_pane_layout(
|
||||||
'default_value': [
|
'default_value': [
|
||||||
'$ size',
|
'$ size',
|
||||||
'# units',
|
'# units',
|
||||||
'% of port',
|
# '% of port',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
'disti_weight': {
|
'disti_weight': {
|
||||||
|
|
Loading…
Reference in New Issue