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.
Files changed (23) hide show
  1. {sverpykit-0.2.10 → sverpykit-0.2.12}/PKG-INFO +1 -1
  2. {sverpykit-0.2.10 → sverpykit-0.2.12}/pyproject.toml +1 -1
  3. sverpykit-0.2.12/sverpykit/Ui/TextBlock.py +122 -0
  4. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/Runtime.py +5 -1
  5. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/PKG-INFO +1 -1
  6. sverpykit-0.2.10/sverpykit/Ui/TextBlock.py +0 -39
  7. {sverpykit-0.2.10 → sverpykit-0.2.12}/LICENSE +0 -0
  8. {sverpykit-0.2.10 → sverpykit-0.2.12}/README.md +0 -0
  9. {sverpykit-0.2.10 → sverpykit-0.2.12}/setup.cfg +0 -0
  10. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Collide/Collide.py +0 -0
  11. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Draw/Draw.py +0 -0
  12. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Objects/Entity.py +0 -0
  13. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/Button.py +0 -0
  14. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/DropDown.py +0 -0
  15. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/SearchBar.py +0 -0
  16. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/Ui/Window.py +0 -0
  17. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/__init__.py +0 -0
  18. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/Config.py +0 -0
  19. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit/core/initialize.py +0 -0
  20. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/SOURCES.txt +0 -0
  21. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/dependency_links.txt +0 -0
  22. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/requires.txt +0 -0
  23. {sverpykit-0.2.10 → sverpykit-0.2.12}/sverpykit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sverpykit
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: A wrapper for pygame.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sverpykit"
7
- version = "0.2.10"
7
+ version = "0.2.12"
8
8
  description = "A wrapper for pygame."
9
9
  readme = "README.md"
10
10
  dependencies = [
@@ -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
- ) -> None:
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sverpykit
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: A wrapper for pygame.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -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