| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- from direct.gui.DirectGui import DGG, DirectButton
- from panda3d.core import PGButton
- class DirectCheckBox(DirectButton):
- """
- DirectCheckBox(parent) - Create a DirectGuiWidget which responds
- to mouse clicks by setting a state of True or False and executes
- a callback function if defined.
- Uses an image swap rather than a text change to indicate state.
- """
- def __init__(self, parent = None, **kw):
- optiondefs = (
- # Define type of DirectGuiWidget
- ('pgFunc', PGButton, None),
- ('numStates', 4, None),
- ('state', DGG.NORMAL, None),
- ('relief', DGG.RAISED, None),
- ('invertedFrames', (1,), None),
- # Command to be called on button click
- ('command', None, None),
- ('extraArgs', [], None),
- # Which mouse buttons can be used to click the button
- ('commandButtons', (DGG.LMB,), self.setCommandButtons),
- # Sounds to be used for button events
- ('rolloverSound', DGG.getDefaultRolloverSound(), self.setRolloverSound),
- ('clickSound', DGG.getDefaultClickSound(), self.setClickSound),
- # Can only be specified at time of widget contruction
- # Do the text/graphics appear to move when the button is clicked
- ('pressEffect', 1, DGG.INITOPT),
- ('uncheckedImage', None, None),
- ('checkedImage', None, None),
- ('isChecked', False, None),
- )
- # Merge keyword options with default options
- self.defineoptions(kw, optiondefs)
- DirectButton.__init__(self,parent)
- self.initialiseoptions(DirectCheckBox)
- def commandFunc(self, event):
- self['isChecked'] = not self['isChecked']
- if self['isChecked']:
- self['image'] = self['checkedImage']
- else:
- self['image'] = self['uncheckedImage']
- self.setImage()
- if self['command']:
- # Pass any extra args to command
- self['command'](*[self['isChecked']] + self['extraArgs'])
|