pyglet 2.1.12__py3-none-any.whl → 3.0.dev1__py3-none-any.whl
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.
- pyglet/__init__.py +67 -61
- pyglet/__init__.pyi +15 -8
- pyglet/app/__init__.py +22 -13
- pyglet/app/async_app.py +212 -0
- pyglet/app/base.py +2 -1
- pyglet/app/{xlib.py → linux.py} +3 -3
- pyglet/config/__init__.py +101 -0
- pyglet/config/gl/__init__.py +30 -0
- pyglet/config/gl/egl.py +120 -0
- pyglet/config/gl/macos.py +262 -0
- pyglet/config/gl/windows.py +267 -0
- pyglet/config/gl/x11.py +142 -0
- pyglet/customtypes.py +43 -2
- pyglet/display/__init__.py +8 -6
- pyglet/display/base.py +3 -63
- pyglet/display/cocoa.py +12 -17
- pyglet/display/emscripten.py +39 -0
- pyglet/display/headless.py +23 -30
- pyglet/display/wayland.py +157 -0
- pyglet/display/win32.py +4 -17
- pyglet/display/xlib.py +19 -27
- pyglet/display/xlib_vidmoderestore.py +2 -2
- pyglet/enums.py +183 -0
- pyglet/event.py +0 -1
- pyglet/experimental/geoshader_sprite.py +15 -13
- pyglet/experimental/hidraw.py +6 -15
- pyglet/experimental/multitexture_sprite.py +31 -19
- pyglet/experimental/particles.py +13 -35
- pyglet/font/__init__.py +251 -85
- pyglet/font/base.py +116 -61
- pyglet/font/dwrite/__init__.py +349 -204
- pyglet/font/dwrite/dwrite_lib.py +27 -5
- pyglet/font/fontconfig.py +14 -6
- pyglet/font/freetype.py +138 -87
- pyglet/font/freetype_lib.py +19 -0
- pyglet/font/group.py +179 -0
- pyglet/font/harfbuzz/__init__.py +3 -3
- pyglet/font/pyodide_js.py +310 -0
- pyglet/font/quartz.py +319 -126
- pyglet/font/ttf.py +45 -3
- pyglet/font/user.py +14 -19
- pyglet/font/win32.py +45 -21
- pyglet/graphics/__init__.py +8 -787
- pyglet/graphics/allocation.py +115 -1
- pyglet/graphics/api/__init__.py +77 -0
- pyglet/graphics/api/base.py +299 -0
- pyglet/graphics/api/gl/__init__.py +58 -0
- pyglet/graphics/api/gl/base.py +24 -0
- pyglet/graphics/{vertexbuffer.py → api/gl/buffer.py} +104 -159
- pyglet/graphics/api/gl/cocoa/context.py +76 -0
- pyglet/graphics/api/gl/context.py +391 -0
- pyglet/graphics/api/gl/default_shaders.py +0 -0
- pyglet/graphics/api/gl/draw.py +627 -0
- pyglet/graphics/api/gl/egl/__init__.py +0 -0
- pyglet/graphics/api/gl/egl/context.py +92 -0
- pyglet/graphics/api/gl/enums.py +76 -0
- pyglet/graphics/api/gl/framebuffer.py +315 -0
- pyglet/graphics/api/gl/gl.py +5463 -0
- pyglet/graphics/api/gl/gl_info.py +188 -0
- pyglet/graphics/api/gl/global_opengl.py +226 -0
- pyglet/{gl → graphics/api/gl}/lib.py +34 -18
- pyglet/graphics/api/gl/shader.py +1476 -0
- pyglet/graphics/api/gl/shapes.py +55 -0
- pyglet/graphics/api/gl/sprite.py +102 -0
- pyglet/graphics/api/gl/state.py +219 -0
- pyglet/graphics/api/gl/text.py +190 -0
- pyglet/graphics/api/gl/texture.py +1526 -0
- pyglet/graphics/{vertexarray.py → api/gl/vertexarray.py} +11 -13
- pyglet/graphics/api/gl/vertexdomain.py +751 -0
- pyglet/graphics/api/gl/win32/__init__.py +0 -0
- pyglet/graphics/api/gl/win32/context.py +108 -0
- pyglet/graphics/api/gl/win32/wgl_info.py +24 -0
- pyglet/graphics/api/gl/xlib/__init__.py +0 -0
- pyglet/graphics/api/gl/xlib/context.py +174 -0
- pyglet/{gl → graphics/api/gl/xlib}/glx_info.py +26 -31
- pyglet/graphics/api/gl1/__init__.py +0 -0
- pyglet/{gl → graphics/api/gl1}/gl_compat.py +3 -2
- pyglet/graphics/api/gl2/__init__.py +0 -0
- pyglet/graphics/api/gl2/buffer.py +320 -0
- pyglet/graphics/api/gl2/draw.py +600 -0
- pyglet/graphics/api/gl2/global_opengl.py +122 -0
- pyglet/graphics/api/gl2/shader.py +200 -0
- pyglet/graphics/api/gl2/shapes.py +51 -0
- pyglet/graphics/api/gl2/sprite.py +79 -0
- pyglet/graphics/api/gl2/text.py +175 -0
- pyglet/graphics/api/gl2/vertexdomain.py +364 -0
- pyglet/graphics/api/webgl/__init__.py +233 -0
- pyglet/graphics/api/webgl/buffer.py +302 -0
- pyglet/graphics/api/webgl/context.py +234 -0
- pyglet/graphics/api/webgl/draw.py +590 -0
- pyglet/graphics/api/webgl/enums.py +76 -0
- pyglet/graphics/api/webgl/framebuffer.py +360 -0
- pyglet/graphics/api/webgl/gl.py +1537 -0
- pyglet/graphics/api/webgl/gl_info.py +130 -0
- pyglet/graphics/api/webgl/shader.py +1346 -0
- pyglet/graphics/api/webgl/shapes.py +92 -0
- pyglet/graphics/api/webgl/sprite.py +102 -0
- pyglet/graphics/api/webgl/state.py +227 -0
- pyglet/graphics/api/webgl/text.py +187 -0
- pyglet/graphics/api/webgl/texture.py +1227 -0
- pyglet/graphics/api/webgl/vertexarray.py +54 -0
- pyglet/graphics/api/webgl/vertexdomain.py +616 -0
- pyglet/graphics/api/webgl/webgl_js.pyi +307 -0
- pyglet/{image → graphics}/atlas.py +33 -32
- pyglet/graphics/base.py +10 -0
- pyglet/graphics/buffer.py +245 -0
- pyglet/graphics/draw.py +578 -0
- pyglet/graphics/framebuffer.py +26 -0
- pyglet/graphics/instance.py +178 -69
- pyglet/graphics/shader.py +267 -1553
- pyglet/graphics/state.py +83 -0
- pyglet/graphics/texture.py +703 -0
- pyglet/graphics/vertexdomain.py +695 -538
- pyglet/gui/ninepatch.py +10 -10
- pyglet/gui/widgets.py +120 -10
- pyglet/image/__init__.py +20 -1973
- pyglet/image/animation.py +12 -12
- pyglet/image/base.py +730 -0
- pyglet/image/codecs/__init__.py +9 -0
- pyglet/image/codecs/bmp.py +53 -30
- pyglet/image/codecs/dds.py +53 -31
- pyglet/image/codecs/gdiplus.py +38 -14
- pyglet/image/codecs/gdkpixbuf2.py +0 -2
- pyglet/image/codecs/js_image.py +99 -0
- pyglet/image/codecs/ktx2.py +161 -0
- pyglet/image/codecs/pil.py +1 -1
- pyglet/image/codecs/png.py +1 -1
- pyglet/image/codecs/wic.py +11 -2
- pyglet/info.py +26 -24
- pyglet/input/__init__.py +8 -0
- pyglet/input/base.py +163 -105
- pyglet/input/controller.py +13 -19
- pyglet/input/controller_db.py +39 -24
- pyglet/input/emscripten/__init__.py +18 -0
- pyglet/input/emscripten/gamepad_js.py +397 -0
- pyglet/input/linux/__init__.py +11 -5
- pyglet/input/linux/evdev.py +10 -11
- pyglet/input/linux/x11_xinput.py +2 -2
- pyglet/input/linux/x11_xinput_tablet.py +1 -1
- pyglet/input/macos/__init__.py +7 -2
- pyglet/input/macos/darwin_gc.py +559 -0
- pyglet/input/win32/__init__.py +1 -1
- pyglet/input/win32/directinput.py +34 -29
- pyglet/input/win32/xinput.py +11 -61
- pyglet/lib.py +3 -3
- pyglet/libs/__init__.py +1 -1
- pyglet/{gl → libs/darwin}/agl.py +1 -1
- pyglet/libs/darwin/cocoapy/__init__.py +2 -2
- pyglet/libs/darwin/cocoapy/cocoahelpers.py +181 -0
- pyglet/libs/darwin/cocoapy/cocoalibs.py +31 -0
- pyglet/libs/darwin/cocoapy/cocoatypes.py +27 -0
- pyglet/libs/darwin/cocoapy/runtime.py +81 -45
- pyglet/libs/darwin/coreaudio.py +4 -4
- pyglet/{gl → libs/darwin}/lib_agl.py +9 -8
- pyglet/libs/darwin/quartzkey.py +1 -3
- pyglet/libs/egl/__init__.py +2 -0
- pyglet/libs/egl/egl_lib.py +576 -0
- pyglet/libs/egl/eglext.py +51 -5
- pyglet/libs/linux/__init__.py +0 -0
- pyglet/libs/linux/egl/__init__.py +0 -0
- pyglet/libs/linux/egl/eglext.py +22 -0
- pyglet/libs/linux/glx/__init__.py +0 -0
- pyglet/{gl → libs/linux/glx}/glx.py +13 -14
- pyglet/{gl → libs/linux/glx}/glxext_arb.py +408 -192
- pyglet/{gl → libs/linux/glx}/glxext_mesa.py +1 -1
- pyglet/{gl → libs/linux/glx}/glxext_nv.py +345 -164
- pyglet/{gl → libs/linux/glx}/lib_glx.py +3 -2
- pyglet/libs/linux/wayland/__init__.py +0 -0
- pyglet/libs/linux/wayland/client.py +1068 -0
- pyglet/libs/linux/wayland/lib_wayland.py +207 -0
- pyglet/libs/linux/wayland/wayland_egl.py +38 -0
- pyglet/libs/{wayland → linux/wayland}/xkbcommon.py +26 -0
- pyglet/libs/{x11 → linux/x11}/xf86vmode.py +4 -4
- pyglet/libs/{x11 → linux/x11}/xinerama.py +2 -2
- pyglet/libs/{x11 → linux/x11}/xinput.py +10 -10
- pyglet/libs/linux/x11/xrandr.py +0 -0
- pyglet/libs/{x11 → linux/x11}/xrender.py +1 -1
- pyglet/libs/shared/__init__.py +0 -0
- pyglet/libs/shared/spirv/__init__.py +0 -0
- pyglet/libs/shared/spirv/lib_shaderc.py +85 -0
- pyglet/libs/shared/spirv/lib_spirv_cross.py +126 -0
- pyglet/libs/win32/__init__.py +27 -5
- pyglet/libs/win32/constants.py +59 -48
- pyglet/libs/win32/context_managers.py +20 -3
- pyglet/libs/win32/dinput.py +105 -88
- pyglet/{gl → libs/win32}/lib_wgl.py +52 -26
- pyglet/libs/win32/types.py +58 -23
- pyglet/{gl → libs/win32}/wgl.py +32 -25
- pyglet/{gl → libs/win32}/wglext_arb.py +364 -2
- pyglet/media/__init__.py +9 -10
- pyglet/media/codecs/__init__.py +12 -1
- pyglet/media/codecs/base.py +99 -96
- pyglet/media/codecs/ffmpeg.py +2 -2
- pyglet/media/codecs/ffmpeg_lib/libavformat.py +3 -8
- pyglet/media/codecs/webaudio_pyodide.py +111 -0
- pyglet/media/drivers/__init__.py +9 -4
- pyglet/media/drivers/base.py +4 -4
- pyglet/media/drivers/openal/__init__.py +1 -1
- pyglet/media/drivers/openal/adaptation.py +3 -3
- pyglet/media/drivers/pulse/__init__.py +1 -1
- pyglet/media/drivers/pulse/adaptation.py +3 -3
- pyglet/media/drivers/pyodide_js/__init__.py +8 -0
- pyglet/media/drivers/pyodide_js/adaptation.py +288 -0
- pyglet/media/drivers/xaudio2/adaptation.py +3 -3
- pyglet/media/player.py +276 -193
- pyglet/media/player_worker_thread.py +1 -1
- pyglet/model/__init__.py +39 -29
- pyglet/model/codecs/base.py +4 -4
- pyglet/model/codecs/gltf.py +3 -3
- pyglet/model/codecs/obj.py +71 -43
- pyglet/resource.py +129 -78
- pyglet/shapes.py +147 -177
- pyglet/sprite.py +47 -164
- pyglet/text/__init__.py +44 -54
- pyglet/text/caret.py +12 -7
- pyglet/text/document.py +19 -17
- pyglet/text/formats/html.py +2 -2
- pyglet/text/formats/structured.py +10 -40
- pyglet/text/layout/__init__.py +20 -13
- pyglet/text/layout/base.py +176 -287
- pyglet/text/layout/incremental.py +9 -10
- pyglet/text/layout/scrolling.py +7 -95
- pyglet/window/__init__.py +183 -172
- pyglet/window/cocoa/__init__.py +62 -51
- pyglet/window/cocoa/pyglet_delegate.py +2 -25
- pyglet/window/cocoa/pyglet_view.py +9 -8
- pyglet/window/dialog/__init__.py +184 -0
- pyglet/window/dialog/base.py +99 -0
- pyglet/window/dialog/darwin.py +121 -0
- pyglet/window/dialog/linux.py +72 -0
- pyglet/window/dialog/windows.py +194 -0
- pyglet/window/emscripten/__init__.py +779 -0
- pyglet/window/headless/__init__.py +44 -28
- pyglet/window/key.py +2 -0
- pyglet/window/mouse.py +2 -2
- pyglet/window/wayland/__init__.py +377 -0
- pyglet/window/win32/__init__.py +101 -46
- pyglet/window/xlib/__init__.py +104 -66
- {pyglet-2.1.12.dist-info → pyglet-3.0.dev1.dist-info}/METADATA +2 -3
- pyglet-3.0.dev1.dist-info/RECORD +322 -0
- {pyglet-2.1.12.dist-info → pyglet-3.0.dev1.dist-info}/WHEEL +1 -1
- pyglet/gl/__init__.py +0 -208
- pyglet/gl/base.py +0 -499
- pyglet/gl/cocoa.py +0 -309
- pyglet/gl/gl.py +0 -4625
- pyglet/gl/gl.pyi +0 -2320
- pyglet/gl/gl_compat.pyi +0 -3097
- pyglet/gl/gl_info.py +0 -190
- pyglet/gl/headless.py +0 -166
- pyglet/gl/wgl_info.py +0 -36
- pyglet/gl/wglext_nv.py +0 -1096
- pyglet/gl/win32.py +0 -268
- pyglet/gl/xlib.py +0 -295
- pyglet/image/buffer.py +0 -274
- pyglet/image/codecs/s3tc.py +0 -354
- pyglet/libs/x11/xrandr.py +0 -166
- pyglet-2.1.12.dist-info/RECORD +0 -234
- /pyglet/{libs/wayland → graphics/api/gl/cocoa}/__init__.py +0 -0
- /pyglet/libs/{egl → linux/egl}/egl.py +0 -0
- /pyglet/libs/{egl → linux/egl}/lib.py +0 -0
- /pyglet/libs/{ioctl.py → linux/ioctl.py} +0 -0
- /pyglet/libs/{wayland → linux/wayland}/gbm.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/__init__.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/cursorfont.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/xlib.py +0 -0
- /pyglet/libs/{x11 → linux/x11}/xsync.py +0 -0
- {pyglet-2.1.12.dist-info/licenses → pyglet-3.0.dev1.dist-info}/LICENSE +0 -0
pyglet/gui/ninepatch.py
CHANGED
|
@@ -2,12 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
-
from pyglet.
|
|
5
|
+
from pyglet.enums import BlendFactor
|
|
6
6
|
from pyglet.sprite import Sprite
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
|
-
from pyglet.image import
|
|
10
|
-
from pyglet.graphics import Batch, Group
|
|
9
|
+
from pyglet.image import _AbstractImage, Animation
|
|
10
|
+
from pyglet.graphics import Batch, Group, GeometryMode
|
|
11
11
|
from pyglet.text.layout import TextLayout
|
|
12
12
|
|
|
13
13
|
|
|
@@ -31,11 +31,11 @@ class NinePatch(Sprite):
|
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
33
|
def __init__(self,
|
|
34
|
-
img:
|
|
34
|
+
img: _AbstractImage | Animation,
|
|
35
35
|
x: float = 0, y: float = 0, z: float = 0,
|
|
36
36
|
width: int | None = None, height: int | None = None,
|
|
37
|
-
blend_src:
|
|
38
|
-
blend_dest:
|
|
37
|
+
blend_src: BlendFactor = BlendFactor.SRC_ALPHA,
|
|
38
|
+
blend_dest: BlendFactor = BlendFactor.ONE_MINUS_SRC_ALPHA,
|
|
39
39
|
batch: Batch | None = None,
|
|
40
40
|
group: Group | None = None):
|
|
41
41
|
"""Create a NinePatch instance.
|
|
@@ -71,11 +71,11 @@ class NinePatch(Sprite):
|
|
|
71
71
|
|
|
72
72
|
@classmethod
|
|
73
73
|
def create_around_layout(cls,
|
|
74
|
-
img:
|
|
74
|
+
img: _AbstractImage | Animation,
|
|
75
75
|
layout: TextLayout,
|
|
76
76
|
border: int = 0,
|
|
77
|
-
blend_src:
|
|
78
|
-
blend_dest:
|
|
77
|
+
blend_src: BlendFactor = BlendFactor.SRC_ALPHA,
|
|
78
|
+
blend_dest: BlendFactor = BlendFactor.ONE_MINUS_SRC_ALPHA,
|
|
79
79
|
batch: Batch | None = None,
|
|
80
80
|
group: Group | None = None):
|
|
81
81
|
"""Given a Label, create a NinePatch instance sized to surround it.
|
|
@@ -137,7 +137,7 @@ class NinePatch(Sprite):
|
|
|
137
137
|
uvs = [i for v in range(4) for h in range(4) for i in (uv_x + seg_w * h, uv_y + seg_h * v, 0)]
|
|
138
138
|
|
|
139
139
|
self._vertex_list = self.program.vertex_list_indexed(
|
|
140
|
-
16,
|
|
140
|
+
16, GeometryMode.TRIANGLE_STRIP, indices, self._batch, self._group,
|
|
141
141
|
position=('f', self._get_vertices()),
|
|
142
142
|
colors=('Bn', self._rgba * 16),
|
|
143
143
|
translate=('f', (self._x, self._y, self._z) * 16),
|
pyglet/gui/widgets.py
CHANGED
|
@@ -5,14 +5,15 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
import pyglet
|
|
8
|
+
|
|
8
9
|
from pyglet.event import EventDispatcher
|
|
9
|
-
from pyglet.graphics import Group
|
|
10
|
+
from pyglet.graphics import Batch, Group
|
|
10
11
|
from pyglet.text.caret import Caret
|
|
11
12
|
from pyglet.text.layout import IncrementalTextLayout
|
|
12
13
|
|
|
13
14
|
if TYPE_CHECKING:
|
|
14
|
-
from pyglet.
|
|
15
|
-
from pyglet.image import
|
|
15
|
+
from pyglet.customtypes import RGBColor
|
|
16
|
+
from pyglet.image import _AbstractImage
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
class WidgetBase(EventDispatcher):
|
|
@@ -135,7 +136,7 @@ class WidgetBase(EventDispatcher):
|
|
|
135
136
|
raise NotImplementedError('Value depends on control type!')
|
|
136
137
|
|
|
137
138
|
@value.setter
|
|
138
|
-
def value(self, value:
|
|
139
|
+
def value(self, value: float | bool) -> None:
|
|
139
140
|
raise NotImplementedError('Value depends on control type!')
|
|
140
141
|
|
|
141
142
|
def _check_hit(self, x: int, y: int) -> bool:
|
|
@@ -194,9 +195,9 @@ class PushButton(WidgetBase):
|
|
|
194
195
|
"""
|
|
195
196
|
|
|
196
197
|
def __init__(self, x: int, y: int,
|
|
197
|
-
pressed:
|
|
198
|
-
unpressed:
|
|
199
|
-
hover:
|
|
198
|
+
pressed: _AbstractImage,
|
|
199
|
+
unpressed: _AbstractImage,
|
|
200
|
+
hover: _AbstractImage | None = None,
|
|
200
201
|
batch: Batch | None = None,
|
|
201
202
|
group: Group | None = None) -> None:
|
|
202
203
|
"""Create a push button.
|
|
@@ -265,7 +266,7 @@ class PushButton(WidgetBase):
|
|
|
265
266
|
return
|
|
266
267
|
self._sprite.image = self._unpressed_img
|
|
267
268
|
self._pressed = False
|
|
268
|
-
self.dispatch_event('on_release'
|
|
269
|
+
self.dispatch_event('on_release')
|
|
269
270
|
|
|
270
271
|
def on_mouse_motion(self, x: int, y: int, dx: int, dy: int) -> None:
|
|
271
272
|
if not self.enabled or self._pressed:
|
|
@@ -288,13 +289,122 @@ PushButton.register_event_type('on_press')
|
|
|
288
289
|
PushButton.register_event_type('on_release')
|
|
289
290
|
|
|
290
291
|
|
|
292
|
+
class TextButton(WidgetBase):
|
|
293
|
+
"""Instance of a text push button.
|
|
294
|
+
|
|
295
|
+
Triggers the event 'on_press' when it is clicked by the mouse.
|
|
296
|
+
Triggers the event 'on_release' when the mouse is released.
|
|
297
|
+
"""
|
|
298
|
+
|
|
299
|
+
def __init__(self, x: int, y: int, text: str,
|
|
300
|
+
pressed_color: RGBColor = (255, 0, 0),
|
|
301
|
+
unpressed_color: RGBColor = (255, 255, 255),
|
|
302
|
+
hover_color: RGBColor = (0, 255, 0),
|
|
303
|
+
batch: Batch | None = None,
|
|
304
|
+
group: Group | None = None) -> None:
|
|
305
|
+
"""Create a push button.
|
|
306
|
+
|
|
307
|
+
Args:
|
|
308
|
+
x:
|
|
309
|
+
X coordinate of the push button.
|
|
310
|
+
y:
|
|
311
|
+
Y coordinate of the push button.
|
|
312
|
+
pressed_color:
|
|
313
|
+
Color to change text when the button is pressed.
|
|
314
|
+
unpressed_color:
|
|
315
|
+
Color to change text when the button isn't pressed.
|
|
316
|
+
hover_color:
|
|
317
|
+
Color to change text when the button is being hovered over.
|
|
318
|
+
batch:
|
|
319
|
+
Optional batch to add the push button to.
|
|
320
|
+
group:
|
|
321
|
+
Optional parent group of the push button.
|
|
322
|
+
"""
|
|
323
|
+
self._text = text
|
|
324
|
+
self._batch = batch or pyglet.graphics.Batch()
|
|
325
|
+
self._user_group = group
|
|
326
|
+
fg_group = Group(order=1, parent=group)
|
|
327
|
+
self._label = pyglet.text.Label(text=self._text, x=x, y=y, batch=batch, group=fg_group)
|
|
328
|
+
super().__init__(x, y, self._label.content_width, self._label.content_height)
|
|
329
|
+
self._pressed_color = pressed_color
|
|
330
|
+
self._unpressed_color = unpressed_color
|
|
331
|
+
self._hover_color = hover_color
|
|
332
|
+
self._pressed = False
|
|
333
|
+
|
|
334
|
+
@property
|
|
335
|
+
def text(self) -> str:
|
|
336
|
+
return self._text
|
|
337
|
+
|
|
338
|
+
@text.setter
|
|
339
|
+
def text(self, text: str) -> None:
|
|
340
|
+
self._text = text
|
|
341
|
+
self._label.text = text
|
|
342
|
+
|
|
343
|
+
def _update_position(self) -> None:
|
|
344
|
+
self._label.position = self._x, self._y, 0
|
|
345
|
+
|
|
346
|
+
@property
|
|
347
|
+
def value(self) -> bool:
|
|
348
|
+
"""Whether the button is pressed or not."""
|
|
349
|
+
return self._pressed
|
|
350
|
+
|
|
351
|
+
@value.setter
|
|
352
|
+
def value(self, value: bool) -> None:
|
|
353
|
+
assert type(value) is bool, "This Widget's value must be True or False."
|
|
354
|
+
self._pressed = value
|
|
355
|
+
self._label.color = self._pressed_color if self._pressed else self._unpressed_color
|
|
356
|
+
|
|
357
|
+
def update_groups(self, order: int) -> None:
|
|
358
|
+
self._label.group = Group(order=order + 1, parent=self._user_group)
|
|
359
|
+
|
|
360
|
+
def on_mouse_press(self, x: int, y: int, buttons: int, modifiers: int) -> None:
|
|
361
|
+
if not self.enabled or not self._check_hit(x, y):
|
|
362
|
+
return
|
|
363
|
+
self._label.color = self._pressed_color
|
|
364
|
+
self._pressed = True
|
|
365
|
+
self.dispatch_event('on_press', self)
|
|
366
|
+
|
|
367
|
+
def on_mouse_release(self, x: int, y: int, buttons: int, modifiers: int) -> None:
|
|
368
|
+
if not self.enabled or not self._pressed:
|
|
369
|
+
return
|
|
370
|
+
self._label.color = self._hover_color if self._check_hit(x, y) else self._unpressed_color
|
|
371
|
+
self._pressed = False
|
|
372
|
+
self.dispatch_event('on_release', self)
|
|
373
|
+
|
|
374
|
+
def on_mouse_leave(self, x: int, y: int) -> None:
|
|
375
|
+
if not self.enabled or not self._pressed:
|
|
376
|
+
return
|
|
377
|
+
self._label.color = self._unpressed_color
|
|
378
|
+
self._pressed = False
|
|
379
|
+
self.dispatch_event('on_release')
|
|
380
|
+
|
|
381
|
+
def on_mouse_motion(self, x: int, y: int, dx: int, dy: int) -> None:
|
|
382
|
+
if not self.enabled or self._pressed:
|
|
383
|
+
return
|
|
384
|
+
self._label.color = self._hover_color if self._check_hit(x, y) else self._unpressed_color
|
|
385
|
+
|
|
386
|
+
def on_mouse_drag(self, x: int, y: int, dx: int, dy: int, buttons: int, modifiers: int) -> None:
|
|
387
|
+
if not self.enabled or self._pressed:
|
|
388
|
+
return
|
|
389
|
+
self._label.color = self._hover_color if self._check_hit(x, y) else self._unpressed_color
|
|
390
|
+
|
|
391
|
+
def on_press(self, widget: TextButton) -> None:
|
|
392
|
+
"""Event: Dispatched when the button is clicked."""
|
|
393
|
+
|
|
394
|
+
def on_release(self, widget: TextButton) -> None:
|
|
395
|
+
"""Event: Dispatched when the button is released."""
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
TextButton.register_event_type('on_press')
|
|
399
|
+
TextButton.register_event_type('on_release')
|
|
400
|
+
|
|
291
401
|
class ToggleButton(PushButton):
|
|
292
402
|
"""Instance of a toggle button.
|
|
293
403
|
|
|
294
404
|
Triggers the event 'on_toggle' when the mouse is pressed or released.
|
|
295
405
|
"""
|
|
296
406
|
|
|
297
|
-
def _get_release_image(self, x: int, y: int) ->
|
|
407
|
+
def _get_release_image(self, x: int, y: int) -> _AbstractImage:
|
|
298
408
|
return self._hover_img if self._check_hit(x, y) else self._unpressed_img
|
|
299
409
|
|
|
300
410
|
def on_mouse_press(self, x: int, y: int, buttons: int, modifiers: int) -> None:
|
|
@@ -325,7 +435,7 @@ class Slider(WidgetBase):
|
|
|
325
435
|
"""
|
|
326
436
|
|
|
327
437
|
def __init__(self, x: int, y: int,
|
|
328
|
-
base:
|
|
438
|
+
base: _AbstractImage, knob: _AbstractImage,
|
|
329
439
|
edge: int = 0,
|
|
330
440
|
batch: Batch | None = None,
|
|
331
441
|
group: Group | None = None) -> None:
|