mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
98 lines
2.5 KiB
Python
98 lines
2.5 KiB
Python
from ShowBaseGlobal import *
|
|
from DirectObject import *
|
|
import GuiManager
|
|
import GuiLabel
|
|
import GuiButton
|
|
import Vec3
|
|
|
|
guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node(), base.renderGui.node())
|
|
font = loader.loadModelNode("phase_3/models/fonts/ttf-comic")
|
|
|
|
class Button(DirectObject):
|
|
|
|
def __init__(self, name, label=None):
|
|
self.name = name
|
|
# if no label given, use the button name
|
|
if (label == None):
|
|
self.label = name
|
|
else:
|
|
self.label = label
|
|
# up
|
|
self.l1 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
|
|
self.l1.setForegroundColor(0., 0., 0., 1.)
|
|
self.l1.thaw()
|
|
# roll-over up
|
|
self.l2 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
|
|
self.l2.setForegroundColor(0., 0., 0., 1.)
|
|
self.l2.setBackgroundColor(1., 1., 0., 1.)
|
|
self.l2.thaw()
|
|
# roll-over down
|
|
self.l3 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
|
|
self.l3.setForegroundColor(1., 1., 1., 1.)
|
|
self.l3.setBackgroundColor(0., 0., 0., 1.)
|
|
self.l3.thaw()
|
|
self.button = GuiButton.GuiButton(self.name, self.l1, self.l2,
|
|
self.l3, self.l3, self.l1)
|
|
self.setScale(0.1)
|
|
self.managed = 0
|
|
|
|
return None
|
|
|
|
def cleanup(self):
|
|
if (self.managed):
|
|
self.button.unmanage()
|
|
self.l1 = None
|
|
self.l2 = None
|
|
self.button = None
|
|
return None
|
|
|
|
def __str__(self):
|
|
return "Button: %s" % self.name
|
|
|
|
|
|
def getName(self):
|
|
return self.name
|
|
|
|
def getLabel(self):
|
|
return self.label
|
|
|
|
def getGuiItem(self):
|
|
return self.button
|
|
|
|
def getWidth(self):
|
|
# assume all labels have the same width
|
|
return self.l1.getWidth()
|
|
|
|
def setWidth(self, width):
|
|
self.l1.setWidth(width)
|
|
self.l2.setWidth(width)
|
|
self.l3.setWidth(width)
|
|
|
|
def freeze(self):
|
|
self.l1.freeze()
|
|
self.l2.freeze()
|
|
self.l3.freeze()
|
|
self.button.freeze()
|
|
|
|
def thaw(self):
|
|
self.l1.thaw()
|
|
self.l2.thaw()
|
|
self.l3.thaw()
|
|
self.button.thaw()
|
|
|
|
def manage(self):
|
|
self.button.manage(guiMgr, base.eventMgr.eventHandler)
|
|
self.managed = 1
|
|
|
|
def unmanage(self):
|
|
self.button.unmanage()
|
|
self.managed = 0
|
|
|
|
def setPos(self, x, y):
|
|
v3 = Vec3.Vec3(x, 0., y)
|
|
self.button.setPos(v3)
|
|
|
|
def setScale(self, scale):
|
|
self.button.setScale(scale)
|
|
|