def getParticipantInfo():

    #Add an InfoPanel with a title bar
    participantInfo = vizinfo.InfoPanel('',
                                        title='Participant Information',
                                        align=viz.ALIGN_CENTER,
                                        icon=False)

    #Add name and ID fields
    textbox_last = participantInfo.addLabelItem('Last Name', viz.addTextbox())
    textbox_first = participantInfo.addLabelItem('First Name',
                                                 viz.addTextbox())
    textbox_id = participantInfo.addLabelItem('ID', viz.addTextbox())
    participantInfo.addSeparator(padding=(20, 20))

    #Add gender and age fields
    radiobutton_male = participantInfo.addLabelItem('Male',
                                                    viz.addRadioButton(0))
    radiobutton_female = participantInfo.addLabelItem('Female',
                                                      viz.addRadioButton(0))
    droplist_age = participantInfo.addLabelItem('Age Group', viz.addDropList())
    ageList = ['20-30', '31-40', '41-50', '51-60', '61-70']
    droplist_age.addItems(ageList)
    participantInfo.addSeparator(padding=(20, 20))

    #Add 2d 3D fields
    radiobutton_2D = participantInfo.addLabelItem('2D', viz.addRadioButton(1))
    radiobutton_3D = participantInfo.addLabelItem('3D', viz.addRadioButton(1))
    participantInfo.addSeparator(padding=(20, 20))

    #Add submit button aligned to the right and wait until it's pressed
    submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),
                                           align=viz.ALIGN_RIGHT_CENTER)
    yield viztask.waitButtonUp(submitButton)

    #Collect participant data
    data = viz.Data()
    data.lastName = textbox_last.get()
    data.firstName = textbox_first.get()
    data.id = textbox_id.get()
    data.ageGroup = ageList[droplist_age.getSelection()]

    if radiobutton_male.get() == viz.DOWN:
        data.gender = 'male'
    else:
        data.gender = 'female'

    if radiobutton_2D.get() == viz.DOWN:
        data.environment = '2D'
    else:
        data.environment = '3D'

    participantInfo.remove()

    # Return participant data
    viztask.returnValue(data)
def getParticipantInfo():

	#Add an InfoPanel with a title bar
	participantInfo = vizinfo.InfoPanel('',title='Participant Information',align=viz.ALIGN_CENTER, icon=False)

	#Add name and ID fields
	textbox_last = participantInfo.addLabelItem('Last Name',viz.addTextbox())
	textbox_first = participantInfo.addLabelItem('First Name',viz.addTextbox())
	textbox_id = participantInfo.addLabelItem('ID',viz.addTextbox())
	participantInfo.addSeparator(padding=(20,20))

	#Add gender and age fields
	radiobutton_male = participantInfo.addLabelItem('Male',viz.addRadioButton(0))
	radiobutton_female = participantInfo.addLabelItem('Female',viz.addRadioButton(0))
	droplist_age = participantInfo.addLabelItem('Age Group',viz.addDropList())
	ageList = ['20-30','31-40','41-50','51-60','61-70']
	droplist_age.addItems(ageList)
	participantInfo.addSeparator(padding=(20,20))
	
	#Add 2d 3D fields
	radiobutton_2D = participantInfo.addLabelItem('2D',viz.addRadioButton(1))
	radiobutton_3D = participantInfo.addLabelItem('3D',viz.addRadioButton(1))
	participantInfo.addSeparator(padding=(20,20))

	#Add submit button aligned to the right and wait until it's pressed
	submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),align=viz.ALIGN_RIGHT_CENTER)
	yield viztask.waitButtonUp(submitButton)

	#Collect participant data
	data = viz.Data()
	data.lastName = textbox_last.get()
	data.firstName = textbox_first.get()
	data.id = textbox_id.get()
	data.ageGroup = ageList[droplist_age.getSelection()]

	if radiobutton_male.get() == viz.DOWN:
		 data.gender = 'male'
	else:
		 data.gender = 'female'
		 
	if radiobutton_2D.get() == viz.DOWN:
		 data.environment = '2D'
	else:
		 data.environment = '3D'

	participantInfo.remove()

	# Return participant data
	viztask.returnValue(data)
Beispiel #3
0
    def __init__(self, canvas, controller):
        super(ModeMenu, self).__init__(canvas, 'mode', 'Mode Selection')

        # Store controller instance
        self.controller = controller

        #Store modes from config to populate modemenu with
        self.modes = config.MenuConfig.Modes
        self.getPanel().fontSize(50)

        ##########################
        """creating modes panel"""
        ##########################

        #creating labels for modes
        self.modeLabels = {}

        for l in self.modes.iterkeys():
            self.modeLabels[l] = viz.addText(l, parent=canvas)

        #creating radio buttons for modes
        self.modeGroup = viz.addGroup(parent=canvas)
        self.radioButtons = {}

        for rb in self.modes.iterkeys():
            self.radioButtons[rb] = viz.addRadioButton(self.modeGroup,
                                                       parent=canvas)

        self.radioButtons['Free Play'].set(1)

        #creating grid panel to add mode to
        modeGrid = vizdlg.GridPanel(parent=canvas)

        #adding modes and radio buttons to grid panel
        for i in self.modes.iterkeys():
            modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]])

        ##############################
        """next and back buttons"""
        ##############################

        #creating grid panels to add next and back buttons to
        setGrid = vizdlg.GridPanel(parent=canvas)

        #create back and next buttons and add to grid panel
        backButton = viz.addButtonLabel('Back')
        startButton = viz.addButtonLabel('Next')
        setGrid.addRow([backButton, startButton])

        #add back and state button actions
        self.backward = vizact.onbuttondown(backButton,
                                            self.controller.backMenu)
        self.forward = vizact.onbuttondown(startButton,
                                           self.controller.nextMenu)

        ###############################
        """add items to ModeMenu"""
        ###############################
        self.addItem(modeGrid)
        self.addItem(setGrid)
Beispiel #4
0
def participantInfo():

    manager.setDebug(viz.OFF)
    debugEventHandle.setEnabled(viz.OFF)

    # Hide info panel currently displayed
    info.visible(viz.OFF)

    # Add an InfoPanel with a title bar
    participantInfo = vizinfo.InfoPanel("", title="Participant Information", align=viz.ALIGN_CENTER, icon=False)

    # Add name and ID fields
    textbox_last = participantInfo.addLabelItem("Last Name", viz.addTextbox())
    textbox_first = participantInfo.addLabelItem("First Name", viz.addTextbox())
    textbox_id = participantInfo.addLabelItem("ID", viz.addTextbox())
    participantInfo.addSeparator(padding=(20, 20))

    # Add gender and age fields
    radiobutton_male = participantInfo.addLabelItem("Male", viz.addRadioButton(0))
    radiobutton_female = participantInfo.addLabelItem("Female", viz.addRadioButton(0))
    droplist_age = participantInfo.addLabelItem("Age Group", viz.addDropList())
    ageList = ["20-30", "31-40", "41-50", "51-60", "61-70"]
    droplist_age.addItems(ageList)
    participantInfo.addSeparator()

    # Add submit button aligned to the right and wait until it's pressed
    submitButton = participantInfo.addItem(viz.addButtonLabel("Submit"), align=viz.ALIGN_RIGHT_CENTER)
    yield viztask.waitButtonUp(submitButton)

    # Collect participant data
    data = viz.Data()
    data.lastName = textbox_last.get()
    data.firstName = textbox_first.get()
    data.id = textbox_id.get()
    data.ageGroup = ageList[droplist_age.getSelection()]

    if radiobutton_male.get() == viz.DOWN:
        data.gender = "male"
    else:
        data.gender = "female"

    participantInfo.remove()

    # Return participant data
    viztask.returnValue(data)
def participantInfo():
     #Turn off visibility of proximity sensors and disable toggle
    manager.setDebug(viz.OFF)
    debugEventHandle.setEnabled(viz.OFF)

    #Hide info panel currently displayed
    info.visible(viz.OFF)

    #Add an InfoPanel with a title bar
    participantInfo = vizinfo.InfoPanel('',title='Participant Information',align=viz.ALIGN_CENTER, icon=False)

    #Add name and ID fields
    textbox_last = participantInfo.addLabelItem('Last Name',viz.addTextbox())
    textbox_first = participantInfo.addLabelItem('First Name',viz.addTextbox())
    textbox_id = participantInfo.addLabelItem('ID',viz.addTextbox())
    participantInfo.addSeparator(padding=(20,20))

    #Add gender and age fields
    radiobutton_male = participantInfo.addLabelItem('Male',viz.addRadioButton(0))
    radiobutton_female = participantInfo.addLabelItem('Female',viz.addRadioButton(0))
    droplist_age = participantInfo.addLabelItem('Age Group',viz.addDropList())
    ageList = ['20-30','31-40','41-50','51-60','61-70']
    droplist_age.addItems(ageList)
    participantInfo.addSeparator()

    #Add submit button aligned to the right and wait until it's pressed
    submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),align=viz.ALIGN_RIGHT_CENTER)
    yield viztask.waitButtonUp(submitButton)
	
	#Collect participant data
    data = viz.Data()
    data.lastName = textbox_last.get()
    data.firstName = textbox_first.get()
    data.id = textbox_id.get()
    data.ageGroup = ageList[droplist_age.getSelection()]

    if radiobutton_male.get() == viz.DOWN:
         data.gender = 'male'
    else:
         data.gender = 'female'

    participantInfo.remove()

    # Return participant data
    viztask.returnValue(data)
Beispiel #6
0
	def __init__(self, canvas, controller):
		super(ModeMenu, self).__init__(canvas, 'mode', 'Mode Selection')
		
		# Store controller instance
		self.controller = controller
		
		#Store modes from config to populate modemenu with
		self.modes = config.MenuConfig.Modes
		self.getPanel().fontSize(50)
		
		##########################
		"""creating modes panel"""
		##########################
		
		#creating labels for modes
		self.modeLabels = {}
		
		for l in self.modes.iterkeys():
			self.modeLabels[l] = viz.addText(l, parent = canvas)
		
		#creating radio buttons for modes
		self.modeGroup = viz.addGroup(parent = canvas)
		self.radioButtons = {}
		
		for rb in self.modes.iterkeys():
			self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent = canvas)
		
		self.radioButtons['Free Play'].set(1)
		
		#creating grid panel to add mode to
		modeGrid = vizdlg.GridPanel(parent = canvas)
		
		#adding modes and radio buttons to grid panel
		for i in self.modes.iterkeys():
			modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]])
		
		##############################
		"""next and back buttons"""
		##############################
		
		#creating grid panels to add next and back buttons to
		setGrid = vizdlg.GridPanel(parent = canvas)
		
		#create back and next buttons and add to grid panel
		backButton = viz.addButtonLabel('Back')
		startButton = viz.addButtonLabel('Next')
		setGrid.addRow([backButton, startButton])
		
		#add back and state button actions
		self.backward = vizact.onbuttondown(backButton, self.controller.backMenu)
		self.forward = vizact.onbuttondown(startButton, self.controller.nextMenu)
		
		###############################
		"""add items to ModeMenu"""
		###############################
		self.addItem(modeGrid)
		self.addItem(setGrid)
def participantInfo():
    #Add an InfoPanel with a title bar
    participantInfo = vizinfo.InfoPanel('',
                                        title='Participant Information',
                                        align=viz.ALIGN_CENTER,
                                        icon=False)

    #Add ID field
    textbox_id = participantInfo.addLabelItem('ID', viz.addTextbox())
    participantInfo.addSeparator(padding=(10, 10))

    #Add eye height field
    textbox_EH = participantInfo.addLabelItem('Eye Height (m)',
                                              viz.addTextbox())
    participantInfo.addSeparator(padding=(10, 10))

    #Add age field
    textbox_age = participantInfo.addLabelItem('Age', viz.addTextbox())
    participantInfo.addSeparator(padding=(10, 10))

    #Add gender field
    radiobutton_male = participantInfo.addLabelItem('Male',
                                                    viz.addRadioButton(0))
    radiobutton_female = participantInfo.addLabelItem('Female',
                                                      viz.addRadioButton(0))
    radiobutton_other = participantInfo.addLabelItem('Non-Binary',
                                                     viz.addRadioButton(0))
    participantInfo.addSeparator()

    #Add units field
    radiobutton_feet = participantInfo.addLabelItem('Feet',
                                                    viz.addRadioButton(1))
    radiobutton_meters = participantInfo.addLabelItem('Meters',
                                                      viz.addRadioButton(1))
    participantInfo.addSeparator()

    #Add submit button aligned to the right and wait until it's pressed
    submitButton = participantInfo.addItem(viz.addButtonLabel('Submit'),
                                           align=viz.ALIGN_RIGHT_CENTER)
    yield viztask.waitButtonUp(submitButton)

    #Collect participant data
    global data
    data = viz.Data()
    data_id = textbox_id.get()
    data_EH = textbox_EH.get()
    data_age = textbox_age.get()

    if radiobutton_male.get() == viz.DOWN:
        data.gender = 'm'
    elif radiobutton_female.get() == viz.DOWN:
        data.gender = 'f'
    else:
        data.gender = 'nb'

    if radiobutton_feet.get() == viz.DOWN:
        data.units = 'ft'
    else:
        data.units = 'm'

    participantInfo.remove()

    global IDNum
    IDNum = int(data_id)
    print IDNum
    global age
    age = float(data_age)
    global EHNum
    EHNum = float(data_EH)
    print age
    print EHNum
    print data.gender
    print data.units
Beispiel #8
0
max_gradient_text = viz.addText("Gradient Maximum:", parent = viz.SCREEN)
max_gradient_text.setPosition(0.005, 0.0475)
max_gradient_text.scale( 0.1, 0.1, 0.1 )
max_gradient_control = viz.addSlider()
max_gradient_control.setPosition(0.2, 0.05)
max_gradient_control.set(1.0)
max_gradient_control.ticksize(0.3, 0.6)

#Create controller
con = Controller(messageManager)

#Shader buttons
shader_radio_group = viz.addGroup()

lighting_shader_radio = viz.addRadioButton(parent = viz.SCREEN, group = shader_radio_group)
lighting_shader_radio.setScale(0.5, 0.5, 0.5)
lighting_shader_radio.setPosition(0.085, 0.975)

transfer_shader_radio = viz.addRadioButton(parent = viz.SCREEN, group = shader_radio_group)
transfer_shader_radio.setScale(0.5, 0.5, 0.5)
transfer_shader_radio.setPosition(0.085, 0.95)

lighting_shader_radio_text = viz.addText("Lighting Shader:", parent = viz.SCREEN)
lighting_shader_radio_text.setPosition(0.01, 0.975)
lighting_shader_radio_text.scale( 0.1, 0.1, 0.1 )
lighting_shader_radio_text.alignment( viz.ALIGN_LEFT_CENTER)

transfer_shader_radio_text = viz.addText("Transfer Shader:", parent = viz.SCREEN)
transfer_shader_radio_text.setPosition(0.01, 0.95)
transfer_shader_radio_text.scale( 0.1, 0.1, 0.1 )
Beispiel #9
0
TYPICAL_GUI_CANVAS = False
NODE3D_CANVAS = True

if TYPICAL_GUI_CANVAS:
	# Create canvas for displaying GUI objects
	canvas = viz.addGUICanvas()
	canvas.alignment(viz.ALIGN_CENTER)

	# Set canvas as default so all GUI objects are automatically added to it
	viz.MainWindow.setDefaultGUICanvas(canvas)

	controlPanel = vizinfo.InfoPanel(text='Navigate with WASD', title='Canvas Example')

	controlPanel.addSection('Render Mode')
	radio_world_overlay = controlPanel.addLabelItem('World Overlay', viz.addRadioButton('RenderMode'))
	radio_world = controlPanel.addLabelItem('World', viz.addRadioButton('RenderMode'))
	radio_screen_ortho = controlPanel.addLabelItem('Screen Ortho', viz.addRadioButton('RenderMode'))
	radio_world_overlay.set(1)

	controlPanel.addSeparator()
	manual_cursor = controlPanel.addLabelItem('Manual Cursor',viz.addCheckbox())
	select_world = controlPanel.addItem(viz.addButtonLabel('Select World'))


	canvas.setRenderWorldOverlay([800,600],40,3)

if NODE3D_CANVAS:
	pigeon = viz.addAvatar('pigeon.cfg',scale=[200]*3)
	pigeon.addAction(vizact.spin(0,1,0,45))
	pigeon.enable(viz.DEPTH_TEST,op=viz.OP_ROOT)
Beispiel #10
0
path.setAutoRotate(viz.ON)

#Link the ball to the path
viz.link(path, ball)

#Play the animation path
path.play()

#Setup path control panel
controlPanel = vizinfo.InfoPanel(text=None, title='Settings', icon=False)

slider_speed = controlPanel.addLabelItem('Speed', viz.addSlider())
slider_speed.set(0.1)

controlPanel.addSection('Loop Mode')
radio_loop_off = controlPanel.addLabelItem('Off', viz.addRadioButton('LoopMode'))
radio_loop_on = controlPanel.addLabelItem('Loop', viz.addRadioButton('LoopMode'))
radio_loop_swing = controlPanel.addLabelItem('Swing', viz.addRadioButton('LoopMode'))
radio_loop_circular = controlPanel.addLabelItem('Circular', viz.addRadioButton('LoopMode'))
radio_loop_circular.set(1)

controlPanel.addSection('Interpolation Mode')
radio_interp_linear = controlPanel.addLabelItem('Linear', viz.addRadioButton('InterpolationMode'))
radio_interp_cubic = controlPanel.addLabelItem('Bezier', viz.addRadioButton('InterpolationMode'))
radio_interp_linear.set(1)

def changeSpeed(pos):
    #Adjust the speed of the animation path
    path.setSpeed(pos*10)

#Setup callbacks for slider events
    def participant_info():
        """
        Query the participant for basic data.

        Questions to select experimental condition and control type of the experimental condition.

        Returns: the queried data as a viz.data object

        """

        participant_info = vizinfo.InfoPanel('', title='Participant Information', align=viz.ALIGN_CENTER, icon=False)

        # query control style droplist; Create a drop-down list
        drop_control_style = participant_info.addLabelItem('Choose control style', viz.addDropList())
        items = ['dk2 head & right hand', 'mouse and keyboard'] # 'mouse and keyboard', 'joystick', 'dk2 head only', 'dk2 head wiimote',
        drop_control_style.addItems(items)

        # Add name and ID fields of maze configurations
        drop_maze_config = participant_info.addLabelItem('Choose maze configuration', viz.addDropList())
        items2 = ['auto', 'baseline', 'training', 'I', 'L', 'Z', 'U']#, 'T', '+']  # Add a list of items.
        drop_maze_config.addItems(items2)

        # Add name and ID fields of experimental condition
        drop_maze_run = participant_info.addLabelItem('Choose maze run', viz.addDropList())
        items2 = ['auto', '1', '2', '3']
        drop_maze_run.addItems(items2)

        participant_info.addSeparator(padding=(10, 10))

        textbox_id = participant_info.addLabelItem('ID', viz.addTextbox())
        textbox_age = participant_info.addLabelItem('Age', viz.addTextbox())
        textbox_handedness = participant_info.addLabelItem('Handedness', viz.addTextbox())
        textbox_vision = participant_info.addLabelItem('Vision', viz.addTextbox())
        textbox_cap_size = participant_info.addLabelItem('Cap size', viz.addTextbox())
        textbox_neck_size = participant_info.addLabelItem('Neck size', viz.addTextbox())
        textbox_labelscheme = participant_info.addLabelItem('Electrode Labelscheme', viz.addTextbox())

        participant_info.addSeparator(padding=(10, 10))

        # Add gender and age fields
        radiobutton_male = participant_info.addLabelItem('Male', viz.addRadioButton(2))
        radiobutton_female = participant_info.addLabelItem('Female', viz.addRadioButton(2))

        participant_info.addSeparator(padding=(10, 10))

        # Add submit button aligned to the right and wait until it's pressed
        submit_button = participant_info.addItem(viz.addButtonLabel('Submit'), align=viz.ALIGN_CENTER)
        yield viztask.waitButtonUp(submit_button)

        # Collect participant data
        data = viz.Data()
        data.id = textbox_id.get()
        data.age = textbox_age.get()
        data.handedness = textbox_handedness.get()
        data.vision = textbox_vision.get()
        data.cap_size = textbox_cap_size.get()
        data.neck_size = textbox_neck_size.get()
        data.labelscheme = textbox_labelscheme.get()

        if radiobutton_male.get() == viz.DOWN:
            data.sex = 'male'
        else:
            data.sex = 'female'

        # Find the index of the current selection. Find the selection itself.
        data.control_style = drop_control_style.getItems()[drop_control_style.getSelection()]
        data.maze_config = drop_maze_config.getItems()[drop_maze_config.getSelection()]
        data.maze_run = drop_maze_run.getItems()[drop_maze_run.getSelection()]

        participant_info.remove()

        # Return participant data
        viztask.returnValue(data)
Beispiel #12
0
	def __init__(self,canvas):
		vizinfo.InfoPanel.__init__(self, '',title = 'Game Menu',fontSize = 100,align=viz.ALIGN_CENTER_CENTER,icon=False,parent= canvas)
		self.layers = config.layers
		self.modes = config.modes
		
		self.name = 'game'
		self.canvas = canvas
		self.active = False
		self.getPanel().fontSize(50)
		self.setPanelVisible(viz.OFF, animate = False)

		self.menuVisible = False	
		
		#####################
		'''LAYER TAB PANEL SETUP'''
		#####################
		
		#creating tab panel tp 
		tp = vizdlg.TabPanel(align = viz.ALIGN_LEFT_TOP, parent = canvas)
		
		#creating sub panels for tab panels(all layer data is stored in config.layers) storing sub panels in laypan
		layPan = {}
		
		for i, l in enumerate(self.layers):
			layPan[l] = vizdlg.GridPanel(parent = canvas)
		
		#creating dict of checkboxes for layers
		self.checkBox = {}
		
		for cb in [cb for l in self.layers.values() for cb in l]:
			self.checkBox[cb] = viz.addCheckbox(parent = canvas)
		
		#add layers and textboxes to panels
		for i in self.layers:
			for j in self.layers[i]:
				layPan[i].addRow([viz.addText(j), self.checkBox[j]])
			tp.addPanel(i, layPan[i], align = viz.ALIGN_LEFT_TOP)
		
		###############################################
		'''CREATING MODES PANEL'''
		###############################################
		
		#creating labels for modes
		self.modeLabels = {}
		
		for l in self.modes.keys():
			self.modeLabels[l] = viz.addText(l, parent = canvas)
		
		#creating radio buttons for modes
		self.modeGroup = viz.addGroup(parent = canvas)
		self.radioButtons = {}
		
		for rb in self.modes.keys():
			self.radioButtons[rb] = viz.addRadioButton(self.modeGroup, parent = canvas)
		
		#creating grid panel to add mode to
		modeGrid = vizdlg.GridPanel(parent = canvas)
		
		#adding modes and radio buttons to grid panel
		for i in self.modes.keys():
			modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]])
		
		###################################
		'''CREATE START AND STOP BUTTONS'''
		###################################
		
		#creating grid panels to add start and back buttons to
		setGrid = vizdlg.GridPanel(parent = canvas)
		
		#create back and start buttons and add to grid panel
		backButton = viz.addButtonLabel('Back')
		startButton = viz.addButtonLabel('Start')
		setGrid.addRow([backButton, startButton])
		
		#add back and state button actions
		vizact.onbuttondown(backButton, self.back)
		vizact.onbuttondown(startButton, self.start)
		
		############################
		'''ADD ITEMS TO GAME MENU'''
		############################
		
		#directions
		self.addItem(viz.addText('Select Parts of the Skeletal System You Wish to Puzzle and Select a Mode:', parent = canvas), fontSize = 30, align = viz.ALIGN_LEFT_TOP)
		
		#add tab panel to info panel
		tp.setCellPadding(5)
		self.addItem(tp, align = viz.ALIGN_LEFT_TOP)
		
		#modes
		self.addItem(modeGrid, align = viz.ALIGN_LEFT_TOP)
	
		#start and back buttons
		self.addItem(setGrid, align = viz.ALIGN_RIGHT_TOP)
		
		#change scale depending on display mode
		self.setScale(*[i*config.menuScale[self.name] for i in [1,1,1]])
		
		#rendering
		bb = self.getBoundingBox()
		self.canvas.setRenderWorldOverlay([bb.width*1.8, bb.height*1.8], fov = bb.height*.1, distance = 1)
Beispiel #13
0
    def __init__(self, canvas):
        vizinfo.InfoPanel.__init__(self,
                                   '',
                                   title='Game Menu',
                                   fontSize=100,
                                   align=viz.ALIGN_CENTER_CENTER,
                                   icon=False,
                                   parent=canvas)
        self.layers = config.layers
        self.modes = config.modes

        self.name = 'game'
        self.canvas = canvas
        self.active = False
        self.getPanel().fontSize(50)
        self.setPanelVisible(viz.OFF, animate=False)

        self.menuVisible = False

        #####################
        '''LAYER TAB PANEL SETUP'''
        #####################

        #creating tab panel tp
        tp = vizdlg.TabPanel(align=viz.ALIGN_LEFT_TOP, parent=canvas)

        #creating sub panels for tab panels(all layer data is stored in config.layers) storing sub panels in laypan
        layPan = {}

        for i, l in enumerate(self.layers):
            layPan[l] = vizdlg.GridPanel(parent=canvas)

        #creating dict of checkboxes for layers
        self.checkBox = {}

        for cb in [cb for l in self.layers.values() for cb in l]:
            self.checkBox[cb] = viz.addCheckbox(parent=canvas)

        #add layers and textboxes to panels
        for i in self.layers:
            for j in self.layers[i]:
                layPan[i].addRow([viz.addText(j), self.checkBox[j]])
            tp.addPanel(i, layPan[i], align=viz.ALIGN_LEFT_TOP)

        ###############################################
        '''CREATING MODES PANEL'''
        ###############################################

        #creating labels for modes
        self.modeLabels = {}

        for l in self.modes.keys():
            self.modeLabels[l] = viz.addText(l, parent=canvas)

        #creating radio buttons for modes
        self.modeGroup = viz.addGroup(parent=canvas)
        self.radioButtons = {}

        for rb in self.modes.keys():
            self.radioButtons[rb] = viz.addRadioButton(self.modeGroup,
                                                       parent=canvas)

        #creating grid panel to add mode to
        modeGrid = vizdlg.GridPanel(parent=canvas)

        #adding modes and radio buttons to grid panel
        for i in self.modes.keys():
            modeGrid.addRow([self.modeLabels[i], self.radioButtons[i]])

        ###################################
        '''CREATE START AND STOP BUTTONS'''
        ###################################

        #creating grid panels to add start and back buttons to
        setGrid = vizdlg.GridPanel(parent=canvas)

        #create back and start buttons and add to grid panel
        backButton = viz.addButtonLabel('Back')
        startButton = viz.addButtonLabel('Start')
        setGrid.addRow([backButton, startButton])

        #add back and state button actions
        vizact.onbuttondown(backButton, self.back)
        vizact.onbuttondown(startButton, self.start)

        ############################
        '''ADD ITEMS TO GAME MENU'''
        ############################

        #directions
        self.addItem(viz.addText(
            'Select Parts of the Skeletal System You Wish to Puzzle and Select a Mode:',
            parent=canvas),
                     fontSize=30,
                     align=viz.ALIGN_LEFT_TOP)

        #add tab panel to info panel
        tp.setCellPadding(5)
        self.addItem(tp, align=viz.ALIGN_LEFT_TOP)

        #modes
        self.addItem(modeGrid, align=viz.ALIGN_LEFT_TOP)

        #start and back buttons
        self.addItem(setGrid, align=viz.ALIGN_RIGHT_TOP)

        #change scale depending on display mode
        self.setScale(*[i * config.menuScale[self.name] for i in [1, 1, 1]])

        #rendering
        bb = self.getBoundingBox()
        self.canvas.setRenderWorldOverlay([bb.width * 1.8, bb.height * 1.8],
                                          fov=bb.height * .1,
                                          distance=1)