Drop global order lines map

Orders in order mode should be chart oriented since there's a mode per
chart. If you want all orders just ask the ems or query all the charts
in a loop.

This fixes cancel-all-orders such that when 'cc' is tapped only the
orders on the *current* chart are cancelled, lel.
asyncify_input_modes
Tyler Goodlet 2021-06-18 17:13:39 -04:00
parent 91209b7d6e
commit d3d5d4ad06
3 changed files with 17 additions and 15 deletions

View File

@ -1554,13 +1554,19 @@ async def display_symbol_data(
''' '''
sbar = godwidget.window.status_bar sbar = godwidget.window.status_bar
loading_sym_key = sbar.open_status( loading_sym_key = sbar.open_status(
f'loading {sym}.{provider} -> ', f'loading {sym}.{provider} ->',
group_key=True group_key=True
) )
# historical data fetch # historical data fetch
brokermod = brokers.get_brokermod(provider) brokermod = brokers.get_brokermod(provider)
# ohlc_status_done = sbar.open_status(
# 'retreiving OHLC history.. ',
# clear_on_next=True,
# group_key=loading_sym_key,
# )
async with( async with(
data.open_feed( data.open_feed(

View File

@ -86,22 +86,14 @@ class ArrowEditor:
self.chart.plotItem.removeItem(arrow) self.chart.plotItem.removeItem(arrow)
# global store of order-lines graphics
# keyed by uuid4 strs - used to sync draw
# order lines **after** the order is 100%
# active in emsd
_order_lines: dict[str, LevelLine] = {}
@dataclass @dataclass
class LineEditor: class LineEditor:
'''The great editor of linez. '''The great editor of linez.
''' '''
_order_lines: field(default_factory=_order_lines)
chart: 'ChartPlotWidget' = None # type: ignore # noqa chart: 'ChartPlotWidget' = None # type: ignore # noqa
_order_lines: dict[str, LevelLine] = field(default_factory=dict)
_active_staged_line: LevelLine = None _active_staged_line: LevelLine = None
_stage_line: LevelLine = None
def stage_line( def stage_line(
self, self,
@ -128,8 +120,6 @@ class LineEditor:
symbol = chart._lc.symbol symbol = chart._lc.symbol
# line = self._stage_line
# if not line:
# add a "staged" cursor-tracking line to view # add a "staged" cursor-tracking line to view
# and cash it in a a var # and cash it in a a var
if self._active_staged_line: if self._active_staged_line:

View File

@ -30,7 +30,7 @@ from pydantic import BaseModel
import trio import trio
from ._graphics._lines import LevelLine, position_line from ._graphics._lines import LevelLine, position_line
from ._editors import LineEditor, ArrowEditor, _order_lines from ._editors import LineEditor, ArrowEditor
from ._window import MultiStatus, main_window from ._window import MultiStatus, main_window
from ..clearing._client import open_ems, OrderBook from ..clearing._client import open_ems, OrderBook
from ..data._source import Symbol from ..data._source import Symbol
@ -54,6 +54,8 @@ class OrderMode:
This is the default mode that pairs with "follow mode" This is the default mode that pairs with "follow mode"
(when wathing the rt price update at the current time step) (when wathing the rt price update at the current time step)
and allows entering orders using mouse and keyboard. and allows entering orders using mouse and keyboard.
This object is chart oriented, so there is an instance per
chart / view currently.
Current manual: Current manual:
a -> alert a -> alert
@ -70,6 +72,7 @@ class OrderMode:
lines: LineEditor lines: LineEditor
arrows: ArrowEditor arrows: ArrowEditor
status_bar: MultiStatus status_bar: MultiStatus
name: str = 'order'
_colors = { _colors = {
'alert': 'alert_yellow', 'alert': 'alert_yellow',
@ -290,6 +293,9 @@ class OrderMode:
) )
def cancel_all_orders(self) -> list[str]: def cancel_all_orders(self) -> list[str]:
'''Cancel all orders for the current chart.
'''
return self.cancel_orders_from_lines( return self.cancel_orders_from_lines(
self.lines.all_lines() self.lines.all_lines()
) )
@ -355,7 +361,7 @@ async def open_order_mode(
): ):
status_bar: MultiStatus = main_window().status_bar status_bar: MultiStatus = main_window().status_bar
view = chart._vb view = chart._vb
lines = LineEditor(chart=chart, _order_lines=_order_lines) lines = LineEditor(chart=chart)
arrows = ArrowEditor(chart, {}) arrows = ArrowEditor(chart, {})
log.info("Opening order mode") log.info("Opening order mode")
@ -400,7 +406,7 @@ async def start_order_mode(
- begin order handling loop - begin order handling loop
''' '''
done = chart.window().status_bar.open_status('Starting order mode...') done = chart.window().status_bar.open_status('starting order mode..')
# spawn EMS actor-service # spawn EMS actor-service
async with ( async with (