![]() |
|
#1
|
|||
|
|||
|
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)
__________________
Paul Elliott WorldViz LLC |
|
#2
|
|||
|
|||
|
Thanks for the bug report, this will be fixed in the next release. If you need the fix sooner, then modify your vizmenu.py by replacing the setVisible function of the MenuBar class with the following code:
Code:
def setVisible(self,visible,animate=True): """Make the menu hidden or visible""" self.__hidden = not visible self.__root.clearActions() if self.__hidden: if animate: self.__root.runAction(vizact.moveTo(self.__inactivePos,speed=HIDING_ANIMATE_SPEED,p1=-0.5,p2=0.0)) else: self.__root.translate(self.__inactivePos) #Clear tracked item and click state self.__clicked = False self.__trackitem(None) else: if animate: self.__root.runAction(vizact.goto(self.__activePos,VISIBLE_ANIMATE_SPEED)) else: self.__root.translate(self.__activePos) |
|
#3
|
|||
|
|||
|
thanks for the speedy fix
__________________
Paul Elliott WorldViz LLC |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Vizmenu slider bug? | Gladsomebeast | Vizard | 2 | 10-22-2008 08:05 PM |