Browse Source

direct: fix Python 3 support in Pmw-based tools

Fixes #276
rdb 7 years ago
parent
commit
b0b32b9d6a
1 changed files with 23 additions and 0 deletions
  1. 23 0
      direct/src/showbase/TkGlobal.py

+ 23 - 0
direct/src/showbase/TkGlobal.py

@@ -12,5 +12,28 @@ else:
 if '_Pmw' in sys.modules:
     sys.modules['_Pmw'].__name__ = '_Pmw'
 
+# Hack to workaround broken Pmw.NoteBook in Python 3
+def bordercolors(root, colorName):
+    lightRGB = []
+    darkRGB = []
+    for value in Pmw.Color.name2rgb(root, colorName, 1):
+        value40pc = (14 * value) // 10
+        if value40pc > int(Pmw.Color._MAX_RGB):
+            value40pc = int(Pmw.Color._MAX_RGB)
+        valueHalfWhite = (int(Pmw.Color._MAX_RGB) + value) // 2;
+        lightRGB.append(max(value40pc, valueHalfWhite))
+
+        darkValue = (60 * value) // 100
+        darkRGB.append(darkValue)
+
+    return (
+        '#%04x%04x%04x' % (lightRGB[0], lightRGB[1], lightRGB[2]),
+        '#%04x%04x%04x' % (darkRGB[0], darkRGB[1], darkRGB[2])
+    )
+
+Pmw.Color.bordercolors = bordercolors
+del bordercolors
+
+
 def spawnTkLoop():
     base.spawnTkLoop()