Skip to content

Commit

Permalink
Move set_allowed, set_blocked, get_blocked to python.
Browse files Browse the repository at this point in the history
  • Loading branch information
gresm committed Aug 14, 2024
1 parent 0e21061 commit 2e9eabb
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 159 deletions.
31 changes: 12 additions & 19 deletions buildconfig/stubs/pygame/_event.pyi
Original file line number Diff line number Diff line change
@@ -1,31 +1,24 @@
from typing import (
Any,
List,
Optional,
Union,
Type,
)
from __future__ import annotations

from ._common import Sequence, EventLike

_EventTypes = Union[int, Sequence[int]]
_EventTypes = int | Sequence[int]

def pump(dopump: bool, /) -> None: ...
def get(
eventtype: Optional[_EventTypes] = None,
pump: Any = True,
exclude: Optional[_EventTypes] = None,
) -> List[EventLike]: ...
eventtype: _EventTypes | None = None,
pump: bool = True,
exclude: _EventTypes | None = None,
) -> list[EventLike]: ...
def poll() -> EventLike: ...
def wait(timeout: int = 0) -> EventLike: ...
def peek(eventtype: Optional[_EventTypes] = None, pump: Any = True) -> bool: ...
def clear(eventtype: Optional[_EventTypes] = None, pump: Any = True) -> None: ...
def set_blocked(type: Optional[_EventTypes], /) -> None: ...
def set_allowed(type: Optional[_EventTypes], /) -> None: ...
def get_blocked(type: _EventTypes, /) -> bool: ...
def peek(eventtype: _EventTypes | None = None, pump: bool = True) -> bool: ...
def clear(eventtype: _EventTypes | None = None, pump: bool = True) -> None: ...
def set_grab(grab: bool, /) -> None: ...
def get_grab() -> bool: ...
def allowed_get(type: int, /) -> bool: ...
def allowed_set(type: int, val: bool, /): ...
def allowed_set(type: int, val: bool, /) -> None: ...
def post(event: EventLike, /) -> bool: ...
def register_event_class(cls: Type[EventLike]): ...
def register_event_class(cls: type[EventLike]) -> None: ...
def _internal_mod_init() -> None: ...
def _internal_mod_quit() -> None: ...
30 changes: 13 additions & 17 deletions buildconfig/stubs/pygame/event.pyi
Original file line number Diff line number Diff line change
@@ -1,37 +1,33 @@
from typing import (
Any,
Dict,
List,
Optional,
Union,
)
from __future__ import annotations

from typing import Any

from ._common import Sequence, EventLike

class Event(EventLike):
...

_EventTypes = Union[int, Sequence[int]]
_EventTypes = int | Sequence[int]

def pump() -> None: ...
def get(
eventtype: Optional[_EventTypes] = None,
eventtype: _EventTypes | None = None,
pump: Any = True,
exclude: Optional[_EventTypes] = None,
) -> List[Event]: ...
exclude: _EventTypes | None = None,
) -> list[Event]: ...
def poll() -> Event: ...
def wait(timeout: int = 0) -> Event: ...
def peek(eventtype: Optional[_EventTypes] = None, pump: Any = True) -> bool: ...
def clear(eventtype: Optional[_EventTypes] = None, pump: Any = True) -> None: ...
def peek(eventtype: _EventTypes | None = None, pump: Any = True) -> bool: ...
def clear(eventtype: _EventTypes | None = None, pump: Any = True) -> None: ...
def event_name(type: int) -> str: ...
def set_blocked(type: Optional[_EventTypes], /) -> None: ...
def set_allowed(type: Optional[_EventTypes], /) -> None: ...
def set_blocked(type: _EventTypes | None, /) -> None: ...
def set_allowed(type: _EventTypes | None, /) -> None: ...
def get_blocked(type: _EventTypes, /) -> bool: ...
def set_grab(grab: bool, /) -> None: ...
def get_grab() -> bool: ...
def post(event: Event, /) -> bool: ...
def custom_type() -> int: ...
def init(): ...
def quit(): ...
def init() -> None: ...
def quit() -> None: ...

EventType = Event
109 changes: 3 additions & 106 deletions src_c/_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -1878,42 +1878,11 @@ pg_event_post(PyObject *self, PyObject *obj)
}
}

// TODO
static PyObject *
pg_event_set_allowed(PyObject *self, PyObject *obj)
pg_event_allowed_set(PyObject *self, PyObject *args)
{
Py_ssize_t len;
int loop, type;
PyObject *seq;
VIDEO_INIT_CHECK();

if (obj == Py_None) {
int i;
for (i = SDL_FIRSTEVENT; i < SDL_LASTEVENT; i++) {
PG_SetEventEnabled(i, SDL_TRUE);
}
}
else {
seq = _pg_eventtype_as_seq(obj, &len);
if (!seq)
return NULL;

for (loop = 0; loop < len; loop++) {
type = _pg_eventtype_from_seq(seq, loop);
if (type == -1) {
Py_DECREF(seq);
return NULL;
}
PG_SetEventEnabled(_pg_pgevent_proxify(type), SDL_TRUE);
}
Py_DECREF(seq);
}
Py_RETURN_NONE;
}

static PyObject *
pg_event_allowed_set(PyObject *self, PyObject *args)
{
int e_type, e_flag;
PyObject *e_flago;

Expand Down Expand Up @@ -1946,6 +1915,8 @@ pg_event_allowed_set(PyObject *self, PyObject *args)
static PyObject *
pg_event_allowed_get(PyObject *self, PyObject *obj)
{
VIDEO_INIT_CHECK();

int e_type = PyLong_AsLong(obj);

if (PyErr_Occurred())
Expand All @@ -1961,74 +1932,6 @@ pg_event_allowed_get(PyObject *self, PyObject *obj)
Py_RETURN_FALSE;
}

// TODO
static PyObject *
pg_event_set_blocked(PyObject *self, PyObject *obj)
{
Py_ssize_t len;
int loop, type;
PyObject *seq;
VIDEO_INIT_CHECK();

if (obj == Py_None) {
int i;
/* Start at PGPOST_EVENTBEGIN */
for (i = PGPOST_EVENTBEGIN; i < SDL_LASTEVENT; i++) {
PG_SetEventEnabled(i, SDL_FALSE);
}
}
else {
seq = _pg_eventtype_as_seq(obj, &len);
if (!seq)
return NULL;

for (loop = 0; loop < len; loop++) {
type = _pg_eventtype_from_seq(seq, loop);
if (type == -1) {
Py_DECREF(seq);
return NULL;
}
PG_SetEventEnabled(_pg_pgevent_proxify(type), SDL_FALSE);
}
Py_DECREF(seq);
}
/* Never block SDL_WINDOWEVENT, we need them for translation */
PG_SetEventEnabled(SDL_WINDOWEVENT, SDL_TRUE);
/* Never block PGE_KEYREPEAT too, its needed for pygame internal use */
PG_SetEventEnabled(PGE_KEYREPEAT, SDL_TRUE);
Py_RETURN_NONE;
}

// TODO
static PyObject *
pg_event_get_blocked(PyObject *self, PyObject *obj)
{
Py_ssize_t len;
int loop, type, isblocked = 0;
PyObject *seq;

VIDEO_INIT_CHECK();

seq = _pg_eventtype_as_seq(obj, &len);
if (!seq)
return NULL;

for (loop = 0; loop < len; loop++) {
type = _pg_eventtype_from_seq(seq, loop);
if (type == -1) {
Py_DECREF(seq);
return NULL;
}
if (PG_EventEnabled(_pg_pgevent_proxify(type)) == SDL_FALSE) {
isblocked = 1;
break;
}
}

Py_DECREF(seq);
return PyBool_FromLong(isblocked);
}

static PyObject *
pg_event_register_event_class(PyObject *self, PyObject *obj)
{
Expand Down Expand Up @@ -2069,12 +1972,6 @@ static PyMethodDef _event_methods[] = {
DOC_EVENT_PEEK},
{"post", (PyCFunction)pg_event_post, METH_O, DOC_EVENT_POST},

{"set_allowed", (PyCFunction)pg_event_set_allowed, METH_O,
DOC_EVENT_SETALLOWED},
{"set_blocked", (PyCFunction)pg_event_set_blocked, METH_O,
DOC_EVENT_SETBLOCKED},
{"get_blocked", (PyCFunction)pg_event_get_blocked, METH_O,
DOC_EVENT_GETBLOCKED},
{"allowed_get", (PyCFunction)pg_event_allowed_get, METH_O},
{"allowed_set", (PyCFunction)pg_event_allowed_set, METH_VARARGS},
{"register_event_class", (PyCFunction)pg_event_register_event_class,
Expand Down
Loading

0 comments on commit 2e9eabb

Please sign in to comment.