Skip to content

baremetalgo/scratch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scratch

A simple GUI Framework for Go based applications

Features -

  • Easy Nested Layouts
  • Built-In Widgets
  • Customizable TitleBar
  • MDI Child Windows

Scratch Window

Examples

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()
}

About

A GUI framework developed using RayLib

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages