Compare commits

...

2 Commits

Author SHA1 Message Date
5a32b06cef Various improvements to Icon, MimeIcon 2024-08-11 22:36:10 -04:00
fe50f5783b Upgrade Tomo API 2024-08-11 22:35:50 -04:00
4 changed files with 26 additions and 10 deletions

2
go.mod
View File

@ -2,4 +2,4 @@ module git.tebibyte.media/tomo/objects
go 1.20
require git.tebibyte.media/tomo/tomo v0.43.0
require git.tebibyte.media/tomo/tomo v0.45.0

4
go.sum
View File

@ -1,2 +1,2 @@
git.tebibyte.media/tomo/tomo v0.43.0 h1:V0HT+7PluCQIeCrOzYT4s11MXStXPNVJnLZ5AnaOzCM=
git.tebibyte.media/tomo/tomo v0.43.0/go.mod h1:WrtilgKB1y8O2Yu7X4mYcRiqOlPR8NuUnoA/ynkQWrs=
git.tebibyte.media/tomo/tomo v0.45.0 h1:fQH0WIPidW275hOq9dE6R7p064xG1RGx2QU68Avlr84=
git.tebibyte.media/tomo/tomo v0.45.0/go.mod h1:WrtilgKB1y8O2Yu7X4mYcRiqOlPR8NuUnoA/ynkQWrs=

27
icon.go
View File

@ -1,10 +1,13 @@
package objects
import "git.tebibyte.media/tomo/tomo"
import "git.tebibyte.media/tomo/tomo/canvas"
// Icon displays a single icon.
type Icon struct {
tomo.Box
icon tomo.Icon
size tomo.IconSize
}
func iconSizeString (size tomo.IconSize) string {
@ -22,14 +25,28 @@ func NewIcon (icon tomo.Icon, size tomo.IconSize) *Icon {
}
this.SetRole(tomo.R("objects", "Icon"))
this.SetIcon(icon, size)
this.OnIconSetChange(this.handleIconSetChange)
return this
}
// SetIcon sets the icon.
func (this *Icon) SetIcon (icon tomo.Icon, size tomo.IconSize) {
iconTexture := icon.Texture(size)
bounds := iconTexture.Bounds()
this.SetAttr(tomo.AIcon(icon, size))
this.SetAttr(tomo.AMinimumSize(bounds.Dx(), bounds.Dy()))
this.SetTag(iconSizeString(size), true)
if this.icon == icon { return }
this.icon = icon
this.setTexture(icon.Texture(size))
}
func (this *Icon) handleIconSetChange () {
this.setTexture(this.icon.Texture(this.size))
}
func (this *Icon) setTexture (texture canvas.Texture) {
this.SetAttr(tomo.ATexture(texture))
this.SetAttr(tomo.ATextureMode(tomo.TextureModeCenter))
if texture == nil {
this.SetAttr(tomo.AMinimumSize(0, 0))
} else {
bounds := texture.Bounds()
this.SetAttr(tomo.AttrMinimumSize(bounds.Max.Sub(bounds.Min)))
}
}

View File

@ -16,7 +16,7 @@ func NewMimeIcon (mime data.Mime, size tomo.IconSize) *MimeIcon {
this := &MimeIcon {
Box: tomo.NewBox(),
}
this.SetRole(tomo.R("objects", "Icon"))
this.SetRole(tomo.R("objects", "MimeIcon"))
this.SetIcon(mime, size)
this.OnIconSetChange(this.handleIconSetChange)
return this
@ -27,7 +27,6 @@ func (this *MimeIcon) SetIcon (mime data.Mime, size tomo.IconSize) {
if this.mime == mime && this.size == size { return }
this.mime = mime
this.size = size
this.SetTag(iconSizeString(size), true)
this.setTexture(tomo.MimeIconTexture(mime, size))
}