panda3d/doc/SceneEditor/controllerWindow.py
2005-01-19 23:27:15 +00:00

698 lines
35 KiB
Python

#################################################################
# controllerWindow.py
# Written by Yi-Hong Lin, yihhongl@andrew.cmu.edu, 2004
#################################################################
# Import Tkinter, Pmw, and the floater code from this directory tree.
from direct.tkwidgets.AppShell import *
from direct.showbase.TkGlobal import *
from direct.tkwidgets import VectorWidgets
from direct.tkwidgets import Floater
import string
# Define the Category
KEYBORAD = 'Keyboard-'
TRACKER = 'Tarcker-'
class controllerWindow(AppShell):
#################################################################
# This will open a talk window for user to set the control mechanism
# In here, user can choose to control what object by keyboard or other inputs.
#################################################################
# Override class variables
appname = 'Controller Panel'
frameWidth = 500
frameHeight = 500
widgetsDict = {} # category-id : widget obj
# setup the type of controller we handle here.
controllerList = ['Keyboard',
'Tracker']
# Default Keyboard setting
keyboardMapDict = {}
keyboardSpeedDict = {}
def __init__(self, listOfObj, controlType , dataList, parent = None, **kw):
if controlType == 'Keyboard':
self.nodePath = dataList[0] # Default setting -> mainly used for Keyboard control now.
self.nameOfNode = self.nodePath.getName()
self.controllType = 'Keyboard'
self.keyboardMapDict.clear()
self.keyboardMapDict = dataList[1]
self.keyboardSpeedDict.clear()
self.keyboardSpeedDict = dataList[2]
self.listOfObj = listOfObj
self.keepControl = False
INITOPT = Pmw.INITOPT
optiondefs = (
('title', self.appname, None),
)
self.defineoptions(kw, optiondefs)
# Initialize the superclass
AppShell.__init__(self)
# Execute option callbacks
self.initialiseoptions(controllerWindow)
self.parent.resizable(False,False) ## Disable the ability to resize for this Window.
def createInterface(self):
# Handle to the toplevels interior
interior = self.interior()
menuBar = self.menuBar
# We don't need menu bar here
self.menuBar.destroy()
# Create a frame to hold all stuff
mainFrame = Frame(interior)
# A comboBox to switch the controller
frame = Frame(mainFrame)
self.cotrollerTypeEntry = self.createcomponent(
'Controller Type', (), None,
Pmw.ComboBox, (frame,),
labelpos = W, label_text='Controller Type:', entry_width = 20,entry_state = DISABLED,
selectioncommand = self.setControllerType,
scrolledlist_items = self.controllerList)
self.cotrollerTypeEntry.pack(side=LEFT)
frame.pack(side=TOP, fill=X, expand=False, pady = 3)
self.cotrollerTypeEntry.selectitem('Keyboard', setentry=True)
self.inputZone = Pmw.Group(mainFrame, tag_pyclass = None)
self.inputZone.pack(fill='both',expand=1)
settingFrame = self.inputZone.interior()
###################################################
# Notebook pages for specific controller setting #
###################################################
self.contentWidge = self.createcomponent(
'scrolledFrame',
(), None,
Pmw.ScrolledFrame, (settingFrame,),
hull_width = 200, hull_height = 300,
usehullsize = 1)
self.contentFrame = self.contentWidge.component('frame')
self.contentWidge.pack(fill = 'both', expand = 1,padx = 3, pady = 5)
self.objNotebook = Pmw.NoteBook(self.contentFrame, tabpos = None,
borderwidth = 0)
keyboardPage = self.objNotebook.add('Keyboard')
tarckerPage = self.objNotebook.add('Tracker')
self.objNotebook.selectpage('Keyboard')
self.objNotebook.pack(side = TOP, fill='both',expand=False)
# Put this here so it isn't called right away
self.objNotebook['raisecommand'] = self.updateControlInfo
# Keyboard setting
assignFrame = Frame(keyboardPage)
Interior = Frame(assignFrame)
widget = self.createcomponent(
'Target Type', (), None,
Pmw.ComboBox, (Interior,),
labelpos = W, label_text='Target Object:', entry_width = 20, entry_state = DISABLED,
selectioncommand = self.setTargetObj,
scrolledlist_items = self.listOfObj)
widget.pack(side=LEFT, padx=3)
Interior.pack(side=TOP, fill=X, expand=True, pady = 5)
widget.selectitem(self.nameOfNode, setentry=True)
self.widgetsDict[KEYBORAD+'ObjList'] = widget
inputZone = Pmw.Group(assignFrame, tag_pyclass = None)
inputZone.pack(fill='both',expand=1)
settingFrame = inputZone.interior()
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Assign a Key For:').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True,pady = 6 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Forward :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Forward key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyForward'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyForward'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Forward Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedForward'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedForward'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Backward :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Backward key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyBackward'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyBackward'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Backward Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedBackward'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedBackward'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Right :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Right key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyRight'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyRight'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Right Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedRight'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedRight'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Left :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Left key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyLeft'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyLeft'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Left Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedLeft'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedLeft'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Up :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Up key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Up Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Down :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Down Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Turn Right:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Right key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyTurnRight'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyTurnRight'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Right Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedTurnRight'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedTurnRight'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Turn Left :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Left key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyTurnLeft'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyTurnLeft'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Left Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedTurnLeft'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedTurnLeft'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Turn UP :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn UP key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyTurnUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyTurnUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn UP Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedTurnUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedTurnUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Turn Down :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyTurnDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyTurnDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Turn Down Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedTurnDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedTurnDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Roll Right:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Roll Right key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyRollRight'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyRollRight'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Roll Right Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedRollRight'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedRollRight'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Roll Left :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Roll Left key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyRollLeft'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyRollLeft'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Roll Left Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedRollLeft'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedRollLeft'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale UP :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale UP key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale UP Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale Down:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Down Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale X UP :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale X UP key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleXUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleXUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale X UP Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleXUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleXUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale X Down:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale X Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleXDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleXDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Down X Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleXDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleXDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale Y UP :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Y UP key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleYUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleYUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Y UP Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleYUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleYUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale Y Down:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Y Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleYDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleYDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Down XY Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleYDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleYDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale Z UP :', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Z UP key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleZUp'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleZUp'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Z UP Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleZUp'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleZUp'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
Interior = Frame(settingFrame)
widget = Label(Interior, text = 'Scale Z Down:', width = 20, anchor = W).pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Z Down key', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardMapDict['KeyScaleZDown'],
labelpos = W, label_text='Key :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'KeyScaleZDown'] = widget
widget = Label(Interior, text = ' ').pack(side=LEFT, expand = False)
widget = self.createcomponent(
'Scale Down Z Speed', (), None,
Pmw.EntryField, (Interior,),
value = self.keyboardSpeedDict['SpeedScaleZDown'],
labelpos = W, label_text='Speed :', entry_width = 10)
widget.pack(side=LEFT, expand = False)
self.widgetsDict[KEYBORAD+'SpeedScaleZDown'] = widget
widget = Label(Interior, text = 'Per Seceond').pack(side=LEFT, expand = False)
Interior.pack(side=TOP, fill=X, expand=True, pady = 4 )
assignFrame.pack(side=TOP, expand=True, fill = X)
keyboardPage.pack(side=TOP, expand=True, fill = X)
####################################################################
####################################################################
# End of Keyboard control page
####################################################################
####################################################################
# Pack the mainFrame
frame = Frame(mainFrame)
widget = Button(frame, text='OK', width = 13, command=self.ok_press).pack(side=RIGHT)
widget = Button(frame, text='Enable Control', width = 13, command=self.enableControl).pack(side=LEFT)
widget = Button(frame, text='Disable Control', width = 13, command=self.disableControl).pack(side=LEFT)
widget = Button(frame, text='Save & Keep', width = 13, command=self.saveKeepControl).pack(side=LEFT)
frame.pack(side = BOTTOM, expand=1, fill = X)
mainFrame.pack(expand=1, fill = BOTH)
def onDestroy(self, event):
# Check if user wish to keep the control after the window closed.
if not self.keepControl:
messenger.send('ControlW_controlDisable',[self.controllType])
messenger.send('ControlW_close')
'''
If you have open any thing, please rewrite here!
'''
pass
def ok_press(self):
####################################################################
# ok_press(self)
# After user clicked on "OK" button, this function will be called.
# This function will collect data from the panel and send it back to
# sceneEditor and close the window. It won't activate control at all.
####################################################################
if self.controllType=='Keyboard':
for index in self.keyboardMapDict:
self.keyboardMapDict[index] = self.widgetsDict['Keyboard-'+index].getvalue()
for index in self.keyboardSpeedDict:
self.keyboardSpeedDict[index] = float(self.widgetsDict['Keyboard-'+index].getvalue())
messenger.send('ControlW_controlSetting', ['Keyboard', [self.nodePath, self.keyboardMapDict, self.keyboardSpeedDict]])
self.quit()
return
def enableControl(self):
####################################################################
# enableControl(self)
# Call back function.
# THis function will be called each time when user clicks on the
# "Enable Control" button. This function will do pretty much
# the same thing with ok_press function, except that this function
# will activate the control process in sceneEditor.
# However, if user didn't click on the button "Keep ANd Save,"
# the control process will be terminated when user closed the panel.
####################################################################
if self.controllType=='Keyboard':
for index in self.keyboardMapDict:
self.keyboardMapDict[index] = self.widgetsDict['Keyboard-'+index].getvalue()
for index in self.keyboardSpeedDict:
self.keyboardSpeedDict[index] = float(self.widgetsDict['Keyboard-'+index].getvalue())
messenger.send('ControlW_controlEnable', ['Keyboard', [self.nodePath, self.keyboardMapDict, self.keyboardSpeedDict]])
return
def disableControl(self):
####################################################################
# disableControl(self)
# This function will send out a message to sceneEditor to stop the
# control task.
####################################################################
messenger.send('ControlW_controlDisable',[self.controllType])
return
def setControllerType(self, typeName = 'Keyboard'):
#################################################################
# setControllerType(self, typeName = 'Keyboard')
# Call back function
# This function will be called when user select the type of
# controller they want on the combo box on the panel.
# Basically, this function's job is to switch the notebook page to right one.
#################################################################
self.controllType = typeName
if self.controllType=='Keyboard':
self.objNotebook.selectpage('Keyboard')
elif self.controllType=='Tracker':
self.objNotebook.selectpage('Tracker')
return
def updateControlInfo(self, page=None):
#################################################################
# Nothing. Unlike in the lighting panel, we don't have to keep data
# once user switch the page.
#################################################################
return
def setTargetObj(self, name = None, tracker = None):
#################################################################
# setTargetObj(self, name = None)
# setup the target object we want to control
#################################################################
if tracker == None: # Call from Keyboard page.
if name=='camera':
self.nodePath = camera
else:
messenger.send('ControlW_require',[name])
return
def resetNameList(self, list, name = None, nodePath = None):
####################################################################
# resetNameList(self, list, name = None, nodePath = None)
# This function will be called be sceneEditor in order to reset the
# object list inside the panel.
# list here is a name list for all objects that can be set on control
# in the scene. If user has specify a name and a nodePath in, it will
# check if the name is equal to the name of current control target.
# If so, it will change the name showed on panel.
####################################################################
self.widgetsDict['Keyboard-ObjList'].setlist(list)
if name != None:
if self.nameOfNode == name:
self.nameOfNode = self.nodePath.getName()
self.widgetsDict['Keyboard-ObjList'].selectitem(self.nameOfNode, setentry=True)
return
def setNodePathIn(self, nodePath):
####################################################################
# setNodePathIn(self, nodePath)
# THis function will be called by sceneEditor.
# After we send out a message to sceneEditor in setTargetObj function,
# This function will be called by sceneEditor after we get the reference
# of target object from dataHolder.
# This function will keep the reference.
####################################################################
self.nodePath = nodePath
self.nameOfNode = self.nodePath.getName()
return
def saveKeepControl(self):
#################################################################
# saveKeepControl(self)
# When any time user has click on the "Save & Keep" button,
# This function will be called.
# This function will send out the message to sceneEditor to process
# the saving. Also, this function will change the "self.keepControl" flag.
# So, when user closes the window with control enabled, it will keep
# the control process runnning. otherwise program will disable the
# control automatically when panel has been closed.
#
# It doesn't mean that this function will automatically enable the
# control when user closed the window!!
# This flag will only decide that we will send out a "stopControl"
# message or not.
#
#################################################################
self.keepControl = True
if self.controllType=='Keyboard':
for index in self.keyboardMapDict:
self.keyboardMapDict[index] = self.widgetsDict['Keyboard-'+index].getvalue()
for index in self.keyboardSpeedDict:
self.keyboardSpeedDict[index] = float(self.widgetsDict['Keyboard-'+index].getvalue())
print self.nodePath
messenger.send('ControlW_saveSetting', ['Keyboard', [self.nodePath, self.keyboardMapDict, self.keyboardSpeedDict]])
return