Browse Source

Added light panel

Mark Mine 21 years ago
parent
commit
8ced1a6368
1 changed files with 55 additions and 0 deletions
  1. 55 0
      direct/src/tkwidgets/Valuator.py

+ 55 - 0
direct/src/tkwidgets/Valuator.py

@@ -681,3 +681,58 @@ def rgbPanel(nodePath, callback = None, style = 'mini'):
     
     
     return vgp
     return vgp
 
 
+
+def lightRGBPanel(light, style = 'mini'):
+    # Color picker for lights
+    def popupColorPicker():
+        # Can pass in current color with: color = (255, 0, 0)
+        color = tkColorChooser.askcolor(
+            parent = vgp.interior(),
+            # Initialize it to current color
+            initialcolor = tuple(vgp.get()[:3]))[0]
+        if color:
+            vgp.set((color[0], color[1], color[2], vgp.getAt(3)))
+    def printToLog():
+        n = light.getName()
+        c=light.getColor()
+        print n + (".setColor(%.3f, %.3f, %.3f, %.3f)"%(c[0],c[1],c[2],c[3]))
+    # Check init color
+    initColor = light.getColor() * 255.0
+    # Create entry scale group
+    vgp = ValuatorGroupPanel(title = 'RGBA Panel: ' + light.getName(),
+                             dim = 4,
+                             labels = ['R','G','B','A'],
+                             value = [int(initColor[0]),
+                                      int(initColor[1]),
+                                      int(initColor[2]),
+                                      int(initColor[3])],
+                             type = 'slider',
+                             valuator_style = style,
+                             valuator_min = 0,
+                             valuator_max = 255,
+                             valuator_resolution = 1,
+                             # Destroy not withdraw panel on dismiss
+                             fDestroy = 1)
+    # Update menu button
+    vgp.component('menubar').component('Valuator Group-button')['text'] = (
+        'Light Control Panel')
+    # Add a print button which will also serve as a color tile
+    pButton = Button(vgp.interior(), text = 'Print to Log',
+                     bg = getTkColorString(initColor),
+                     command = printToLog)
+    pButton.pack(expand = 1, fill = BOTH)
+    # Update menu
+    menu = vgp.component('menubar').component('Valuator Group-menu')
+    # System color picker
+    menu.insert_command(index = 4, label = 'Popup Color Picker',
+                        command = popupColorPicker)
+    menu.insert_command(index = 5, label = 'Print to log',
+                        command = printToLog)
+    def setLightColor(color):
+        light.setColor(Vec4(color[0]/255.0, color[1]/255.0,
+                            color[2]/255.0, color[3]/255.0))
+        # Update color chip button
+        pButton['bg'] = getTkColorString(color)
+    vgp['command'] = setLightColor
+    return vgp
+