mirror of https://github.com/anoshenko/rui.git
Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
|
8fae202d75 | |
|
7702221672 |
|
@ -421,6 +421,11 @@ func (listView *listViewData) getAdapter() ListAdapter {
|
||||||
return adapter
|
return adapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if obj := listView.binding(); obj != nil {
|
||||||
|
if adapter, ok := obj.(ListAdapter); ok {
|
||||||
|
return adapter
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,20 @@ func parseProperties(properties Properties, object DataObject) {
|
||||||
properties.Set(PropertyName(node.Tag()), node.Object())
|
properties.Set(PropertyName(node.Tag()), node.Object())
|
||||||
|
|
||||||
case ArrayNode:
|
case ArrayNode:
|
||||||
properties.Set(PropertyName(node.Tag()), node.Array())
|
switch node.ArraySize() {
|
||||||
|
case 0:
|
||||||
|
// do nothing
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if v := node.ArrayElement(0); v.IsObject() {
|
||||||
|
properties.Set(PropertyName(node.Tag()), v.Object())
|
||||||
|
} else {
|
||||||
|
properties.Set(PropertyName(node.Tag()), v.Value())
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
properties.Set(PropertyName(node.Tag()), node.Array())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,11 @@ func GetTableContent(view View, subviewID ...string) TableAdapter {
|
||||||
return adapter
|
return adapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if obj := view.binding(); obj != nil {
|
||||||
|
if adapter, ok := obj.(TableAdapter); ok {
|
||||||
|
return adapter
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
19
view.go
19
view.go
|
@ -311,7 +311,7 @@ func (view *viewData) getFunc(tag PropertyName) any {
|
||||||
|
|
||||||
case FocusEvent, LostFocusEvent:
|
case FocusEvent, LostFocusEvent:
|
||||||
if listeners := getNoArgEventRawListeners[View](view, nil, tag); len(listeners) > 0 {
|
if listeners := getNoArgEventRawListeners[View](view, nil, tag); len(listeners) > 0 {
|
||||||
|
return listeners
|
||||||
}
|
}
|
||||||
|
|
||||||
case KeyDownEvent, KeyUpEvent:
|
case KeyDownEvent, KeyUpEvent:
|
||||||
|
@ -354,6 +354,15 @@ func (view *viewData) getFunc(tag PropertyName) any {
|
||||||
return listeners
|
return listeners
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case changeListeners:
|
||||||
|
if len(view.changeListener) > 0 {
|
||||||
|
result := map[PropertyName]any{}
|
||||||
|
for tag, listener := range view.changeListener {
|
||||||
|
result[tag] = listener.rawListener()
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return viewStyleGet(view, tag)
|
return viewStyleGet(view, tag)
|
||||||
}
|
}
|
||||||
|
@ -1328,6 +1337,11 @@ func (view *viewData) handleCommand(self View, command PropertyName, data DataOb
|
||||||
func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool {
|
func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool {
|
||||||
if listener == nil {
|
if listener == nil {
|
||||||
delete(view.changeListener, tag)
|
delete(view.changeListener, tag)
|
||||||
|
if len(view.changeListener) > 0 {
|
||||||
|
view.setRaw(changeListeners, view.changeListener)
|
||||||
|
} else {
|
||||||
|
view.setRaw(changeListeners, nil)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
switch listener := listener.(type) {
|
switch listener := listener.(type) {
|
||||||
case func():
|
case func():
|
||||||
|
@ -1343,6 +1357,9 @@ func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool {
|
||||||
view.changeListener[tag] = newOneArgListenerVE(listener)
|
view.changeListener[tag] = newOneArgListenerVE(listener)
|
||||||
|
|
||||||
case string:
|
case string:
|
||||||
|
if listener == "" {
|
||||||
|
return view.SetChangeListener(tag, nil)
|
||||||
|
}
|
||||||
view.changeListener[tag] = newOneArgListenerBinding[View, PropertyName](listener)
|
view.changeListener[tag] = newOneArgListenerBinding[View, PropertyName](listener)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
48
viewStyle.go
48
viewStyle.go
|
@ -604,7 +604,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
|
|
||||||
case []string:
|
case []string:
|
||||||
if len(value) == 0 {
|
if len(value) == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
size := 0
|
size := 0
|
||||||
|
@ -699,7 +699,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
case []View:
|
case []View:
|
||||||
size := len(value)
|
size := len(value)
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer := allocStringBuilder()
|
buffer := allocStringBuilder()
|
||||||
|
@ -724,35 +724,29 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
case []any:
|
case []any:
|
||||||
size := len(value)
|
size := len(value)
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer := allocStringBuilder()
|
text := make([]string, 0, size)
|
||||||
defer freeStringBuilder(buffer)
|
for _, v := range value {
|
||||||
|
if txt := propertyValueToString(tag, v, indent); txt != "" {
|
||||||
if size == 1 {
|
text = append(text, txt)
|
||||||
return propertyValueToString(tag, value[0], indent)
|
|
||||||
} else {
|
|
||||||
buffer.WriteString("[ ")
|
|
||||||
comma := false
|
|
||||||
for _, v := range value {
|
|
||||||
text := propertyValueToString(tag, v, indent)
|
|
||||||
if text != "" {
|
|
||||||
if comma {
|
|
||||||
buffer.WriteString(", ")
|
|
||||||
}
|
|
||||||
buffer.WriteString(text)
|
|
||||||
comma = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
buffer.WriteString(" ]")
|
|
||||||
}
|
}
|
||||||
return buffer.String()
|
|
||||||
|
switch len(text) {
|
||||||
|
case 0:
|
||||||
|
return ""
|
||||||
|
case 1:
|
||||||
|
return text[0]
|
||||||
|
default:
|
||||||
|
return propertyValueToString(tag, text, indent)
|
||||||
|
}
|
||||||
|
|
||||||
case []BackgroundElement:
|
case []BackgroundElement:
|
||||||
size := len(value)
|
size := len(value)
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer := allocStringBuilder()
|
buffer := allocStringBuilder()
|
||||||
|
@ -805,7 +799,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
case map[PropertyName]AnimationProperty:
|
case map[PropertyName]AnimationProperty:
|
||||||
size := len(value)
|
size := len(value)
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer := allocStringBuilder()
|
buffer := allocStringBuilder()
|
||||||
|
@ -839,7 +833,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
case []AnimationProperty:
|
case []AnimationProperty:
|
||||||
size := len(value)
|
size := len(value)
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
return "[]"
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer := allocStringBuilder()
|
buffer := allocStringBuilder()
|
||||||
|
@ -941,7 +935,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
case []popupListener:
|
case []popupListener:
|
||||||
return getPopupListenerBinding(value)
|
return getPopupListenerBinding(value)
|
||||||
|
|
||||||
case map[PropertyName]oneArgListener[View, PropertyName]:
|
case map[PropertyName]any:
|
||||||
if len(value) == 0 {
|
if len(value) == 0 {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
@ -952,7 +946,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
|
||||||
indent2 := indent + "\t"
|
indent2 := indent + "\t"
|
||||||
buffer.WriteString("_{\n")
|
buffer.WriteString("_{\n")
|
||||||
for key, listener := range value {
|
for key, listener := range value {
|
||||||
if text, ok := listener.rawListener().(string); ok && text != "" {
|
if text, ok := listener.(string); ok && text != "" {
|
||||||
buffer.WriteString(indent2)
|
buffer.WriteString(indent2)
|
||||||
writeString(buffer, string(key))
|
writeString(buffer, string(key))
|
||||||
buffer.WriteString(" = ")
|
buffer.WriteString(" = ")
|
||||||
|
|
Loading…
Reference in New Issue