sverpykit 0.2.10__tar.gz → 0.2.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sverpykit-0.2.10 → sverpykit-0.2.12}/PKG-INFO +1 -1
- {sverpykit-0.2.10 → sverpykit-0.2.12}/pyproject.toml +1 -1
- sverpykit-0.2.12/sverpykit/Ui/TextBlock.py +122 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/Runtime.py +5 -1
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/PKG-INFO +1 -1
- sverpykit-0.2.10/sverpykit/Ui/TextBlock.py +0 -39
- {sverpykit-0.2.10 → sverpykit-0.2.12}/LICENSE +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/README.md +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/setup.cfg +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Collide/Collide.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Draw/Draw.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Objects/Entity.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/Button.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/DropDown.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/SearchBar.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/Window.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/__init__.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/Config.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/initialize.py +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/SOURCES.txt +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/dependency_links.txt +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/requires.txt +0 -0
- {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
from sverpykit.core import Config
|
|
2
|
+
from sverpykit.Draw import Draw
|
|
3
|
+
from sverpykit.Ui import Window
|
|
4
|
+
from typing import Callable, Any
|
|
5
|
+
import pygame
|
|
6
|
+
|
|
7
|
+
class TextBlock:
|
|
8
|
+
def __init__(
|
|
9
|
+
self,
|
|
10
|
+
rect: pygame.Rect,
|
|
11
|
+
text: str,
|
|
12
|
+
font: str = "default",
|
|
13
|
+
newline: bool = True
|
|
14
|
+
):
|
|
15
|
+
self.rect = rect
|
|
16
|
+
self.text = text
|
|
17
|
+
self.text_surfs: list[dict] = [{"text": Draw.render_text(str(text), name=font), "newline": newline}]
|
|
18
|
+
self.font = font
|
|
19
|
+
|
|
20
|
+
self.owner = None
|
|
21
|
+
|
|
22
|
+
self.scrolled = 0
|
|
23
|
+
self.last_size = 0
|
|
24
|
+
self.pressed = False
|
|
25
|
+
|
|
26
|
+
def draw(self, display):
|
|
27
|
+
display = display if display is not None else Config.screen
|
|
28
|
+
|
|
29
|
+
offset_x = 0
|
|
30
|
+
offset_y = 0
|
|
31
|
+
for payload in self.text_surfs:
|
|
32
|
+
Draw.draw_surface(
|
|
33
|
+
payload["text"], (
|
|
34
|
+
self.rect.x + offset_x,
|
|
35
|
+
self.rect.y + offset_y
|
|
36
|
+
),
|
|
37
|
+
display=display
|
|
38
|
+
)
|
|
39
|
+
if payload.get("hyperlink", None):
|
|
40
|
+
pygame.draw.rect(
|
|
41
|
+
display,
|
|
42
|
+
(100, 100, 255),
|
|
43
|
+
pygame.Rect(
|
|
44
|
+
offset_x + self.rect.x,
|
|
45
|
+
offset_y + payload["text"].get_height()-5 + self.rect.y,
|
|
46
|
+
payload["text"].get_width(),
|
|
47
|
+
3
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
if payload.get("newline", True):
|
|
51
|
+
offset_y += payload["text"].get_height()
|
|
52
|
+
offset_x = 0
|
|
53
|
+
else:
|
|
54
|
+
offset_x += payload["text"].get_width()
|
|
55
|
+
self.last_size = offset_y
|
|
56
|
+
|
|
57
|
+
def events(self):
|
|
58
|
+
mp = pygame.mouse.get_pos()
|
|
59
|
+
if self.owner:
|
|
60
|
+
mp = (
|
|
61
|
+
mp[0] - self.owner.rect.x - self.rect.x,
|
|
62
|
+
mp[1] - self.owner.rect.y - self.rect.y
|
|
63
|
+
)
|
|
64
|
+
else:
|
|
65
|
+
mp (
|
|
66
|
+
mp[0] - self.rect.x,
|
|
67
|
+
mp[1] - self.rect.y
|
|
68
|
+
)
|
|
69
|
+
click = pygame.mouse.get_pressed()[0]
|
|
70
|
+
for event in pygame.event.get():
|
|
71
|
+
if event.type == pygame.MOUSEWHEEL:
|
|
72
|
+
self.scrolled = max(0, min(self.last_size, self.scrolled+event.y))
|
|
73
|
+
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
|
|
74
|
+
click = True
|
|
75
|
+
|
|
76
|
+
if not click:
|
|
77
|
+
self.pressed = False
|
|
78
|
+
return
|
|
79
|
+
if self.pressed:
|
|
80
|
+
return
|
|
81
|
+
self.pressed = True
|
|
82
|
+
|
|
83
|
+
offset_x = 0
|
|
84
|
+
offset_y = 0
|
|
85
|
+
for payload in self.text_surfs:
|
|
86
|
+
if not payload.get("hyperlink", None):
|
|
87
|
+
if payload.get("newline", True):
|
|
88
|
+
offset_x = 0
|
|
89
|
+
offset_y += payload["text"].get_height()
|
|
90
|
+
else:
|
|
91
|
+
offset_x += payload["text"].get_width()
|
|
92
|
+
continue
|
|
93
|
+
|
|
94
|
+
text_rect = pygame.Rect(offset_x, offset_y, payload["text"].get_width(), payload["text"].get_height())
|
|
95
|
+
|
|
96
|
+
if text_rect.collidepoint(mp):
|
|
97
|
+
payload["hyperlink"][0](*payload["hyperlink"][1])
|
|
98
|
+
|
|
99
|
+
if payload.get("newline", True):
|
|
100
|
+
offset_x = 0
|
|
101
|
+
offset_y += payload["text"].get_height()
|
|
102
|
+
else:
|
|
103
|
+
offset_x += payload["text"].get_width()
|
|
104
|
+
|
|
105
|
+
def change_text(self, text: str):
|
|
106
|
+
self.text = text
|
|
107
|
+
self.text_surfs = [{"text": Draw.render_text(part, name=self.font) for part in text.split("\n")}]
|
|
108
|
+
|
|
109
|
+
def add_text(
|
|
110
|
+
self,
|
|
111
|
+
text: str,
|
|
112
|
+
font: str,
|
|
113
|
+
color: tuple[int, int, int],
|
|
114
|
+
hyperlink: tuple[Callable, list[Any]] | None = None,
|
|
115
|
+
newline: bool = False
|
|
116
|
+
):
|
|
117
|
+
self.text = self.text + "\n" + text
|
|
118
|
+
self.text_surfs.append({
|
|
119
|
+
"text": Draw.render_text(text, True, color, font),
|
|
120
|
+
"hyperlink": hyperlink,
|
|
121
|
+
"newline": newline
|
|
122
|
+
})
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from sverpykit.Ui.Window import Window
|
|
2
|
+
from sverpykit.Ui.TextBlock import TextBlock
|
|
2
3
|
from sverpykit.core import Config
|
|
3
4
|
import pygame
|
|
4
5
|
|
|
@@ -10,11 +11,14 @@ def add_layer(
|
|
|
10
11
|
rectangle: pygame.Rect,
|
|
11
12
|
components: list,
|
|
12
13
|
color: tuple[int, int, int] = (150, 150, 150)
|
|
13
|
-
) ->
|
|
14
|
+
) -> Window:
|
|
14
15
|
"""
|
|
15
16
|
:return: Returns nothing.
|
|
16
17
|
"""
|
|
17
18
|
w = Window(ui_layers, rectangle, components, color)
|
|
19
|
+
for component in w.components:
|
|
20
|
+
if isinstance(component, TextBlock):
|
|
21
|
+
component.owner = w
|
|
18
22
|
ui_layers.append(w)
|
|
19
23
|
return w
|
|
20
24
|
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
from sverpykit.core import Config
|
|
2
|
-
from sverpykit.Draw import Draw
|
|
3
|
-
import pygame
|
|
4
|
-
|
|
5
|
-
class TextBlock:
|
|
6
|
-
def __init__(
|
|
7
|
-
self,
|
|
8
|
-
rect: pygame.Rect,
|
|
9
|
-
text: str,
|
|
10
|
-
font: str = "default"
|
|
11
|
-
):
|
|
12
|
-
self.rect = rect
|
|
13
|
-
self.text = text
|
|
14
|
-
self.text_surfs = [Draw.render_text(str(text), name=font)]
|
|
15
|
-
self.font = font
|
|
16
|
-
|
|
17
|
-
def draw(self, display):
|
|
18
|
-
display = display if display is not None else Config.screen
|
|
19
|
-
|
|
20
|
-
offset_y = 0
|
|
21
|
-
for surf in self.text_surfs:
|
|
22
|
-
Draw.draw_surface(
|
|
23
|
-
surf, (
|
|
24
|
-
self.rect.x, self.rect.y + offset_y
|
|
25
|
-
),
|
|
26
|
-
display = display
|
|
27
|
-
)
|
|
28
|
-
offset_y += surf.get_height()
|
|
29
|
-
|
|
30
|
-
def events(self):
|
|
31
|
-
pass
|
|
32
|
-
|
|
33
|
-
def change_text(self, text: str):
|
|
34
|
-
self.text = text
|
|
35
|
-
self.text_surfs = [Draw.render_text(part, name=self.font) for part in text.split("\n")]
|
|
36
|
-
|
|
37
|
-
def add_text(self, text: str, font: str, color: tuple[int, int, int]):
|
|
38
|
-
self.text = self.text + "\n" + text
|
|
39
|
-
self.text_surfs.append(Draw.render_text(text, True, color, font))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|