Mouse interaction tweaks
- adjust zoom focal to be min of the view-right coord or the right-most point on the flow graphic in view and drop all the legacy l1-in-view focal point cruft. - flip to not auto-scaling overlays by default. - change the `._set_yrange()` margin to `0.09`. - drop `use_vr: bool` usage.overlays_interaction_latency_tuning
parent
7e29c36a24
commit
e742d18a6c
|
@ -35,7 +35,7 @@ import trio
|
||||||
from ..log import get_logger
|
from ..log import get_logger
|
||||||
from .._profile import Profiler
|
from .._profile import Profiler
|
||||||
from .._profile import pg_profile_enabled, ms_slower_then
|
from .._profile import pg_profile_enabled, ms_slower_then
|
||||||
from ._style import _min_points_to_show
|
# from ._style import _min_points_to_show
|
||||||
from ._editors import SelectRect
|
from ._editors import SelectRect
|
||||||
from . import _event
|
from . import _event
|
||||||
|
|
||||||
|
@ -494,13 +494,12 @@ class ChartView(ViewBox):
|
||||||
# don't zoom more then the min points setting
|
# don't zoom more then the min points setting
|
||||||
viz = chart.get_viz(chart.name)
|
viz = chart.get_viz(chart.name)
|
||||||
vl, lbar, rbar, vr = viz.bars_range()
|
vl, lbar, rbar, vr = viz.bars_range()
|
||||||
rl = vr - vl
|
|
||||||
|
|
||||||
# TODO: max/min zoom limits incorporating time step size.
|
# TODO: max/min zoom limits incorporating time step size.
|
||||||
|
# rl = vr - vl
|
||||||
# if ev.delta() > 0 and rl <= _min_points_to_show:
|
# if ev.delta() > 0 and rl <= _min_points_to_show:
|
||||||
# log.warning("Max zoom bruh...")
|
# log.warning("Max zoom bruh...")
|
||||||
# return
|
# return
|
||||||
|
|
||||||
# if (
|
# if (
|
||||||
# ev.delta() < 0
|
# ev.delta() < 0
|
||||||
# and rl >= len(chart._vizs[chart.name].shm.array) + 666
|
# and rl >= len(chart._vizs[chart.name].shm.array) + 666
|
||||||
|
@ -536,48 +535,17 @@ class ChartView(ViewBox):
|
||||||
self.scaleBy(s, center)
|
self.scaleBy(s, center)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
# center = pg.Point(
|
|
||||||
# fn.invertQTransform(self.childGroup.transform()).map(ev.pos())
|
|
||||||
# )
|
|
||||||
|
|
||||||
# XXX: scroll "around" the right most element in the view
|
|
||||||
# which stays "pinned" in place.
|
|
||||||
|
|
||||||
# furthest_right_coord = self.boundingRect().topRight()
|
|
||||||
|
|
||||||
# yaxis = pg.Point(
|
|
||||||
# fn.invertQTransform(
|
|
||||||
# self.childGroup.transform()
|
|
||||||
# ).map(furthest_right_coord)
|
|
||||||
# )
|
|
||||||
|
|
||||||
# This seems like the most "intuitive option, a hybrid of
|
|
||||||
# tws and tv styles
|
|
||||||
# last_bar = pg.Point(int(rbar)) + 1
|
|
||||||
ryaxis = chart.getAxis('right')
|
|
||||||
r_axis_x = ryaxis.pos().x()
|
|
||||||
|
|
||||||
end_of_l1 = pg.Point(
|
|
||||||
round(
|
|
||||||
chart.cv.mapToView(
|
|
||||||
pg.Point(r_axis_x - chart._max_l1_line_len)
|
|
||||||
).x()
|
|
||||||
)
|
|
||||||
).x()
|
|
||||||
|
|
||||||
# self.state['viewRange'][0][1] = end_of_l1
|
|
||||||
# focal = pg.Point((last_bar.x() + end_of_l1)/2)
|
|
||||||
# focal = pg.Point(last_bar.x() + end_of_l1)
|
|
||||||
|
|
||||||
# use right-most point of current curve graphic
|
# use right-most point of current curve graphic
|
||||||
xl = viz.graphics.x_last()
|
xl = viz.graphics.x_last()
|
||||||
focal = min(
|
focal = min(
|
||||||
xl,
|
xl,
|
||||||
end_of_l1,
|
vr,
|
||||||
)
|
)
|
||||||
|
|
||||||
self._resetTarget()
|
self._resetTarget()
|
||||||
|
|
||||||
|
# NOTE: scroll "around" the right most datum-element in view
|
||||||
|
# gives the feeling of staying "pinned" in place.
|
||||||
self.scaleBy(s, focal)
|
self.scaleBy(s, focal)
|
||||||
|
|
||||||
# XXX: the order of the next 2 lines i'm pretty sure
|
# XXX: the order of the next 2 lines i'm pretty sure
|
||||||
|
@ -674,9 +642,6 @@ class ChartView(ViewBox):
|
||||||
|
|
||||||
# PANNING MODE
|
# PANNING MODE
|
||||||
else:
|
else:
|
||||||
# XXX: WHY
|
|
||||||
ev.accept()
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.start_ic()
|
self.start_ic()
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
|
@ -708,6 +673,9 @@ class ChartView(ViewBox):
|
||||||
# self._ic = None
|
# self._ic = None
|
||||||
# self.chart.resume_all_feeds()
|
# self.chart.resume_all_feeds()
|
||||||
|
|
||||||
|
# XXX: WHY
|
||||||
|
ev.accept()
|
||||||
|
|
||||||
# WEIRD "RIGHT-CLICK CENTER ZOOM" MODE
|
# WEIRD "RIGHT-CLICK CENTER ZOOM" MODE
|
||||||
elif button & QtCore.Qt.RightButton:
|
elif button & QtCore.Qt.RightButton:
|
||||||
|
|
||||||
|
@ -753,7 +721,11 @@ class ChartView(ViewBox):
|
||||||
*,
|
*,
|
||||||
|
|
||||||
yrange: Optional[tuple[float, float]] = None,
|
yrange: Optional[tuple[float, float]] = None,
|
||||||
range_margin: float = 0.06,
|
|
||||||
|
# NOTE: this value pairs (more or less) with L1 label text
|
||||||
|
# height offset from from the bid/ask lines.
|
||||||
|
range_margin: float = 0.09,
|
||||||
|
|
||||||
bars_range: Optional[tuple[int, int, int, int]] = None,
|
bars_range: Optional[tuple[int, int, int, int]] = None,
|
||||||
|
|
||||||
# flag to prevent triggering sibling charts from the same linked
|
# flag to prevent triggering sibling charts from the same linked
|
||||||
|
@ -910,7 +882,7 @@ class ChartView(ViewBox):
|
||||||
|
|
||||||
def maybe_downsample_graphics(
|
def maybe_downsample_graphics(
|
||||||
self,
|
self,
|
||||||
autoscale_overlays: bool = True,
|
autoscale_overlays: bool = False,
|
||||||
):
|
):
|
||||||
profiler = Profiler(
|
profiler = Profiler(
|
||||||
msg=f'ChartView.maybe_downsample_graphics() for {self.name}',
|
msg=f'ChartView.maybe_downsample_graphics() for {self.name}',
|
||||||
|
@ -946,10 +918,7 @@ class ChartView(ViewBox):
|
||||||
|
|
||||||
# pass in no array which will read and render from the last
|
# pass in no array which will read and render from the last
|
||||||
# passed array (normally provided by the display loop.)
|
# passed array (normally provided by the display loop.)
|
||||||
chart.update_graphics_from_flow(
|
chart.update_graphics_from_flow(name)
|
||||||
name,
|
|
||||||
use_vr=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
# for each overlay on this chart auto-scale the
|
# for each overlay on this chart auto-scale the
|
||||||
# y-range to max-min values.
|
# y-range to max-min values.
|
||||||
|
|
Loading…
Reference in New Issue