- Easy Nested Layouts
- Built-In Widgets
- Customizable TitleBar
- MDI Child Windows
package main
import (
"scratch/RayGui"
rl "github.com/gen2brain/raylib-go/raylib"
)
func create_scratch_window() *RayGui.BaseWidget {
// Initialize fonts
RayGui.InitializeFonts()
// Create main widget (fills entire window)
mainWidget := RayGui.NewBaseWidget("MainWindow")
mainWidget.Layout.Name = "MainLayout"
mainWidget.IsMainWindow = true
mainWidget.TitleBar = true
mainWidget.Layout.Type = RayGui.LayoutVertical
mainWidget.Layout.Padding = rl.NewVector2(5, 5)
mainWidget.Layout.Spacing = 5
// Layouts
menubarLayout := RayGui.NewLayout()
menubarLayout.Name = "MenuBarLayout"
menubarLayout.Type = RayGui.LayoutHorizontal
mainWidget.Layout.AddLayout(menubarLayout)
midPanelLayout := RayGui.NewLayout()
midPanelLayout.Name = "MidPanelLayout"
midPanelLayout.Type = RayGui.LayoutHorizontal
mainWidget.Layout.AddLayout(midPanelLayout)
lowerPanelLayout := RayGui.NewLayout()
lowerPanelLayout.Name = "LowerPanelLayout"
lowerPanelLayout.Type = RayGui.LayoutVertical
mainWidget.Layout.AddLayout(lowerPanelLayout)
// MenuBar Widget
menubar := RayGui.NewBaseWidget("Menubar")
menubar.Layout.Name = "MenuBarWidgetLayout"
menubar.TitleBar = false
menubar.TitleBarColor = rl.NewColor(255, 255, 255, 0)
menubar.BgColor = rl.NewColor(255, 255, 255, 0)
menubar.DrawBackground = true
menubar.Layout.FixedHeight = 50
menubarLayout.AddChild(menubar)
// level Explorer
levelExplorer := RayGui.NewBaseWidget("Level Explorer")
midPanelLayout.AddChild(levelExplorer)
// RenderPanel
renderPanel := RayGui.NewBaseWidget("Game View")
midPanelLayout.AddChild(renderPanel)
// PropertiesPanel
propertiesPanel := RayGui.NewBaseWidget("Properties")
midPanelLayout.AddChild(propertiesPanel)
// Asset Browser
assetBrowser := RayGui.NewBaseWidget("Asset Browser")
lowerPanelLayout.AddChild(assetBrowser)
return mainWidget
}
func main() {
rl.SetConfigFlags(rl.FlagWindowResizable | rl.FlagWindowTopmost)
rl.InitWindow(800, 600, "Scratch GUI Framework")
mainWidget := create_scratch_window()
for !rl.WindowShouldClose() {
rl.BeginDrawing()
rl.ClearBackground(RayGui.Default_Bg_Color)
mainWidget.Update()
mainWidget.Draw()
rl.DrawFPS(100, 50)
rl.EndDrawing()
}
mainWidget.Unload()
rl.CloseWindow()
}