From 68e23fc567a3f670e1c3e456589b939ae183a114 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sun, 15 Aug 2021 13:21:41 -0400 Subject: [PATCH] Simplify line editor to track lines instead of create them --- piker/ui/_editors.py | 96 ++++---------------------------------------- 1 file changed, 7 insertions(+), 89 deletions(-) diff --git a/piker/ui/_editors.py b/piker/ui/_editors.py index 060ca9b0..883f7a15 100644 --- a/piker/ui/_editors.py +++ b/piker/ui/_editors.py @@ -28,7 +28,7 @@ from PyQt5.QtCore import QPointF import numpy as np from ._style import hcolor, _font -from ._lines import order_line, LevelLine +from ._lines import LevelLine from ..log import get_logger @@ -97,78 +97,21 @@ class LineEditor: def stage_line( self, - action: str, - - color: str = 'alert_yellow', - hl_on_hover: bool = False, - dotted: bool = False, - - # fields settings - size: Optional[int] = None, + line: LevelLine, ) -> LevelLine: """Stage a line at the current chart's cursor position and return it. """ - if self.chart is None: - log.error('No chart interaction yet available') - return None - - # chart.setCursor(QtCore.Qt.PointingHandCursor) - cursor = self.chart.linked.cursor - if not cursor: - return None - - chart = cursor.active_plot - y = cursor._datum_xy[1] - - symbol = chart.linked.symbol # add a "staged" cursor-tracking line to view # and cash it in a a var if self._active_staged_line: self.unstage_line() - line = order_line( - chart, - - # TODO: convert these values into human-readable form - # (i.e. with k, m, M, B) type embedded suffixes - level=y, - level_digits=symbol.digits(), - - size=size, - # TODO: we need truncation checks in the EMS for this? - # size_digits=min(symbol.lot_digits(), 3), - - # just for the stage line to avoid - # flickering while moving the cursor - # around where it might trigger highlight - # then non-highlight depending on sensitivity - always_show_labels=True, - - # kwargs - color=color, - # don't highlight the "staging" line - hl_on_hover=hl_on_hover, - dotted=dotted, - exec_type='dark' if dotted else 'live', - action=action, - show_markers=True, - - # prevent flickering of marker while moving/tracking cursor - only_show_markers_on_hover=False, - ) - self._active_staged_line = line - # hide crosshair y-line and label - cursor.hide_xhair() - - # add line to cursor trackers - cursor._trackers.add(line) - return line def unstage_line(self) -> LevelLine: @@ -190,42 +133,17 @@ class LineEditor: # show the crosshair y line and label cursor.show_xhair() - def create_order_line( + def submit_line( self, + line: LevelLine, uuid: str, - level: float, - chart: 'ChartPlotWidget', # noqa - size: float, - action: str, + ) -> LevelLine: - line = self._active_staged_line - if not line: + staged_line = self._active_staged_line + if not staged_line: raise RuntimeError("No line is currently staged!?") - sym = chart.linked.symbol - - line = order_line( - chart, - - # label fields default values - level=level, - level_digits=sym.digits(), - - size=size, - # TODO: we need truncation checks in the EMS for this? - # size_digits=sym.lot_digits(), - - # LevelLine kwargs - color=line.color, - dotted=line._dotted, - - show_markers=True, - only_show_markers_on_hover=True, - - action=action, - ) - # for now, until submission reponse arrives line.hide_labels()