Compare commits

..

No commits in common. "694f9127c0882e6bfdae0ae8085334d282b42655" and "6f8d5cc426e1999e2050b27d203b427b7283c87f" have entirely different histories.

2 changed files with 33 additions and 54 deletions

View File

@ -5,11 +5,9 @@ import "git.tebibyte.media/tomo/tomo/input"
import "git.tebibyte.media/tomo/tomo/event"
import "git.tebibyte.media/tomo/objects/layouts"
var _ tomo.Object = new(MenuItem)
// MenuItem is a selectable memu item.
type MenuItem struct {
box tomo.ContainerBox
tomo.ContainerBox
label *Label
icon *Icon
@ -27,39 +25,27 @@ func NewMenuItem (text string) *MenuItem {
// NewIconMenuItem creates a new menu item with the specified icon and text.
func NewIconMenuItem (icon tomo.Icon, text string) *MenuItem {
menuItem := &MenuItem {
box: tomo.NewContainerBox(),
box := &MenuItem {
ContainerBox: tomo.NewContainerBox(),
label: NewLabel(text),
icon: NewIcon(icon, tomo.IconSizeSmall),
}
menuItem.box.SetRole(tomo.R("objects", "MenuItem"))
menuItem.label.SetAlign(tomo.AlignStart, tomo.AlignMiddle)
menuItem.box.SetAttr(tomo.ALayout(layouts.Row { false, true }))
box.SetRole(tomo.R("objects", "MenuItem"))
box.label.SetAlign(tomo.AlignStart, tomo.AlignMiddle)
box.SetAttr(tomo.ALayout(layouts.Row { false, true }))
menuItem.box.Add(menuItem.icon)
menuItem.box.Add(menuItem.label)
box.Add(box.icon)
box.Add(box.label)
menuItem.box.SetInputMask(true)
menuItem.box.OnMouseEnter(menuItem.handleMouseEnter)
menuItem.box.OnMouseLeave(menuItem.handleMouseLeave)
menuItem.box.OnButtonDown(menuItem.handleButtonDown)
menuItem.box.OnButtonUp(menuItem.handleButtonUp)
menuItem.box.OnKeyDown(menuItem.handleKeyDown)
menuItem.box.OnKeyUp(menuItem.handleKeyUp)
menuItem.box.SetFocusable(true)
return menuItem
}
// GetBox returns the underlying box.
func (this *MenuItem) GetBox () tomo.Box {
return this.box
}
// SetFocused sets whether or not this menu item has keyboard focus. If set to
// true, this method will steal focus away from whichever object currently has
// focus.
func (this *MenuItem) SetFocused (focused bool) {
this.box.SetFocused(focused)
box.SetInputMask(true)
box.OnMouseEnter(box.handleMouseEnter)
box.OnMouseLeave(box.handleMouseLeave)
box.OnButtonDown(box.handleButtonDown)
box.OnButtonUp(box.handleButtonUp)
box.OnKeyDown(box.handleKeyDown)
box.OnKeyUp(box.handleKeyUp)
box.SetFocusable(true)
return box
}
// SetText sets the text of the items's label.
@ -104,7 +90,7 @@ func (this *MenuItem) handleButtonDown (button input.Button) bool {
func (this *MenuItem) handleButtonUp (button input.Button) bool {
if button != input.ButtonLeft { return false }
if this.box.Window().MousePosition().In(this.box.Bounds()) {
if this.Window().MousePosition().In(this.Bounds()) {
this.on.click.Broadcast()
}
return true

View File

@ -4,29 +4,22 @@ import "git.tebibyte.media/tomo/tomo"
import "git.tebibyte.media/tomo/tomo/data"
import "git.tebibyte.media/tomo/tomo/canvas"
var _ tomo.Object = new(MimeIcon)
// MimeIcon displays an icon of a MIME type.
type MimeIcon struct {
box tomo.Box
tomo.Box
mime data.Mime
size tomo.IconSize
}
// NewMimeIcon creates a new icon from a MIME type.
func NewMimeIcon (mime data.Mime, size tomo.IconSize) *MimeIcon {
mimeIcon := &MimeIcon {
box: tomo.NewBox(),
this := &MimeIcon {
Box: tomo.NewBox(),
}
mimeIcon.box.SetRole(tomo.R("objects", "MimeIcon"))
mimeIcon.SetIcon(mime, size)
mimeIcon.box.OnIconSetChange(mimeIcon.handleIconSetChange)
return mimeIcon
}
// GetBox returns the underlying box.
func (this *MimeIcon) GetBox () tomo.Box {
return this.box
this.SetRole(tomo.R("objects", "MimeIcon"))
this.SetIcon(mime, size)
this.OnIconSetChange(this.handleIconSetChange)
return this
}
// SetIcon sets the MIME type and size of the icon.
@ -42,12 +35,12 @@ func (this *MimeIcon) handleIconSetChange () {
}
func (this *MimeIcon) setTexture (texture canvas.Texture) {
this.box.SetAttr(tomo.ATexture(texture))
this.box.SetAttr(tomo.ATextureMode(tomo.TextureModeCenter))
this.SetAttr(tomo.ATexture(texture))
this.SetAttr(tomo.ATextureMode(tomo.TextureModeCenter))
if texture == nil {
this.box.SetAttr(tomo.AMinimumSize(0, 0))
this.SetAttr(tomo.AMinimumSize(0, 0))
} else {
bounds := texture.Bounds()
this.box.SetAttr(tomo.AttrMinimumSize(bounds.Max.Sub(bounds.Min)))
this.SetAttr(tomo.AttrMinimumSize(bounds.Max.Sub(bounds.Min)))
}
}