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 :
|
||||
- Ecran de configuration de la partie
|
||||
- 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" (?)
|
||||
- Police d'écriture
|
||||
|
||||
- Voir si les event listener intégré à pyglet sont plus pratique que l'event propagation
|
||||
- Documenter
|
||||
- Ajouter plus d'event sur les widgets
|
||||
|
||||
- Ecran de victoire
|
||||
- Faire marcher le tchat
|
||||
|
|
|
@ -34,4 +34,4 @@ class Listener:
|
|||
:param kwargs: the kwargs of the callbacks
|
||||
"""
|
||||
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
|
||||
)
|
||||
|
||||
def board_ally_ready():
|
||||
def board_ally_ready(widget):
|
||||
self.boat_ready_ally = True
|
||||
PacketBoatPlaced().send_connection(connection)
|
||||
|
||||
|
@ -78,7 +78,7 @@ class Game(Scene):
|
|||
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.my_turn: return
|
||||
PacketBombPlaced(position=cell).send_connection(connection)
|
||||
|
@ -157,9 +157,9 @@ class Game(Scene):
|
|||
label_batch=self.batch_label,
|
||||
)
|
||||
|
||||
def send_chat():
|
||||
text = self.chat_input.text
|
||||
self.chat_input.text = ""
|
||||
def send_chat(widget):
|
||||
text = widget.text
|
||||
widget.text = ""
|
||||
|
||||
self.chat_log.text += "\n" + text
|
||||
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)
|
||||
|
||||
def button_connect(self, *_):
|
||||
def button_connect(self, widget, *_):
|
||||
network.Client(
|
||||
window=self.window,
|
||||
ip_address=self.entry_ip.text,
|
||||
|
@ -80,7 +80,7 @@ class RoomJoin(Scene):
|
|||
username="Client"
|
||||
).start()
|
||||
|
||||
def button_back_callback(self, *_):
|
||||
def button_back_callback(self, widget, *_):
|
||||
from source.gui.scene import MainMenu
|
||||
self.window.set_scene(MainMenu)
|
||||
|
||||
|
|
|
@ -63,6 +63,8 @@ class Checkbox(BoxWidget):
|
|||
@state.setter
|
||||
def state(self, state: bool):
|
||||
self._state = state
|
||||
self.trigger_event("on_state_change")
|
||||
self.trigger_event("on_checked" if state else "on_unchecked")
|
||||
self._refresh_tick()
|
||||
|
||||
def swap_state(self):
|
||||
|
|
|
@ -78,10 +78,9 @@ class GameGrid(BoxWidget):
|
|||
**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", self._refresh_cursor)
|
||||
|
||||
self.add_listener("on_hover", lambda _, *args: self._refresh_cursor(*args))
|
||||
|
||||
self._refresh_size()
|
||||
|
||||
|
|
|
@ -114,6 +114,8 @@ class Input(BoxWidget):
|
|||
|
||||
def on_text(self, char: str):
|
||||
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
|
||||
|
||||
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)
|
||||
)
|
||||
|
||||
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._to = to
|
||||
|
@ -100,6 +100,7 @@ class Scroller(BoxWidget):
|
|||
def value(self, value: float):
|
||||
if not self.from_ <= value <= self.to: raise ValueError(f"The value is not in range")
|
||||
self._value = value
|
||||
self.trigger_event("on_value_change")
|
||||
self._refresh()
|
||||
|
||||
@property
|
||||
|
|
Loading…
Reference in a new issue