diff --git a/game/window.go b/game/window.go index 791a4f5..a04fc91 100644 --- a/game/window.go +++ b/game/window.go @@ -1,6 +1,8 @@ package game import ( + "tictactoe/theme" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" @@ -13,10 +15,12 @@ var TextLabel *widget.Label // creates a window for the TicTacToe game application. func CreateWindow() fyne.Window { // Create the app. - myApp := app.New() + App := app.New() + // Adding a theme to my Window + App.Settings().SetTheme(theme.TicTacToeTheme{}) // Create a new window for the game application. - myWindow := myApp.NewWindow("TicTacToe") + Window := App.NewWindow("TicTacToe") // Set the text of our TextLabel to TicTacToe TextLabel = widget.NewLabel("TicTacToe") @@ -34,9 +38,9 @@ func CreateWindow() fyne.Window { content := container.New(layout.NewBorderLayout(topItems, nil, nil, nil), topItems, matchField) // Set the content and size of the window. - myWindow.SetContent(content) - myWindow.Resize(fyne.NewSize(300, 300)) + Window.SetContent(content) + Window.Resize(fyne.NewSize(300, 300)) // Return the created window. - return myWindow + return Window } diff --git a/theme/theme_gen.go b/theme/theme_gen.go new file mode 100644 index 0000000..bba0c4c --- /dev/null +++ b/theme/theme_gen.go @@ -0,0 +1,90 @@ +// Code generated by fyne-theme-generator + +package theme + +import ( + "image/color" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/theme" +) + +type TicTacToeTheme struct{} + +func (TicTacToeTheme) Color(c fyne.ThemeColorName, v fyne.ThemeVariant) color.Color { + switch c { + case theme.ColorNameBackground: + return color.NRGBA{R: 0x13, G: 0x37, B: 0x73, A: 0xff} + case theme.ColorNameButton: + return color.NRGBA{R: 0x1e, G: 0x57, B: 0xba, A: 0xff} + case theme.ColorNameDisabledButton: + return color.NRGBA{R: 0x9, G: 0x19, B: 0x36, A: 0xff} + case theme.ColorNameDisabled: + return color.NRGBA{R: 0x54, G: 0x66, B: 0x87, A: 0xff} + case theme.ColorNameError: + return color.NRGBA{R: 0xf4, G: 0x43, B: 0x36, A: 0xff} + case theme.ColorNameFocus: + return color.NRGBA{R: 0x4a, G: 0x72, B: 0xbd, A: 0xff} + case theme.ColorNameForeground: + return color.NRGBA{R: 0xbd, G: 0xd5, B: 0xff, A: 0xff} + case theme.ColorNameHover: + return color.NRGBA{R: 0x56, G: 0x7a, B: 0xba, A: 0xff} + case theme.ColorNameInputBackground: + return color.NRGBA{R: 0xff, G: 0xff, B: 0xff, A: 0x19} + case theme.ColorNamePlaceHolder: + return color.NRGBA{R: 0xb2, G: 0xb2, B: 0xb2, A: 0xff} + case theme.ColorNamePressed: + return color.NRGBA{R: 0xff, G: 0xff, B: 0xff, A: 0x66} + case theme.ColorNamePrimary: + return color.NRGBA{R: 0x21, G: 0x96, B: 0xf3, A: 0xff} + case theme.ColorNameScrollBar: + return color.NRGBA{R: 0x0, G: 0x0, B: 0x0, A: 0x99} + case theme.ColorNameShadow: + return color.NRGBA{R: 0x0, G: 0x0, B: 0x0, A: 0x66} + default: + return theme.DefaultTheme().Color(c, v) + } +} + +func (TicTacToeTheme) Font(s fyne.TextStyle) fyne.Resource { + if s.Monospace { + return theme.DefaultTheme().Font(s) + } + if s.Bold { + if s.Italic { + return theme.DefaultTheme().Font(s) + } + return theme.DefaultTheme().Font(s) + } + if s.Italic { + return theme.DefaultTheme().Font(s) + } + return theme.DefaultTheme().Font(s) +} + +func (TicTacToeTheme) Icon(n fyne.ThemeIconName) fyne.Resource { + return theme.DefaultTheme().Icon(n) +} + +func (TicTacToeTheme) Size(s fyne.ThemeSizeName) float32 { + switch s { + case theme.SizeNameCaptionText: + return 11 + case theme.SizeNameInlineIcon: + return 20 + case theme.SizeNamePadding: + return 4 + case theme.SizeNameScrollBar: + return 16 + case theme.SizeNameScrollBarSmall: + return 3 + case theme.SizeNameSeparatorThickness: + return 1 + case theme.SizeNameText: + return 14 + case theme.SizeNameInputBorder: + return 2 + default: + return theme.DefaultTheme().Size(s) + } +}