mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-06-16 17:58:38 +08:00
feat(cli): added separate option for info window screen (#389)
Closes #388.
This commit is contained in:
@ -16,6 +16,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Added audio output to `manim-slides present`.
|
- Added audio output to `manim-slides present`.
|
||||||
[#382](https://github.com/jeertmans/manim-slides/pull/382)
|
[#382](https://github.com/jeertmans/manim-slides/pull/382)
|
||||||
|
|
||||||
|
(unreleased-changed)=
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Added `--info-window-screen` option and change `--screen-number`
|
||||||
|
to not move the info window.
|
||||||
|
[#389](https://github.com/jeertmans/manim-slides/pull/389)
|
||||||
|
|
||||||
(v5.1.3)=
|
(v5.1.3)=
|
||||||
## [v5.1.3](https://github.com/jeertmans/manim-slides/compare/v5.1.2...v5.1.3)
|
## [v5.1.3](https://github.com/jeertmans/manim-slides/compare/v5.1.2...v5.1.3)
|
||||||
|
|
||||||
|
@ -242,6 +242,14 @@ def start_at_callback(
|
|||||||
is_flag=True,
|
is_flag=True,
|
||||||
help="Hide info window.",
|
help="Hide info window.",
|
||||||
)
|
)
|
||||||
|
@click.option(
|
||||||
|
"--info-window-screen",
|
||||||
|
"info_window_screen_number",
|
||||||
|
metavar="NUMBER",
|
||||||
|
type=int,
|
||||||
|
default=None,
|
||||||
|
help="Put info window on the given screen (a.k.a. display).",
|
||||||
|
)
|
||||||
@click.help_option("-h", "--help")
|
@click.help_option("-h", "--help")
|
||||||
@verbosity_option
|
@verbosity_option
|
||||||
def present(
|
def present(
|
||||||
@ -261,6 +269,7 @@ def present(
|
|||||||
playback_rate: float,
|
playback_rate: float,
|
||||||
next_terminates_loop: bool,
|
next_terminates_loop: bool,
|
||||||
hide_info_window: bool,
|
hide_info_window: bool,
|
||||||
|
info_window_screen_number: Optional[int],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Present SCENE(s), one at a time, in order.
|
Present SCENE(s), one at a time, in order.
|
||||||
@ -295,32 +304,40 @@ def present(
|
|||||||
|
|
||||||
warn_if_non_desirable_pyside6_version()
|
warn_if_non_desirable_pyside6_version()
|
||||||
|
|
||||||
|
from qtpy.QtCore import Qt
|
||||||
|
from qtpy.QtGui import QScreen
|
||||||
|
|
||||||
from ..qt_utils import qapp
|
from ..qt_utils import qapp
|
||||||
|
from .player import Player
|
||||||
|
|
||||||
app = qapp()
|
app = qapp()
|
||||||
app.setApplicationName("Manim Slides")
|
app.setApplicationName("Manim Slides")
|
||||||
|
|
||||||
if screen_number is not None:
|
def get_screen(number: int) -> Optional[QScreen]:
|
||||||
try:
|
try:
|
||||||
screen = app.screens()[screen_number]
|
return app.screens()[number]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"Invalid screen number {screen_number}, "
|
f"Invalid screen number {number}, "
|
||||||
f"allowed values are from 0 to {len(app.screens())-1} (incl.)"
|
f"allowed values are from 0 to {len(app.screens())-1} (incl.)"
|
||||||
)
|
)
|
||||||
screen = None
|
return None
|
||||||
|
|
||||||
|
if screen_number is not None:
|
||||||
|
screen = get_screen(screen_number)
|
||||||
else:
|
else:
|
||||||
screen = None
|
screen = None
|
||||||
|
|
||||||
from qtpy.QtCore import Qt
|
if info_window_screen_number is not None:
|
||||||
|
info_window_screen = get_screen(info_window_screen_number)
|
||||||
|
else:
|
||||||
|
info_window_screen = None
|
||||||
|
|
||||||
aspect_ratio_modes = {
|
aspect_ratio_modes = {
|
||||||
"keep": Qt.KeepAspectRatio,
|
"keep": Qt.KeepAspectRatio,
|
||||||
"ignore": Qt.IgnoreAspectRatio,
|
"ignore": Qt.IgnoreAspectRatio,
|
||||||
}
|
}
|
||||||
|
|
||||||
from .player import Player
|
|
||||||
|
|
||||||
player = Player(
|
player = Player(
|
||||||
config,
|
config,
|
||||||
presentation_configs,
|
presentation_configs,
|
||||||
@ -336,6 +353,7 @@ def present(
|
|||||||
playback_rate=playback_rate,
|
playback_rate=playback_rate,
|
||||||
next_terminates_loop=next_terminates_loop,
|
next_terminates_loop=next_terminates_loop,
|
||||||
hide_info_window=hide_info_window,
|
hide_info_window=hide_info_window,
|
||||||
|
info_window_screen=info_window_screen,
|
||||||
)
|
)
|
||||||
|
|
||||||
player.show()
|
player.show()
|
||||||
|
@ -183,6 +183,7 @@ class Player(QMainWindow): # type: ignore[misc]
|
|||||||
playback_rate: float = 1.0,
|
playback_rate: float = 1.0,
|
||||||
next_terminates_loop: bool = False,
|
next_terminates_loop: bool = False,
|
||||||
hide_info_window: bool = False,
|
hide_info_window: bool = False,
|
||||||
|
info_window_screen: Optional[QScreen] = None,
|
||||||
):
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
@ -240,7 +241,9 @@ class Player(QMainWindow): # type: ignore[misc]
|
|||||||
self.slide_changed.connect(self.slide_changed_callback)
|
self.slide_changed.connect(self.slide_changed_callback)
|
||||||
|
|
||||||
self.info = Info(
|
self.info = Info(
|
||||||
full_screen=full_screen, aspect_ratio_mode=aspect_ratio_mode, screen=screen
|
full_screen=full_screen,
|
||||||
|
aspect_ratio_mode=aspect_ratio_mode,
|
||||||
|
screen=info_window_screen,
|
||||||
)
|
)
|
||||||
self.info.close_event.connect(self.closeEvent)
|
self.info.close_event.connect(self.closeEvent)
|
||||||
self.info.key_press_event.connect(self.keyPressEvent)
|
self.info.key_press_event.connect(self.keyPressEvent)
|
||||||
|
Reference in New Issue
Block a user