mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
*** empty log message ***
This commit is contained in:
parent
be485738fa
commit
1e4f7df0ae
@ -1,201 +1,203 @@
|
||||
from ShowBaseGlobal import *
|
||||
import PandaObject
|
||||
import Frame
|
||||
import GuiFrame
|
||||
import Button
|
||||
import GuiLabel
|
||||
import Sign
|
||||
|
||||
font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
|
||||
|
||||
class ScrollingLabel(PandaObject.PandaObject):
|
||||
|
||||
# special methods
|
||||
def __init__(self, name, itemList):
|
||||
|
||||
self.name = name
|
||||
self.eventName = self.name
|
||||
self.frame = Frame.Frame(name)
|
||||
self.frame.setOffset(0.015)
|
||||
self.item = 0
|
||||
self.items = []
|
||||
self.keyFocus = 1
|
||||
|
||||
# create the new title
|
||||
label = GuiLabel.GuiLabel.makeSimpleTextLabel(self.name, font)
|
||||
label.setForegroundColor(1., 0., 0., 1.)
|
||||
label.setBackgroundColor(1., 1., 1., 0.)
|
||||
self.title = Sign.Sign(self.name, label)
|
||||
self.frame.addItem(self.title)
|
||||
|
||||
# create a sign for each item in itemList
|
||||
for item in itemList:
|
||||
thisLabel = GuiLabel.GuiLabel.makeSimpleTextLabel(item, font)
|
||||
thisLabel.setForegroundColor(0., 0., 0., 1.)
|
||||
thisLabel.setBackgroundColor(1., 1., 1., 1.)
|
||||
thisSign = Sign.Sign(item, thisLabel)
|
||||
self.items.append(thisSign)
|
||||
# add each item temporarily
|
||||
self.frame.addItem(thisSign)
|
||||
|
||||
# make all labels the same width
|
||||
self.frame.makeWideAsWidest()
|
||||
|
||||
# remove all labels except the first
|
||||
for itemNum in range(1, len(self.items)):
|
||||
self.frame.removeItem(self.items[itemNum])
|
||||
|
||||
# pack the first label under the name
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
|
||||
# create the scroll buttons
|
||||
self.leftButton = Button.Button(self.name + "-left", " < ")
|
||||
self.leftButton.getGuiItem().setDownRolloverEvent(self.name + "-left")
|
||||
self.frame.addItem(self.leftButton)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.LEFT,
|
||||
self.title)
|
||||
self.rightButton = Button.Button(self.name + "-right", " > ")
|
||||
self.rightButton.getGuiItem().setDownRolloverEvent(self.name +
|
||||
"-right")
|
||||
self.frame.addItem(self.rightButton)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.RIGHT,
|
||||
self.title)
|
||||
|
||||
# listen for the scroll buttons
|
||||
self.accept(self.name + "-left", self.handleLeftButton)
|
||||
self.accept(self.name + "-right", self.handleRightButton)
|
||||
# listen for keyboard hits
|
||||
self.setKeyFocus(1)
|
||||
|
||||
# refresh the frame
|
||||
self.frame.recompute()
|
||||
|
||||
|
||||
def cleanup(self):
|
||||
# remove gui items
|
||||
del(self.frame)
|
||||
for item in self.items:
|
||||
del(item)
|
||||
|
||||
# ignore events
|
||||
self.ignore(self.name + "-left")
|
||||
self.ignore(self.name + "-right")
|
||||
self.setKeyFocus(0)
|
||||
|
||||
# accessing
|
||||
def getTitle(self):
|
||||
return self.name
|
||||
|
||||
def setTitle(self, name):
|
||||
self.name = name
|
||||
self.title.setText(name)
|
||||
self.frame.recompute()
|
||||
|
||||
def getItem(self):
|
||||
return self.items[self.item]
|
||||
|
||||
def setItem(self, item):
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = item
|
||||
self.addItem()
|
||||
|
||||
def getEventName(self):
|
||||
return self.eventName
|
||||
|
||||
def setEventName(self, eventName):
|
||||
self.eventName = eventName
|
||||
|
||||
def setPos(self, x, y):
|
||||
self.frame.setPos(x, y)
|
||||
self.frame.recompute()
|
||||
|
||||
def setScale(self, scale):
|
||||
self.frame.setScale(scale)
|
||||
self.frame.recompute()
|
||||
|
||||
def getKeyFocus(self):
|
||||
return self.keyFocus
|
||||
|
||||
def setKeyFocus(self, focus):
|
||||
self.keyFocus = focus
|
||||
if (focus == 1):
|
||||
# listen for keyboard hits
|
||||
self.accept("left-up", self.handleLeftArrow)
|
||||
self.accept("right-up", self.handleRightArrow)
|
||||
else:
|
||||
# ignore keyboard hits
|
||||
self.ignore("left-up")
|
||||
self.ignore("right-up")
|
||||
|
||||
# actions
|
||||
def recompute(self):
|
||||
self.frame.recompute()
|
||||
|
||||
def manage(self):
|
||||
self.frame.manage()
|
||||
|
||||
def unmanage(self):
|
||||
self.frame.unmanage()
|
||||
|
||||
def handleLeftButton(self):
|
||||
# update the current item and the scroll label
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = self.item - 1
|
||||
if (self.item < 0):
|
||||
self.item = len(self.items) - 1
|
||||
self.addItem()
|
||||
|
||||
def handleRightButton(self):
|
||||
# update the current item and the scroll label
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = self.item + 1
|
||||
if (self.item >= len(self.items)):
|
||||
self.item = 0
|
||||
self.addItem()
|
||||
|
||||
def handleLeftArrow(self):
|
||||
# make the button toggle
|
||||
self.leftButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.leftButton)
|
||||
# then act like a mouse click
|
||||
self.handleLeftButton()
|
||||
|
||||
def handleRightArrow(self):
|
||||
# make the button toggle
|
||||
self.rightButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.rightButton)
|
||||
# then act like a mouse click
|
||||
self.handleRightButton()
|
||||
|
||||
def spawnButtonUpTask(self, button):
|
||||
def buttonUp(state):
|
||||
state.button.getGuiItem().up()
|
||||
return Task.done
|
||||
task = Task.Task(buttonUp)
|
||||
task.button = button
|
||||
taskMgr.spawnTaskNamed(Task.doLater(.035, task, "buttonUp-later"),
|
||||
"doLater-buttonUp-later")
|
||||
|
||||
def addItem(self):
|
||||
self.frame.addItem(self.items[self.item])
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
self.items[self.item].manage()
|
||||
self.frame.recompute()
|
||||
messenger.send(self.eventName, [self.item])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
from ShowBaseGlobal import *
|
||||
import PandaObject
|
||||
import Frame
|
||||
import GuiFrame
|
||||
import Button
|
||||
import GuiLabel
|
||||
import Sign
|
||||
|
||||
font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
|
||||
|
||||
class ScrollingLabel(PandaObject.PandaObject):
|
||||
|
||||
# special methods
|
||||
def __init__(self, name, itemList):
|
||||
|
||||
self.name = name
|
||||
self.eventName = self.name
|
||||
self.frame = Frame.Frame(name)
|
||||
self.frame.setOffset(0.015)
|
||||
self.item = 0
|
||||
self.items = []
|
||||
self.keyFocus = 1
|
||||
|
||||
# create the new title
|
||||
label = GuiLabel.GuiLabel.makeSimpleTextLabel(self.name, font)
|
||||
label.setForegroundColor(1., 0., 0., 1.)
|
||||
label.setBackgroundColor(1., 1., 1., 0.)
|
||||
self.title = Sign.Sign(self.name, label)
|
||||
self.frame.addItem(self.title)
|
||||
|
||||
# create a sign for each item in itemList
|
||||
for item in itemList:
|
||||
thisLabel = GuiLabel.GuiLabel.makeSimpleTextLabel(item, font)
|
||||
thisLabel.setForegroundColor(0., 0., 0., 1.)
|
||||
thisLabel.setBackgroundColor(1., 1., 1., 1.)
|
||||
thisSign = Sign.Sign(item, thisLabel)
|
||||
self.items.append(thisSign)
|
||||
# add each item temporarily
|
||||
self.frame.addItem(thisSign)
|
||||
|
||||
# make all labels the same width
|
||||
self.frame.makeWideAsWidest()
|
||||
|
||||
# remove all labels except the first
|
||||
for itemNum in range(1, len(self.items)):
|
||||
self.frame.removeItem(self.items[itemNum])
|
||||
|
||||
# pack the first label under the name
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
|
||||
# create the scroll buttons
|
||||
self.leftButton = Button.Button(self.name + "-left", " < ")
|
||||
self.leftButton.getGuiItem().setDownRolloverEvent(self.name + "-left")
|
||||
self.leftButton.getGuiItem().setUpRolloverEvent(self.name + "-rollover")
|
||||
self.frame.addItem(self.leftButton)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.LEFT,
|
||||
self.title)
|
||||
self.rightButton = Button.Button(self.name + "-right", " > ")
|
||||
self.rightButton.getGuiItem().setDownRolloverEvent(self.name +
|
||||
"-right")
|
||||
self.rightButton.getGuiItem().setUpRolloverEvent(self.name + "-rollover")
|
||||
self.frame.addItem(self.rightButton)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.RIGHT,
|
||||
self.title)
|
||||
|
||||
# listen for the scroll buttons
|
||||
self.accept(self.name + "-left", self.handleLeftButton)
|
||||
self.accept(self.name + "-right", self.handleRightButton)
|
||||
# listen for keyboard hits
|
||||
self.setKeyFocus(1)
|
||||
|
||||
# refresh the frame
|
||||
self.frame.recompute()
|
||||
|
||||
|
||||
def cleanup(self):
|
||||
# remove gui items
|
||||
del(self.frame)
|
||||
for item in self.items:
|
||||
del(item)
|
||||
|
||||
# ignore events
|
||||
self.ignore(self.name + "-left")
|
||||
self.ignore(self.name + "-right")
|
||||
self.setKeyFocus(0)
|
||||
|
||||
# accessing
|
||||
def getTitle(self):
|
||||
return self.name
|
||||
|
||||
def setTitle(self, name):
|
||||
self.name = name
|
||||
self.title.setText(name)
|
||||
self.frame.recompute()
|
||||
|
||||
def getItem(self):
|
||||
return self.items[self.item]
|
||||
|
||||
def setItem(self, item):
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = item
|
||||
self.addItem()
|
||||
|
||||
def getEventName(self):
|
||||
return self.eventName
|
||||
|
||||
def setEventName(self, eventName):
|
||||
self.eventName = eventName
|
||||
|
||||
def setPos(self, x, y):
|
||||
self.frame.setPos(x, y)
|
||||
self.frame.recompute()
|
||||
|
||||
def setScale(self, scale):
|
||||
self.frame.setScale(scale)
|
||||
self.frame.recompute()
|
||||
|
||||
def getKeyFocus(self):
|
||||
return self.keyFocus
|
||||
|
||||
def setKeyFocus(self, focus):
|
||||
self.keyFocus = focus
|
||||
if (focus == 1):
|
||||
# listen for keyboard hits
|
||||
self.accept("left-up", self.handleLeftArrow)
|
||||
self.accept("right-up", self.handleRightArrow)
|
||||
else:
|
||||
# ignore keyboard hits
|
||||
self.ignore("left-up")
|
||||
self.ignore("right-up")
|
||||
|
||||
# actions
|
||||
def recompute(self):
|
||||
self.frame.recompute()
|
||||
|
||||
def manage(self):
|
||||
self.frame.manage()
|
||||
|
||||
def unmanage(self):
|
||||
self.frame.unmanage()
|
||||
|
||||
def handleLeftButton(self):
|
||||
# update the current item and the scroll label
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = self.item - 1
|
||||
if (self.item < 0):
|
||||
self.item = len(self.items) - 1
|
||||
self.addItem()
|
||||
|
||||
def handleRightButton(self):
|
||||
# update the current item and the scroll label
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = self.item + 1
|
||||
if (self.item >= len(self.items)):
|
||||
self.item = 0
|
||||
self.addItem()
|
||||
|
||||
def handleLeftArrow(self):
|
||||
# make the button toggle
|
||||
self.leftButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.leftButton)
|
||||
# then act like a mouse click
|
||||
self.handleLeftButton()
|
||||
|
||||
def handleRightArrow(self):
|
||||
# make the button toggle
|
||||
self.rightButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.rightButton)
|
||||
# then act like a mouse click
|
||||
self.handleRightButton()
|
||||
|
||||
def spawnButtonUpTask(self, button):
|
||||
def buttonUp(state):
|
||||
state.button.getGuiItem().up()
|
||||
return Task.done
|
||||
task = Task.Task(buttonUp)
|
||||
task.button = button
|
||||
taskMgr.spawnTaskNamed(Task.doLater(.035, task, "buttonUp-later"),
|
||||
"doLater-buttonUp-later")
|
||||
|
||||
def addItem(self):
|
||||
self.frame.addItem(self.items[self.item])
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
self.items[self.item].manage()
|
||||
self.frame.recompute()
|
||||
messenger.send(self.eventName, [self.item])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ class Loader:
|
||||
else:
|
||||
nodePath = None
|
||||
return nodePath
|
||||
|
||||
|
||||
def loadModelOnce(self, modelPath):
|
||||
"""loadModelOnce(self, string)
|
||||
Attempt to load a model from modelPool, if not present
|
||||
@ -58,6 +58,11 @@ class Loader:
|
||||
return (nodePath.copyTo(self.__base.hidden))
|
||||
else:
|
||||
return None
|
||||
|
||||
def unloadModel(self, modelPath):
|
||||
"""unloadModel(self, string)
|
||||
Loader.notify.info("Unloading model: %s" % (modelPath))
|
||||
ModelPool.releaseModel(modelPath)
|
||||
|
||||
# texture loading funcs
|
||||
def loadTexture(self, texturePath):
|
||||
@ -68,6 +73,10 @@ class Loader:
|
||||
texture = TexturePool.loadTexture(texturePath)
|
||||
return texture
|
||||
|
||||
def unloadTexture(self, texture):
|
||||
"""unloadTexture(self, texture)
|
||||
TexturePool.releaseTexture(texture)
|
||||
|
||||
# sound loading funcs
|
||||
def loadSound(self, soundPath):
|
||||
"""loadSound(self, string)
|
||||
@ -77,6 +86,10 @@ class Loader:
|
||||
sound = AudioPool.loadSound(soundPath)
|
||||
return sound
|
||||
|
||||
def unloadSound(self, sound):
|
||||
"""unloadSound(self, sound)
|
||||
AudioPool.releaseSound(sound)
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user