izapple2/frontend/a2fyne/toolbarScreen.go

94 lines
2.1 KiB
Go
Raw Permalink Normal View History

2020-10-15 22:38:15 +00:00
package main
import (
2021-03-06 19:23:17 +00:00
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
2020-10-16 18:41:34 +00:00
"github.com/ivanizag/izapple2/screen"
2020-10-15 22:38:15 +00:00
)
type toolbarScreen struct {
s *state
w fyne.CanvasObject
ntsc *widget.Button
ntscDisabled *widget.Icon
plain *widget.Button
plainDisabled *widget.Icon
green *widget.Button
greenDisabled *widget.Icon
}
func newToolbarScreen(s *state) *toolbarScreen {
var tbs toolbarScreen
tbs.s = s
tbs.ntsc = widget.NewButtonWithIcon("",
2021-03-06 19:23:17 +00:00
theme.NewThemedResource(resourceTelevisionClassicSvg),
2020-10-15 22:38:15 +00:00
func() {
2020-10-16 18:41:34 +00:00
tbs.setScreenMode(screen.ScreenModeNTSC)
2020-10-15 22:38:15 +00:00
})
tbs.ntscDisabled = widget.NewIcon(
theme.NewDisabledResource(resourceTelevisionClassicSvg))
tbs.plain = widget.NewButtonWithIcon("",
2021-03-06 19:23:17 +00:00
theme.NewThemedResource(resourceTelevisionSvg),
2020-10-15 22:38:15 +00:00
func() {
2020-10-16 18:41:34 +00:00
tbs.setScreenMode(screen.ScreenModePlain)
2020-10-15 22:38:15 +00:00
})
tbs.plainDisabled = widget.NewIcon(
theme.NewDisabledResource(resourceTelevisionSvg))
tbs.green = widget.NewButtonWithIcon("",
2021-03-06 19:23:17 +00:00
theme.NewThemedResource(resourceMonitorSvg),
2020-10-15 22:38:15 +00:00
func() {
2020-10-16 18:41:34 +00:00
tbs.setScreenMode(screen.ScreenModeGreen)
2020-10-15 22:38:15 +00:00
})
tbs.greenDisabled = widget.NewIcon(
theme.NewDisabledResource(resourceMonitorSvg))
2021-03-06 19:23:17 +00:00
tbs.w = container.NewHBox(
2020-10-15 22:38:15 +00:00
tbs.ntsc, tbs.ntscDisabled,
tbs.plain, tbs.plainDisabled,
tbs.green, tbs.greenDisabled)
tbs.ntscDisabled.Hide()
tbs.plainDisabled.Hide()
tbs.greenDisabled.Hide()
tbs.setScreenMode(s.screenMode)
return &tbs
}
func (tbs *toolbarScreen) setScreenMode(screenMode int) {
switch tbs.s.screenMode {
2020-10-16 18:41:34 +00:00
case screen.ScreenModeNTSC:
2020-10-15 22:38:15 +00:00
tbs.ntsc.Show()
tbs.ntscDisabled.Hide()
2020-10-16 18:41:34 +00:00
case screen.ScreenModePlain:
2020-10-15 22:38:15 +00:00
tbs.plain.Show()
tbs.plainDisabled.Hide()
2020-10-16 18:41:34 +00:00
case screen.ScreenModeGreen:
2020-10-15 22:38:15 +00:00
tbs.green.Show()
tbs.greenDisabled.Hide()
}
tbs.s.screenMode = screenMode
switch screenMode {
2020-10-16 18:41:34 +00:00
case screen.ScreenModeNTSC:
2020-10-15 22:38:15 +00:00
tbs.ntsc.Hide()
tbs.ntscDisabled.Show()
2020-10-16 18:41:34 +00:00
case screen.ScreenModePlain:
2020-10-15 22:38:15 +00:00
tbs.plain.Hide()
tbs.plainDisabled.Show()
2020-10-16 18:41:34 +00:00
case screen.ScreenModeGreen:
2020-10-15 22:38:15 +00:00
tbs.green.Hide()
tbs.greenDisabled.Show()
}
}
func (tbs *toolbarScreen) ToolbarObject() fyne.CanvasObject {
return tbs.w
}