Make line editor expect god as input, use new .`get_cursor()` api

history_view
Tyler Goodlet 2022-09-06 14:25:01 -04:00
parent d3402f715b
commit 2dfa8976a0
1 changed files with 21 additions and 8 deletions

View File

@ -19,7 +19,10 @@ Higher level annotation editors.
""" """
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional from typing import (
Optional,
TYPE_CHECKING
)
import pyqtgraph as pg import pyqtgraph as pg
from pyqtgraph import ViewBox, Point, QtCore, QtGui from pyqtgraph import ViewBox, Point, QtCore, QtGui
@ -31,6 +34,9 @@ from ._style import hcolor, _font
from ._lines import LevelLine from ._lines import LevelLine
from ..log import get_logger from ..log import get_logger
if TYPE_CHECKING:
from ._chart import GodWidget
log = get_logger(__name__) log = get_logger(__name__)
@ -88,10 +94,11 @@ class ArrowEditor:
@dataclass @dataclass
class LineEditor: class LineEditor:
'''The great editor of linez. '''
The great editor of linez.
''' '''
chart: 'ChartPlotWidget' = None # type: ignore # noqa godw: 'ChartPlotWidget' = None # type: ignore # noqa
_order_lines: dict[str, LevelLine] = field(default_factory=dict) _order_lines: dict[str, LevelLine] = field(default_factory=dict)
_active_staged_line: LevelLine = None _active_staged_line: LevelLine = None
@ -119,13 +126,19 @@ class LineEditor:
""" """
# chart = self.chart._cursor.active_plot # chart = self.chart._cursor.active_plot
# # chart.setCursor(QtCore.Qt.ArrowCursor) cursor = self.godw.get_cursor()
cursor = self.chart.linked.cursor
# delete "staged" cursor tracking line from view # delete "staged" cursor tracking line from view
line = self._active_staged_line line = self._active_staged_line
if line: if line:
cursor._trackers.remove(line) try:
cursor._trackers.remove(line)
except KeyError:
# when the current cursor doesn't have said line
# registered (probably means that user held order mode
# key while panning to another vieww) then we just
# ignore the remove error.
pass
line.delete() line.delete()
self._active_staged_line = None self._active_staged_line = None
@ -178,7 +191,7 @@ class LineEditor:
""" """
# Delete any hoverable under the cursor # Delete any hoverable under the cursor
return self.chart.linked.cursor._hovered return self.godw.get_cursor()._hovered
def all_lines(self) -> tuple[LevelLine]: def all_lines(self) -> tuple[LevelLine]:
return tuple(self._order_lines.values()) return tuple(self._order_lines.values())
@ -200,7 +213,7 @@ class LineEditor:
if line: if line:
# if hovered remove from cursor set # if hovered remove from cursor set
cursor = self.chart.linked.cursor cursor = self.godw.get_cursor()
hovered = cursor._hovered hovered = cursor._hovered
if line in hovered: if line in hovered:
hovered.remove(line) hovered.remove(line)