dgui: Add setTextPos, etc. aliases for setPos

setPos will be deprecated in a future version.

See #1041
This commit is contained in:
rdb 2020-12-26 13:59:19 +01:00
parent 55d43a1d57
commit d5c2dc6447
2 changed files with 265 additions and 12 deletions

View File

@ -313,43 +313,98 @@ class OnscreenText(NodePath):
text = property(getText, setText) text = property(getText, setText)
def setTextX(self, x):
self.setTextPos(x, self.__pos[1])
def setX(self, x): def setX(self, x):
self.setPos(x, self.__pos[1]) """
.. deprecated:: 1.11.0
Use `.setTextX()` method instead.
"""
self.setTextPos(x, self.__pos[1])
def setTextY(self, y):
self.setTextPos(self.__pos[0], y)
def setY(self, y): def setY(self, y):
self.setPos(self.__pos[0], y) """
.. deprecated:: 1.11.0
Use `.setTextY()` method instead.
"""
self.setTextPos(self.__pos[0], y)
def setTextPos(self, x, y=None):
"""
Position the onscreen text in 2d screen space
"""
if y is None:
self.__pos = tuple(x)
else:
self.__pos = (x, y)
self.updateTransformMat()
def getTextPos(self):
return self.__pos
text_pos = property(getTextPos, setTextPos)
def setPos(self, x, y): def setPos(self, x, y):
"""setPos(self, float, float) """setPos(self, float, float)
Position the onscreen text in 2d screen space Position the onscreen text in 2d screen space
.. deprecated:: 1.11.0
Use `.setTextPos()` method or `.text_pos` property instead.
""" """
self.__pos = (x, y) self.__pos = (x, y)
self.updateTransformMat() self.updateTransformMat()
def getPos(self): def getPos(self):
"""
.. deprecated:: 1.11.0
Use `.getTextPos()` method or `.text_pos` property instead.
"""
return self.__pos return self.__pos
pos = property(getPos, setPos) pos = property(getPos)
def setTextR(self, r):
"""setTextR(self, float)
Rotates the text around the screen's normal.
"""
self.__roll = -r
self.updateTransformMat()
def getTextR(self):
return -self.__roll
text_r = property(getTextR, setTextR)
def setRoll(self, roll): def setRoll(self, roll):
"""setRoll(self, float) """setRoll(self, float)
Rotate the onscreen text around the screen's normal Rotate the onscreen text around the screen's normal.
.. deprecated:: 1.11.0
Use ``setTextR(-roll)`` instead (note the negated sign).
""" """
self.__roll = roll self.__roll = roll
self.updateTransformMat() self.updateTransformMat()
def getRoll(self): def getRoll(self):
"""
.. deprecated:: 1.11.0
Use ``-getTextR()`` instead (note the negated sign).
"""
return self.__roll return self.__roll
roll = property(getRoll, setRoll) roll = property(getRoll, setRoll)
def setScale(self, sx, sy = None): def setTextScale(self, sx, sy = None):
"""setScale(self, float, float) """setTextScale(self, float, float)
Scale the text in 2d space. You may specify either a single Scale the text in 2d space. You may specify either a single
uniform scale, or two scales, or a tuple of two scales. uniform scale, or two scales, or a tuple of two scales.
""" """
if sy == None: if sy is None:
if isinstance(sx, tuple): if isinstance(sx, tuple):
self.__scale = sx self.__scale = sx
else: else:
@ -358,6 +413,38 @@ class OnscreenText(NodePath):
self.__scale = (sx, sy) self.__scale = (sx, sy)
self.updateTransformMat() self.updateTransformMat()
def getTextScale(self):
return self.__scale
text_scale = property(getTextScale, setTextScale)
def setScale(self, sx, sy = None):
"""setScale(self, float, float)
Scale the text in 2d space. You may specify either a single
uniform scale, or two scales, or a tuple of two scales.
.. deprecated:: 1.11.0
Use `.setTextScale()` method or `.text_scale` property instead.
"""
if sy is None:
if isinstance(sx, tuple):
self.__scale = sx
else:
self.__scale = (sx, sx)
else:
self.__scale = (sx, sy)
self.updateTransformMat()
def getScale(self):
"""
.. deprecated:: 1.11.0
Use `.getTextScale()` method or `.text_scale` property instead.
"""
return self.__scale
scale = property(getScale, setScale)
def updateTransformMat(self): def updateTransformMat(self):
assert(isinstance(self.textNode, TextNode)) assert(isinstance(self.textNode, TextNode))
mat = ( mat = (
@ -367,11 +454,6 @@ class OnscreenText(NodePath):
) )
self.textNode.setTransform(mat) self.textNode.setTransform(mat)
def getScale(self):
return self.__scale
scale = property(getScale, setScale)
def setWordwrap(self, wordwrap): def setWordwrap(self, wordwrap):
self.__wordwrap = wordwrap self.__wordwrap = wordwrap

View File

@ -0,0 +1,171 @@
from direct.gui.OnscreenText import OnscreenText
def test_onscreentext_text_pos():
text = OnscreenText(pos=(1, 2))
assert text['pos'] == (1, 2)
assert text.pos == (1, 2)
assert text.getPos() == (1, 2)
assert text.text_pos == (1, 2)
assert text.getTextPos() == (1, 2)
assert text.get_pos() == (0, 0, 0)
text.setTextPos(3, 4)
assert text['pos'] == (3, 4)
assert text.pos == (3, 4)
assert text.getPos() == (3, 4)
assert text.text_pos == (3, 4)
assert text.getTextPos() == (3, 4)
assert text.get_pos() == (0, 0, 0)
text.text_pos = (7, 8)
assert text['pos'] == (7, 8)
assert text.pos == (7, 8)
assert text.getPos() == (7, 8)
assert text.text_pos == (7, 8)
assert text.getTextPos() == (7, 8)
assert text.get_pos() == (0, 0, 0)
text.setPos(9, 10)
assert text['pos'] == (9, 10)
assert text.pos == (9, 10)
assert text.getPos() == (9, 10)
assert text.text_pos == (9, 10)
assert text.getTextPos() == (9, 10)
assert text.get_pos() == (0, 0, 0)
text['pos'] = (11, 12)
assert text['pos'] == (11, 12)
assert text.pos == (11, 12)
assert text.getPos() == (11, 12)
assert text.text_pos == (11, 12)
assert text.getTextPos() == (11, 12)
assert text.get_pos() == (0, 0, 0)
def test_onscreentext_node_pos():
text = OnscreenText()
text.set_pos(1, 2, 3)
assert text['pos'] == (0, 0)
assert text.pos == (0, 0)
assert text.getPos() == (0, 0)
assert text.text_pos == (0, 0)
assert text.getTextPos() == (0, 0)
assert text.get_pos() == (1, 2, 3)
def test_onscreentext_text_roll():
text = OnscreenText(roll=1)
assert text['roll'] == 1
assert text.roll == 1
assert text.getRoll() == 1
assert text.text_r == -1
assert text.getTextR() == -1
assert text.get_r() == 0
text.setTextR(2)
assert text['roll'] == -2
assert text.roll == -2
assert text.getRoll() == -2
assert text.text_r == 2
assert text.getTextR() == 2
assert text.get_r() == 0
text.text_r = 3
assert text['roll'] == -3
assert text.roll == -3
assert text.getRoll() == -3
assert text.text_r == 3
assert text.getTextR() == 3
assert text.get_r() == 0
text.setRoll(4)
assert text['roll'] == 4
assert text.roll == 4
assert text.getRoll() == 4
assert text.text_r == -4
assert text.getTextR() == -4
assert text.get_r() == 0
text['roll'] = 5
assert text['roll'] == 5
assert text.roll == 5
assert text.getRoll() == 5
assert text.text_r == -5
assert text.getTextR() == -5
assert text.get_r() == 0
def test_onscreentext_node_roll():
text = OnscreenText()
text.set_r(45)
assert text['roll'] == 0
assert text.roll == 0
assert text.getRoll() == 0
assert text.text_r == 0
assert text.getTextR() == 0
assert text.get_r() == 45
def test_onscreentext_text_scale():
text = OnscreenText(scale=(1, 2))
assert text['scale'] == (1, 2)
assert text.scale == (1, 2)
assert text.getScale() == (1, 2)
assert text.text_scale == (1, 2)
assert text.getTextScale() == (1, 2)
assert text.get_scale() == (1, 1, 1)
text.setTextScale(3, 4)
assert text['scale'] == (3, 4)
assert text.scale == (3, 4)
assert text.getScale() == (3, 4)
assert text.text_scale == (3, 4)
assert text.getTextScale() == (3, 4)
assert text.get_scale() == (1, 1, 1)
text.text_scale = (7, 8)
assert text['scale'] == (7, 8)
assert text.scale == (7, 8)
assert text.getScale() == (7, 8)
assert text.text_scale == (7, 8)
assert text.getTextScale() == (7, 8)
assert text.get_scale() == (1, 1, 1)
text.setScale(9, 10)
assert text['scale'] == (9, 10)
assert text.scale == (9, 10)
assert text.getScale() == (9, 10)
assert text.text_scale == (9, 10)
assert text.getTextScale() == (9, 10)
assert text.get_scale() == (1, 1, 1)
text['scale'] = (11, 12)
assert text['scale'] == (11, 12)
assert text.scale == (11, 12)
assert text.getScale() == (11, 12)
assert text.text_scale == (11, 12)
assert text.getTextScale() == (11, 12)
assert text.get_scale() == (1, 1, 1)
text.scale = 13
assert text['scale'] == (13, 13)
assert text.scale == (13, 13)
assert text.getScale() == (13, 13)
assert text.text_scale == (13, 13)
assert text.getTextScale() == (13, 13)
assert text.get_scale() == (1, 1, 1)
def test_onscreentext_node_scale():
text = OnscreenText()
text.set_scale(1, 2, 3)
assert text['scale'] == (0.07, 0.07)
assert text.scale == (0.07, 0.07)
assert text.getScale() == (0.07, 0.07)
assert text.text_scale == (0.07, 0.07)
assert text.getTextScale() == (0.07, 0.07)
assert text.get_scale() == (1, 2, 3)