Added canvas elements

This commit is contained in:
Maarten Heremans 2024-04-23 09:35:21 +02:00
parent cb9515375a
commit 486b98ce11
5 changed files with 68 additions and 88 deletions

View File

@ -5,12 +5,9 @@ import (
"fmt" "fmt"
"image/color" "image/color"
"bitbucket.org/hevanto/ui/uiwidget"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding" "fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/layout"
) )
type Canvas string type Canvas string
@ -46,25 +43,7 @@ func (c Canvas) Build(
return return
} }
decorator = cnv decorator = applyDecorators(e, cnv)
if e.Decorators != nil {
for _, dec := range e.Decorators {
switch dec {
case "Border":
decorator = uiwidget.NewWidgetBorder(decorator)
case "HCenter":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "VCenter":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
}
}
}
if e.Hidden { if e.Hidden {
decorator.Hide() decorator.Hide()
@ -76,11 +55,17 @@ func (c *Canvas) BuildImageCanvas(
e *Element, e *Element,
s ScreenHandler, s ScreenHandler,
) (obj fyne.CanvasObject, err error) { ) (obj fyne.CanvasObject, err error) {
img, err := AssetToImage(s, e.ImageName) var img *canvas.Image
if e.ImageName != "" {
img, err = AssetToImage(s, e.ImageName)
if err != nil { if err != nil {
err = fmt.Errorf("failed to load image: %w", err) err = fmt.Errorf("failed to load image: %w", err)
return return
} }
} else {
img = &canvas.Image{}
}
if e.Translucency != nil { if e.Translucency != nil {
img.Translucency = *e.Translucency img.Translucency = *e.Translucency
} }

View File

@ -4,10 +4,8 @@ import (
"errors" "errors"
"fmt" "fmt"
"bitbucket.org/hevanto/ui/uiwidget"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
) )
// The constants for the Containers // The constants for the Containers
@ -69,25 +67,7 @@ func (cnt Container) Build(
return return
} }
decorator = cont decorator = applyDecorators(e, cont)
if e.Decorators != nil {
for _, dec := range e.Decorators {
switch dec {
case "Border":
decorator = uiwidget.NewWidgetBorder(decorator)
case "HCenter":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "VCenter":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
}
}
}
if e.Hidden { if e.Hidden {
decorator.Hide() decorator.Hide()

53
screen/decorators.go Normal file
View File

@ -0,0 +1,53 @@
package screen
import (
"bitbucket.org/hevanto/ui/uiwidget"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
)
func applyDecorators(
e *Element,
obj fyne.CanvasObject,
) (
decorator fyne.CanvasObject,
) {
decorator = obj
if e.Decorators != nil {
for _, dec := range e.Decorators {
switch dec {
case "Border":
decorator = uiwidget.NewWidgetBorder(decorator)
case "HCenter":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "HLeading":
decorator = container.NewHBox(
decorator,
layout.NewSpacer())
case "HTrailing":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator)
case "VCenter":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "VLeading":
decorator = container.NewVBox(
decorator,
layout.NewSpacer())
case "VTrailing":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator)
}
}
}
return
}

View File

@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"bitbucket.org/hevanto/ui/uilayout" "bitbucket.org/hevanto/ui/uilayout"
"bitbucket.org/hevanto/ui/uiwidget"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/layout"
@ -113,25 +112,7 @@ func (l Layout) Build(
return return
} }
decorator = lay decorator = applyDecorators(e, lay)
if e.Decorators != nil {
for _, dec := range e.Decorators {
switch dec {
case "Border":
decorator = uiwidget.NewWidgetBorder(decorator)
case "HCenter":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "VCenter":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
}
}
}
if e.Hidden { if e.Hidden {
decorator.Hide() decorator.Hide()

View File

@ -9,7 +9,6 @@ import (
"bitbucket.org/hevanto/ui/uiwidget" "bitbucket.org/hevanto/ui/uiwidget"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding" "fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
@ -256,25 +255,7 @@ func (w Widget) Build(
return return
} }
decorator = widget decorator = applyDecorators(e, widget)
if e.Decorators != nil {
for _, dec := range e.Decorators {
switch dec {
case "Border":
decorator = uiwidget.NewWidgetBorder(decorator)
case "HCenter":
decorator = container.NewHBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
case "VCenter":
decorator = container.NewVBox(
layout.NewSpacer(),
decorator,
layout.NewSpacer())
}
}
}
if e.Hidden { if e.Hidden {
decorator.Hide() decorator.Hide()
@ -322,7 +303,7 @@ func (w Widget) buildCalendarWidget(
if e.TimeFormat != nil { if e.TimeFormat != nil {
timeFormat = parseTimeFormat(*e.TimeFormat) timeFormat = parseTimeFormat(*e.TimeFormat)
} }
if t, err = time.Parse(timeFormat, *e.Time); err != nil { if t, err = time.ParseInLocation(timeFormat, *e.Time, time.Local); err != nil {
err = fmt.Errorf("CalendarWidget: failed to parse time: %w", err) err = fmt.Errorf("CalendarWidget: failed to parse time: %w", err)
return return
} }