Skip to content

Commit bd75a33

Browse files
committed
Cache x and y positions from the stage in the widget.
1 parent 3eb5a55 commit bd75a33

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

src/prismo/widgets.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import functools
2+
import time
23
from collections.abc import Callable
34
from typing import Any
45

@@ -271,8 +272,8 @@ def __init__(self, relay: "Relay"):
271272
super().__init__()
272273
self._relay = relay
273274
self._fast = False
274-
self._step_slow = 5.0
275-
self._step_fast = 50.0
275+
self._step_slow = 10_000.0
276+
self._step_fast = 200_000.0
276277

277278
layout = QVBoxLayout(self)
278279

@@ -308,28 +309,36 @@ def __init__(self, relay: "Relay"):
308309
right_btn.clicked.connect(lambda: self._step(self._step_size, 0))
309310
self._speed_btn.toggled.connect(self._toggle_speed)
310311

311-
self._timer = QTimer()
312-
self._timer.timeout.connect(self._update_pos)
313-
self._timer.start(100)
314-
315312
self.setFocusPolicy(Qt.StrongFocus)
316313

314+
xy = self._relay.get("xy")
315+
self._xy = list(xy)
316+
self._last_sync = time.monotonic()
317+
self._update_labels()
318+
317319
@property
318320
def _step_size(self) -> float:
319321
return self._step_fast if self._fast else self._step_slow
320322

321323
def _step(self, dx: float, dy: float):
324+
now = time.monotonic()
325+
if now - self._last_sync >= 2.0:
326+
xy = self._relay.get("xy")
327+
self._xy = list(xy)
328+
self._last_sync = now
329+
self._xy[0] += dx
330+
self._xy[1] += dy
322331
self._relay.post("step_xy", dx, dy)
332+
self._update_labels()
333+
334+
def _update_labels(self):
335+
self._x_label.setText(f"x: {self._xy[0]:.0f}")
336+
self._y_label.setText(f"y: {self._xy[1]:.0f}")
323337

324338
def _toggle_speed(self, checked: bool):
325339
self._fast = checked
326340
self._speed_btn.setText("Fast" if checked else "Slow")
327341

328-
def _update_pos(self):
329-
xy = self._relay.get("xy")
330-
self._x_label.setText(f"x: {xy[0]:.1f}")
331-
self._y_label.setText(f"y: {xy[1]:.1f}")
332-
333342
def keyPressEvent(self, event):
334343
key = event.key()
335344
if key == Qt.Key_Up:

0 commit comments

Comments
 (0)