Tabbers and ComboBox
BlitzPlus Forums/BlitzPlus Programming/Tabbers and ComboBox
| ||
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 |
| ||
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 |