Browse Source

First pass, working with placeholder art!

M. Ian Graham 18 years ago
parent
commit
0c7e4a83b9
1 changed files with 59 additions and 0 deletions
  1. 59 0
      direct/src/gui/DirectCheckBox.py

+ 59 - 0
direct/src/gui/DirectCheckBox.py

@@ -0,0 +1,59 @@
+from direct.gui.DirectGui import *
+from pandac.PandaModules import *
+
+
+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
+            apply(self['command'], [self['isChecked']] + self['extraArgs'])
+