Allocate pp config form alongside god widget as a side-pane

ordermodepps_backup
Tyler Goodlet 2021-07-26 11:31:36 -04:00
parent f27db80bf4
commit 01261d601a
2 changed files with 69 additions and 35 deletions

View File

@ -68,6 +68,7 @@ from ._interaction import ChartView
from .order_mode import run_order_mode from .order_mode import run_order_mode
from .. import fsp from .. import fsp
from ..data import feed from ..data import feed
from ._forms import FieldsForm, open_form
log = get_logger(__name__) log = get_logger(__name__)
@ -94,11 +95,13 @@ class GodWidget(QtWidgets.QWidget):
self.hbox = QtWidgets.QHBoxLayout(self) self.hbox = QtWidgets.QHBoxLayout(self)
self.hbox.setContentsMargins(0, 0, 0, 0) self.hbox.setContentsMargins(0, 0, 0, 0)
self.hbox.setSpacing(2) self.hbox.setSpacing(6)
self.hbox.setAlignment(Qt.AlignTop)
self.vbox = QtWidgets.QVBoxLayout() self.vbox = QtWidgets.QVBoxLayout()
self.vbox.setContentsMargins(0, 0, 0, 0) self.vbox.setContentsMargins(0, 0, 0, 0)
self.vbox.setSpacing(2) self.vbox.setSpacing(2)
self.vbox.setAlignment(Qt.AlignTop)
self.hbox.addLayout(self.vbox) self.hbox.addLayout(self.vbox)
@ -390,7 +393,6 @@ class LinkedSplits(QtWidgets.QWidget):
'left': PriceAxis(linkedsplits=self, orientation='left'), 'left': PriceAxis(linkedsplits=self, orientation='left'),
}, },
viewBox=cv, viewBox=cv,
# cursor=self.cursor,
**cpw_kwargs, **cpw_kwargs,
) )
print(f'xaxis ps: {xaxis.pos()}') print(f'xaxis ps: {xaxis.pos()}')
@ -472,7 +474,6 @@ class ChartPlotWidget(pg.PlotWidget):
pen_color: str = 'bracket', pen_color: str = 'bracket',
static_yrange: Optional[Tuple[float, float]] = None, static_yrange: Optional[Tuple[float, float]] = None,
cursor: Optional[Cursor] = None,
**kwargs, **kwargs,
): ):
@ -1576,7 +1577,12 @@ async def display_symbol_data(
linkedsplits linkedsplits
) )
await run_order_mode(chart, symbol, provider, order_mode_started) await run_order_mode(
chart,
symbol,
provider,
order_mode_started
)
async def load_provider_search( async def load_provider_search(
@ -1658,7 +1664,7 @@ async def _async_main(
# alights to top and uses minmial space based on # alights to top and uses minmial space based on
# search bar size hint (i think?) # search bar size hint (i think?)
alignment=Qt.AlignTop # alignment=Qt.AlignTop
) )
godwidget.search = search godwidget.search = search
@ -1695,8 +1701,60 @@ async def _async_main(
async_handler=_search.handle_keyboard_input, async_handler=_search.handle_keyboard_input,
# let key repeats pass through for search # let key repeats pass through for search
filter_auto_repeats=False, filter_auto_repeats=False,
) ),
open_form(
godwidget=godwidget,
parent=godwidget,
fields={
'account': {
'key': '**account**:',
'type': 'select',
'default_value': ['margin'],
},
'disti_policy': {
'key': '**policy**:',
'type': 'select',
'default_value': ['uniform'],
},
'slots': {
'key': '**slots**:',
'type': 'edit',
'default_value': 4,
},
'allocator': {
'key': '**allocator**:',
'type': 'select',
'default_value': ['$ size', '% of port',],
},
'dollar_size': {
'key': '**$size**:',
'type': 'edit',
'default_value': '5k',
},
},
) as pp_config,
): ):
pp_config: FieldsForm
pp_config.show()
# add as next-to-y-axis pane
godwidget.pp_config = pp_config
godwidget.hbox.insertWidget(
1,
pp_config,
# alights to top and uses minmial space based on
# search bar size hint (i think?)
alignment=Qt.AlignTop
)
godwidget.hbox.setAlignment(Qt.AlignTop)
# sb = god_widget.window.statusBar()
# sb.insertPermanentWidget(0, pp_config)
# pp_config.show()
# remove startup status text # remove startup status text
starting_done() starting_done()
await trio.sleep_forever() await trio.sleep_forever()

View File

@ -35,7 +35,7 @@ from ._editors import LineEditor, ArrowEditor
from ._lines import LevelLine from ._lines import LevelLine
from ._position import PositionTracker from ._position import PositionTracker
from ._window import MultiStatus from ._window import MultiStatus
from ._forms import FieldsForm, open_form from ._forms import FieldsForm
log = get_logger(__name__) log = get_logger(__name__)
@ -83,7 +83,6 @@ class OrderMode:
arrows: ArrowEditor arrows: ArrowEditor
multistatus: MultiStatus multistatus: MultiStatus
pp: PositionTracker pp: PositionTracker
pp_config: FieldsForm
name: str = 'order' name: str = 'order'
@ -101,6 +100,10 @@ class OrderMode:
def uuid(self) -> str: def uuid(self) -> str:
return str(uuid.uuid4()) return str(uuid.uuid4())
@property
def pp_config(self) -> FieldsForm:
return self.chart.linked.godwidget.pp_config
def set_exec( def set_exec(
self, self,
action: str, action: str,
@ -378,27 +381,6 @@ async def run_order_mode(
positions positions
), ),
open_form(
parent=chart.linked.godwidget,
fields={
'dollar_size': {
'key': '**$size**:',
'type': 'edit',
'default_value': 5000,
},
'slots': {
'key': '**slots**:',
'type': 'edit',
'default_value': 4,
},
'disti_policy': {
'key': '**policy**:',
'type': 'select',
'default_value': ['uniform'],
},
},
) as pp_config,
): ):
view = chart._vb view = chart._vb
lines = LineEditor(chart=chart) lines = LineEditor(chart=chart)
@ -409,11 +391,6 @@ async def run_order_mode(
pp = PositionTracker(chart) pp = PositionTracker(chart)
pp.hide() pp.hide()
# insert order mode config to left of mode label
sb = chart.window().statusBar()
sb.insertPermanentWidget(0, pp_config)
pp_config.hide()
mode = OrderMode( mode = OrderMode(
chart, chart,
book, book,
@ -421,7 +398,6 @@ async def run_order_mode(
arrows, arrows,
multistatus, multistatus,
pp, pp,
pp_config,
) )
# so that view handlers can access it # so that view handlers can access it