mirror of https://github.com/anoshenko/rui.git
87 lines
2.8 KiB
Go
87 lines
2.8 KiB
Go
package rui
|
|
|
|
import "strings"
|
|
|
|
// Button represent a Button view
|
|
type Button interface {
|
|
ListLayout
|
|
}
|
|
|
|
type buttonData struct {
|
|
listLayoutData
|
|
}
|
|
|
|
// NewButton create new Button object and return it
|
|
func NewButton(session Session, params Params) Button {
|
|
button := new(buttonData)
|
|
button.init(session)
|
|
setInitParams(button, params)
|
|
return button
|
|
}
|
|
|
|
func newButton(session Session) View {
|
|
return new(buttonData)
|
|
}
|
|
|
|
func (button *buttonData) init(session Session) {
|
|
button.listLayoutData.init(session)
|
|
button.tag = "Button"
|
|
button.systemClass = "ruiButton"
|
|
button.setRaw(Style, "ruiEnabledButton")
|
|
button.setRaw(StyleDisabled, "ruiDisabledButton")
|
|
button.setRaw(Semantics, ButtonSemantics)
|
|
button.setRaw(TabIndex, 0)
|
|
}
|
|
|
|
func (button *buttonData) Focusable() bool {
|
|
return true
|
|
}
|
|
|
|
func (button *buttonData) htmlSubviews(self View, buffer *strings.Builder) {
|
|
if button.views != nil {
|
|
for _, view := range button.views {
|
|
view.addToCSSStyle(map[string]string{`flex`: `0 0 auto`})
|
|
viewHTML(view, buffer, "")
|
|
}
|
|
}
|
|
}
|
|
|
|
// GetButtonVerticalAlign returns the vertical align of a Button subview:
|
|
// TopAlign (0), BottomAlign (1), CenterAlign (2), or StretchAlign (3)
|
|
//
|
|
// The second argument (subviewID) specifies the path to the child element whose value needs to be returned.
|
|
// If it is not specified then a value from the first argument (view) is returned.
|
|
func GetButtonVerticalAlign(view View, subviewID ...string) int {
|
|
return enumStyledProperty(view, subviewID, VerticalAlign, CenterAlign, false)
|
|
}
|
|
|
|
// GetButtonHorizontalAlign returns the vertical align of a Button subview:
|
|
// LeftAlign (0), RightAlign (1), CenterAlign (2), or StretchAlign (3)
|
|
//
|
|
// The second argument (subviewID) specifies the path to the child element whose value needs to be returned.
|
|
// If it is not specified then a value from the first argument (view) is returned.
|
|
func GetButtonHorizontalAlign(view View, subviewID ...string) int {
|
|
return enumStyledProperty(view, subviewID, HorizontalAlign, CenterAlign, false)
|
|
}
|
|
|
|
// GetButtonOrientation returns the orientation of a Button subview:
|
|
// TopDownOrientation (0), StartToEndOrientation (1), BottomUpOrientation (2), or EndToStartOrientation (3)
|
|
//
|
|
// The second argument (subviewID) specifies the path to the child element whose value needs to be returned.
|
|
// If it is not specified then a value from the first argument (view) is returned.
|
|
func GetButtonOrientation(view View, subviewID ...string) int {
|
|
if view = getSubview(view, subviewID); view != nil {
|
|
if orientation, ok := valueToOrientation(view.Get(Orientation), view.Session()); ok {
|
|
return orientation
|
|
}
|
|
|
|
if value := valueFromStyle(view, Orientation); value != nil {
|
|
if orientation, ok := valueToOrientation(value, view.Session()); ok {
|
|
return orientation
|
|
}
|
|
}
|
|
}
|
|
|
|
return StartToEndOrientation
|
|
}
|