Various improvements to Icon, MimeIcon
This commit is contained in:
parent
fe50f5783b
commit
5a32b06cef
27
icon.go
27
icon.go
@ -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)))
|
||||
}
|
||||
}
|
||||
|
@ -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))
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user