sub init() m.buttonBackground = m.top.findNode("buttonBackground") m.buttonIcon = m.top.findNode("buttonIcon") m.buttonText = m.top.findNode("buttonText") m.buttonText.visible = false m.originalWidth = 0 m.top.observeField("background", "onBackgroundChanged") m.top.observeField("icon", "onIconChanged") m.top.observeField("text", "onTextChanged") m.top.observeField("height", "onHeightChanged") m.top.observeField("width", "onWidthChanged") m.top.observeField("padding", "onPaddingChanged") m.top.observeField("focusedChild", "onFocusChanged") m.top.observeField("highlighted", "onHighlightChanged") end sub sub onFocusChanged() if m.top.hasFocus() m.buttonText.visible = true m.buttonBackground.blendColor = m.top.focusBackground m.top.width = 250 else m.buttonText.visible = false m.top.width = m.originalWidth onHighlightChanged() end if end sub sub onHighlightChanged() if m.top.highlighted m.buttonBackground.blendColor = m.top.highlightBackground else m.buttonBackground.blendColor = m.top.background end if end sub sub onBackgroundChanged() m.buttonBackground.blendColor = m.top.background m.top.unobserveField("background") end sub sub onIconChanged() m.buttonIcon.uri = m.top.icon end sub sub onTextChanged() m.buttonText.text = m.top.text end sub sub setIconSize() height = m.buttonBackground.height width = m.buttonBackground.width if height > 0 and width > 0 ' TODO: Use smallest number between them m.buttonIcon.height = m.top.height if m.top.padding > 0 m.buttonIcon.height = m.buttonIcon.height - m.top.padding end if m.buttonIcon.width = m.buttonIcon.height m.buttonIcon.translation = [m.top.padding, ((height - m.buttonIcon.height) / 2)] m.buttonText.translation = [m.top.padding + m.buttonIcon.width + 10, 12] end if end sub sub onHeightChanged() m.buttonBackground.height = m.top.height setIconSize() end sub sub onWidthChanged() if m.originalWidth = 0 m.originalWidth = m.top.width end if m.buttonBackground.width = m.top.width setIconSize() end sub sub onPaddingChanged() setIconSize() end sub function onKeyEvent(key as string, press as boolean) as boolean if not press then return false if key = "OK" and m.top.hasFocus() ' Simply toggle the selected field to trigger the next event m.top.selected = not m.top.selected return true end if return false end function