Code: Select all
;-TOP
Enumeration Windows
#Main
EndEnumeration
Enumeration Menus
#MainMenu
EndEnumeration
Enumeration MenuItems
#MainMenuExitApplication
EndEnumeration
Enumeration Gadgets
#MainOptionContainer_1
#MainOption_11
#MainOption_12
#MainOptionContainer_2
#MainOption_21
#MainOption_22
#MainFunction_1
#MainFunction_2
#MainFunction_3
#MainFunction_4
EndEnumeration
Enumeration Status
#MainStatusBar
EndEnumeration
; ----
Procedure doEventOptionGroup_1()
Static last_gadget = -1
Protected gadget = EventGadget()
Select EventType()
Case #PB_EventType_LeftClick
If gadget <> last_gadget
last_gadget = gadget
Select gadget
Case #MainOption_11
Debug "Do Option 1.1"
;
Case #MainOption_12
Debug "Do Option 1.2"
;
EndSelect
EndIf
EndSelect
EndProcedure
Procedure doEventOptionGroup_2()
Static last_gadget = -1
Protected gadget = EventGadget()
Select EventType()
Case #PB_EventType_LeftClick
If gadget <> last_gadget
last_gadget = gadget
Select gadget
Case #MainOption_21
Debug "Do Option 2.1"
;
Case #MainOption_22
Debug "Do Option 2.2"
;
EndSelect
EndIf
EndSelect
EndProcedure
Procedure SetDefaultOptionGadget(Window, Gadget)
SetGadgetState(Gadget, #True)
PostEvent(#PB_Event_Gadget, Window, Gadget, #PB_EventType_LeftClick)
EndProcedure
; ----
Procedure UpdateWindow()
Protected dx, dy
dx = WindowWidth(0)
dy = WindowHeight(0) - StatusBarHeight(0) - MenuHeight()
; Resize Gadgets
ResizeGadget(#MainFunction_1, 10, dy - 35, 110, 30)
ResizeGadget(#MainFunction_2, 130, dy - 35, 110, 30)
ResizeGadget(#MainFunction_3, 250, dy - 35, 110, 30)
ResizeGadget(#MainFunction_4, 370, dy - 35, 110, 30)
EndProcedure
Procedure Main()
Protected dx, dy
#WinStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 600, 400, "Test Window", #WinStyle)
; MenuBar
CreateMenu(0, WindowID(0))
MenuTitle("File")
MenuItem(#MainMenuExitApplication, "E&xit")
; StatusBar
CreateStatusBar(#MainStatusBar, WindowID(#Main))
AddStatusBarField(#PB_Ignore)
; Gadgets
dx = WindowWidth(#Main)
dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
ContainerGadget(#MainOptionContainer_1, 5, 5, 220, 75, #PB_Container_Single)
OptionGadget(#MainOption_11, 10, 10, 200, 25, "Option 1.1")
OptionGadget(#MainOption_12, 10, 40, 200, 25, "Option 1.2")
CloseGadgetList()
ContainerGadget(#MainOptionContainer_2, 5, 85, 220, 75, #PB_Container_Single)
OptionGadget(#MainOption_21, 10, 10, 200, 25, "Option 2.1")
OptionGadget(#MainOption_22, 10, 40, 200, 25, "Option 2.2")
CloseGadgetList()
ButtonGadget(#MainFunction_1, 10, dy - 35, 110, 30, "Function 1")
ButtonGadget(#MainFunction_2, 130, dy - 35, 110, 30, "Function 2")
ButtonGadget(#MainFunction_3, 250, dy - 35, 110, 30, "Function 3")
ButtonGadget(#MainFunction_4, 370, dy - 35, 110, 30, "Function 4")
; Bind Events
BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), #Main)
BindGadgetEvent(#MainOption_11, @doEventOptionGroup_1())
BindGadgetEvent(#MainOption_12, @doEventOptionGroup_1())
BindGadgetEvent(#MainOption_21, @doEventOptionGroup_2())
BindGadgetEvent(#MainOption_22, @doEventOptionGroup_2())
; Main Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #main
Break
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #MainMenuExitApplication
PostEvent(#PB_Event_CloseWindow, #Main, #Null)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #MainFunction_1
SetDefaultOptionGadget(#Main, #MainOption_11)
Case #MainFunction_2
SetDefaultOptionGadget(#Main, #MainOption_12)
Case #MainFunction_3
SetDefaultOptionGadget(#Main, #MainOption_21)
Case #MainFunction_4
SetDefaultOptionGadget(#Main, #MainOption_22)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()