I just hacked this under PB4, has it uses no API calls it will work under all OS's too (when PB4 is released)

Code: Select all
Procedure DisablePanelTab(Panel_Gadget,Panel_Tab)
panel_data=GetGadgetData(Panel_Gadget)
a=%1
a << Panel_Tab
panel_data= panel_data ! a
SetGadgetData(Panel_Gadget,panel_data)
EndProcedure
Procedure CheckPanelItem(Panel_Gadget)
current=GetGadgetState(Panel_Gadget)
panel_data=GetGadgetData(Panel_Gadget)
again:
a=%1
a << current
If panel_data & a > 0
If current+1>CountGadgetItems(Panel_Gadget)-1
current=0
Else
current+1
EndIf
SetGadgetState(Panel_Gadget,current)
Goto again:
Else
ProcedureReturn
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (0, 8, 8, 306, 203)
AddGadgetItem (0, -1, "Panel 1")
PanelGadget (1, 5, 5, 290, 166)
AddGadgetItem(1, -1, "Sub-Panel 1")
AddGadgetItem(1, -1, "Sub-Panel 2")
AddGadgetItem(1, -1, "Sub-Panel 3")
CloseGadgetList()
AddGadgetItem (0, -1,"Panel 2")
ButtonGadget(2, 10, 15, 120, 24,"Enable Sub-Panel 2")
ButtonGadget(3, 10, 45, 120, 24,"Disable Sub-Panel 2")
CloseGadgetList()
DisablePanelTab(1,1) ; Disable Tab 1, Panel 1
Repeat
EventID =WaitWindowEvent()
MenuID =EventMenu()
GadgetID =EventGadget()
WindowID =EventWindow()
If EventID
Select GadgetID
Case 1 ; Panel Gadget 1 pressed
CheckPanelItem(1)
Case 2
DisablePanelTab(1,1) ; We call it again to toggle enabled
Delay(100)
Case 3
DisablePanelTab(1,1) ; We call it again to toggle enabled
Delay(100)
EndSelect
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
I'll improve it later on, by adding an extra variable to the code!