Gladsomebeast |
12-01-2008 09:22 PM |
VizMenu still in focus after calling setVisible
Ive got this menu and when I click a button, the menu hides via setVisible. When I want to, I bring the menu back, but when I use the mouse and click the menu title to it is still in focus and does not pop out until i focus its nebore menu title.
To see issue:
Run script
Select Simulation->Next Excersize
Press spacebar
Try to select Simulation
Code:
# coding: UTF-8
import viz
import vizact
import vizinfo
import vizmenu
TITLE_COLOR = (.85, .85, .85)
BGCOLOR = (0.3,0.3,.5)
TITLEBGCOLOR = (0.3,0.3,.5)
class ParameterView:
def __init__(self, menu, parameter):
self.parameter = parameter
self.line = menu.add(viz.TEXT3D, '_'*15)
self.line.color(TITLE_COLOR)
self.label = menu.add(viz.TEXT3D, parameter.name)
# self.slider = menu.add(viz.PROGRESS_BAR, parameter.name)
self.slider = menu.add(viz.SLIDER)
self.textBox = menu.add(viz.TEXTBOX)
self.textBox.length(.5)
self.parameterName = parameter.name
self.sliderScaleFactor = parameter.maxValue - parameter.minValue
self.updateViewParameterChanged()
vizact.ontextbox(self.textBox, self.textboxChanged)
vizact.onslider(self.slider, self.sliderChanged)
vizact.onevent(Parameter.PARAMETER_CHANGED_EVENT, lambda e: (e.obj==self.parameter, None), self.updateViewParameterChanged)
def setVisible(self, isVisible):
self.line.visible(isVisible)
self.label.visible(isVisible)
self.slider.visible(isVisible)
self.textBox.visible(isVisible)
def updateViewParameterChanged(self):
try:
if self.parameter.value != float(self.textBox.get()):
self.textBox.message(str(self.parameter.value))
except ValueError:
self.textBox.message(str(self.parameter.value))
self.slider.set(self.parameter.value / self.sliderScaleFactor)
def textboxChanged(self, e=None):
if self.textBox.get() != '':
try:
value = float(self.textBox.get())
self.parameter.setValue(value)
self.updateViewParameterChanged()
except ValueError:
try:
self.textBox.message("%1.2f" % (float(e.oldText)))
except:
self.textBox.message('')
viz.message('Enter only numbers')
def sliderChanged(self, e):
value = self.slider.get() * self.sliderScaleFactor
self.parameter.setValue(value)
self.updateViewParameterChanged()
timeInfo = None
simParametersInfo = None
graphInfo = None
paramHistory = None
messageGroup = None
simMenu = None
def setup():
global simParametersInfo, timeInfo, graphInfo, paramHistory, messageGroup, simMenu
# ALPHA = .5
# messageGroup = viz.addGroup(viz.SCREEN, pos=(.5, .80, 0), scale=[1]*3)
# messageGroup.alpha(ALPHA)
# background = viz.addTexQuad(messageGroup, scale=(11, 2, 0), pos=[0,0,0])
# background.zoffset(2)
# background.alpha(ALPHA)
# messageGroup.t = viz.addText('asdfasdfsad', parent=messageGroup, color=viz.BLACK, pos=(-.39,.028,0), scale=[.5]*3)
# messageGroup.t.alpha(ALPHA)
vizmenu.MENU_FONT_SIZE = 25
vizmenu.HIDDEN_HANGOFF_AMOUNT = 0
vizmenu.VISIBLE_ANIMATE_SPEED = 10000
timeInfo = vizmenu.add()
timeInfo.setAutoHide(viz.OFF)
simMenu = timeInfo.add('Simulation')
timeInfo.startSimulationButton = simMenu.add(viz.BUTTON, 'Start')
timeInfo.resetSimulationButton = simMenu.add(viz.BUTTON, 'Reset')
timeInfo.resetSimulationButton.visible(viz.OFF)
timeInfo.nextExercise = simMenu.add(viz.BUTTON, 'Next Exercise')
sysMenu = timeInfo.add('System')
timeInfo.graphOnWallCheckbox = sysMenu.add(viz.CHECKBOX, 'Draw graphs on wall')
timeInfo.parameterHistoryWindowCheckbox = sysMenu.add(viz.CHECKBOX, 'Parameter History Table')
timeInfo.toggleParmeterWindowsButton = sysMenu.add(viz.BUTTON, 'Toggle Parameter Windows')
timeInfo.parameterHistoryWindowCheckbox.set(1)
timeInfo.clearTrialHistoryButton = sysMenu.add(viz.BUTTON, 'Clear History')
timeInfo.resetViewButton = sysMenu.add(viz.BUTTON, 'Reset View Position')
timeInfo.showForcesButton = sysMenu.add(viz.CHECKBOX, 'Show Forces')
def setMenuVisible(isVisable):
timeInfo.setVisible(isVisable)
timeInfo.dirty()
if isVisable == 0:
simMenu.setVisible(isVisable)
simMenu.dirty()
parameterList = []
def addParameter(param, menu):
parameterList.append(ParameterView(menu, param))
def setParameterVisible(param, isVisible):
for parameterView in parameterList:
if parameterView.parameter == param:
parameterView.setVisible(isVisible)
def addOption(name, menu):
button = menu.add(viz.CHECKBOX, name)
return button
def addLabel(stringy, menu):
t = menu.add(viz.TEXT3D, '_'*15)
t.color(TITLE_COLOR)
t = menu.add(viz.TEXT3D, stringy)
t.color(TITLE_COLOR)
#def setMessageVisible(isViz):
# messageGroup.visible(isViz)
#
#def setMessage(stingy):
# messageGroup.t.message(stingy)
if __name__ == '__main__':
viz.go()
# viz.add('gallery.ive')
viz.clearcolor(viz.SKYBLUE)
setup()
setMenuVisible(1)
setMenuVisible(0)
vizact.onbuttondown(timeInfo.nextExercise, setMenuVisible, 0)
vizact.onkeydown(' ' , setMenuVisible, 1)
|