form can no longer be submitted if they contain invalid elements
This commit is contained in:
parent
fce1ed0abf
commit
9388c0eedb
4 changed files with 20 additions and 3 deletions
4
NOTE.md
4
NOTE.md
|
@ -10,9 +10,7 @@ A faire :
|
|||
- Voir les TODOs
|
||||
|
||||
3. Bug :
|
||||
- Si le port est déjà utilisé, le jeu n'indique par l'erreur à l'hôte
|
||||
- Les champs invalides n'empêchent pas de faire l'action
|
||||
- Si la fenêtre est fermée, l'erreur "delete_vao AttributeError: 'NoneType' object has no attribute 'current_context'" apparait parfois
|
||||
- /
|
||||
|
||||
4. Vérification :
|
||||
- Tester sur Linux
|
||||
|
|
|
@ -257,6 +257,8 @@ class RoomCreate(Scene):
|
|||
self.start.add_listener("on_click_release", lambda *_: self.confirm())
|
||||
|
||||
def confirm(self):
|
||||
if not self.valid: return # si tous les formulaires ne sont pas correctement remplis, ignore
|
||||
|
||||
port = int(self.input_port.text)
|
||||
|
||||
settings = PacketSettings(
|
||||
|
|
|
@ -93,6 +93,8 @@ class RoomJoin(Scene):
|
|||
self.thread: Optional[network.Client] = None
|
||||
|
||||
def button_connect(self, widget, *_):
|
||||
if not self.valid: return # si tous les formulaires ne sont pas correctement remplis, ignore
|
||||
|
||||
self.status.text = "Connexion..."
|
||||
self.status.label.color = (255, 255, 255, 255) # blanc
|
||||
widget.remove_listener("on_click_release", self.button_connect)
|
||||
|
|
|
@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Type
|
|||
import pyglet
|
||||
|
||||
from source.gui.event import EventPropagationMixin
|
||||
from source.gui.widget import Input
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from source.gui.window import Window
|
||||
|
@ -60,6 +61,20 @@ class Scene(ABC, EventPropagationMixin):
|
|||
|
||||
self._widgets.clear()
|
||||
|
||||
# shortcut
|
||||
|
||||
@property
|
||||
def valid(self) -> bool:
|
||||
"""
|
||||
Indique si la scène à tout ses éléments de formulaire valides
|
||||
:return: True si tous les éléments (Input, ...) sont correctement rempli.
|
||||
"""
|
||||
|
||||
for widget in self._widgets:
|
||||
if isinstance(widget, Input) and widget.invalid: return False
|
||||
|
||||
return True
|
||||
|
||||
# event
|
||||
|
||||
def on_draw(self) -> None:
|
||||
|
|
Loading…
Reference in a new issue