Tabbers and ComboBox

BlitzPlus Forums/BlitzPlus Programming/Tabbers and ComboBox

_PJ_(Posted 2013) [#1]
My issue is twofold.

I can't seem to obtain the SelectedItem of the Tabber when selected tab is the first one

and

The ComboBox doesn't seem to register any events when clicked on.

I'm really finding the UI stuff to be a lot harder than I perceived it should be - am I going about it wrong?

The code below should run with:

v_UI_Populate_UI
v_UI_MainMenu()


Const UI_MENU_MAIN_TITLE$="Main Menu"
Const UI_MENU_GPU_TITLE$="Video"
Const UI_MENU_SND_TITLE$="Audio"
Const UI_MENU_CTRL_TITLE$="Controls"
Const UI_MENU_GAME_TITLE$="Gameplay"

Const UI_MENU_VALUE_MAIN_MENU=0
Const UI_MENU_VALUE_GAME=1
Const UI_MENU_VALUE_GPU=2
Const UI_MENU_VALUE_SND=3
Const UI_MENU_VALUE_CTRL=4

Global UI_GROUP_MENU_MAIN[5]
Global UI_GROUP_MENU_MAIN_SUB[5]
Global UI_GROUP_MENU_GPU[5]
Global UI_GROUP_MENU_SND[5]
Global UI_GROUP_MENU_CTRL[5]
Global UI_GROUP_MENU_GAME[5]

Const UI_MAIN_EXIT_START=1
Const UI_MAIN_EXIT_CLOSE=2
Global UI_MAIN_EXITSTATE=False

Const UI_GADGET_CHANGESTATE=$401
Const UI_CANVAS_MOUSEENTER=$205
Const UI_CANVAS_MOUSEEXITE=$206

Const UI_CANVAS_MOUSEXY=$203
Const UI_CTRL_MOUSEZ=$204
Const UI_CTRL_MOUSEBUTTONRELEASE=$202
Const UI_CTRL_MOUSEBUTTONDOWN=$201

Const UI_CTRL_KEYDOWN=$101
Const UI_CTRL_KEYRELEASE=$102
Const UI_CTRL_ASCIIENTRY=$103

Const UI_GROUP_PARENT_GROUP_ID=0
Const UI_GROUP_GPU_COMBO=1











Function v_UI_MainMenu()
	While (	Not(UI_MAIN_EXITSTATE))
		WaitEvent()
		v_UI_UpdateMainMenu()
	Wend
	If (UI_MAIN_EXITSTATE=UI_MAIN_EXIT_CLOSE)
		;Crash("Main Menu","Quit Game")
End;Substituted in so this can run! :)
	;	Uninitialise
	End If
End Function

Function v_UI_PopulateUI()
	v_UI_PopulateMainMenu
End Function

Function v_UI_PopulateMainMenu()
	UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID]=CreateWindow(UI_MENU_MAIN_TITLE,0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT)
	UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]=CreateTabber(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	
	v_UI_BuildMainMenuTabList
	v_UI_BuildGameMenu
	v_UI_BuildGPUMenu
	v_UI_BuildSNDMenu
	v_UI_BuildCTRLMenu
End Function

Function v_UI_BuildMainMenuTabList()
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_GAME_TITLE,True)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_GPU_TITLE)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_SND_TITLE)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_CTRL_TITLE)
End Function

Function v_UI_BuildGPUMenu()
	UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]=CreateComboBox(8,24,256,12,UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID])
	Local m_Modes
	Local b_Select=False
	Local s_Text$ 
	For m_Modes= 0 To cm_GPU_MAX_MODES-1			AddGadgetItem str(m_Modes);Substituted in so this can run :)
	Next 
	HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_BuildSNDMenu()
	UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_BuildGameMenu()
	UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_BuildCTRLMenu()
	UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_UpdateMainMenu()
	Local Dat=EventData()
	If (EventData())
		Local Source=EventSource()
		Local ID=EventID()
		DebugLog("EVENT: "+Source+" ("+ID+")")
		Select (Source)
			Case UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]:
				v_UI_UpdateGPUCombo(ID)
			Case UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]:
				v_UI_UpdateTabs(ID)
			Default:
				
		End Select
	End If
End Function

Function v_UI_UpdateTabs(nID)
	Local Source=UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]
	Select (nID)
		Case UI_GADGET_CHANGESTATE:
			v_UI_UpdateMainMenuTabs(SelectedGadgetItem(Source))
	End Select
End Function

Function v_UI_UpdateGPUCombo(nID)
	Select (nID)
		Case UI_GADGET_CHANGESTATE:
			DebugLog(SelectedGadgetItem(UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]))
	End Select
End Function

Function v_UI_UpdateMainMenuTabs(Tab)
	DebugLog("TAB: "+Tab)
	Select (Tab)
		Case UI_MENU_VALUE_GAME:
			ShowGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]	
		Case UI_MENU_VALUE_GPU:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Case UI_MENU_VALUE_SND:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Case UI_MENU_VALUE_CTRL:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Default:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
	End Select
End Function



_PJ_(Posted 2013) [#2]
Okay I've made siome changes, but the tabs still don't seem to be acting as intended...

Const UI_MENU_MAIN_TITLE$="Main Menu"
Const UI_MENU_GPU_TITLE$="Video"
Const UI_MENU_SND_TITLE$="Audio"
Const UI_MENU_CTRL_TITLE$="Controls"
Const UI_MENU_GAME_TITLE$="Gameplay"

Const UI_MENU_VALUE_MAIN_MENU=0
Const UI_MENU_VALUE_GAME=0
Const UI_MENU_VALUE_GPU=1
Const UI_MENU_VALUE_SND=2
Const UI_MENU_VALUE_CTRL=3

Global UI_GROUP_MENU_MAIN[5]
Global UI_GROUP_MENU_MAIN_SUB[5]
Global UI_GROUP_MENU_GPU[5]
Global UI_GROUP_MENU_SND[5]
Global UI_GROUP_MENU_CTRL[5]
Global UI_GROUP_MENU_GAME[5]

Const UI_MAIN_EXIT_START=1
Const UI_MAIN_EXIT_CLOSE=2
Global UI_MAIN_EXITSTATE=False

Const UI_GADGET_CHANGESTATE=$401
Const UI_CANVAS_MOUSEENTER=$205
Const UI_CANVAS_MOUSEEXITE=$206

Const UI_CANVAS_MOUSEXY=$203
Const UI_CTRL_MOUSEZ=$204
Const UI_CTRL_MOUSEBUTTONRELEASE=$202
Const UI_CTRL_MOUSEBUTTONDOWN=$201

Const UI_CTRL_KEYDOWN=$101
Const UI_CTRL_KEYRELEASE=$102
Const UI_CTRL_ASCIIENTRY=$103

Const UI_GROUP_PARENT_GROUP_ID=0
Const UI_GROUP_GPU_COMBO=1











Function v_UI_MainMenu()
	While (	Not(UI_MAIN_EXITSTATE))
		WaitEvent()
		v_UI_UpdateMainMenu()
	Wend
	If (UI_MAIN_EXITSTATE=UI_MAIN_EXIT_CLOSE)
		;Crash("Main Menu","Quit Game")
		Uninitialise
	End If
End Function

Function v_UI_PopulateUI()
	v_UI_PopulateMainMenu
End Function

Function v_UI_PopulateMainMenu()
	UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID]=CreateWindow(UI_MENU_MAIN_TITLE,0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT)
	UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]=CreateTabber(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	
	v_UI_BuildMainMenuTabList
	v_UI_BuildGameMenu
	v_UI_BuildGPUMenu
	v_UI_BuildSNDMenu
	v_UI_BuildCTRLMenu
End Function

Function v_UI_BuildMainMenuTabList()
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_GAME_TITLE,True)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_GPU_TITLE)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_SND_TITLE)
	AddGadgetItem(UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID],UI_MENU_CTRL_TITLE)
End Function

Function v_UI_BuildGPUMenu()
	UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]=CreateComboBox(8,24,256,12,UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID])
	Local m_Modes
	
	For m_Modes= 1 To CountGfxModes()
		AddGadgetItem UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO],s_GPU_ModeText(m_Modes),(nb_GPU_MatchesCurrentMode(m_Modes))
	Next
	
	HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
End Function

Function nb_GPU_MatchesCurrentMode(m_Mode)
	Return (	(GfxModeHeight(m_Mode)=tns_GPU_HEIGHT) And (GfxModeWidth(m_Mode)=tns_GPU_WIDTH) And (GfxModeDepth(m_Mode)=32) And (GfxModeFormat(m_Mode)=4)	)
End Function

Function v_UI_BuildSNDMenu()
	UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_BuildGameMenu()
	UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_BuildCTRLMenu()
	UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]=CreatePanel(0,0,tns_GPU_WIDTH,tns_GPU_HEIGHT,UI_GROUP_MENU_MAIN[UI_GROUP_PARENT_GROUP_ID])
	HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
End Function

Function v_UI_UpdateMainMenu()
	Local Dat=EventData()
	If (EventData())
		Local Source=EventSource()
		Local ID=EventID()
		DebugLog("EVENT: "+Source+" ("+ID+")")
		Select (Source)
			Case UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]:
				v_UI_UpdateGPUCombo(ID)
			Case UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]:
				v_UI_UpdateTabs(ID)
			Default:
				
		End Select
	End If
End Function

Function v_UI_UpdateTabs(nID)
	Local Source=UI_GROUP_MENU_MAIN_SUB[UI_GROUP_PARENT_GROUP_ID]
	Select (nID)
		Case UI_GADGET_CHANGESTATE:
			v_UI_UpdateMainMenuTabs(SelectedGadgetItem(Source))
	End Select
End Function

Function v_UI_UpdateGPUCombo(nID)
	Select (nID)
		Case UI_GADGET_CHANGESTATE:
			DebugLog(SelectedGadgetItem(UI_GROUP_MENU_GPU[UI_GROUP_GPU_COMBO]))
	End Select
End Function

Function v_UI_UpdateMainMenuTabs(Tab)
	DebugLog("TAB: "+Tab)
	Select (Tab)
		Case UI_MENU_VALUE_GAME:
			ShowGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]	
		Case UI_MENU_VALUE_GPU:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Case UI_MENU_VALUE_SND:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Case UI_MENU_VALUE_CTRL:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			ShowGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
		Default:
			HideGadget UI_GROUP_MENU_GAME[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_GPU[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_SND[UI_GROUP_PARENT_GROUP_ID]
			HideGadget UI_GROUP_MENU_CTRL[UI_GROUP_PARENT_GROUP_ID]
	End Select
End Function