Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ In an effort to better document changes, this CHANGELOG document is now created.
- Added `Slide.next_section` for compatibility with `manim`'s
`Scene.next_section` method.
[#295](https://github.com/jeertmans/manim-slides/pull/295)
- Added `--next-terminates-loop` option to `manim-slides present` for turn a
looping slide into a normal one, so that it ends nicely. This is useful to
have a smooth transition with the next slide.
[#299](https://github.com/jeertmans/manim-slides/pull/299)
- Added `--playback-rate` option to `manim-slides present` for testing purposes.
[#300](https://github.com/jeertmans/manim-slides/pull/300)
- Added `auto_next` option to `Slide`'s `next_slide` method to automatically
Expand Down
12 changes: 10 additions & 2 deletions manim_slides/present/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,12 @@ def str_to_int_or_none(value: str) -> Optional[int]:
default=1.0,
help="Playback rate of the video slides, see PySide6 docs for details.",
)
@click.option(
"--next-terminates-loop",
"next_terminates_loop",
is_flag=True,
help="If set, pressing next will turn any looping slide into a play slide.",
)
@click.help_option("-h", "--help")
@verbosity_option
def present(
Expand All @@ -234,8 +240,9 @@ def present(
start_at: Tuple[Optional[int], Optional[int], Optional[int]],
start_at_scene_number: int,
start_at_slide_number: int,
screen_number: Optional[int] = None,
playback_rate: float = 1.0,
screen_number: Optional[int],
playback_rate: float,
next_terminates_loop: bool,
) -> None:
"""
Present SCENE(s), one at a time, in order.
Expand Down Expand Up @@ -296,6 +303,7 @@ def present(
slide_index=start_at_slide_number,
screen=screen,
playback_rate=playback_rate,
next_terminates_loop=next_terminates_loop,
)

player.show()
Expand Down
8 changes: 8 additions & 0 deletions manim_slides/present/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def __init__(
slide_index: int = 0,
screen: Optional[QScreen] = None,
playback_rate: float = 1.0,
next_terminates_loop: bool = False,
):
super().__init__()

Expand Down Expand Up @@ -125,6 +126,7 @@ def __init__(
# Misc

self.exit_after_last_slide = exit_after_last_slide
self.next_terminates_loop = next_terminates_loop

# Setting-up everything

Expand Down Expand Up @@ -313,6 +315,12 @@ def close(self) -> None:
def next(self) -> None:
if self.media_player.playbackState() == QMediaPlayer.PausedState:
self.media_player.play()
elif self.next_terminates_loop and self.media_player.loops() != 1:
position = self.media_player.position()
self.media_player.setLoops(1)
self.media_player.stop()
self.media_player.setPosition(position)
self.media_player.play()
else:
self.load_next_slide()

Expand Down