added popup alongside scene
This commit is contained in:
parent
0872883a5c
commit
16e88462a1
9 changed files with 40 additions and 20 deletions
1
NOTE.md
1
NOTE.md
|
@ -12,7 +12,6 @@ A faire :
|
|||
|
||||
- Voir si les event listener intégré à pyglet sont plus pratique que l'event propagation (?)
|
||||
- Faire une scène incluant par défaut les boutons "Retour" (?)
|
||||
- Faire des scènes "pop-up" (?)
|
||||
|
||||
|
||||
Bug :
|
||||
|
|
BIN
assets/image/popup/background.png
Normal file
BIN
assets/image/popup/background.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
|
@ -5,12 +5,13 @@ import pyglet.clock
|
|||
from source.gui import texture, widget
|
||||
from source.gui.event import StopEvent
|
||||
from source.gui.scene.abc import Scene
|
||||
from source.gui.scene.abc.Popup import Popup
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from source.gui.window import Window
|
||||
|
||||
|
||||
class Result(Scene):
|
||||
class Result(Popup):
|
||||
def __init__(self, window: "Window", won: bool, **kwargs):
|
||||
super().__init__(window, **kwargs)
|
||||
|
||||
|
@ -25,9 +26,3 @@ class Result(Scene):
|
|||
|
||||
from source.gui.scene import MainMenu
|
||||
pyglet.clock.schedule_once(lambda dt: self.window.set_scene(MainMenu), 5.0)
|
||||
|
||||
def on_mouse_press_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
||||
|
||||
def on_mouse_motion_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
from source.gui.event import StopEvent
|
||||
from source.gui.scene.abc import Scene
|
||||
from source.gui import widget, texture
|
||||
from source.gui.scene.abc.Popup import Popup
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from source.gui.window import Window
|
||||
|
||||
|
||||
class Settings(Scene):
|
||||
class Settings(Popup):
|
||||
def __init__(self, window: "Window", **kwargs):
|
||||
super().__init__(window, **kwargs)
|
||||
|
||||
self.background = self.add_widget(
|
||||
widget.Image,
|
||||
|
||||
x=0, y=0, width=1.0, height=1.0,
|
||||
|
||||
image=texture.Popup.Style1.background
|
||||
)
|
||||
|
||||
self.back = self.add_widget(
|
||||
widget.Button,
|
||||
x=20, y=20, width=0.2, height=0.1,
|
||||
|
@ -43,9 +50,3 @@ class Settings(Scene):
|
|||
|
||||
text_transform=lambda value: round(value, 2)
|
||||
)
|
||||
|
||||
def on_mouse_press_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
||||
|
||||
def on_mouse_motion_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
||||
|
|
16
source/gui/scene/abc/Popup.py
Normal file
16
source/gui/scene/abc/Popup.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
from abc import ABC
|
||||
|
||||
from source.gui.event import StopEvent
|
||||
from source.gui.scene.abc import Scene
|
||||
|
||||
|
||||
class Popup(Scene, ABC):
|
||||
"""
|
||||
Similaire à une Scène, mais empêche les interactions avec les scènes en arrière-plan.
|
||||
"""
|
||||
|
||||
def on_mouse_press_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
||||
|
||||
def on_mouse_motion_after(self, x: int, y: int, button: int, modifiers: int):
|
||||
raise StopEvent()
|
10
source/gui/texture/Popup.py
Normal file
10
source/gui/texture/Popup.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from . import path
|
||||
from .abc import Style
|
||||
from .type import Texture
|
||||
|
||||
path = path / "popup"
|
||||
|
||||
|
||||
class Popup:
|
||||
class Style1(Style):
|
||||
background = Texture(path / "background.png")
|
|
@ -2,6 +2,7 @@ from pathlib import Path
|
|||
|
||||
path: Path = Path("./assets/image")
|
||||
|
||||
from .Popup import Popup
|
||||
from .Background import Background
|
||||
from .Button import Button
|
||||
from .Checkbox import Checkbox
|
||||
|
|
|
@ -38,7 +38,7 @@ class Image(BoxWidget):
|
|||
# refresh
|
||||
|
||||
def _refresh_size(self):
|
||||
self.image.width, self.image.height = self.size
|
||||
self.image.x, self.image.y, self.image.width, self.image.height = self.bbox
|
||||
|
||||
# event
|
||||
|
||||
|
|
|
@ -121,8 +121,6 @@ class Input(BoxWidget):
|
|||
self.trigger_event("on_enter")
|
||||
|
||||
def on_text(self, char: str):
|
||||
print("on_text")
|
||||
|
||||
if not self.activated: return # ignore si ce widget est désactivé / non sélectionné
|
||||
if not self.label.multiline and char in "\r\n": return # si le texte est sur une ligne, ignore les retours
|
||||
|
||||
|
|
Loading…
Reference in a new issue