the listener now give as a first argument the widget itself. Added some event to some widgets
This commit is contained in:
parent
a096785c28
commit
14ebc82a72
8 changed files with 17 additions and 13 deletions
2
NOTE.md
2
NOTE.md
|
@ -1,13 +1,13 @@
|
||||||
A faire :
|
A faire :
|
||||||
- Ecran de configuration de la partie
|
- Ecran de configuration de la partie
|
||||||
- Nom dans les options
|
- Nom dans les options
|
||||||
|
- Etat de la partie (en attente de l'autre joueur, ...)
|
||||||
|
|
||||||
- Faire une scène incluant par défaut les boutons "Retour" (?)
|
- Faire une scène incluant par défaut les boutons "Retour" (?)
|
||||||
- Police d'écriture
|
- Police d'écriture
|
||||||
|
|
||||||
- Voir si les event listener intégré à pyglet sont plus pratique que l'event propagation
|
- Voir si les event listener intégré à pyglet sont plus pratique que l'event propagation
|
||||||
- Documenter
|
- Documenter
|
||||||
- Ajouter plus d'event sur les widgets
|
|
||||||
|
|
||||||
- Ecran de victoire
|
- Ecran de victoire
|
||||||
- Faire marcher le tchat
|
- Faire marcher le tchat
|
||||||
|
|
|
@ -34,4 +34,4 @@ class Listener:
|
||||||
:param kwargs: the kwargs of the callbacks
|
:param kwargs: the kwargs of the callbacks
|
||||||
"""
|
"""
|
||||||
for listener in self._events_listener.get(name, set()):
|
for listener in self._events_listener.get(name, set()):
|
||||||
listener(*args, **kwargs)
|
listener(self, *args, **kwargs)
|
||||||
|
|
|
@ -55,7 +55,7 @@ class Game(Scene):
|
||||||
bomb_batch=self.batch_grid_bomb
|
bomb_batch=self.batch_grid_bomb
|
||||||
)
|
)
|
||||||
|
|
||||||
def board_ally_ready():
|
def board_ally_ready(widget):
|
||||||
self.boat_ready_ally = True
|
self.boat_ready_ally = True
|
||||||
PacketBoatPlaced().send_connection(connection)
|
PacketBoatPlaced().send_connection(connection)
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ class Game(Scene):
|
||||||
bomb_batch=self.batch_grid_bomb
|
bomb_batch=self.batch_grid_bomb
|
||||||
)
|
)
|
||||||
|
|
||||||
def board_enemy_bomb(cell: Point2D):
|
def board_enemy_bomb(widget, cell: Point2D):
|
||||||
if not (self.boat_ready_ally and self.boat_ready_enemy): return
|
if not (self.boat_ready_ally and self.boat_ready_enemy): return
|
||||||
if not self.my_turn: return
|
if not self.my_turn: return
|
||||||
PacketBombPlaced(position=cell).send_connection(connection)
|
PacketBombPlaced(position=cell).send_connection(connection)
|
||||||
|
@ -157,9 +157,9 @@ class Game(Scene):
|
||||||
label_batch=self.batch_label,
|
label_batch=self.batch_label,
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_chat():
|
def send_chat(widget):
|
||||||
text = self.chat_input.text
|
text = widget.text
|
||||||
self.chat_input.text = ""
|
widget.text = ""
|
||||||
|
|
||||||
self.chat_log.text += "\n" + text
|
self.chat_log.text += "\n" + text
|
||||||
self.chat_log.label.y = self.chat_log.y + self.chat_log.label.content_height
|
self.chat_log.label.y = self.chat_log.y + self.chat_log.label.content_height
|
||||||
|
|
|
@ -72,7 +72,7 @@ class RoomJoin(Scene):
|
||||||
|
|
||||||
self.connect.add_listener("on_click_release", self.button_connect)
|
self.connect.add_listener("on_click_release", self.button_connect)
|
||||||
|
|
||||||
def button_connect(self, *_):
|
def button_connect(self, widget, *_):
|
||||||
network.Client(
|
network.Client(
|
||||||
window=self.window,
|
window=self.window,
|
||||||
ip_address=self.entry_ip.text,
|
ip_address=self.entry_ip.text,
|
||||||
|
@ -80,7 +80,7 @@ class RoomJoin(Scene):
|
||||||
username="Client"
|
username="Client"
|
||||||
).start()
|
).start()
|
||||||
|
|
||||||
def button_back_callback(self, *_):
|
def button_back_callback(self, widget, *_):
|
||||||
from source.gui.scene import MainMenu
|
from source.gui.scene import MainMenu
|
||||||
self.window.set_scene(MainMenu)
|
self.window.set_scene(MainMenu)
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,8 @@ class Checkbox(BoxWidget):
|
||||||
@state.setter
|
@state.setter
|
||||||
def state(self, state: bool):
|
def state(self, state: bool):
|
||||||
self._state = state
|
self._state = state
|
||||||
|
self.trigger_event("on_state_change")
|
||||||
|
self.trigger_event("on_checked" if state else "on_unchecked")
|
||||||
self._refresh_tick()
|
self._refresh_tick()
|
||||||
|
|
||||||
def swap_state(self):
|
def swap_state(self):
|
||||||
|
|
|
@ -78,10 +78,9 @@ class GameGrid(BoxWidget):
|
||||||
**dict_filter_prefix("cursor_", kwargs)
|
**dict_filter_prefix("cursor_", kwargs)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.add_listener("on_click_release", self.on_click_release)
|
self.add_listener("on_click_release", lambda _, *args: self.on_click_release(*args))
|
||||||
self.add_listener("on_hover_leave", lambda *_: self.hide_cursor())
|
self.add_listener("on_hover_leave", lambda *_: self.hide_cursor())
|
||||||
self.add_listener("on_hover", self._refresh_cursor)
|
self.add_listener("on_hover", lambda _, *args: self._refresh_cursor(*args))
|
||||||
|
|
||||||
|
|
||||||
self._refresh_size()
|
self._refresh_size()
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,8 @@ class Input(BoxWidget):
|
||||||
|
|
||||||
def on_text(self, char: str):
|
def on_text(self, char: str):
|
||||||
if not self.activated: return # ignore si ce widget est désactivé / non sélectionné
|
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
|
||||||
|
|
||||||
self.text += char # ajoute le caractère au label
|
self.text += char # ajoute le caractère au label
|
||||||
|
|
||||||
if self.regex is not None: # si il y a un regex de validation, applique le pour vérifier le texte
|
if self.regex is not None: # si il y a un regex de validation, applique le pour vérifier le texte
|
||||||
|
|
|
@ -57,7 +57,7 @@ class Scroller(BoxWidget):
|
||||||
**dict_filter_prefix("label_", kwargs)
|
**dict_filter_prefix("label_", kwargs)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.add_listener("on_click_release", lambda rel_x, *_: self._refresh_cursor(rel_x))
|
self.add_listener("on_click_release", lambda _, rel_x, *__: self._refresh_cursor(rel_x))
|
||||||
|
|
||||||
self._from = from_
|
self._from = from_
|
||||||
self._to = to
|
self._to = to
|
||||||
|
@ -100,6 +100,7 @@ class Scroller(BoxWidget):
|
||||||
def value(self, value: float):
|
def value(self, value: float):
|
||||||
if not self.from_ <= value <= self.to: raise ValueError(f"The value is not in range")
|
if not self.from_ <= value <= self.to: raise ValueError(f"The value is not in range")
|
||||||
self._value = value
|
self._value = value
|
||||||
|
self.trigger_event("on_value_change")
|
||||||
self._refresh()
|
self._refresh()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Reference in a new issue