diff --git a/source/gui/regex.py b/source/gui/regex.py new file mode 100644 index 0000000..1b505b3 --- /dev/null +++ b/source/gui/regex.py @@ -0,0 +1,12 @@ +from math import inf + + +def number(min_length: int = 0, max_length: int = inf) -> str: + return r"\d{%s,%s}" % (min_length, max_length if max_length < inf else "") + + +ipv4_check, ipv4_type = r"\d{1,3}(\.\d{1,3}){3}", r"[\d\.]{0,15}" +port_check, port_type = number(min_length=1, max_length=5), number(min_length=0, max_length=5) + +username_check, username_type = r".{1,16}", r".{0,16}" + diff --git a/source/gui/scene/RoomCreate.py b/source/gui/scene/RoomCreate.py index 70997b6..c7db5af 100644 --- a/source/gui/scene/RoomCreate.py +++ b/source/gui/scene/RoomCreate.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from source.gui import widget, texture +from source.gui import widget, texture, regex from source.gui.scene import RoomHost from source.gui.scene.abc import Scene from source.network.packet import PacketSettings @@ -44,8 +44,8 @@ class RoomCreate(Scene): style=texture.Input.Style1, - type_regex=r"\d{0,5}", - check_regex=r"\d{1,5}", + type_regex=regex.port_type, + check_regex=regex.port_check, label_text="52321" ) @@ -67,7 +67,8 @@ class RoomCreate(Scene): x=0.2, y=0.45, width=0.15, height=0.1, - type_regex=r".{0,16}", + type_regex=regex.username_type, + check_regex=regex.username_check, style=texture.Input.Style1, @@ -89,8 +90,8 @@ class RoomCreate(Scene): x=0.2, y=0.86, width=0.1, height=0.08, - type_regex=r"\d{0,4}", - check_regex=r"\d+", + type_regex=regex.number(min_length=0, max_length=4), + check_regex=regex.number(min_length=1, max_length=4), style=texture.Input.Style1, @@ -110,8 +111,8 @@ class RoomCreate(Scene): x=0.2, y=0.76, width=0.1, height=0.08, - type_regex=r"\d{0,4}", - check_regex=r"\d+", + type_regex=regex.number(min_length=0, max_length=4), + check_regex=regex.number(min_length=1, max_length=4), style=texture.Input.Style1, @@ -201,8 +202,8 @@ class RoomCreate(Scene): x=0.7, y=0.68, width=0.2, height=0.08, - type_regex=r"\d{0,4}", - check_regex=r"\d+", + type_regex=regex.number(min_length=0, max_length=4), + check_regex=regex.number(min_length=1, max_length=4), style=texture.Input.Style1, diff --git a/source/gui/scene/RoomJoin.py b/source/gui/scene/RoomJoin.py index c0d8f25..59fe14a 100644 --- a/source/gui/scene/RoomJoin.py +++ b/source/gui/scene/RoomJoin.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Optional from source import network from source.gui.scene.abc import Scene -from source.gui import widget, texture +from source.gui import widget, texture, regex if TYPE_CHECKING: from source.gui.window import Window @@ -29,7 +29,8 @@ class RoomJoin(Scene): widget.Input, x=0.4, y=0.55, width=0.2, height=0.1, - type_regex=r".{0,16}", + type_regex=regex.username_type, + check_regex=regex.username_check, style=texture.Input.Style1, @@ -42,8 +43,8 @@ class RoomJoin(Scene): widget.Input, x=0.4, y=0.45, width=0.13, height=0.1, - type_regex=r"[\d\.]{0,15}", - check_regex=r"\d{1,3}(\.\d{1,3}){3}", + type_regex=regex.ipv4_type, + check_regex=regex.ipv4_check, style=texture.Input.Style1, @@ -54,8 +55,8 @@ class RoomJoin(Scene): widget.Input, x=0.53, y=0.45, width=0.07, height=0.1, - type_regex=r"\d{0,5}", - check_regex=r"\d{1,5}", + type_regex=regex.port_type, + check_regex=regex.port_check, label_text="52321",