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
|
- Voir les TODOs
|
||||||
|
|
||||||
3. Bug :
|
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 :
|
4. Vérification :
|
||||||
- Tester sur Linux
|
- Tester sur Linux
|
||||||
|
|
|
@ -257,6 +257,8 @@ class RoomCreate(Scene):
|
||||||
self.start.add_listener("on_click_release", lambda *_: self.confirm())
|
self.start.add_listener("on_click_release", lambda *_: self.confirm())
|
||||||
|
|
||||||
def confirm(self):
|
def confirm(self):
|
||||||
|
if not self.valid: return # si tous les formulaires ne sont pas correctement remplis, ignore
|
||||||
|
|
||||||
port = int(self.input_port.text)
|
port = int(self.input_port.text)
|
||||||
|
|
||||||
settings = PacketSettings(
|
settings = PacketSettings(
|
||||||
|
|
|
@ -93,6 +93,8 @@ class RoomJoin(Scene):
|
||||||
self.thread: Optional[network.Client] = None
|
self.thread: Optional[network.Client] = None
|
||||||
|
|
||||||
def button_connect(self, widget, *_):
|
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.text = "Connexion..."
|
||||||
self.status.label.color = (255, 255, 255, 255) # blanc
|
self.status.label.color = (255, 255, 255, 255) # blanc
|
||||||
widget.remove_listener("on_click_release", self.button_connect)
|
widget.remove_listener("on_click_release", self.button_connect)
|
||||||
|
|
|
@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Type
|
||||||
import pyglet
|
import pyglet
|
||||||
|
|
||||||
from source.gui.event import EventPropagationMixin
|
from source.gui.event import EventPropagationMixin
|
||||||
|
from source.gui.widget import Input
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from source.gui.window import Window
|
from source.gui.window import Window
|
||||||
|
@ -60,6 +61,20 @@ class Scene(ABC, EventPropagationMixin):
|
||||||
|
|
||||||
self._widgets.clear()
|
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
|
# event
|
||||||
|
|
||||||
def on_draw(self) -> None:
|
def on_draw(self) -> None:
|
||||||
|
|
Loading…
Reference in a new issue