Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F4505
base.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
base.py
View Options
from
k.ui
import
*
KEY
=
(
50
,
50
)
KEY_TOP
=
(
KEY
[
0
],
KEY
[
1
]
-
20
)
GAP_TOP
=
15
INFO_TRY_MODS
=
'NOTHING: This key does nothing on its own. Try using a modifier key (e.g. Shift, Ctrl) first.'
INFO_MOD
=
'NOTHING: This is a modifier key and does nothing on its own. Try using it in combination with another key.'
INFO_NONE
=
'NOTHING: Try changing order or combination.'
class
Keys
(
KPanel
):
def
__init__
(
self
,
panel
,
anchors
,
container
):
super
()
.
__init__
(
panel
.
k
,
anchors
,
container
,
relative_rect
=
pygame
.
Rect
((
10
,
20
),
(
WIDTH
-
PWIDTH
-
30
,
300
)))
self
.
panel
=
panel
self
.
keys
=
{
}
self
.
nops
=
{
}
self
.
info
=
{
}
self
.
pushed
=
[
]
def
key
(
self
,
key
,
label
,
pos
=
(
0
,
0
),
size
=
KEY
,
left
=
None
,
top
=
None
,
info
=
None
):
self
.
_add_
(
True
,
key
,
label
,
pos
,
size
,
left
,
top
)
if
not
info
:
info
=
INFO_TRY_MODS
self
.
info
[(
key
,)]
=
info
.
strip
()
def
nop
(
self
,
key
,
label
,
pos
=
(
0
,
0
),
size
=
KEY
,
left
=
None
,
top
=
None
):
self
.
_add_
(
False
,
key
,
label
,
pos
,
size
,
left
,
top
)
def
_add_
(
self
,
used
,
key
,
label
,
pos
,
size
,
left
,
top
):
if
key
in
self
.
keys
or
key
in
self
.
nops
:
raise
RuntimeError
(
f
'key already assigned: {key}'
)
anchors
=
ANCHOR
if
left
:
elem
=
self
.
keys
[
left
]
if
left
in
self
.
keys
else
self
.
nops
[
left
]
anchors
=
target
(
elem
,
'left'
,
anchors
)
if
not
top
and
'top_target'
in
elem
.
anchors
:
anchors
=
target
(
elem
.
anchors
[
'top_target'
],
'top'
,
anchors
)
if
top
:
elem
=
self
.
keys
[
top
]
if
top
in
self
.
keys
else
self
.
nops
[
top
]
anchors
=
target
(
elem
,
'top'
,
anchors
)
if
isinstance
(
size
,
int
):
size
=
(
KEY
[
0
]
+
size
,
KEY
[
1
])
if
used
:
self
.
keys
[
key
]
=
pygame_gui
.
elements
.
UIButton
(
text
=
label
,
manager
=
self
.
k
.
gui
,
container
=
self
.
container
,
anchors
=
anchors
,
relative_rect
=
pygame
.
Rect
(
pos
,
size
))
else
:
self
.
nops
[
key
]
=
pygame_gui
.
elements
.
UITextEntryLine
(
manager
=
self
.
k
.
gui
,
container
=
self
.
container
,
anchors
=
anchors
,
relative_rect
=
pygame
.
Rect
(
pos
,
size
))
self
.
nops
[
key
]
.
set_text
(
label
)
self
.
nops
[
key
]
.
disable
()
def
combo
(
self
,
keys
,
info
):
if
keys
in
self
.
info
:
raise
RuntimeError
(
f
'key combo info already registered: {keys}'
)
self
.
info
[
keys
]
=
info
def
pushed_keys
(
self
):
if
len
(
self
.
pushed
)
>
0
:
try
:
info
=
self
.
info
[
tuple
(
self
.
pushed
)]
except
KeyError
:
info
=
INFO_NONE
labels
=
[
self
.
keys
[
key
]
.
text
for
key
in
self
.
pushed
]
self
.
panel
.
key_info
(
labels
,
info
)
else
:
self
.
reset
()
def
reset
(
self
):
for
button
in
self
.
keys
.
values
():
button
.
enable
()
self
.
pushed
=
[
]
self
.
panel
.
btn_reset
.
disable
()
self
.
panel
.
key_info
(
None
,
None
)
def
hide
(
self
):
super
()
.
hide
()
self
.
reset
()
def
keydown
(
self
,
key
):
if
key
in
self
.
keys
and
key
not
in
self
.
pushed
:
self
.
panel
.
btn_reset
.
enable
()
self
.
pushed
.
append
(
key
)
self
.
keys
[
key
]
.
disable
()
self
.
pushed_keys
()
def
keyup
(
self
,
key
):
if
key
in
self
.
pushed
:
del
self
.
pushed
[
self
.
pushed
.
index
(
key
)]
self
.
keys
[
key
]
.
enable
()
self
.
pushed_keys
()
def
click
(
self
,
element
,
target
=
None
):
for
key
,
button
in
self
.
keys
.
items
():
if
element
is
button
:
if
key
not
in
self
.
pushed
:
self
.
panel
.
btn_reset
.
enable
()
self
.
pushed
.
append
(
key
)
button
.
disable
()
self
.
pushed_keys
()
return
True
return
False
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Wed, Sep 16, 4:53 AM (5 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3690
Default Alt Text
base.py (3 KB)
Attached To
Mode
rK Media System
Attached
Detach File
Event Timeline
Log In to Comment