Skip to content

Commit

Permalink
[#18] Use events to query tape player pause state.
Browse files Browse the repository at this point in the history
  • Loading branch information
kosarev committed Feb 20, 2021
1 parent 2aa291f commit afc3218
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
4 changes: 4 additions & 0 deletions zx/_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ class GetTapePlayerTime(DeviceEvent):
pass


class IsTapePlayerPaused(DeviceEvent):
pass


class PauseStateUpdated(DeviceEvent):
pass

Expand Down
3 changes: 2 additions & 1 deletion zx/_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import gi
from ._device import Device
from ._device import GetTapePlayerTime
from ._device import IsTapePlayerPaused
from ._device import PauseStateUpdated
from ._device import QuantumRun
from ._device import ScreenUpdated
Expand Down Expand Up @@ -426,7 +427,7 @@ def _on_updated_pause_state(self, event, devices):
self._notification.clear()

def _on_updated_tape_state(self, event, devices):
tape_paused = self.xmachine._is_tape_paused()
tape_paused = devices.notify(IsTapePlayerPaused())
draw = (draw_tape_pause_notification if tape_paused
else draw_tape_resume_notification)
tape_time = devices.notify(GetTapePlayerTime())
Expand Down
9 changes: 6 additions & 3 deletions zx/_machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from ._data import MachineSnapshot
from ._data import ProcessorSnapshot
from ._device import GetTapePlayerTime
from ._device import IsTapePlayerPaused
from ._device import PauseStateUpdated
from ._device import ToggleEmulationPause
from ._device import ToggleTapePause
Expand Down Expand Up @@ -416,10 +417,12 @@ def on_breakpoint(self):
raise EmulatorException('Breakpoint triggered.')

def on_event(self, event, devices, result):
if isinstance(event, ToggleEmulationPause):
if isinstance(event, GetTapePlayerTime):
return self._tape_player.get_time()
elif isinstance(event, IsTapePlayerPaused):
return self._is_tape_paused()
elif isinstance(event, ToggleEmulationPause):
self.paused ^= True
elif isinstance(event, ToggleTapePause):
self._toggle_tape_pause()
elif isinstance(event, GetTapePlayerTime):
return self._tape_player.get_time()
return result

0 comments on commit afc3218

Please sign in to comment.