forked from mbk-lab/rui_orig
2
0
Fork 0

replace interface{} -> any

This commit is contained in:
Alexei Anoshenko 2022-07-26 18:36:00 +03:00
parent 38dafc42c6
commit fdbb6cb00b
62 changed files with 396 additions and 396 deletions

View File

@ -358,8 +358,8 @@ View имеет ряд свойств, таких как высота, шири
(View реализует данный интерфейс): (View реализует данный интерфейс):
type Properties interface { type Properties interface {
Get(tag string) interface{} Get(tag string) any
Set(tag string, value interface{}) bool Set(tag string, value any) bool
Remove(tag string) Remove(tag string)
Clear() Clear()
AllTags() []string AllTags() []string
@ -374,8 +374,8 @@ View имеет ряд свойств, таких как высота, шири
Для упрощения установки/чтения свойств имеются также две глобальные функции Get и Set: Для упрощения установки/чтения свойств имеются также две глобальные функции Get и Set:
func Get(rootView View, viewID, tag string) interface{} func Get(rootView View, viewID, tag string) any
func Set(rootView View, viewID, tag string, value interface{}) bool func Set(rootView View, viewID, tag string, value any) bool
Данные функции возвращают/устанавливают значение дочернего View Данные функции возвращают/устанавливают значение дочернего View
@ -439,7 +439,7 @@ View имеет ряд свойств, таких как высота, шири
* функция func([<параметры>]) * функция func([<параметры>])
* массив функций []func(< View >[, <параметры>]) * массив функций []func(< View >[, <параметры>])
* массив функций []func([<параметры>]) * массив функций []func([<параметры>])
* []interface{} содержащий только func(< View >[, <параметры>]) и func([<параметры>]) * []any содержащий только func(< View >[, <параметры>]) и func([<параметры>])
После присваивания свойству все эти типы преобразуются в массив функций []func(<View>, [<параметры>]). После присваивания свойству все эти типы преобразуются в массив функций []func(<View>, [<параметры>]).
Соответственно функция Get всегда возвращает массив функций []func(<View>, [<параметры>]). Соответственно функция Get всегда возвращает массив функций []func(<View>, [<параметры>]).
@ -451,7 +451,7 @@ View имеет ряд свойств, таких как высота, шири
* func(newText string) * func(newText string)
* []func(editor EditView, newText string) * []func(editor EditView, newText string)
* []func(newText string) * []func(newText string)
* []interface{} содержащий только func(editor EditView, newText string) и func(newText string) * []any содержащий только func(editor EditView, newText string) и func(newText string)
А свойство "edit-text-changed" всегда хранит и возвращает []func(EditView, string). А свойство "edit-text-changed" всегда хранит и возвращает []func(EditView, string).
@ -1037,7 +1037,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру
Pos определяет положение точки относительно начала линии градиента. Массив должен иметь не менее 2 точек. Pos определяет положение точки относительно начала линии градиента. Массив должен иметь не менее 2 точек.
В качестве значения градиента можно также передать массив Color. В этом случае точки равномерно В качестве значения градиента можно также передать массив Color. В этом случае точки равномерно
распределяются вдоль линии градиента. распределяются вдоль линии градиента.
Также в качестве массива ключевых точек можно использовать массив типа []interface{}. Также в качестве массива ключевых точек можно использовать массив типа []any.
Элементами этого массива могут быть BackgroundGradientPoint, Color, текстовое представление BackgroundGradientPoint Элементами этого массива могут быть BackgroundGradientPoint, Color, текстовое представление BackgroundGradientPoint
или Color и имя константы или Color и имя константы
@ -1105,8 +1105,8 @@ Pos определяет положение точки относительно
описывается структурой BackgroundGradientAngle: описывается структурой BackgroundGradientAngle:
type BackgroundGradientAngle struct { type BackgroundGradientAngle struct {
Color interface{} Color any
Angle interface{} Angle any
} }
где Color задает цвет ключевого угла и может принимать значение типа Color или string (цветовая константа где Color задает цвет ключевого угла и может принимать значение типа Color или string (цветовая константа
@ -1216,7 +1216,7 @@ radius необходимо передать nil
Многоугольная область обрезки. Создается с помощью функций: Многоугольная область обрезки. Создается с помощью функций:
func PolygonClip(points []interface{}) ClipShape func PolygonClip(points []any) ClipShape
func PolygonPointsClip(points []SizeUnit) ClipShape func PolygonPointsClip(points []SizeUnit) ClipShape
в качестве аргумента передается массив угловых точек многоугольника в следующем порядке: x1, y1, x2, y2, … в качестве аргумента передается массив угловых точек многоугольника в следующем порядке: x1, y1, x2, y2, …
@ -2114,7 +2114,7 @@ radius необходимо передать nil
* []string - каждый элемент массива преобразуется во View как описано в предыдущем пункте; * []string - каждый элемент массива преобразуется во View как описано в предыдущем пункте;
* []interface{} - данный массив должен содержать только View и string. Каждый string-элемент * []any - данный массив должен содержать только View и string. Каждый string-элемент
преобразуется во View, как описано выше. Если массив будет содержать недопустимае значения, преобразуется во View, как описано выше. Если массив будет содержать недопустимае значения,
то свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке. то свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке.
@ -2285,7 +2285,7 @@ Cвойство "grid-auto-flow" может принимать следующи
* []string. Каждый элемент должен быть текстовым представлением SizeUnit (или SizeUnit константой) * []string. Каждый элемент должен быть текстовым представлением SizeUnit (или SizeUnit константой)
* []interface{}. Каждый элемент должен или иметь тип SizeUnit или быть текстовым * []any. Каждый элемент должен или иметь тип SizeUnit или быть текстовым
представлением SizeUnit (или SizeUnit константой) представлением SizeUnit (или SizeUnit константой)
Если количество элементов в свойствах "cell-width" и "cell-height" меньше, чем используемое число Если количество элементов в свойствах "cell-width" и "cell-height" меньше, чем используемое число
@ -3141,7 +3141,7 @@ FileInfo содержит только информацию о файле, но
* []string * []string
* []fmt.Stringer * []fmt.Stringer
* []interface{} содержащий в качестве элементов только: string, fmt.Stringer, bool, rune, * []any содержащий в качестве элементов только: string, fmt.Stringer, bool, rune,
float32, float64, int, int8…int64, uint, uint8…uint64. float32, float64, int, int8…int64, uint, uint8…uint64.
Все эти типы данных преопразуются в []string и присваиваются свойству "items". Все эти типы данных преопразуются в []string и присваиваются свойству "items".
@ -3157,9 +3157,9 @@ float32, float64, int, int8…int64, uint, uint8…uint64.
* int * int
* []string * []string
* string может содержать несколько индексов разделенных запятыми * string может содержать несколько индексов разделенных запятыми
* []interface{} содержащий в качестве элементов только: string, int, int8…int64, uint, uint8…uint64. * []any содержащий в качестве элементов только: string, int, int8…int64, uint, uint8…uint64.
Все эти типы данных преопразуются в []interface{} и присваиваются свойству "disabled-items". Все эти типы данных преопразуются в []any и присваиваются свойству "disabled-items".
Прочитать значение свойства "disabled-items" можно с помощью функции Прочитать значение свойства "disabled-items" можно с помощью функции
func GetDropDownDisabledItems(view View, subviewID string) []int func GetDropDownDisabledItems(view View, subviewID string) []int
@ -3248,7 +3248,7 @@ Cвойствy "items" могут быть присвоены следующие
* ListAdapter; * ListAdapter;
* []View при присваиваниии преобразуется в ListAdapter с помощью функции NewViewListAdapter; * []View при присваиваниии преобразуется в ListAdapter с помощью функции NewViewListAdapter;
* []string при присваиваниии преобразуется в ListAdapter с помощью функции NewTextListAdapter; * []string при присваиваниии преобразуется в ListAdapter с помощью функции NewTextListAdapter;
* []interface{} который может содержать элементы типа View, string, fmt.Stringer, bool, rune, * []any который может содержать элементы типа View, string, fmt.Stringer, bool, rune,
float32, float64, int, int8…int64, uint, uint8…uint64. При присваиваниии все типы кроме float32, float64, int, int8…int64, uint, uint8…uint64. При присваиваниии все типы кроме
View и string преобразуется в string, далее все string в TextView и из получившегося массива View View и string преобразуется в string, далее все string в TextView и из получившегося массива View
с помощью функции NewViewListAdapter получается ListAdapter. с помощью функции NewViewListAdapter получается ListAdapter.
@ -3454,7 +3454,7 @@ CheckboxHorizontalAlign и CheckboxVerticalAlign)
type TableAdapter interface { type TableAdapter interface {
RowCount() int RowCount() int
ColumnCount() int ColumnCount() int
Cell(row, column int) interface{} Cell(row, column int) any
} }
где функции RowCount() и ColumnCount() должны возврацать количество строк и столбцов в таблице; где функции RowCount() и ColumnCount() должны возврацать количество строк и столбцов в таблице;
@ -3474,10 +3474,10 @@ Cell(row, column int) возвращает содержимое ячейки т
Свойству "content" можно также присваивать следующие типы данных Свойству "content" можно также присваивать следующие типы данных
* TableAdapter * TableAdapter
* [][]interface{} * [][]any
* [][]string * [][]string
[][]interface{} и [][]string при присвоении преобразуются к TableAdapter. [][]any и [][]string при присвоении преобразуются к TableAdapter.
### Свойство "cell-style" ### Свойство "cell-style"
@ -3530,7 +3530,7 @@ Cell(row, column int) возвращает содержимое ячейки т
| | | | | | | |
|------|-------|--------| |------|-------|--------|
Если в качестве значения свойства "content" используется [][]interface{}, то для объединения Если в качестве значения свойства "content" используется [][]any, то для объединения
ячеек используются пустые структуры ячеек используются пустые структуры
type VerticalTableJoin struct { type VerticalTableJoin struct {
@ -3541,7 +3541,7 @@ Cell(row, column int) возвращает содержимое ячейки т
Данные структуры присоединяют ячейку, соответсвенно, к верхней/левой. Описание приведенной выше таблицы будет Данные структуры присоединяют ячейку, соответсвенно, к верхней/левой. Описание приведенной выше таблицы будет
иметь следующий вид иметь следующий вид
content := [][]interface{} { content := [][]any {
{"", "", rui.HorizontalTableJoin{}}, {"", "", rui.HorizontalTableJoin{}},
{rui.VerticalTableJoin{}, "", ""}, {rui.VerticalTableJoin{}, "", ""},
} }
@ -4552,7 +4552,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете
Однократная анимация запускается с помощью функции SetAnimated интерфейса View. Данная функция имеет следующее Однократная анимация запускается с помощью функции SetAnimated интерфейса View. Данная функция имеет следующее
описание: описание:
SetAnimated(tag string, value interface{}, animation Animation) bool SetAnimated(tag string, value any, animation Animation) bool
Она присваивает свойству новое значение, при этом изменение происходит с использованием заданной анимации. Она присваивает свойству новое значение, при этом изменение происходит с использованием заданной анимации.
Например, Например,
@ -4564,7 +4564,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете
Есть также глобальная функция для анимированного однократного изменения значения свойства дочернего View Есть также глобальная функция для анимированного однократного изменения значения свойства дочернего View
func SetAnimated(rootView View, viewID, tag string, value interface{}, animation Animation) bool func SetAnimated(rootView View, viewID, tag string, value any, animation Animation) bool
Постоянная анимация запускается каждый раз когда изменяется значение свойства. Для задания постоянной Постоянная анимация запускается каждый раз когда изменяется значение свойства. Для задания постоянной
анимации перехода используется свойство "transition" (константа Transition). В качества значения данному анимации перехода используется свойство "transition" (константа Transition). В качества значения данному
@ -4641,8 +4641,8 @@ Cценарий анимации описывает более сложную а
type AnimatedProperty struct { type AnimatedProperty struct {
Tag string Tag string
From, To interface{} From, To any
KeyFrames map[int]interface{} KeyFrames map[int]any
} }
где Tag - имя свойства, From - начальное значение свойства, To - конечное значение свойства, где Tag - имя свойства, From - начальное значение свойства, To - конечное значение свойства,
@ -4834,11 +4834,11 @@ Safari и Firefox.
* SetTitleColor(color Color) устанавливает цвет панели навигации браузера. Поддерживается только в Safari и Chrome для Android. * SetTitleColor(color Color) устанавливает цвет панели навигации браузера. Поддерживается только в Safari и Chrome для Android.
* Get(viewID, tag string) interface{} - возвращает значение свойства View с именем tag. Эквивалентно * Get(viewID, tag string) any - возвращает значение свойства View с именем tag. Эквивалентно
rui.Get(session.RootView(), viewID, tag) rui.Get(session.RootView(), viewID, tag)
* Set(viewID, tag string, value interface{}) bool - устанавливает значение свойства View с именем tag. * Set(viewID, tag string, value any) bool - устанавливает значение свойства View с именем tag.
rui.Set(session.RootView(), viewID, tag, value) rui.Set(session.RootView(), viewID, tag, value)

View File

@ -362,8 +362,8 @@ View has a number of properties like height, width, color, text parameters, etc.
The Properties interface is used to read and write the property value (View implements this interface): The Properties interface is used to read and write the property value (View implements this interface):
type Properties interface { type Properties interface {
Get(tag string) interface{} Get(tag string) any
Set(tag string, value interface{}) bool Set(tag string, value any) bool
Remove(tag string) Remove(tag string)
Clear() Clear()
AllTags() []string AllTags() []string
@ -378,8 +378,8 @@ The Remove function removes property value, equivalent to Set(nil)
To simplify setting / reading properties, there are also two global functions Get and Set: To simplify setting / reading properties, there are also two global functions Get and Set:
func Get(rootView View, viewID, tag string) interface{} func Get(rootView View, viewID, tag string) any
func Set(rootView View, viewID, tag string, value interface{}) bool func Set(rootView View, viewID, tag string, value any) bool
These functions get/set the value of the child View These functions get/set the value of the child View
@ -441,7 +441,7 @@ Each event can have multiple listeners. In this regard, five data types can be u
* func([< parameters>]) * func([< parameters>])
* []func(< View >[, < parameters >]) * []func(< View >[, < parameters >])
* []func([< parameters >]) * []func([< parameters >])
* []interface{} which only contains func(< View >[, < parameters >]) and func([< parameters >]) * []any which only contains func(< View >[, < parameters >]) and func([< parameters >])
After being assigned to a property, all these types are converted to an array of []func(< View >, [< parameters >]). After being assigned to a property, all these types are converted to an array of []func(< View >, [< parameters >]).
Accordingly, the Get function always returns an array of []func(< View >, [< parameters >]). Accordingly, the Get function always returns an array of []func(< View >, [< parameters >]).
@ -453,7 +453,7 @@ For the "edit-text-changed" event, this
* func(newText string) * func(newText string)
* []func(editor EditView, newText string) * []func(editor EditView, newText string)
* []func(newText string) * []func(newText string)
* []interface{} содержащий только func(editor EditView, newText string) и func(newText string) * []any содержащий только func(editor EditView, newText string) и func(newText string)
And the "edit-text-changed" property always stores and returns []func(EditView, string). And the "edit-text-changed" property always stores and returns []func(EditView, string).
@ -1016,7 +1016,7 @@ Optional parameter. The default direction is from bottom to top. It can be eithe
Each point is described by a BackgroundGradientPoint structure, which has two fields: Pos of type SizeUnit and Color. Each point is described by a BackgroundGradientPoint structure, which has two fields: Pos of type SizeUnit and Color.
Pos defines the position of the point relative to the start of the gradient line. The array must have at least 2 points. Pos defines the position of the point relative to the start of the gradient line. The array must have at least 2 points.
You can also pass a Color array as the gradient value. In this case, the points are evenly distributed along the gradient line. You can also pass a Color array as the gradient value. In this case, the points are evenly distributed along the gradient line.
You can also use an array of []interface{} as an array of cue points. You can also use an array of []any as an array of cue points.
The elements of this array can be BackgroundGradientPoint, Color, BackgroundGradientPoint or Color text representation, and the name of the constant The elements of this array can be BackgroundGradientPoint, Color, BackgroundGradientPoint or Color text representation, and the name of the constant
* Repeating ("repeating") - a boolean value that determines whether the gradient will repeat after the last key point. * Repeating ("repeating") - a boolean value that determines whether the gradient will repeat after the last key point.
@ -1081,8 +1081,8 @@ The radial gradient has the following options:
Each key angle is described by a BackgroundGradientAngle structure: Each key angle is described by a BackgroundGradientAngle structure:
type BackgroundGradientAngle struct { type BackgroundGradientAngle struct {
Color interface{} Color any
Angle interface{} Angle any
} }
where Color specifies the color of the key corner and can take a value of Color type or where Color specifies the color of the key corner and can take a value of Color type or
@ -1194,7 +1194,7 @@ The textual description of the elliptical clipping region is in the following fo
Polygonal cropping area. Created using functions: Polygonal cropping area. Created using functions:
func PolygonClip(points []interface{}) ClipShape func PolygonClip(points []any) ClipShape
func PolygonPointsClip(points []SizeUnit) ClipShape func PolygonPointsClip(points []SizeUnit) ClipShape
an array of corner points of the polygon is passed as an argument in the following order: x1, y1, x2, y2, … an array of corner points of the polygon is passed as an argument in the following order: x1, y1, x2, y2, …
@ -2091,7 +2091,7 @@ Next, a []View is created containing the resulting View;
* []string - each element of the array is converted to View as described in the previous paragraph; * []string - each element of the array is converted to View as described in the previous paragraph;
* []interface{} - this array must contain only View and string. Each string element is converted to * []any - this array must contain only View and string. Each string element is converted to
a View as described above. If the array contains invalid values, the "content" property will not be set, a View as described above. If the array contains invalid values, the "content" property will not be set,
and the Set function will return false and an error message will be written to the log. and the Set function will return false and an error message will be written to the log.
@ -3112,7 +3112,7 @@ The following data types can be passed as a value to the "items" property
* []string * []string
* []fmt.Stringer * []fmt.Stringer
* []interface{} containing as elements only: string, fmt.Stringer, bool, rune, * []any containing as elements only: string, fmt.Stringer, bool, rune,
float32, float64, int, int8 … int64, uint, uint8 … uint64. float32, float64, int, int8 … int64, uint, uint8 … uint64.
All of these data types are converted to []string and assigned to the "items" property. All of these data types are converted to []string and assigned to the "items" property.
@ -3127,9 +3127,9 @@ This property is assigned an array of disabled item indices. The index can be sp
* int * int
* []string * []string
* string - can contain multiple indexes separated by commas * string - can contain multiple indexes separated by commas
* []interface{} - containing as elements only: string, int, int8…int64, uint, uint8…uint64. * []any - containing as elements only: string, int, int8…int64, uint, uint8…uint64.
All of these data types are converted to []interface{} and assigned to the "disabled-items" property. All of these data types are converted to []any and assigned to the "disabled-items" property.
You can read the value of the "disabled-items" property using the function You can read the value of the "disabled-items" property using the function
func GetDropDownDisabledItems(view View, subviewID string) []int func GetDropDownDisabledItems(view View, subviewID string) []int
@ -3422,7 +3422,7 @@ To describe the content, you need to implement the TableAdapter interface declar
type TableAdapter interface { type TableAdapter interface {
RowCount() int RowCount() int
ColumnCount() int ColumnCount() int
Cell(row, column int) interface{} Cell(row, column int) any
} }
where RowCount() and ColumnCount() functions must return the number of rows and columns in the table; where RowCount() and ColumnCount() functions must return the number of rows and columns in the table;
@ -3441,10 +3441,10 @@ Cell(row, column int) returns the contents of a table cell. The Cell() function
The "content" property can also be assigned the following data types The "content" property can also be assigned the following data types
* TableAdapter * TableAdapter
* [][]interface{} * [][]any
* [][]string * [][]string
[][]interface{} and [][]string are converted to a TableAdapter when assigned. [][]any and [][]string are converted to a TableAdapter when assigned.
### "cell-style" property ### "cell-style" property
@ -3496,7 +3496,7 @@ In this case, the table will look like this
| | | | | | | |
|------+-------+--------| |------+-------+--------|
If [][]interface{} is used as the value of the "content" property, then empty structures are used to merge cells If [][]any is used as the value of the "content" property, then empty structures are used to merge cells
type VerticalTableJoin struct { type VerticalTableJoin struct {
} }
@ -3506,7 +3506,7 @@ If [][]interface{} is used as the value of the "content" property, then empty st
These structures attach the cell to the top/left, respectively. The description of the above table will be as follows These structures attach the cell to the top/left, respectively. The description of the above table will be as follows
content := [][]interface{} { content := [][]any {
{"", "", rui.HorizontalTableJoin{}}, {"", "", rui.HorizontalTableJoin{}},
{rui.VerticalTableJoin{}, "", ""}, {rui.VerticalTableJoin{}, "", ""},
} }
@ -4513,7 +4513,7 @@ There are two types of transition animations:
A one-time animation is triggered using the SetAnimated function of the View interface. A one-time animation is triggered using the SetAnimated function of the View interface.
This function has the following description: This function has the following description:
SetAnimated(tag string, value interface{}, animation Animation) bool SetAnimated(tag string, value any, animation Animation) bool
It assigns a new value to the property, and the change occurs using the specified animation. It assigns a new value to the property, and the change occurs using the specified animation.
For example, For example,
@ -4525,7 +4525,7 @@ For example,
There is also a global function for animated one-time change of the property value of the child View There is also a global function for animated one-time change of the property value of the child View
func SetAnimated(rootView View, viewID, tag string, value interface{}, animation Animation) bool func SetAnimated(rootView View, viewID, tag string, value any, animation Animation) bool
A persistent animation runs every time the property value changes. A persistent animation runs every time the property value changes.
To set the constant animation of the transition, use the "transition" property (the Transition constant). To set the constant animation of the transition, use the "transition" property (the Transition constant).
@ -4603,8 +4603,8 @@ the change script of one property. She is described as
type AnimatedProperty struct { type AnimatedProperty struct {
Tag string Tag string
From, To interface{} From, To any
KeyFrames map[int]interface{} KeyFrames map[int]any
} }
where Tag is the name of the property, From is the initial value of the property, where Tag is the name of the property, From is the initial value of the property,
@ -4791,7 +4791,7 @@ Returns false if no topic with this name was found. Themes named "" are the defa
* SetTitleColor(color Color) sets the color of the browser navigation bar. Supported only in Safari and Chrome for android * SetTitleColor(color Color) sets the color of the browser navigation bar. Supported only in Safari and Chrome for android
* Get(viewID, tag string) interface{} returns the value of the View property named tag. Equivalent to * Get(viewID, tag string) any returns the value of the View property named tag. Equivalent to
rui.Get(session.RootView(), viewID, tag) rui.Get(session.RootView(), viewID, tag)

View File

@ -107,11 +107,11 @@ type AnimatedProperty struct {
// Tag is the name of the property // Tag is the name of the property
Tag string Tag string
// From is the initial value of the property // From is the initial value of the property
From interface{} From any
// To is the final value of the property // To is the final value of the property
To interface{} To any
// KeyFrames is intermediate property values // KeyFrames is intermediate property values
KeyFrames map[int]interface{} KeyFrames map[int]any
} }
type animationData struct { type animationData struct {
@ -184,7 +184,7 @@ func (animation *animationData) normalizeTag(tag string) string {
return tag return tag
} }
func (animation *animationData) Set(tag string, value interface{}) bool { func (animation *animationData) Set(tag string, value any) bool {
if value == nil { if value == nil {
animation.Remove(tag) animation.Remove(tag)
return true return true
@ -285,7 +285,7 @@ func (animation *animationData) Set(tag string, value interface{}) bool {
ErrorLogF(`key-frame "%d" is out of range`, n) ErrorLogF(`key-frame "%d" is out of range`, n)
} else { } else {
if result.KeyFrames == nil { if result.KeyFrames == nil {
result.KeyFrames = map[int]interface{}{n: node.Text()} result.KeyFrames = map[int]any{n: node.Text()}
} else { } else {
result.KeyFrames[n] = node.Text() result.KeyFrames[n] = node.Text()
} }
@ -359,7 +359,7 @@ func (animation *animationData) Remove(tag string) {
delete(animation.properties, animation.normalizeTag(tag)) delete(animation.properties, animation.normalizeTag(tag))
} }
func (animation *animationData) Get(tag string) interface{} { func (animation *animationData) Get(tag string) any {
return animation.getRaw(animation.normalizeTag(tag)) return animation.getRaw(animation.normalizeTag(tag))
} }
@ -602,7 +602,7 @@ func (session *sessionData) registerAnimation(props []AnimatedProperty) string {
return name return name
} }
func (view *viewData) SetAnimated(tag string, value interface{}, animation Animation) bool { func (view *viewData) SetAnimated(tag string, value any, animation Animation) bool {
if animation == nil { if animation == nil {
return view.Set(tag, value) return view.Set(tag, value)
} }
@ -684,7 +684,7 @@ func (view *viewData) getTransitions() Params {
// SetAnimated sets the property with name "tag" of the "rootView" subview with "viewID" id by value. Result: // SetAnimated sets the property with name "tag" of the "rootView" subview with "viewID" id by value. Result:
// true - success, // true - success,
// false - error (incompatible type or invalid format of a string value, see AppLog). // false - error (incompatible type or invalid format of a string value, see AppLog).
func SetAnimated(rootView View, viewID, tag string, value interface{}, animation Animation) bool { func SetAnimated(rootView View, viewID, tag string, value any, animation Animation) bool {
if view := ViewByID(rootView, viewID); view != nil { if view := ViewByID(rootView, viewID); view != nil {
return view.SetAnimated(tag, value, animation) return view.SetAnimated(tag, value, animation)
} }

View File

@ -51,7 +51,7 @@ const (
AnimationIterationEvent = "animation-iteration-event" AnimationIterationEvent = "animation-iteration-event"
) )
func valueToAnimationListeners(value interface{}) ([]func(View, string), bool) { func valueToAnimationListeners(value any) ([]func(View, string), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -137,7 +137,7 @@ func valueToAnimationListeners(value interface{}) ([]func(View, string), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -183,7 +183,7 @@ var transitionEvents = map[string]struct{ jsEvent, jsFunc string }{
TransitionCancelEvent: {jsEvent: "ontransitioncancel", jsFunc: "transitionCancelEvent"}, TransitionCancelEvent: {jsEvent: "ontransitioncancel", jsFunc: "transitionCancelEvent"},
} }
func (view *viewData) setTransitionListener(tag string, value interface{}) bool { func (view *viewData) setTransitionListener(tag string, value any) bool {
listeners, ok := valueToAnimationListeners(value) listeners, ok := valueToAnimationListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)
@ -263,7 +263,7 @@ var animationEvents = map[string]struct{ jsEvent, jsFunc string }{
AnimationCancelEvent: {jsEvent: "onanimationcancel", jsFunc: "animationCancelEvent"}, AnimationCancelEvent: {jsEvent: "onanimationcancel", jsFunc: "animationCancelEvent"},
} }
func (view *viewData) setAnimationListener(tag string, value interface{}) bool { func (view *viewData) setAnimationListener(tag string, value any) bool {
listeners, ok := valueToAnimationListeners(value) listeners, ok := valueToAnimationListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

View File

@ -39,7 +39,7 @@ func DebugLog(text string) {
} }
// DebugLogF print the text to the debug log // DebugLogF print the text to the debug log
func DebugLogF(format string, a ...interface{}) { func DebugLogF(format string, a ...any) {
if debugLogFunc != nil { if debugLogFunc != nil {
debugLogFunc(fmt.Sprintf(format, a...)) debugLogFunc(fmt.Sprintf(format, a...))
} }
@ -57,7 +57,7 @@ func ErrorLog(text string) {
} }
// ErrorLogF print the text to the error log // ErrorLogF print the text to the error log
func ErrorLogF(format string, a ...interface{}) { func ErrorLogF(format string, a ...any) {
lastError = fmt.Sprintf(format, a...) lastError = fmt.Sprintf(format, a...)
if errorLogFunc != nil { if errorLogFunc != nil {
errorLogFunc(lastError) errorLogFunc(lastError)

View File

@ -81,22 +81,22 @@ func createBackground(obj DataObject) BackgroundElement {
switch obj.Tag() { switch obj.Tag() {
case "image": case "image":
image := new(backgroundImage) image := new(backgroundImage)
image.properties = map[string]interface{}{} image.properties = map[string]any{}
result = image result = image
case "linear-gradient": case "linear-gradient":
gradient := new(backgroundLinearGradient) gradient := new(backgroundLinearGradient)
gradient.properties = map[string]interface{}{} gradient.properties = map[string]any{}
result = gradient result = gradient
case "radial-gradient": case "radial-gradient":
gradient := new(backgroundRadialGradient) gradient := new(backgroundRadialGradient)
gradient.properties = map[string]interface{}{} gradient.properties = map[string]any{}
result = gradient result = gradient
case "conic-gradient": case "conic-gradient":
gradient := new(backgroundConicGradient) gradient := new(backgroundConicGradient)
gradient.properties = map[string]interface{}{} gradient.properties = map[string]any{}
result = gradient result = gradient
default: default:
@ -118,7 +118,7 @@ func createBackground(obj DataObject) BackgroundElement {
// NewBackgroundImage creates the new background image // NewBackgroundImage creates the new background image
func NewBackgroundImage(params Params) BackgroundElement { func NewBackgroundImage(params Params) BackgroundElement {
result := new(backgroundImage) result := new(backgroundImage)
result.properties = map[string]interface{}{} result.properties = map[string]any{}
for tag, value := range params { for tag, value := range params {
result.Set(tag, value) result.Set(tag, value)
} }
@ -156,7 +156,7 @@ func (image *backgroundImage) normalizeTag(tag string) string {
return tag return tag
} }
func (image *backgroundImage) Set(tag string, value interface{}) bool { func (image *backgroundImage) Set(tag string, value any) bool {
tag = image.normalizeTag(tag) tag = image.normalizeTag(tag)
switch tag { switch tag {
case Attachment, Width, Height, Repeat, ImageHorizontalAlign, ImageVerticalAlign, case Attachment, Width, Height, Repeat, ImageHorizontalAlign, ImageVerticalAlign,
@ -167,7 +167,7 @@ func (image *backgroundImage) Set(tag string, value interface{}) bool {
return false return false
} }
func (image *backgroundImage) Get(tag string) interface{} { func (image *backgroundImage) Get(tag string) any {
return image.backgroundElement.Get(image.normalizeTag(tag)) return image.backgroundElement.Get(image.normalizeTag(tag))
} }

View File

@ -12,16 +12,16 @@ type backgroundConicGradient struct {
type BackgroundGradientAngle struct { type BackgroundGradientAngle struct {
// Color - the color of the key angle. Must not be nil. // Color - the color of the key angle. Must not be nil.
// Can take a value of Color type or string (color constant or textual description of the color) // Can take a value of Color type or string (color constant or textual description of the color)
Color interface{} Color any
// Angle - the key angle. Optional (may be nil). // Angle - the key angle. Optional (may be nil).
// Can take a value of AngleUnit type or string (angle constant or textual description of the angle) // Can take a value of AngleUnit type or string (angle constant or textual description of the angle)
Angle interface{} Angle any
} }
// NewBackgroundConicGradient creates the new background conic gradient // NewBackgroundConicGradient creates the new background conic gradient
func NewBackgroundConicGradient(params Params) BackgroundElement { func NewBackgroundConicGradient(params Params) BackgroundElement {
result := new(backgroundConicGradient) result := new(backgroundConicGradient)
result.properties = map[string]interface{}{} result.properties = map[string]any{}
for tag, value := range params { for tag, value := range params {
result.Set(tag, value) result.Set(tag, value)
} }
@ -139,7 +139,7 @@ func (gradient *backgroundConicGradient) normalizeTag(tag string) string {
return tag return tag
} }
func (gradient *backgroundConicGradient) Set(tag string, value interface{}) bool { func (gradient *backgroundConicGradient) Set(tag string, value any) bool {
tag = gradient.normalizeTag(tag) tag = gradient.normalizeTag(tag)
switch tag { switch tag {
case CenterX, CenterY, Repeating, From: case CenterX, CenterY, Repeating, From:
@ -153,7 +153,7 @@ func (gradient *backgroundConicGradient) Set(tag string, value interface{}) bool
return false return false
} }
func (gradient *backgroundConicGradient) stringToAngle(text string) (interface{}, bool) { func (gradient *backgroundConicGradient) stringToAngle(text string) (any, bool) {
if text == "" { if text == "" {
return nil, false return nil, false
} else if text[0] == '@' { } else if text[0] == '@' {
@ -216,7 +216,7 @@ func (gradient *backgroundConicGradient) parseGradientText(value string) []Backg
return vector return vector
} }
func (gradient *backgroundConicGradient) setGradient(value interface{}) bool { func (gradient *backgroundConicGradient) setGradient(value any) bool {
if value == nil { if value == nil {
delete(gradient.properties, Gradient) delete(gradient.properties, Gradient)
return true return true
@ -262,7 +262,7 @@ func (gradient *backgroundConicGradient) setGradient(value interface{}) bool {
return false return false
} }
func (gradient *backgroundConicGradient) Get(tag string) interface{} { func (gradient *backgroundConicGradient) Get(tag string) any {
return gradient.backgroundElement.Get(gradient.normalizeTag(tag)) return gradient.backgroundElement.Get(gradient.normalizeTag(tag))
} }

View File

@ -50,10 +50,10 @@ const (
type BackgroundGradientPoint struct { type BackgroundGradientPoint struct {
// Color - the color of the point. Must not be nil. // Color - the color of the point. Must not be nil.
// Can take a value of Color type or string (color constant or textual description of the color) // Can take a value of Color type or string (color constant or textual description of the color)
Color interface{} Color any
// Pos - the distance from the start of the gradient straight line. Optional (may be nil). // Pos - the distance from the start of the gradient straight line. Optional (may be nil).
// Can take a value of SizeUnit type or string (angle constant or textual description of the SizeUnit) // Can take a value of SizeUnit type or string (angle constant or textual description of the SizeUnit)
Pos interface{} Pos any
} }
type backgroundGradient struct { type backgroundGradient struct {
@ -71,7 +71,7 @@ type backgroundRadialGradient struct {
// NewBackgroundLinearGradient creates the new background linear gradient // NewBackgroundLinearGradient creates the new background linear gradient
func NewBackgroundLinearGradient(params Params) BackgroundElement { func NewBackgroundLinearGradient(params Params) BackgroundElement {
result := new(backgroundLinearGradient) result := new(backgroundLinearGradient)
result.properties = map[string]interface{}{} result.properties = map[string]any{}
for tag, value := range params { for tag, value := range params {
result.Set(tag, value) result.Set(tag, value)
} }
@ -81,7 +81,7 @@ func NewBackgroundLinearGradient(params Params) BackgroundElement {
// NewBackgroundRadialGradient creates the new background radial gradient // NewBackgroundRadialGradient creates the new background radial gradient
func NewBackgroundRadialGradient(params Params) BackgroundElement { func NewBackgroundRadialGradient(params Params) BackgroundElement {
result := new(backgroundRadialGradient) result := new(backgroundRadialGradient)
result.properties = map[string]interface{}{} result.properties = map[string]any{}
for tag, value := range params { for tag, value := range params {
result.Set(tag, value) result.Set(tag, value)
} }
@ -106,7 +106,7 @@ func (gradient *backgroundGradient) parseGradientText(value string) []Background
return points return points
} }
func (gradient *backgroundGradient) Set(tag string, value interface{}) bool { func (gradient *backgroundGradient) Set(tag string, value any) bool {
switch tag = strings.ToLower(tag); tag { switch tag = strings.ToLower(tag); tag {
case Repeating: case Repeating:
@ -296,7 +296,7 @@ func (image *backgroundLinearGradient) Clone() BackgroundElement {
return result return result
} }
func (gradient *backgroundLinearGradient) Set(tag string, value interface{}) bool { func (gradient *backgroundLinearGradient) Set(tag string, value any) bool {
if strings.ToLower(tag) == Direction { if strings.ToLower(tag) == Direction {
switch value := value.(type) { switch value := value.(type) {
case AngleUnit: case AngleUnit:
@ -402,7 +402,7 @@ func (gradient *backgroundRadialGradient) normalizeTag(tag string) string {
return tag return tag
} }
func (gradient *backgroundRadialGradient) Set(tag string, value interface{}) bool { func (gradient *backgroundRadialGradient) Set(tag string, value any) bool {
tag = gradient.normalizeTag(tag) tag = gradient.normalizeTag(tag)
switch tag { switch tag {
case RadialGradientRadius: case RadialGradientRadius:
@ -426,7 +426,7 @@ func (gradient *backgroundRadialGradient) Set(tag string, value interface{}) boo
return true return true
} }
case []interface{}: case []any:
switch len(value) { switch len(value) {
case 0: case 0:
delete(gradient.properties, RadialGradientRadius) delete(gradient.properties, RadialGradientRadius)
@ -477,7 +477,7 @@ func (gradient *backgroundRadialGradient) Set(tag string, value interface{}) boo
return gradient.backgroundGradient.Set(tag, value) return gradient.backgroundGradient.Set(tag, value)
} }
func (gradient *backgroundRadialGradient) Get(tag string) interface{} { func (gradient *backgroundRadialGradient) Get(tag string) any {
return gradient.backgroundGradient.Get(gradient.normalizeTag(tag)) return gradient.backgroundGradient.Get(gradient.normalizeTag(tag))
} }
@ -557,7 +557,7 @@ func (gradient *backgroundRadialGradient) cssStyle(session Session) string {
buffer.WriteString(" ") buffer.WriteString(" ")
} }
case []interface{}: case []any:
count := len(value) count := len(value)
if count > 2 { if count > 2 {
count = 2 count = 2

View File

@ -64,9 +64,9 @@ type borderProperty struct {
propertyList propertyList
} }
func newBorderProperty(value interface{}) BorderProperty { func newBorderProperty(value any) BorderProperty {
border := new(borderProperty) border := new(borderProperty)
border.properties = map[string]interface{}{} border.properties = map[string]any{}
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
@ -131,7 +131,7 @@ func newBorderProperty(value interface{}) BorderProperty {
// NewBorder creates the new BorderProperty // NewBorder creates the new BorderProperty
func NewBorder(params Params) BorderProperty { func NewBorder(params Params) BorderProperty {
border := new(borderProperty) border := new(borderProperty)
border.properties = map[string]interface{}{} border.properties = map[string]any{}
if params != nil { if params != nil {
for _, tag := range []string{Style, Width, ColorTag, Left, Right, Top, Bottom, for _, tag := range []string{Style, Width, ColorTag, Left, Right, Top, Bottom,
LeftStyle, RightStyle, TopStyle, BottomStyle, LeftStyle, RightStyle, TopStyle, BottomStyle,
@ -213,7 +213,7 @@ func (border *borderProperty) writeString(buffer *strings.Builder, indent string
buffer.WriteString("_{ ") buffer.WriteString("_{ ")
comma := false comma := false
write := func(tag string, value interface{}) { write := func(tag string, value any) {
if comma { if comma {
buffer.WriteString(", ") buffer.WriteString(", ")
} }
@ -430,7 +430,7 @@ func (border *borderProperty) Remove(tag string) {
} }
} }
func (border *borderProperty) Set(tag string, value interface{}) bool { func (border *borderProperty) Set(tag string, value any) bool {
if value == nil { if value == nil {
border.Remove(tag) border.Remove(tag)
return true return true
@ -512,7 +512,7 @@ func (border *borderProperty) Set(tag string, value interface{}) bool {
return false return false
} }
func (border *borderProperty) Get(tag string) interface{} { func (border *borderProperty) Get(tag string) any {
tag = border.normalizeTag(tag) tag = border.normalizeTag(tag)
if result, ok := border.properties[tag]; ok { if result, ok := border.properties[tag]; ok {

View File

@ -20,7 +20,7 @@ type boundsPropertyData struct {
// NewBoundsProperty creates the new BoundsProperty object // NewBoundsProperty creates the new BoundsProperty object
func NewBoundsProperty(params Params) BoundsProperty { func NewBoundsProperty(params Params) BoundsProperty {
bounds := new(boundsPropertyData) bounds := new(boundsPropertyData)
bounds.properties = map[string]interface{}{} bounds.properties = map[string]any{}
if params != nil { if params != nil {
for _, tag := range []string{Top, Right, Bottom, Left} { for _, tag := range []string{Top, Right, Bottom, Left} {
if value, ok := params[tag]; ok { if value, ok := params[tag]; ok {
@ -79,7 +79,7 @@ func (bounds *boundsPropertyData) Remove(tag string) {
bounds.propertyList.Remove(bounds.normalizeTag(tag)) bounds.propertyList.Remove(bounds.normalizeTag(tag))
} }
func (bounds *boundsPropertyData) Set(tag string, value interface{}) bool { func (bounds *boundsPropertyData) Set(tag string, value any) bool {
if value == nil { if value == nil {
bounds.Remove(tag) bounds.Remove(tag)
return true return true
@ -98,7 +98,7 @@ func (bounds *boundsPropertyData) Set(tag string, value interface{}) bool {
return false return false
} }
func (bounds *boundsPropertyData) Get(tag string) interface{} { func (bounds *boundsPropertyData) Get(tag string) any {
tag = bounds.normalizeTag(tag) tag = bounds.normalizeTag(tag)
if value, ok := bounds.properties[tag]; ok { if value, ok := bounds.properties[tag]; ok {
return value return value
@ -228,7 +228,7 @@ func (bounds *Bounds) cssString() string {
return builder.finish() return builder.finish()
} }
func (properties *propertyList) setBounds(tag string, value interface{}) bool { func (properties *propertyList) setBounds(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
@ -340,7 +340,7 @@ func (properties *propertyList) removeBoundsSide(mainTag, sideTag string) {
} }
} }
func (properties *propertyList) setBoundsSide(mainTag, sideTag string, value interface{}) bool { func (properties *propertyList) setBoundsSide(mainTag, sideTag string, value any) bool {
bounds := properties.boundsProperty(mainTag) bounds := properties.boundsProperty(mainTag)
if bounds.Set(sideTag, value) { if bounds.Set(sideTag, value) {
properties.properties[mainTag] = bounds properties.properties[mainTag] = bounds

View File

@ -63,11 +63,11 @@ func (canvasView *canvasViewData) remove(tag string) {
} }
} }
func (canvasView *canvasViewData) Set(tag string, value interface{}) bool { func (canvasView *canvasViewData) Set(tag string, value any) bool {
return canvasView.set(canvasView.normalizeTag(tag), value) return canvasView.set(canvasView.normalizeTag(tag), value)
} }
func (canvasView *canvasViewData) set(tag string, value interface{}) bool { func (canvasView *canvasViewData) set(tag string, value any) bool {
if tag == DrawFunction { if tag == DrawFunction {
if value == nil { if value == nil {
canvasView.drawer = nil canvasView.drawer = nil
@ -85,11 +85,11 @@ func (canvasView *canvasViewData) set(tag string, value interface{}) bool {
return canvasView.viewData.set(tag, value) return canvasView.viewData.set(tag, value)
} }
func (canvasView *canvasViewData) Get(tag string) interface{} { func (canvasView *canvasViewData) Get(tag string) any {
return canvasView.get(canvasView.normalizeTag(tag)) return canvasView.get(canvasView.normalizeTag(tag))
} }
func (canvasView *canvasViewData) get(tag string) interface{} { func (canvasView *canvasViewData) get(tag string) any {
if tag == DrawFunction { if tag == DrawFunction {
return canvasView.drawer return canvasView.drawer
} }

View File

@ -51,7 +51,7 @@ func (button *checkboxData) Focusable() bool {
return true return true
} }
func (button *checkboxData) Get(tag string) interface{} { func (button *checkboxData) Get(tag string) any {
switch strings.ToLower(tag) { switch strings.ToLower(tag) {
case CheckboxChangedEvent: case CheckboxChangedEvent:
return button.checkedListeners return button.checkedListeners
@ -60,11 +60,11 @@ func (button *checkboxData) Get(tag string) interface{} {
return button.viewsContainerData.Get(tag) return button.viewsContainerData.Get(tag)
} }
func (button *checkboxData) Set(tag string, value interface{}) bool { func (button *checkboxData) Set(tag string, value any) bool {
return button.set(tag, value) return button.set(tag, value)
} }
func (button *checkboxData) set(tag string, value interface{}) bool { func (button *checkboxData) set(tag string, value any) bool {
switch tag { switch tag {
case CheckboxChangedEvent: case CheckboxChangedEvent:
if !button.setChangedListener(value) { if !button.setChangedListener(value) {
@ -205,7 +205,7 @@ func checkboxKeyListener(view View, event KeyEvent) {
} }
} }
func (button *checkboxData) setChangedListener(value interface{}) bool { func (button *checkboxData) setChangedListener(value any) bool {
if value == nil { if value == nil {
if len(button.checkedListeners) > 0 { if len(button.checkedListeners) > 0 {
button.checkedListeners = []func(Checkbox, bool){} button.checkedListeners = []func(Checkbox, bool){}
@ -239,7 +239,7 @@ func (button *checkboxData) setChangedListener(value interface{}) bool {
} }
button.checkedListeners = listeners button.checkedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(Checkbox, bool), len(value)) listeners := make([]func(Checkbox, bool), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {

View File

@ -75,11 +75,11 @@ func (picker *colorPickerData) remove(tag string) {
} }
} }
func (picker *colorPickerData) Set(tag string, value interface{}) bool { func (picker *colorPickerData) Set(tag string, value any) bool {
return picker.set(picker.normalizeTag(tag), value) return picker.set(picker.normalizeTag(tag), value)
} }
func (picker *colorPickerData) set(tag string, value interface{}) bool { func (picker *colorPickerData) set(tag string, value any) bool {
if value == nil { if value == nil {
picker.remove(tag) picker.remove(tag)
return true return true
@ -114,7 +114,7 @@ func (picker *colorPickerData) set(tag string, value interface{}) bool {
} }
picker.colorChangedListeners = listeners picker.colorChangedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(ColorPicker, Color), len(value)) listeners := make([]func(ColorPicker, Color), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -166,11 +166,11 @@ func (picker *colorPickerData) colorChanged(oldColor Color) {
} }
} }
func (picker *colorPickerData) Get(tag string) interface{} { func (picker *colorPickerData) Get(tag string) any {
return picker.get(picker.normalizeTag(tag)) return picker.get(picker.normalizeTag(tag))
} }
func (picker *colorPickerData) get(tag string) interface{} { func (picker *colorPickerData) get(tag string) any {
switch tag { switch tag {
case ColorChangedEvent: case ColorChangedEvent:
return picker.colorChangedListeners return picker.colorChangedListeners

View File

@ -76,7 +76,7 @@ func (columnLayout *columnLayoutData) normalizeTag(tag string) string {
return tag return tag
} }
func (columnLayout *columnLayoutData) Get(tag string) interface{} { func (columnLayout *columnLayoutData) Get(tag string) any {
return columnLayout.get(columnLayout.normalizeTag(tag)) return columnLayout.get(columnLayout.normalizeTag(tag))
} }
@ -97,11 +97,11 @@ func (columnLayout *columnLayoutData) remove(tag string) {
} }
} }
func (columnLayout *columnLayoutData) Set(tag string, value interface{}) bool { func (columnLayout *columnLayoutData) Set(tag string, value any) bool {
return columnLayout.set(columnLayout.normalizeTag(tag), value) return columnLayout.set(columnLayout.normalizeTag(tag), value)
} }
func (columnLayout *columnLayoutData) set(tag string, value interface{}) bool { func (columnLayout *columnLayoutData) set(tag string, value any) bool {
if value == nil { if value == nil {
columnLayout.remove(tag) columnLayout.remove(tag)
return true return true

View File

@ -18,11 +18,11 @@ type columnSeparatorProperty struct {
propertyList propertyList
} }
func newColumnSeparatorProperty(value interface{}) ColumnSeparatorProperty { func newColumnSeparatorProperty(value any) ColumnSeparatorProperty {
if value == nil { if value == nil {
separator := new(columnSeparatorProperty) separator := new(columnSeparatorProperty)
separator.properties = map[string]interface{}{} separator.properties = map[string]any{}
return separator return separator
} }
@ -32,7 +32,7 @@ func newColumnSeparatorProperty(value interface{}) ColumnSeparatorProperty {
case DataObject: case DataObject:
separator := new(columnSeparatorProperty) separator := new(columnSeparatorProperty)
separator.properties = map[string]interface{}{} separator.properties = map[string]any{}
for _, tag := range []string{Style, Width, ColorTag} { for _, tag := range []string{Style, Width, ColorTag} {
if val, ok := value.PropertyValue(tag); ok && val != "" { if val, ok := value.PropertyValue(tag); ok && val != "" {
separator.set(tag, value) separator.set(tag, value)
@ -42,7 +42,7 @@ func newColumnSeparatorProperty(value interface{}) ColumnSeparatorProperty {
case ViewBorder: case ViewBorder:
separator := new(columnSeparatorProperty) separator := new(columnSeparatorProperty)
separator.properties = map[string]interface{}{ separator.properties = map[string]any{
Style: value.Style, Style: value.Style,
Width: value.Width, Width: value.Width,
ColorTag: value.Color, ColorTag: value.Color,
@ -57,7 +57,7 @@ func newColumnSeparatorProperty(value interface{}) ColumnSeparatorProperty {
// NewColumnSeparator creates the new ColumnSeparatorProperty // NewColumnSeparator creates the new ColumnSeparatorProperty
func NewColumnSeparator(params Params) ColumnSeparatorProperty { func NewColumnSeparator(params Params) ColumnSeparatorProperty {
separator := new(columnSeparatorProperty) separator := new(columnSeparatorProperty)
separator.properties = map[string]interface{}{} separator.properties = map[string]any{}
if params != nil { if params != nil {
for _, tag := range []string{Style, Width, ColorTag} { for _, tag := range []string{Style, Width, ColorTag} {
if value, ok := params[tag]; ok && value != nil { if value, ok := params[tag]; ok && value != nil {
@ -117,7 +117,7 @@ func (separator *columnSeparatorProperty) Remove(tag string) {
} }
} }
func (separator *columnSeparatorProperty) Set(tag string, value interface{}) bool { func (separator *columnSeparatorProperty) Set(tag string, value any) bool {
tag = separator.normalizeTag(tag) tag = separator.normalizeTag(tag)
if value == nil { if value == nil {
@ -140,7 +140,7 @@ func (separator *columnSeparatorProperty) Set(tag string, value interface{}) boo
return false return false
} }
func (separator *columnSeparatorProperty) Get(tag string) interface{} { func (separator *columnSeparatorProperty) Get(tag string) any {
tag = separator.normalizeTag(tag) tag = separator.normalizeTag(tag)
if result, ok := separator.properties[tag]; ok { if result, ok := separator.properties[tag]; ok {

View File

@ -45,26 +45,26 @@ func (customView *CustomViewData) setTag(tag string) {
// Get returns a value of the property with name defined by the argument. // Get returns a value of the property with name defined by the argument.
// The type of return value depends on the property. If the property is not set then nil is returned. // The type of return value depends on the property. If the property is not set then nil is returned.
func (customView *CustomViewData) Get(tag string) interface{} { func (customView *CustomViewData) Get(tag string) any {
return customView.superView.Get(tag) return customView.superView.Get(tag)
} }
func (customView *CustomViewData) getRaw(tag string) interface{} { func (customView *CustomViewData) getRaw(tag string) any {
return customView.superView.getRaw(tag) return customView.superView.getRaw(tag)
} }
func (customView *CustomViewData) setRaw(tag string, value interface{}) { func (customView *CustomViewData) setRaw(tag string, value any) {
customView.superView.setRaw(tag, value) customView.superView.setRaw(tag, value)
} }
// Set sets the value (second argument) of the property with name defined by the first argument. // Set sets the value (second argument) of the property with name defined by the first argument.
// Return "true" if the value has been set, in the opposite case "false" are returned and // Return "true" if the value has been set, in the opposite case "false" are returned and
// a description of the error is written to the log // a description of the error is written to the log
func (customView *CustomViewData) Set(tag string, value interface{}) bool { func (customView *CustomViewData) Set(tag string, value any) bool {
return customView.superView.Set(tag, value) return customView.superView.Set(tag, value)
} }
func (customView *CustomViewData) SetAnimated(tag string, value interface{}, animation Animation) bool { func (customView *CustomViewData) SetAnimated(tag string, value any, animation Animation) bool {
return customView.superView.SetAnimated(tag, value, animation) return customView.superView.SetAnimated(tag, value, animation)
} }

View File

@ -114,11 +114,11 @@ func (picker *datePickerData) remove(tag string) {
picker.propertyChangedEvent(tag) picker.propertyChangedEvent(tag)
} }
func (picker *datePickerData) Set(tag string, value interface{}) bool { func (picker *datePickerData) Set(tag string, value any) bool {
return picker.set(picker.normalizeTag(tag), value) return picker.set(picker.normalizeTag(tag), value)
} }
func (picker *datePickerData) set(tag string, value interface{}) bool { func (picker *datePickerData) set(tag string, value any) bool {
if value == nil { if value == nil {
picker.remove(tag) picker.remove(tag)
return true return true
@ -262,7 +262,7 @@ func (picker *datePickerData) set(tag string, value interface{}) bool {
} }
picker.dateChangedListeners = listeners picker.dateChangedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(DatePicker, time.Time), len(value)) listeners := make([]func(DatePicker, time.Time), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -295,11 +295,11 @@ func (picker *datePickerData) set(tag string, value interface{}) bool {
return false return false
} }
func (picker *datePickerData) Get(tag string) interface{} { func (picker *datePickerData) Get(tag string) any {
return picker.get(picker.normalizeTag(tag)) return picker.get(picker.normalizeTag(tag))
} }
func (picker *datePickerData) get(tag string) interface{} { func (picker *datePickerData) get(tag string) any {
switch tag { switch tag {
case DateChangedEvent: case DateChangedEvent:
return picker.dateChangedListeners return picker.dateChangedListeners
@ -374,7 +374,7 @@ func (picker *datePickerData) handleCommand(self View, command string, data Data
} }
func getDateProperty(view View, mainTag, shortTag string) (time.Time, bool) { func getDateProperty(view View, mainTag, shortTag string) (time.Time, bool) {
valueToTime := func(value interface{}) (time.Time, bool) { valueToTime := func(value any) (time.Time, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case time.Time: case time.Time:

View File

@ -68,11 +68,11 @@ func (detailsView *detailsViewData) remove(tag string) {
} }
} }
func (detailsView *detailsViewData) Set(tag string, value interface{}) bool { func (detailsView *detailsViewData) Set(tag string, value any) bool {
return detailsView.set(strings.ToLower(tag), value) return detailsView.set(strings.ToLower(tag), value)
} }
func (detailsView *detailsViewData) set(tag string, value interface{}) bool { func (detailsView *detailsViewData) set(tag string, value any) bool {
if value == nil { if value == nil {
detailsView.remove(tag) detailsView.remove(tag)
return true return true
@ -133,11 +133,11 @@ func (detailsView *detailsViewData) set(tag string, value interface{}) bool {
return true return true
} }
func (detailsView *detailsViewData) Get(tag string) interface{} { func (detailsView *detailsViewData) Get(tag string) any {
return detailsView.get(strings.ToLower(tag)) return detailsView.get(strings.ToLower(tag))
} }
func (detailsView *detailsViewData) get(tag string) interface{} { func (detailsView *detailsViewData) get(tag string) any {
return detailsView.viewsContainerData.get(tag) return detailsView.viewsContainerData.get(tag)
} }

View File

@ -17,7 +17,7 @@ type DropDownList interface {
type dropDownListData struct { type dropDownListData struct {
viewData viewData
items []string items []string
disabledItems []interface{} disabledItems []any
dropDownListener []func(DropDownList, int) dropDownListener []func(DropDownList, int)
} }
@ -37,7 +37,7 @@ func (list *dropDownListData) Init(session Session) {
list.viewData.Init(session) list.viewData.Init(session)
list.tag = "DropDownList" list.tag = "DropDownList"
list.items = []string{} list.items = []string{}
list.disabledItems = []interface{}{} list.disabledItems = []any{}
list.dropDownListener = []func(DropDownList, int){} list.dropDownListener = []func(DropDownList, int){}
} }
@ -66,7 +66,7 @@ func (list *dropDownListData) remove(tag string) {
case DisabledItems: case DisabledItems:
if len(list.disabledItems) > 0 { if len(list.disabledItems) > 0 {
list.disabledItems = []interface{}{} list.disabledItems = []any{}
if list.created { if list.created {
updateInnerHTML(list.htmlID(), list.session) updateInnerHTML(list.htmlID(), list.session)
} }
@ -95,11 +95,11 @@ func (list *dropDownListData) remove(tag string) {
} }
} }
func (list *dropDownListData) Set(tag string, value interface{}) bool { func (list *dropDownListData) Set(tag string, value any) bool {
return list.set(strings.ToLower(tag), value) return list.set(strings.ToLower(tag), value)
} }
func (list *dropDownListData) set(tag string, value interface{}) bool { func (list *dropDownListData) set(tag string, value any) bool {
if value == nil { if value == nil {
list.remove(tag) list.remove(tag)
return true return true
@ -133,7 +133,7 @@ func (list *dropDownListData) set(tag string, value interface{}) bool {
return list.viewData.set(tag, value) return list.viewData.set(tag, value)
} }
func (list *dropDownListData) setItems(value interface{}) bool { func (list *dropDownListData) setItems(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
list.items = []string{value} list.items = []string{value}
@ -155,7 +155,7 @@ func (list *dropDownListData) setItems(value interface{}) bool {
list.items[i] = str.String() list.items[i] = str.String()
} }
case []interface{}: case []any:
items := make([]string, 0, len(value)) items := make([]string, 0, len(value))
for _, v := range value { for _, v := range value {
switch val := v.(type) { switch val := v.(type) {
@ -206,16 +206,16 @@ func (list *dropDownListData) setItems(value interface{}) bool {
return true return true
} }
func (list *dropDownListData) setDisabledItems(value interface{}) bool { func (list *dropDownListData) setDisabledItems(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case []int: case []int:
list.disabledItems = make([]interface{}, len(value)) list.disabledItems = make([]any, len(value))
for i, n := range value { for i, n := range value {
list.disabledItems[i] = n list.disabledItems[i] = n
} }
case []interface{}: case []any:
disabledItems := make([]interface{}, len(value)) disabledItems := make([]any, len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
notCompatibleType(DisabledItems, value) notCompatibleType(DisabledItems, value)
@ -248,7 +248,7 @@ func (list *dropDownListData) setDisabledItems(value interface{}) bool {
case string: case string:
values := strings.Split(value, ",") values := strings.Split(value, ",")
disabledItems := make([]interface{}, len(values)) disabledItems := make([]any, len(values))
for i, str := range values { for i, str := range values {
str = strings.Trim(str, " ") str = strings.Trim(str, " ")
if str == "" { if str == "" {
@ -291,7 +291,7 @@ func (list *dropDownListData) setDisabledItems(value interface{}) bool {
} }
func (list *dropDownListData) setDropDownListener(value interface{}) bool { func (list *dropDownListData) setDropDownListener(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case func(DropDownList, int): case func(DropDownList, int):
list.dropDownListener = []func(DropDownList, int){value} list.dropDownListener = []func(DropDownList, int){value}
@ -317,7 +317,7 @@ func (list *dropDownListData) setDropDownListener(value interface{}) bool {
} }
list.dropDownListener = listeners list.dropDownListener = listeners
case []interface{}: case []any:
listeners := make([]func(DropDownList, int), len(value)) listeners := make([]func(DropDownList, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -349,11 +349,11 @@ func (list *dropDownListData) setDropDownListener(value interface{}) bool {
return true return true
} }
func (list *dropDownListData) Get(tag string) interface{} { func (list *dropDownListData) Get(tag string) any {
return list.get(strings.ToLower(tag)) return list.get(strings.ToLower(tag))
} }
func (list *dropDownListData) get(tag string) interface{} { func (list *dropDownListData) get(tag string) any {
switch tag { switch tag {
case Items: case Items:
return list.items return list.items
@ -479,7 +479,7 @@ func GetDropDownDisabledItems(view View, subviewID string) []int {
} }
if view != nil { if view != nil {
if value := view.Get(DisabledItems); value != nil { if value := view.Get(DisabledItems); value != nil {
if values, ok := value.([]interface{}); ok { if values, ok := value.([]any); ok {
count := len(values) count := len(values)
if count > 0 { if count > 0 {
result := make([]int, 0, count) result := make([]int, 0, count)

View File

@ -190,11 +190,11 @@ func (edit *editViewData) remove(tag string) {
} }
} }
func (edit *editViewData) Set(tag string, value interface{}) bool { func (edit *editViewData) Set(tag string, value any) bool {
return edit.set(edit.normalizeTag(tag), value) return edit.set(edit.normalizeTag(tag), value)
} }
func (edit *editViewData) set(tag string, value interface{}) bool { func (edit *editViewData) set(tag string, value any) bool {
if value == nil { if value == nil {
edit.remove(tag) edit.remove(tag)
return true return true
@ -344,7 +344,7 @@ func (edit *editViewData) set(tag string, value interface{}) bool {
return edit.viewData.set(tag, value) return edit.viewData.set(tag, value)
} }
func (edit *editViewData) setChangeListeners(value interface{}) bool { func (edit *editViewData) setChangeListeners(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case func(EditView, string): case func(EditView, string):
edit.textChangeListeners = []func(EditView, string){value} edit.textChangeListeners = []func(EditView, string){value}
@ -370,7 +370,7 @@ func (edit *editViewData) setChangeListeners(value interface{}) bool {
} }
edit.textChangeListeners = listeners edit.textChangeListeners = listeners
case []interface{}: case []any:
listeners := make([]func(EditView, string), len(value)) listeners := make([]func(EditView, string), len(value))
for i, v := range value { for i, v := range value {
if v == nil { if v == nil {
@ -397,11 +397,11 @@ func (edit *editViewData) setChangeListeners(value interface{}) bool {
return true return true
} }
func (edit *editViewData) Get(tag string) interface{} { func (edit *editViewData) Get(tag string) any {
return edit.get(edit.normalizeTag(tag)) return edit.get(edit.normalizeTag(tag))
} }
func (edit *editViewData) get(tag string) interface{} { func (edit *editViewData) get(tag string) any {
return edit.viewData.get(tag) return edit.viewData.get(tag)
} }

View File

@ -139,11 +139,11 @@ func (picker *filePickerData) remove(tag string) {
} }
} }
func (picker *filePickerData) Set(tag string, value interface{}) bool { func (picker *filePickerData) Set(tag string, value any) bool {
return picker.set(strings.ToLower(tag), value) return picker.set(strings.ToLower(tag), value)
} }
func (picker *filePickerData) set(tag string, value interface{}) bool { func (picker *filePickerData) set(tag string, value any) bool {
if value == nil { if value == nil {
picker.remove(tag) picker.remove(tag)
return true return true
@ -178,7 +178,7 @@ func (picker *filePickerData) set(tag string, value interface{}) bool {
} }
picker.fileSelectedListeners = listeners picker.fileSelectedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(FilePicker, []FileInfo), len(value)) listeners := make([]func(FilePicker, []FileInfo), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {

View File

@ -20,7 +20,7 @@ const (
LostFocusEvent = "lost-focus-event" LostFocusEvent = "lost-focus-event"
) )
func valueToFocusListeners(value interface{}) ([]func(View), bool) { func valueToFocusListeners(value any) ([]func(View), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -62,7 +62,7 @@ func valueToFocusListeners(value interface{}) ([]func(View), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -96,7 +96,7 @@ var focusEvents = map[string]struct{ jsEvent, jsFunc string }{
LostFocusEvent: {jsEvent: "onblur", jsFunc: "blurEvent"}, LostFocusEvent: {jsEvent: "onblur", jsFunc: "blurEvent"},
} }
func (view *viewData) setFocusListener(tag string, value interface{}) bool { func (view *viewData) setFocusListener(tag string, value any) bool {
listeners, ok := valueToFocusListeners(value) listeners, ok := valueToFocusListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

2
go.mod
View File

@ -1,5 +1,5 @@
module github.com/anoshenko/rui module github.com/anoshenko/rui
go 1.17 go 1.18
require github.com/gorilla/websocket v1.5.0 require github.com/gorilla/websocket v1.5.0

View File

@ -37,11 +37,11 @@ func (gridLayout *gridLayoutData) String() string {
return getViewString(gridLayout) return getViewString(gridLayout)
} }
func (style *viewStyle) setGridCellSize(tag string, value interface{}) bool { func (style *viewStyle) setGridCellSize(tag string, value any) bool {
setValues := func(values []string) bool { setValues := func(values []string) bool {
count := len(values) count := len(values)
if count > 1 { if count > 1 {
sizes := make([]interface{}, count) sizes := make([]any, count)
for i, val := range values { for i, val := range values {
val = strings.Trim(val, " \t\n\r") val = strings.Trim(val, " \t\n\r")
if isConstantName(val) { if isConstantName(val) {
@ -99,13 +99,13 @@ func (style *viewStyle) setGridCellSize(tag string, value interface{}) bool {
return false return false
} }
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
invalidPropertyValue(tag, value) invalidPropertyValue(tag, value)
return false return false
} }
sizes := make([]interface{}, count) sizes := make([]any, count)
for i, val := range value { for i, val := range value {
switch val := val.(type) { switch val := val.(type) {
case SizeUnit: case SizeUnit:
@ -195,11 +195,11 @@ func (gridLayout *gridLayoutData) normalizeTag(tag string) string {
return tag return tag
} }
func (gridLayout *gridLayoutData) Get(tag string) interface{} { func (gridLayout *gridLayoutData) Get(tag string) any {
return gridLayout.get(gridLayout.normalizeTag(tag)) return gridLayout.get(gridLayout.normalizeTag(tag))
} }
func (gridLayout *gridLayoutData) get(tag string) interface{} { func (gridLayout *gridLayoutData) get(tag string) any {
if tag == Gap { if tag == Gap {
rowGap := GetGridRowGap(gridLayout, "") rowGap := GetGridRowGap(gridLayout, "")
columnGap := GetGridColumnGap(gridLayout, "") columnGap := GetGridColumnGap(gridLayout, "")
@ -239,11 +239,11 @@ func (gridLayout *gridLayoutData) remove(tag string) {
} }
} }
func (gridLayout *gridLayoutData) Set(tag string, value interface{}) bool { func (gridLayout *gridLayoutData) Set(tag string, value any) bool {
return gridLayout.set(gridLayout.normalizeTag(tag), value) return gridLayout.set(gridLayout.normalizeTag(tag), value)
} }
func (gridLayout *gridLayoutData) set(tag string, value interface{}) bool { func (gridLayout *gridLayoutData) set(tag string, value any) bool {
if value == nil { if value == nil {
gridLayout.remove(tag) gridLayout.remove(tag)
return true return true
@ -285,7 +285,7 @@ func gridCellSizes(properties Properties, tag string, session Session) []SizeUni
case SizeUnit: case SizeUnit:
return []SizeUnit{value} return []SizeUnit{value}
case []interface{}: case []any:
result := make([]SizeUnit, len(value)) result := make([]SizeUnit, len(value))
for i, val := range value { for i, val := range value {
result[i] = AutoSize() result[i] = AutoSize()

View File

@ -114,11 +114,11 @@ func (imageView *imageViewData) remove(tag string) {
} }
} }
func (imageView *imageViewData) Set(tag string, value interface{}) bool { func (imageView *imageViewData) Set(tag string, value any) bool {
return imageView.set(imageView.normalizeTag(tag), value) return imageView.set(imageView.normalizeTag(tag), value)
} }
func valueToImageListeners(value interface{}) ([]func(ImageView), bool) { func valueToImageListeners(value any) ([]func(ImageView), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -160,7 +160,7 @@ func valueToImageListeners(value interface{}) ([]func(ImageView), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -189,7 +189,7 @@ func valueToImageListeners(value interface{}) ([]func(ImageView), bool) {
return nil, false return nil, false
} }
func (imageView *imageViewData) set(tag string, value interface{}) bool { func (imageView *imageViewData) set(tag string, value any) bool {
if value == nil { if value == nil {
imageView.remove(tag) imageView.remove(tag)
return true return true
@ -248,7 +248,7 @@ func (imageView *imageViewData) set(tag string, value interface{}) bool {
return false return false
} }
func (imageView *imageViewData) Get(tag string) interface{} { func (imageView *imageViewData) Get(tag string) any {
return imageView.viewData.get(imageView.normalizeTag(tag)) return imageView.viewData.get(imageView.normalizeTag(tag))
} }

View File

@ -50,7 +50,7 @@ type KeyEvent struct {
MetaKey bool MetaKey bool
} }
func valueToKeyListeners(value interface{}) ([]func(View, KeyEvent), bool) { func valueToKeyListeners(value any) ([]func(View, KeyEvent), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -136,7 +136,7 @@ func valueToKeyListeners(value interface{}) ([]func(View, KeyEvent), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -180,7 +180,7 @@ var keyEvents = map[string]struct{ jsEvent, jsFunc string }{
KeyUpEvent: {jsEvent: "onkeyup", jsFunc: "keyUpEvent"}, KeyUpEvent: {jsEvent: "onkeyup", jsFunc: "keyUpEvent"},
} }
func (view *viewData) setKeyListener(tag string, value interface{}) bool { func (view *viewData) setKeyListener(tag string, value any) bool {
listeners, ok := valueToKeyListeners(value) listeners, ok := valueToKeyListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

View File

@ -62,7 +62,7 @@ func (listLayout *listLayoutData) normalizeTag(tag string) string {
return tag return tag
} }
func (listLayout *listLayoutData) Get(tag string) interface{} { func (listLayout *listLayoutData) Get(tag string) any {
return listLayout.get(listLayout.normalizeTag(tag)) return listLayout.get(listLayout.normalizeTag(tag))
} }
@ -80,11 +80,11 @@ func (listLayout *listLayoutData) remove(tag string) {
} }
} }
func (listLayout *listLayoutData) Set(tag string, value interface{}) bool { func (listLayout *listLayoutData) Set(tag string, value any) bool {
return listLayout.set(listLayout.normalizeTag(tag), value) return listLayout.set(listLayout.normalizeTag(tag), value)
} }
func (listLayout *listLayoutData) set(tag string, value interface{}) bool { func (listLayout *listLayoutData) set(tag string, value any) bool {
if value == nil { if value == nil {
listLayout.remove(tag) listLayout.remove(tag)
return true return true

View File

@ -193,11 +193,11 @@ func (listView *listViewData) remove(tag string) {
} }
} }
func (listView *listViewData) Set(tag string, value interface{}) bool { func (listView *listViewData) Set(tag string, value any) bool {
return listView.set(listView.normalizeTag(tag), value) return listView.set(listView.normalizeTag(tag), value)
} }
func (listView *listViewData) set(tag string, value interface{}) bool { func (listView *listViewData) set(tag string, value any) bool {
if value == nil { if value == nil {
listView.remove(tag) listView.remove(tag)
return true return true
@ -288,7 +288,7 @@ func (listView *listViewData) set(tag string, value interface{}) bool {
return true return true
} }
func (listView *listViewData) setItemCheckedEvent(value interface{}) bool { func (listView *listViewData) setItemCheckedEvent(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case func(ListView, []int): case func(ListView, []int):
listView.checkedListeners = []func(ListView, []int){value} listView.checkedListeners = []func(ListView, []int){value}
@ -316,7 +316,7 @@ func (listView *listViewData) setItemCheckedEvent(value interface{}) bool {
} }
listView.checkedListeners = listeners listView.checkedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(ListView, []int), len(value)) listeners := make([]func(ListView, []int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -343,11 +343,11 @@ func (listView *listViewData) setItemCheckedEvent(value interface{}) bool {
return true return true
} }
func (listView *listViewData) Get(tag string) interface{} { func (listView *listViewData) Get(tag string) any {
return listView.get(listView.normalizeTag(tag)) return listView.get(listView.normalizeTag(tag))
} }
func (listView *listViewData) get(tag string) interface{} { func (listView *listViewData) get(tag string) any {
switch tag { switch tag {
case ListItemClickedEvent: case ListItemClickedEvent:
return listView.clickedListeners return listView.clickedListeners
@ -376,7 +376,7 @@ func (listView *listViewData) get(tag string) interface{} {
return listView.viewData.get(tag) return listView.viewData.get(tag)
} }
func (listView *listViewData) setItems(value interface{}) bool { func (listView *listViewData) setItems(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case []string: case []string:
listView.adapter = NewTextListAdapter(value, nil) listView.adapter = NewTextListAdapter(value, nil)
@ -412,7 +412,7 @@ func (listView *listViewData) setItems(value interface{}) bool {
listView.adapter = NewTextListAdapter(items, nil) listView.adapter = NewTextListAdapter(items, nil)
} }
case []interface{}: case []any:
items := make([]View, len(value)) items := make([]View, len(value))
for i, val := range value { for i, val := range value {
switch value := val.(type) { switch value := val.(type) {
@ -460,7 +460,7 @@ func (listView *listViewData) setItems(value interface{}) bool {
return true return true
} }
func (listView *listViewData) valueToItemListeners(value interface{}) []func(ListView, int) { func (listView *listViewData) valueToItemListeners(value any) []func(ListView, int) {
if value == nil { if value == nil {
return []func(ListView, int){} return []func(ListView, int){}
} }
@ -490,7 +490,7 @@ func (listView *listViewData) valueToItemListeners(value interface{}) []func(Lis
} }
return listeners return listeners
case []interface{}: case []any:
listeners := make([]func(ListView, int), len(value)) listeners := make([]func(ListView, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -515,7 +515,7 @@ func (listView *listViewData) valueToItemListeners(value interface{}) []func(Lis
return nil return nil
} }
func (listView *listViewData) setChecked(value interface{}) bool { func (listView *listViewData) setChecked(value any) bool {
var checked []int var checked []int
if value == nil { if value == nil {
checked = []int{} checked = []int{}

View File

@ -185,11 +185,11 @@ func (player *mediaPlayerData) remove(tag string) {
player.propertyChanged(tag) player.propertyChanged(tag)
} }
func (player *mediaPlayerData) Set(tag string, value interface{}) bool { func (player *mediaPlayerData) Set(tag string, value any) bool {
return player.set(strings.ToLower(tag), value) return player.set(strings.ToLower(tag), value)
} }
func (player *mediaPlayerData) set(tag string, value interface{}) bool { func (player *mediaPlayerData) set(tag string, value any) bool {
if value == nil { if value == nil {
player.remove(tag) player.remove(tag)
return true return true
@ -257,7 +257,7 @@ func (player *mediaPlayerData) set(tag string, value interface{}) bool {
return false return false
} }
func (player *mediaPlayerData) setSource(value interface{}) bool { func (player *mediaPlayerData) setSource(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
src := MediaSource{Url: value, MimeType: ""} src := MediaSource{Url: value, MimeType: ""}
@ -311,7 +311,7 @@ func (player *mediaPlayerData) setSource(value interface{}) bool {
return true return true
} }
func valueToPlayerListeners(value interface{}) ([]func(MediaPlayer), bool) { func valueToPlayerListeners(value any) ([]func(MediaPlayer), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -353,7 +353,7 @@ func valueToPlayerListeners(value interface{}) ([]func(MediaPlayer), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -382,7 +382,7 @@ func valueToPlayerListeners(value interface{}) ([]func(MediaPlayer), bool) {
return nil, false return nil, false
} }
func valueToPlayerTimeListeners(value interface{}) ([]func(MediaPlayer, float64), bool) { func valueToPlayerTimeListeners(value any) ([]func(MediaPlayer, float64), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -468,7 +468,7 @@ func valueToPlayerTimeListeners(value interface{}) ([]func(MediaPlayer, float64)
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -507,7 +507,7 @@ func valueToPlayerTimeListeners(value interface{}) ([]func(MediaPlayer, float64)
return nil, false return nil, false
} }
func valueToPlayerErrorListeners(value interface{}) ([]func(MediaPlayer, int, string), bool) { func valueToPlayerErrorListeners(value any) ([]func(MediaPlayer, int, string), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -593,7 +593,7 @@ func valueToPlayerErrorListeners(value interface{}) ([]func(MediaPlayer, int, st
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true

View File

@ -144,7 +144,7 @@ type MouseEvent struct {
MetaKey bool MetaKey bool
} }
func valueToMouseListeners(value interface{}) ([]func(View, MouseEvent), bool) { func valueToMouseListeners(value any) ([]func(View, MouseEvent), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -230,7 +230,7 @@ func valueToMouseListeners(value interface{}) ([]func(View, MouseEvent), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -280,7 +280,7 @@ var mouseEvents = map[string]struct{ jsEvent, jsFunc string }{
ContextMenuEvent: {jsEvent: "oncontextmenu", jsFunc: "contextMenuEvent"}, ContextMenuEvent: {jsEvent: "oncontextmenu", jsFunc: "contextMenuEvent"},
} }
func (view *viewData) setMouseListener(tag string, value interface{}) bool { func (view *viewData) setMouseListener(tag string, value any) bool {
listeners, ok := valueToMouseListeners(value) listeners, ok := valueToMouseListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

View File

@ -87,11 +87,11 @@ func (picker *numberPickerData) remove(tag string) {
} }
} }
func (picker *numberPickerData) Set(tag string, value interface{}) bool { func (picker *numberPickerData) Set(tag string, value any) bool {
return picker.set(picker.normalizeTag(tag), value) return picker.set(picker.normalizeTag(tag), value)
} }
func (picker *numberPickerData) set(tag string, value interface{}) bool { func (picker *numberPickerData) set(tag string, value any) bool {
if value == nil { if value == nil {
picker.remove(tag) picker.remove(tag)
return true return true
@ -126,7 +126,7 @@ func (picker *numberPickerData) set(tag string, value interface{}) bool {
} }
picker.numberChangedListeners = listeners picker.numberChangedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(NumberPicker, float64), len(value)) listeners := make([]func(NumberPicker, float64), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -208,11 +208,11 @@ func (picker *numberPickerData) propertyChanged(tag string) {
} }
} }
func (picker *numberPickerData) Get(tag string) interface{} { func (picker *numberPickerData) Get(tag string) any {
return picker.get(picker.normalizeTag(tag)) return picker.get(picker.normalizeTag(tag))
} }
func (picker *numberPickerData) get(tag string) interface{} { func (picker *numberPickerData) get(tag string) any {
switch tag { switch tag {
case NumberChangedEvent: case NumberChangedEvent:
return picker.numberChangedListeners return picker.numberChangedListeners

View File

@ -18,7 +18,7 @@ type outlinePropertyData struct {
func NewOutlineProperty(params Params) OutlineProperty { func NewOutlineProperty(params Params) OutlineProperty {
outline := new(outlinePropertyData) outline := new(outlinePropertyData)
outline.properties = map[string]interface{}{} outline.properties = map[string]any{}
for tag, value := range params { for tag, value := range params {
outline.Set(tag, value) outline.Set(tag, value)
} }
@ -55,7 +55,7 @@ func (outline *outlinePropertyData) Remove(tag string) {
delete(outline.properties, outline.normalizeTag(tag)) delete(outline.properties, outline.normalizeTag(tag))
} }
func (outline *outlinePropertyData) Set(tag string, value interface{}) bool { func (outline *outlinePropertyData) Set(tag string, value any) bool {
if value == nil { if value == nil {
outline.Remove(tag) outline.Remove(tag)
return true return true
@ -85,7 +85,7 @@ func (outline *outlinePropertyData) Set(tag string, value interface{}) bool {
return false return false
} }
func (outline *outlinePropertyData) Get(tag string) interface{} { func (outline *outlinePropertyData) Get(tag string) any {
return outline.propertyList.Get(outline.normalizeTag(tag)) return outline.propertyList.Get(outline.normalizeTag(tag))
} }
@ -128,7 +128,7 @@ func getOutline(properties Properties) OutlineProperty {
return nil return nil
} }
func (style *viewStyle) setOutline(value interface{}) bool { func (style *viewStyle) setOutline(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case OutlineProperty: case OutlineProperty:
style.properties[Outline] = value style.properties[Outline] = value

View File

@ -3,25 +3,25 @@ package rui
import "sort" import "sort"
// Params defines a type of a parameters list // Params defines a type of a parameters list
type Params map[string]interface{} type Params map[string]any
func (params Params) Get(tag string) interface{} { func (params Params) Get(tag string) any {
return params.getRaw(tag) return params.getRaw(tag)
} }
func (params Params) getRaw(tag string) interface{} { func (params Params) getRaw(tag string) any {
if value, ok := params[tag]; ok { if value, ok := params[tag]; ok {
return value return value
} }
return nil return nil
} }
func (params Params) Set(tag string, value interface{}) bool { func (params Params) Set(tag string, value any) bool {
params.setRaw(tag, value) params.setRaw(tag, value)
return true return true
} }
func (params Params) setRaw(tag string, value interface{}) { func (params Params) setRaw(tag string, value any) {
if value != nil { if value != nil {
params[tag] = value params[tag] = value
} else { } else {

View File

@ -87,7 +87,7 @@ type PointerEvent struct {
IsPrimary bool IsPrimary bool
} }
func valueToPointerListeners(value interface{}) ([]func(View, PointerEvent), bool) { func valueToPointerListeners(value any) ([]func(View, PointerEvent), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -173,7 +173,7 @@ func valueToPointerListeners(value interface{}) ([]func(View, PointerEvent), boo
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -221,7 +221,7 @@ var pointerEvents = map[string]struct{ jsEvent, jsFunc string }{
PointerOver: {jsEvent: "onpointerover", jsFunc: "pointerOverEvent"}, PointerOver: {jsEvent: "onpointerover", jsFunc: "pointerOverEvent"},
} }
func (view *viewData) setPointerListener(tag string, value interface{}) bool { func (view *viewData) setPointerListener(tag string, value any) bool {
listeners, ok := valueToPointerListeners(value) listeners, ok := valueToPointerListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

View File

@ -102,7 +102,7 @@ func (popup *popupData) init(view View, params Params) {
} }
} }
case []interface{}: case []any:
for _, val := range value { for _, val := range value {
if val != nil { if val != nil {
switch fn := val.(type) { switch fn := val.(type) {

View File

@ -73,11 +73,11 @@ func (progress *progressBarData) propertyChanged(tag string) {
} }
} }
func (progress *progressBarData) Set(tag string, value interface{}) bool { func (progress *progressBarData) Set(tag string, value any) bool {
return progress.set(progress.normalizeTag(tag), value) return progress.set(progress.normalizeTag(tag), value)
} }
func (progress *progressBarData) set(tag string, value interface{}) bool { func (progress *progressBarData) set(tag string, value any) bool {
if progress.viewData.set(tag, value) { if progress.viewData.set(tag, value) {
progress.propertyChanged(tag) progress.propertyChanged(tag)
return true return true
@ -85,7 +85,7 @@ func (progress *progressBarData) set(tag string, value interface{}) bool {
return false return false
} }
func (progress *progressBarData) Get(tag string) interface{} { func (progress *progressBarData) Get(tag string) any {
return progress.get(progress.normalizeTag(tag)) return progress.get(progress.normalizeTag(tag))
} }

View File

@ -9,13 +9,13 @@ import (
type Properties interface { type Properties interface {
// Get returns a value of the property with name defined by the argument. // Get returns a value of the property with name defined by the argument.
// The type of return value depends on the property. If the property is not set then nil is returned. // The type of return value depends on the property. If the property is not set then nil is returned.
Get(tag string) interface{} Get(tag string) any
getRaw(tag string) interface{} getRaw(tag string) any
// Set sets the value (second argument) of the property with name defined by the first argument. // Set sets the value (second argument) of the property with name defined by the first argument.
// Return "true" if the value has been set, in the opposite case "false" are returned and // Return "true" if the value has been set, in the opposite case "false" are returned and
// a description of the error is written to the log // a description of the error is written to the log
Set(tag string, value interface{}) bool Set(tag string, value any) bool
setRaw(tag string, value interface{}) setRaw(tag string, value any)
// Remove removes the property with name defined by the argument // Remove removes the property with name defined by the argument
Remove(tag string) Remove(tag string)
// Clear removes all properties // Clear removes all properties
@ -25,25 +25,25 @@ type Properties interface {
} }
type propertyList struct { type propertyList struct {
properties map[string]interface{} properties map[string]any
} }
func (properties *propertyList) init() { func (properties *propertyList) init() {
properties.properties = map[string]interface{}{} properties.properties = map[string]any{}
} }
func (properties *propertyList) Get(tag string) interface{} { func (properties *propertyList) Get(tag string) any {
return properties.getRaw(strings.ToLower(tag)) return properties.getRaw(strings.ToLower(tag))
} }
func (properties *propertyList) getRaw(tag string) interface{} { func (properties *propertyList) getRaw(tag string) any {
if value, ok := properties.properties[tag]; ok { if value, ok := properties.properties[tag]; ok {
return value return value
} }
return nil return nil
} }
func (properties *propertyList) setRaw(tag string, value interface{}) { func (properties *propertyList) setRaw(tag string, value any) {
properties.properties[tag] = value properties.properties[tag] = value
} }
@ -56,7 +56,7 @@ func (properties *propertyList) remove(tag string) {
} }
func (properties *propertyList) Clear() { func (properties *propertyList) Clear() {
properties.properties = map[string]interface{}{} properties.properties = map[string]any{}
} }
func (properties *propertyList) AllTags() []string { func (properties *propertyList) AllTags() []string {

View File

@ -32,49 +32,49 @@ func TestProperties(t *testing.T) {
t.Error(`list.Get("name") is not string`) t.Error(`list.Get("name") is not string`)
} }
sizeValues := []interface{}{"@small", "auto", "10px", Pt(20), AutoSize()} sizeValues := []any{"@small", "auto", "10px", Pt(20), AutoSize()}
for _, value := range sizeValues { for _, value := range sizeValues {
if !list.setSizeProperty("size", value) { if !list.setSizeProperty("size", value) {
t.Errorf(`setSizeProperty("size", %v) fail`, value) t.Errorf(`setSizeProperty("size", %v) fail`, value)
} }
} }
failSizeValues := []interface{}{"@small,big", "abc", "10", Color(20), 100} failSizeValues := []any{"@small,big", "abc", "10", Color(20), 100}
for _, value := range failSizeValues { for _, value := range failSizeValues {
if list.setSizeProperty("size", value) { if list.setSizeProperty("size", value) {
t.Errorf(`setSizeProperty("size", %v) success`, value) t.Errorf(`setSizeProperty("size", %v) success`, value)
} }
} }
angleValues := []interface{}{"@angle", "2pi", "π", "3deg", "60°", Rad(1.5), Deg(45), 1, 1.5} angleValues := []any{"@angle", "2pi", "π", "3deg", "60°", Rad(1.5), Deg(45), 1, 1.5}
for _, value := range angleValues { for _, value := range angleValues {
if !list.setAngleProperty("angle", value) { if !list.setAngleProperty("angle", value) {
t.Errorf(`setAngleProperty("angle", %v) fail`, value) t.Errorf(`setAngleProperty("angle", %v) fail`, value)
} }
} }
failAngleValues := []interface{}{"@angle,2", "pi32", "deg", "60°x", Color(0xFFFFFFFF)} failAngleValues := []any{"@angle,2", "pi32", "deg", "60°x", Color(0xFFFFFFFF)}
for _, value := range failAngleValues { for _, value := range failAngleValues {
if list.setAngleProperty("angle", value) { if list.setAngleProperty("angle", value) {
t.Errorf(`setAngleProperty("angle", %v) success`, value) t.Errorf(`setAngleProperty("angle", %v) success`, value)
} }
} }
colorValues := []interface{}{"@color", "#FF234567", "#234567", "rgba(30%, 128, 0.5, .25)", "rgb(30%, 128, 0.5)", Color(0xFFFFFFFF), 0xFFFFFFFF, White} colorValues := []any{"@color", "#FF234567", "#234567", "rgba(30%, 128, 0.5, .25)", "rgb(30%, 128, 0.5)", Color(0xFFFFFFFF), 0xFFFFFFFF, White}
for _, color := range colorValues { for _, color := range colorValues {
if !list.setColorProperty("color", color) { if !list.setColorProperty("color", color) {
t.Errorf(`list.setColorProperty("color", %v) fail`, color) t.Errorf(`list.setColorProperty("color", %v) fail`, color)
} }
} }
failColorValues := []interface{}{"@color|2", "#FF234567FF", "#TT234567", "rgba(500%, 128, 10.5, .25)", 10.6} failColorValues := []any{"@color|2", "#FF234567FF", "#TT234567", "rgba(500%, 128, 10.5, .25)", 10.6}
for _, color := range failColorValues { for _, color := range failColorValues {
if list.setColorProperty("color", color) { if list.setColorProperty("color", color) {
t.Errorf(`list.setColorProperty("color", %v) success`, color) t.Errorf(`list.setColorProperty("color", %v) success`, color)
} }
} }
enumValues := []interface{}{"@enum", "inherit", "on", Inherit, 2} enumValues := []any{"@enum", "inherit", "on", Inherit, 2}
inheritOffOn := inheritOffOnValues() inheritOffOn := inheritOffOnValues()
for _, value := range enumValues { for _, value := range enumValues {
if !list.setEnumProperty("enum", value, inheritOffOn) { if !list.setEnumProperty("enum", value, inheritOffOn) {
@ -82,56 +82,56 @@ func TestProperties(t *testing.T) {
} }
} }
failEnumValues := []interface{}{"@enum 13", "inherit2", "onn", -1, 10} failEnumValues := []any{"@enum 13", "inherit2", "onn", -1, 10}
for _, value := range failEnumValues { for _, value := range failEnumValues {
if list.setEnumProperty("enum", value, inheritOffOn) { if list.setEnumProperty("enum", value, inheritOffOn) {
t.Errorf(`list.setEnumProperty("enum", %v, %v) success`, value, inheritOffOn) t.Errorf(`list.setEnumProperty("enum", %v, %v) success`, value, inheritOffOn)
} }
} }
boolValues := []interface{}{"@bool", "true", "yes ", "on", " 1", "false", "no", "off", "0", 0, 1, false, true} boolValues := []any{"@bool", "true", "yes ", "on", " 1", "false", "no", "off", "0", 0, 1, false, true}
for _, value := range boolValues { for _, value := range boolValues {
if !list.setBoolProperty("bool", value) { if !list.setBoolProperty("bool", value) {
t.Errorf(`list.setBoolProperty("bool", %v) fail`, value) t.Errorf(`list.setBoolProperty("bool", %v) fail`, value)
} }
} }
failBoolValues := []interface{}{"@bool,2", "tr", "ys", "10", -1, 10, 0.8} failBoolValues := []any{"@bool,2", "tr", "ys", "10", -1, 10, 0.8}
for _, value := range failBoolValues { for _, value := range failBoolValues {
if list.setBoolProperty("bool", value) { if list.setBoolProperty("bool", value) {
t.Errorf(`list.setBoolProperty("bool", %v) success`, value) t.Errorf(`list.setBoolProperty("bool", %v) success`, value)
} }
} }
intValues := []interface{}{"@int", " 100", "-10 ", 0, 250} intValues := []any{"@int", " 100", "-10 ", 0, 250}
for _, value := range intValues { for _, value := range intValues {
if !list.setIntProperty("int", value) { if !list.setIntProperty("int", value) {
t.Errorf(`list.setIntProperty("int", %v) fail`, value) t.Errorf(`list.setIntProperty("int", %v) fail`, value)
} }
} }
failIntValues := []interface{}{"@int|10", "100i", "-1.0 ", 0.0} failIntValues := []any{"@int|10", "100i", "-1.0 ", 0.0}
for _, value := range failIntValues { for _, value := range failIntValues {
if list.setIntProperty("int", value) { if list.setIntProperty("int", value) {
t.Errorf(`list.setIntProperty("int", %v) success`, value) t.Errorf(`list.setIntProperty("int", %v) success`, value)
} }
} }
floatValues := []interface{}{"@float", " 100.25", "-1.5e12 ", uint(0), 250, float32(10.2), float64(0)} floatValues := []any{"@float", " 100.25", "-1.5e12 ", uint(0), 250, float32(10.2), float64(0)}
for _, value := range floatValues { for _, value := range floatValues {
if !list.setFloatProperty("float", value) { if !list.setFloatProperty("float", value) {
t.Errorf(`list.setFloatProperty("float", %v) fail`, value) t.Errorf(`list.setFloatProperty("float", %v) fail`, value)
} }
} }
failFloatValues := []interface{}{"@float|2", " 100.25i", "-1.5ee12 ", "abc"} failFloatValues := []any{"@float|2", " 100.25i", "-1.5ee12 ", "abc"}
for _, value := range failFloatValues { for _, value := range failFloatValues {
if list.setFloatProperty("float", value) { if list.setFloatProperty("float", value) {
t.Errorf(`list.setFloatProperty("float", %v) success`, value) t.Errorf(`list.setFloatProperty("float", %v) success`, value)
} }
} }
boundsValues := []interface{}{"@bounds", "10px,20pt,@bottom,0", Em(2), []interface{}{"@top", Px(10), AutoSize(), "14pt"}} boundsValues := []any{"@bounds", "10px,20pt,@bottom,0", Em(2), []any{"@top", Px(10), AutoSize(), "14pt"}}
for _, value := range boundsValues { for _, value := range boundsValues {
if !list.setBoundsProperty("margin", value) { if !list.setBoundsProperty("margin", value) {
t.Errorf(`list.setBoundsProperty("margin", %v) fail`, value) t.Errorf(`list.setBoundsProperty("margin", %v) fail`, value)

View File

@ -31,7 +31,7 @@ func imageProperty(properties Properties, tag string, session Session) (string,
return "", false return "", false
} }
func valueToSizeUnit(value interface{}, session Session) (SizeUnit, bool) { func valueToSizeUnit(value any, session Session) (SizeUnit, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case SizeUnit: case SizeUnit:
@ -67,7 +67,7 @@ func angleProperty(properties Properties, tag string, session Session) (AngleUni
return AngleUnit{Type: 0, Value: 0}, false return AngleUnit{Type: 0, Value: 0}, false
} }
func valueToColor(value interface{}, session Session) (Color, bool) { func valueToColor(value any, session Session) (Color, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case Color: case Color:
@ -88,7 +88,7 @@ func colorProperty(properties Properties, tag string, session Session) (Color, b
return valueToColor(properties.getRaw(tag), session) return valueToColor(properties.getRaw(tag), session)
} }
func valueToEnum(value interface{}, tag string, session Session, defaultValue int) (int, bool) { func valueToEnum(value any, tag string, session Session, defaultValue int) (int, bool) {
if value != nil { if value != nil {
values := enumProperties[tag].values values := enumProperties[tag].values
switch value := value.(type) { switch value := value.(type) {
@ -155,7 +155,7 @@ func enumProperty(properties Properties, tag string, session Session, defaultVal
return valueToEnum(properties.getRaw(tag), tag, session, defaultValue) return valueToEnum(properties.getRaw(tag), tag, session, defaultValue)
} }
func valueToBool(value interface{}, session Session) (bool, bool) { func valueToBool(value any, session Session) (bool, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case bool: case bool:
@ -184,7 +184,7 @@ func boolProperty(properties Properties, tag string, session Session) (bool, boo
return valueToBool(properties.getRaw(tag), session) return valueToBool(properties.getRaw(tag), session)
} }
func valueToInt(value interface{}, session Session, defaultValue int) (int, bool) { func valueToInt(value any, session Session, defaultValue int) (int, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
@ -214,7 +214,7 @@ func intProperty(properties Properties, tag string, session Session, defaultValu
return valueToInt(properties.getRaw(tag), session, defaultValue) return valueToInt(properties.getRaw(tag), session, defaultValue)
} }
func valueToFloat(value interface{}, session Session, defaultValue float64) (float64, bool) { func valueToFloat(value any, session Session, defaultValue float64) (float64, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case float64: case float64:
@ -238,7 +238,7 @@ func floatProperty(properties Properties, tag string, session Session, defaultVa
return valueToFloat(properties.getRaw(tag), session, defaultValue) return valueToFloat(properties.getRaw(tag), session, defaultValue)
} }
func valueToRange(value interface{}, session Session) (Range, bool) { func valueToRange(value any, session Session) (Range, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case Range: case Range:

View File

@ -431,11 +431,11 @@ var enumProperties = map[string]struct {
}, },
} }
func notCompatibleType(tag string, value interface{}) { func notCompatibleType(tag string, value any) {
ErrorLogF(`"%T" type not compatible with "%s" property`, value, tag) ErrorLogF(`"%T" type not compatible with "%s" property`, value, tag)
} }
func invalidPropertyValue(tag string, value interface{}) { func invalidPropertyValue(tag string, value any) {
ErrorLogF(`Invalid value "%v" of "%s" property`, value, tag) ErrorLogF(`Invalid value "%v" of "%s" property`, value, tag)
} }
@ -457,7 +457,7 @@ func isConstantName(text string) bool {
return !strings.ContainsAny(text, ",;|\"'`+(){}[]<>/\\*&%! \t\n\r") return !strings.ContainsAny(text, ",;|\"'`+(){}[]<>/\\*&%! \t\n\r")
} }
func isInt(value interface{}) (int, bool) { func isInt(value any) (int, bool) {
var n int var n int
switch value := value.(type) { switch value := value.(type) {
case int: case int:
@ -497,7 +497,7 @@ func isInt(value interface{}) (int, bool) {
return n, true return n, true
} }
func (properties *propertyList) setSimpleProperty(tag string, value interface{}) bool { func (properties *propertyList) setSimpleProperty(tag string, value any) bool {
if value == nil { if value == nil {
delete(properties.properties, tag) delete(properties.properties, tag)
return true return true
@ -515,7 +515,7 @@ func (properties *propertyList) setSimpleProperty(tag string, value interface{})
return false return false
} }
func (properties *propertyList) setSizeProperty(tag string, value interface{}) bool { func (properties *propertyList) setSizeProperty(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
var size SizeUnit var size SizeUnit
switch value := value.(type) { switch value := value.(type) {
@ -556,7 +556,7 @@ func (properties *propertyList) setSizeProperty(tag string, value interface{}) b
return true return true
} }
func (properties *propertyList) setAngleProperty(tag string, value interface{}) bool { func (properties *propertyList) setAngleProperty(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
var angle AngleUnit var angle AngleUnit
switch value := value.(type) { switch value := value.(type) {
@ -589,7 +589,7 @@ func (properties *propertyList) setAngleProperty(tag string, value interface{})
return true return true
} }
func (properties *propertyList) setColorProperty(tag string, value interface{}) bool { func (properties *propertyList) setColorProperty(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
var result Color var result Color
switch value := value.(type) { switch value := value.(type) {
@ -621,7 +621,7 @@ func (properties *propertyList) setColorProperty(tag string, value interface{})
return true return true
} }
func (properties *propertyList) setEnumProperty(tag string, value interface{}, values []string) bool { func (properties *propertyList) setEnumProperty(tag string, value any, values []string) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
var n int var n int
if text, ok := value.(string); ok { if text, ok := value.(string); ok {
@ -646,7 +646,7 @@ func (properties *propertyList) setEnumProperty(tag string, value interface{}, v
return true return true
} }
func (properties *propertyList) setBoolProperty(tag string, value interface{}) bool { func (properties *propertyList) setBoolProperty(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
if text, ok := value.(string); ok { if text, ok := value.(string); ok {
switch strings.ToLower(strings.Trim(text, " \t")) { switch strings.ToLower(strings.Trim(text, " \t")) {
@ -683,7 +683,7 @@ func (properties *propertyList) setBoolProperty(tag string, value interface{}) b
return true return true
} }
func (properties *propertyList) setIntProperty(tag string, value interface{}) bool { func (properties *propertyList) setIntProperty(tag string, value any) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
if text, ok := value.(string); ok { if text, ok := value.(string); ok {
n, err := strconv.Atoi(strings.Trim(text, " \t")) n, err := strconv.Atoi(strings.Trim(text, " \t"))
@ -704,7 +704,7 @@ func (properties *propertyList) setIntProperty(tag string, value interface{}) bo
return true return true
} }
func (properties *propertyList) setFloatProperty(tag string, value interface{}, min, max float64) bool { func (properties *propertyList) setFloatProperty(tag string, value any, min, max float64) bool {
if !properties.setSimpleProperty(tag, value) { if !properties.setSimpleProperty(tag, value) {
f := float64(0) f := float64(0)
switch value := value.(type) { switch value := value.(type) {
@ -742,11 +742,11 @@ func (properties *propertyList) setFloatProperty(tag string, value interface{},
return true return true
} }
func (properties *propertyList) Set(tag string, value interface{}) bool { func (properties *propertyList) Set(tag string, value any) bool {
return properties.set(strings.ToLower(tag), value) return properties.set(strings.ToLower(tag), value)
} }
func (properties *propertyList) set(tag string, value interface{}) bool { func (properties *propertyList) set(tag string, value any) bool {
if value == nil { if value == nil {
delete(properties.properties, tag) delete(properties.properties, tag)
return true return true

View File

@ -109,7 +109,7 @@ type radiusPropertyData struct {
// NewRadiusProperty creates the new RadiusProperty // NewRadiusProperty creates the new RadiusProperty
func NewRadiusProperty(params Params) RadiusProperty { func NewRadiusProperty(params Params) RadiusProperty {
result := new(radiusPropertyData) result := new(radiusPropertyData)
result.properties = map[string]interface{}{} result.properties = map[string]any{}
if params != nil { if params != nil {
for _, tag := range []string{X, Y, TopLeft, TopRight, BottomLeft, BottomRight, TopLeftX, TopLeftY, for _, tag := range []string{X, Y, TopLeft, TopRight, BottomLeft, BottomRight, TopLeftX, TopLeftY,
TopRightX, TopRightY, BottomLeftX, BottomLeftY, BottomRightX, BottomRightY} { TopRightX, TopRightY, BottomLeftX, BottomLeftY, BottomRightX, BottomRightY} {
@ -172,7 +172,7 @@ func (radius *radiusPropertyData) deleteUnusedTags() {
} }
} }
equalValue := func(value1, value2 interface{}) bool { equalValue := func(value1, value2 any) bool {
switch value1 := value1.(type) { switch value1 := value1.(type) {
case string: case string:
switch value2 := value2.(type) { switch value2 := value2.(type) {
@ -243,7 +243,7 @@ func (radius *radiusPropertyData) Remove(tag string) {
} }
func (radius *radiusPropertyData) Set(tag string, value interface{}) bool { func (radius *radiusPropertyData) Set(tag string, value any) bool {
if value == nil { if value == nil {
radius.Remove(tag) radius.Remove(tag)
return true return true
@ -318,7 +318,7 @@ func (radius *radiusPropertyData) Set(tag string, value interface{}) bool {
return false return false
} }
func (radius *radiusPropertyData) Get(tag string) interface{} { func (radius *radiusPropertyData) Get(tag string) any {
tag = radius.normalizeTag(tag) tag = radius.normalizeTag(tag)
if value, ok := radius.properties[tag]; ok { if value, ok := radius.properties[tag]; ok {
return value return value
@ -570,7 +570,7 @@ func getRadiusProperty(style Properties) RadiusProperty {
return NewRadiusProperty(nil) return NewRadiusProperty(nil)
} }
func (properties *propertyList) setRadius(value interface{}) bool { func (properties *propertyList) setRadius(value any) bool {
if value == nil { if value == nil {
delete(properties.properties, Radius) delete(properties.properties, Radius)
@ -664,7 +664,7 @@ func (properties *propertyList) removeRadiusElement(tag string) {
} }
} }
func (properties *propertyList) setRadiusElement(tag string, value interface{}) bool { func (properties *propertyList) setRadiusElement(tag string, value any) bool {
if value == nil { if value == nil {
properties.removeRadiusElement(tag) properties.removeRadiusElement(tag)
return true return true
@ -679,7 +679,7 @@ func (properties *propertyList) setRadiusElement(tag string, value interface{})
return false return false
} }
func getRadiusElement(style Properties, tag string) interface{} { func getRadiusElement(style Properties, tag string) any {
value := style.Get(Radius) value := style.Get(Radius)
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {

View File

@ -108,11 +108,11 @@ func (resizable *resizableData) remove(tag string) {
} }
} }
func (resizable *resizableData) Set(tag string, value interface{}) bool { func (resizable *resizableData) Set(tag string, value any) bool {
return resizable.set(strings.ToLower(tag), value) return resizable.set(strings.ToLower(tag), value)
} }
func (resizable *resizableData) set(tag string, value interface{}) bool { func (resizable *resizableData) set(tag string, value any) bool {
if value == nil { if value == nil {
resizable.remove(tag) resizable.remove(tag)
return true return true
@ -183,7 +183,7 @@ func (resizable *resizableData) set(tag string, value interface{}) bool {
return resizable.viewData.set(tag, value) return resizable.viewData.set(tag, value)
} }
func (resizable *resizableData) Get(tag string) interface{} { func (resizable *resizableData) Get(tag string) any {
return resizable.get(strings.ToLower(tag)) return resizable.get(strings.ToLower(tag))
} }
@ -235,7 +235,7 @@ func (resizable *resizableData) getSide() int {
return AllSides return AllSides
} }
func (resizable *resizableData) setSide(value interface{}) bool { func (resizable *resizableData) setSide(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
if n, err := strconv.Atoi(value); err == nil { if n, err := strconv.Atoi(value); err == nil {

View File

@ -21,7 +21,7 @@ func (view *viewData) onResize(self View, x, y, width, height float64) {
func (view *viewData) onItemResize(self View, index string, x, y, width, height float64) { func (view *viewData) onItemResize(self View, index string, x, y, width, height float64) {
} }
func (view *viewData) setFrameListener(tag string, value interface{}) bool { func (view *viewData) setFrameListener(tag string, value any) bool {
if value == nil { if value == nil {
delete(view.properties, tag) delete(view.properties, tag)
return true return true
@ -117,7 +117,7 @@ func (view *viewData) setFrameListener(tag string, value interface{}) bool {
} }
view.properties[tag] = listeners view.properties[tag] = listeners
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
delete(view.properties, tag) delete(view.properties, tag)

View File

@ -13,7 +13,7 @@ type ruiWriter interface {
endObject() endObject()
startArrayProperty(tag string) startArrayProperty(tag string)
endObArray() endObArray()
writeProperty(tag string, value interface{}) writeProperty(tag string, value any)
finish() string finish() string
} }
@ -112,7 +112,7 @@ func (writer *ruiWriterData) endObArray() {
writer.buffer.WriteString("],\n") writer.buffer.WriteString("],\n")
} }
func (writer *ruiWriterData) writeValue(value interface{}) { func (writer *ruiWriterData) writeValue(value any) {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
@ -175,7 +175,7 @@ func (writer *ruiWriterData) writeValue(value interface{}) {
writer.buffer.WriteRune(']') writer.buffer.WriteRune(']')
} }
case []interface{}: case []any:
switch len(value) { switch len(value) {
case 0: case 0:
writer.buffer.WriteString("[]\n") writer.buffer.WriteString("[]\n")
@ -205,7 +205,7 @@ func (writer *ruiWriterData) writeValue(value interface{}) {
writer.buffer.WriteString(",\n") writer.buffer.WriteString(",\n")
} }
func (writer *ruiWriterData) writeProperty(tag string, value interface{}) { func (writer *ruiWriterData) writeProperty(tag string, value any) {
writer.writeIndent() writer.writeIndent()
writer.writeString(tag) writer.writeString(tag)
writer.buffer.WriteString(" = ") writer.buffer.WriteString(" = ")

View File

@ -59,11 +59,11 @@ type Session interface {
RootView() View RootView() View
// Get returns a value of the view (with id defined by the first argument) property with name defined by the second argument. // Get returns a value of the view (with id defined by the first argument) property with name defined by the second argument.
// The type of return value depends on the property. If the property is not set then nil is returned. // The type of return value depends on the property. If the property is not set then nil is returned.
Get(viewID, tag string) interface{} Get(viewID, tag string) any
// Set sets the value (third argument) of the property (second argument) of the view with id defined by the first argument. // Set sets the value (third argument) of the property (second argument) of the view with id defined by the first argument.
// Return "true" if the value has been set, in the opposite case "false" are returned and // Return "true" if the value has been set, in the opposite case "false" are returned and
// a description of the error is written to the log // a description of the error is written to the log
Set(viewID, tag string, value interface{}) bool Set(viewID, tag string, value any) bool
// DownloadFile downloads (saves) on the client side the file located at the specified path on the server. // DownloadFile downloads (saves) on the client side the file located at the specified path on the server.
DownloadFile(path string) DownloadFile(path string)
@ -80,7 +80,7 @@ type Session interface {
viewByHTMLID(id string) View viewByHTMLID(id string) View
nextViewID() string nextViewID() string
styleProperty(styleTag, property string) interface{} styleProperty(styleTag, property string) any
setBrige(events chan DataObject, brige WebBrige) setBrige(events chan DataObject, brige WebBrige)
writeInitScript(writer *strings.Builder) writeInitScript(writer *strings.Builder)
@ -219,7 +219,7 @@ func (session *sessionData) close() {
} }
} }
func (session *sessionData) styleProperty(styleTag, propertyTag string) interface{} { func (session *sessionData) styleProperty(styleTag, propertyTag string) any {
if style := session.getCurrentTheme().style(styleTag); style != nil { if style := session.getCurrentTheme().style(styleTag); style != nil {
return style.getRaw(propertyTag) return style.getRaw(propertyTag)
} }
@ -309,14 +309,14 @@ func (session *sessionData) setIgnoreViewUpdates(ignore bool) {
session.ignoreUpdates = ignore session.ignoreUpdates = ignore
} }
func (session *sessionData) Get(viewID, tag string) interface{} { func (session *sessionData) Get(viewID, tag string) any {
if view := ViewByID(session.RootView(), viewID); view != nil { if view := ViewByID(session.RootView(), viewID); view != nil {
return view.Get(tag) return view.Get(tag)
} }
return nil return nil
} }
func (session *sessionData) Set(viewID, tag string, value interface{}) bool { func (session *sessionData) Set(viewID, tag string, value any) bool {
if view := ViewByID(session.RootView(), viewID); view != nil { if view := ViewByID(session.RootView(), viewID); view != nil {
return view.Set(tag, value) return view.Set(tag, value)
} }

View File

@ -111,7 +111,7 @@ func (shadow *viewShadowData) Remove(tag string) {
delete(shadow.properties, strings.ToLower(tag)) delete(shadow.properties, strings.ToLower(tag))
} }
func (shadow *viewShadowData) Set(tag string, value interface{}) bool { func (shadow *viewShadowData) Set(tag string, value any) bool {
if value == nil { if value == nil {
shadow.Remove(tag) shadow.Remove(tag)
return true return true
@ -127,7 +127,7 @@ func (shadow *viewShadowData) Set(tag string, value interface{}) bool {
return false return false
} }
func (shadow *viewShadowData) Get(tag string) interface{} { func (shadow *viewShadowData) Get(tag string) any {
return shadow.propertyList.Get(strings.ToLower(tag)) return shadow.propertyList.Get(strings.ToLower(tag))
} }
@ -225,7 +225,7 @@ func (shadow *viewShadowData) writeString(buffer *strings.Builder, indent string
buffer.WriteString(" }") buffer.WriteString(" }")
} }
func (properties *propertyList) setShadow(tag string, value interface{}) bool { func (properties *propertyList) setShadow(tag string, value any) bool {
if value == nil { if value == nil {
delete(properties.properties, tag) delete(properties.properties, tag)

View File

@ -97,11 +97,11 @@ func (layout *stackLayoutData) popFinished(view View, tag string) {
} }
} }
func (layout *stackLayoutData) Set(tag string, value interface{}) bool { func (layout *stackLayoutData) Set(tag string, value any) bool {
return layout.set(strings.ToLower(tag), value) return layout.set(strings.ToLower(tag), value)
} }
func (layout *stackLayoutData) set(tag string, value interface{}) bool { func (layout *stackLayoutData) set(tag string, value any) bool {
if value == nil { if value == nil {
layout.remove(tag) layout.remove(tag)
return true return true
@ -179,11 +179,11 @@ func (layout *stackLayoutData) remove(tag string) {
} }
} }
func (layout *stackLayoutData) Get(tag string) interface{} { func (layout *stackLayoutData) Get(tag string) any {
return layout.get(strings.ToLower(tag)) return layout.get(strings.ToLower(tag))
} }
func (layout *stackLayoutData) get(tag string) interface{} { func (layout *stackLayoutData) get(tag string) any {
if tag == Current { if tag == Current {
return layout.peek return layout.peek
} }

View File

@ -18,7 +18,7 @@ type TableAdapter interface {
// * rui.View // * rui.View
// * fmt.Stringer // * fmt.Stringer
// * rui.VerticalTableJoin, rui.HorizontalTableJoin // * rui.VerticalTableJoin, rui.HorizontalTableJoin
Cell(row, column int) interface{} Cell(row, column int) any
} }
// TableColumnStyle describes the style of TableView columns. // TableColumnStyle describes the style of TableView columns.
@ -59,15 +59,15 @@ type TableAllowRowSelection interface {
} }
// SimpleTableAdapter is implementation of TableAdapter where the content // SimpleTableAdapter is implementation of TableAdapter where the content
// defines as [][]interface{}. // defines as [][]any.
// When you assign [][]interface{} value to the "content" property, it is converted to SimpleTableAdapter // When you assign [][]any value to the "content" property, it is converted to SimpleTableAdapter
type SimpleTableAdapter interface { type SimpleTableAdapter interface {
TableAdapter TableAdapter
TableCellStyle TableCellStyle
} }
type simpleTableAdapter struct { type simpleTableAdapter struct {
content [][]interface{} content [][]any
columnCount int columnCount int
} }
@ -94,7 +94,7 @@ type HorizontalTableJoin struct {
} }
// NewSimpleTableAdapter creates the new SimpleTableAdapter // NewSimpleTableAdapter creates the new SimpleTableAdapter
func NewSimpleTableAdapter(content [][]interface{}) SimpleTableAdapter { func NewSimpleTableAdapter(content [][]any) SimpleTableAdapter {
if content == nil { if content == nil {
return nil return nil
} }
@ -125,7 +125,7 @@ func (adapter *simpleTableAdapter) ColumnCount() int {
return adapter.columnCount return adapter.columnCount
} }
func (adapter *simpleTableAdapter) Cell(row, column int) interface{} { func (adapter *simpleTableAdapter) Cell(row, column int) any {
if adapter.content != nil && row >= 0 && row < len(adapter.content) && if adapter.content != nil && row >= 0 && row < len(adapter.content) &&
adapter.content[row] != nil && column >= 0 && column < len(adapter.content[row]) { adapter.content[row] != nil && column >= 0 && column < len(adapter.content[row]) {
return adapter.content[row][column] return adapter.content[row][column]
@ -220,7 +220,7 @@ func (adapter *textTableAdapter) ColumnCount() int {
return adapter.columnCount return adapter.columnCount
} }
func (adapter *textTableAdapter) Cell(row, column int) interface{} { func (adapter *textTableAdapter) Cell(row, column int) any {
if adapter.content != nil && row >= 0 && row < len(adapter.content) && if adapter.content != nil && row >= 0 && row < len(adapter.content) &&
adapter.content[row] != nil && column >= 0 && column < len(adapter.content[row]) { adapter.content[row] != nil && column >= 0 && column < len(adapter.content[row]) {
return adapter.content[row][column] return adapter.content[row][column]
@ -242,7 +242,7 @@ func (style *simpleTableRowStyle) RowStyle(row int) Params {
return nil return nil
} }
func (table *tableViewData) setRowStyle(value interface{}) bool { func (table *tableViewData) setRowStyle(value any) bool {
newSimpleTableRowStyle := func(params []Params) TableRowStyle { newSimpleTableRowStyle := func(params []Params) TableRowStyle {
if len(params) == 0 { if len(params) == 0 {
return nil return nil
@ -319,7 +319,7 @@ func (style *simpleTableColumnStyle) ColumnStyle(row int) Params {
return nil return nil
} }
func (table *tableViewData) setColumnStyle(value interface{}) bool { func (table *tableViewData) setColumnStyle(value any) bool {
newSimpleTableColumnStyle := func(params []Params) TableColumnStyle { newSimpleTableColumnStyle := func(params []Params) TableColumnStyle {
if len(params) == 0 { if len(params) == 0 {
return nil return nil

View File

@ -293,7 +293,7 @@ func (table *tableViewData) Focusable() bool {
return GetTableSelectionMode(table, "") != NoneSelection return GetTableSelectionMode(table, "") != NoneSelection
} }
func (table *tableViewData) Get(tag string) interface{} { func (table *tableViewData) Get(tag string) any {
return table.get(table.normalizeTag(tag)) return table.get(table.normalizeTag(tag))
} }
@ -340,11 +340,11 @@ func (table *tableViewData) remove(tag string) {
} }
} }
func (table *tableViewData) Set(tag string, value interface{}) bool { func (table *tableViewData) Set(tag string, value any) bool {
return table.set(table.normalizeTag(tag), value) return table.set(table.normalizeTag(tag), value)
} }
func (table *tableViewData) set(tag string, value interface{}) bool { func (table *tableViewData) set(tag string, value any) bool {
if value == nil { if value == nil {
table.remove(tag) table.remove(tag)
return true return true
@ -356,7 +356,7 @@ func (table *tableViewData) set(tag string, value interface{}) bool {
case TableAdapter: case TableAdapter:
table.properties[Content] = value table.properties[Content] = value
case [][]interface{}: case [][]any:
table.properties[Content] = NewSimpleTableAdapter(val) table.properties[Content] = NewSimpleTableAdapter(val)
case [][]string: case [][]string:
@ -676,7 +676,7 @@ func (table *tableViewData) currentInactiveStyle() string {
return "ruiCurrentTableCell" return "ruiCurrentTableCell"
} }
func (table *tableViewData) valueToCellListeners(value interface{}) []func(TableView, int, int) { func (table *tableViewData) valueToCellListeners(value any) []func(TableView, int, int) {
if value == nil { if value == nil {
return []func(TableView, int, int){} return []func(TableView, int, int){}
} }
@ -706,7 +706,7 @@ func (table *tableViewData) valueToCellListeners(value interface{}) []func(Table
} }
return listeners return listeners
case []interface{}: case []any:
listeners := make([]func(TableView, int, int), len(value)) listeners := make([]func(TableView, int, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -731,7 +731,7 @@ func (table *tableViewData) valueToCellListeners(value interface{}) []func(Table
return nil return nil
} }
func (table *tableViewData) valueToRowListeners(value interface{}) []func(TableView, int) { func (table *tableViewData) valueToRowListeners(value any) []func(TableView, int) {
if value == nil { if value == nil {
return []func(TableView, int){} return []func(TableView, int){}
} }
@ -761,7 +761,7 @@ func (table *tableViewData) valueToRowListeners(value interface{}) []func(TableV
} }
return listeners return listeners
case []interface{}: case []any:
listeners := make([]func(TableView, int), len(value)) listeners := make([]func(TableView, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {

View File

@ -2,11 +2,11 @@ package rui
import "strings" import "strings"
func (cell *tableCellView) Set(tag string, value interface{}) bool { func (cell *tableCellView) Set(tag string, value any) bool {
return cell.set(strings.ToLower(tag), value) return cell.set(strings.ToLower(tag), value)
} }
func (cell *tableCellView) set(tag string, value interface{}) bool { func (cell *tableCellView) set(tag string, value any) bool {
switch tag { switch tag {
case VerticalAlign: case VerticalAlign:
tag = TableVerticalAlign tag = TableVerticalAlign

View File

@ -108,11 +108,11 @@ func (tabsLayout *tabsLayoutData) currentItem(defaultValue int) int {
return result return result
} }
func (tabsLayout *tabsLayoutData) Get(tag string) interface{} { func (tabsLayout *tabsLayoutData) Get(tag string) any {
return tabsLayout.get(strings.ToLower(tag)) return tabsLayout.get(strings.ToLower(tag))
} }
func (tabsLayout *tabsLayoutData) get(tag string) interface{} { func (tabsLayout *tabsLayoutData) get(tag string) any {
switch tag { switch tag {
case CurrentTabChangedEvent: case CurrentTabChangedEvent:
return tabsLayout.tabListener return tabsLayout.tabListener
@ -190,11 +190,11 @@ func (tabsLayout *tabsLayoutData) remove(tag string) {
tabsLayout.propertyChangedEvent(tag) tabsLayout.propertyChangedEvent(tag)
} }
func (tabsLayout *tabsLayoutData) Set(tag string, value interface{}) bool { func (tabsLayout *tabsLayoutData) Set(tag string, value any) bool {
return tabsLayout.set(strings.ToLower(tag), value) return tabsLayout.set(strings.ToLower(tag), value)
} }
func (tabsLayout *tabsLayoutData) set(tag string, value interface{}) bool { func (tabsLayout *tabsLayoutData) set(tag string, value any) bool {
if value == nil { if value == nil {
tabsLayout.remove(tag) tabsLayout.remove(tag)
return true return true
@ -286,7 +286,7 @@ func (tabsLayout *tabsLayoutData) set(tag string, value interface{}) bool {
return true return true
} }
func (tabsLayout *tabsLayoutData) valueToTabListeners(value interface{}) []func(TabsLayout, int, int) { func (tabsLayout *tabsLayoutData) valueToTabListeners(value any) []func(TabsLayout, int, int) {
if value == nil { if value == nil {
return []func(TabsLayout, int, int){} return []func(TabsLayout, int, int){}
} }
@ -388,7 +388,7 @@ func (tabsLayout *tabsLayoutData) valueToTabListeners(value interface{}) []func(
} }
return listeners return listeners
case []interface{}: case []any:
listeners := make([]func(TabsLayout, int, int), len(value)) listeners := make([]func(TabsLayout, int, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -433,7 +433,7 @@ func (tabsLayout *tabsLayoutData) valueToTabListeners(value interface{}) []func(
return nil return nil
} }
func (tabsLayout *tabsLayoutData) valueToCloseListeners(value interface{}) []func(TabsLayout, int) { func (tabsLayout *tabsLayoutData) valueToCloseListeners(value any) []func(TabsLayout, int) {
if value == nil { if value == nil {
return []func(TabsLayout, int){} return []func(TabsLayout, int){}
} }
@ -463,7 +463,7 @@ func (tabsLayout *tabsLayoutData) valueToCloseListeners(value interface{}) []fun
} }
return listeners return listeners
case []interface{}: case []any:
listeners := make([]func(TabsLayout, int), len(value)) listeners := make([]func(TabsLayout, int), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {

View File

@ -36,7 +36,7 @@ func (textView *textViewData) String() string {
return getViewString(textView) return getViewString(textView)
} }
func (textView *textViewData) Get(tag string) interface{} { func (textView *textViewData) Get(tag string) any {
return textView.get(strings.ToLower(tag)) return textView.get(strings.ToLower(tag))
} }
@ -57,11 +57,11 @@ func (textView *textViewData) remove(tag string) {
} }
} }
func (textView *textViewData) Set(tag string, value interface{}) bool { func (textView *textViewData) Set(tag string, value any) bool {
return textView.set(strings.ToLower(tag), value) return textView.set(strings.ToLower(tag), value)
} }
func (textView *textViewData) set(tag string, value interface{}) bool { func (textView *textViewData) set(tag string, value any) bool {
switch tag { switch tag {
case Text: case Text:
switch value := value.(type) { switch value := value.(type) {

View File

@ -114,11 +114,11 @@ func (picker *timePickerData) remove(tag string) {
picker.propertyChangedEvent(tag) picker.propertyChangedEvent(tag)
} }
func (picker *timePickerData) Set(tag string, value interface{}) bool { func (picker *timePickerData) Set(tag string, value any) bool {
return picker.set(picker.normalizeTag(tag), value) return picker.set(picker.normalizeTag(tag), value)
} }
func (picker *timePickerData) set(tag string, value interface{}) bool { func (picker *timePickerData) set(tag string, value any) bool {
if value == nil { if value == nil {
picker.remove(tag) picker.remove(tag)
return true return true
@ -250,7 +250,7 @@ func (picker *timePickerData) set(tag string, value interface{}) bool {
} }
picker.timeChangedListeners = listeners picker.timeChangedListeners = listeners
case []interface{}: case []any:
listeners := make([]func(TimePicker, time.Time), len(value)) listeners := make([]func(TimePicker, time.Time), len(value))
for i, val := range value { for i, val := range value {
if val == nil { if val == nil {
@ -283,11 +283,11 @@ func (picker *timePickerData) set(tag string, value interface{}) bool {
return false return false
} }
func (picker *timePickerData) Get(tag string) interface{} { func (picker *timePickerData) Get(tag string) any {
return picker.get(picker.normalizeTag(tag)) return picker.get(picker.normalizeTag(tag))
} }
func (picker *timePickerData) get(tag string) interface{} { func (picker *timePickerData) get(tag string) any {
switch tag { switch tag {
case TimeChangedEvent: case TimeChangedEvent:
return picker.timeChangedListeners return picker.timeChangedListeners
@ -362,7 +362,7 @@ func (picker *timePickerData) handleCommand(self View, command string, data Data
} }
func getTimeProperty(view View, mainTag, shortTag string) (time.Time, bool) { func getTimeProperty(view View, mainTag, shortTag string) (time.Time, bool) {
valueToTime := func(value interface{}) (time.Time, bool) { valueToTime := func(value any) (time.Time, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case time.Time: case time.Time:

View File

@ -90,7 +90,7 @@ type TouchEvent struct {
MetaKey bool MetaKey bool
} }
func valueToTouchListeners(value interface{}) ([]func(View, TouchEvent), bool) { func valueToTouchListeners(value any) ([]func(View, TouchEvent), bool) {
if value == nil { if value == nil {
return nil, true return nil, true
} }
@ -176,7 +176,7 @@ func valueToTouchListeners(value interface{}) ([]func(View, TouchEvent), bool) {
} }
return listeners, true return listeners, true
case []interface{}: case []any:
count := len(value) count := len(value)
if count == 0 { if count == 0 {
return nil, true return nil, true
@ -222,7 +222,7 @@ var touchEvents = map[string]struct{ jsEvent, jsFunc string }{
TouchCancel: {jsEvent: "ontouchcancel", jsFunc: "touchCancelEvent"}, TouchCancel: {jsEvent: "ontouchcancel", jsFunc: "touchCancelEvent"},
} }
func (view *viewData) setTouchListener(tag string, value interface{}) bool { func (view *viewData) setTouchListener(tag string, value any) bool {
listeners, ok := valueToTouchListeners(value) listeners, ok := valueToTouchListeners(value)
if !ok { if !ok {
notCompatibleType(tag, value) notCompatibleType(tag, value)

View File

@ -77,11 +77,11 @@ func (player *videoPlayerData) remove(tag string) {
} }
} }
func (player *videoPlayerData) Set(tag string, value interface{}) bool { func (player *videoPlayerData) Set(tag string, value any) bool {
return player.set(strings.ToLower(tag), value) return player.set(strings.ToLower(tag), value)
} }
func (player *videoPlayerData) set(tag string, value interface{}) bool { func (player *videoPlayerData) set(tag string, value any) bool {
if value == nil { if value == nil {
player.remove(tag) player.remove(tag)
return true return true

10
view.go
View File

@ -54,7 +54,7 @@ type View interface {
// SetAnimated sets the value (second argument) of the property with name defined by the first argument. // SetAnimated sets the value (second argument) of the property with name defined by the first argument.
// Return "true" if the value has been set, in the opposite case "false" are returned and // Return "true" if the value has been set, in the opposite case "false" are returned and
// a description of the error is written to the log // a description of the error is written to the log
SetAnimated(tag string, value interface{}, animation Animation) bool SetAnimated(tag string, value any, animation Animation) bool
// SetChangeListener set the function to track the change of the View property // SetChangeListener set the function to track the change of the View property
SetChangeListener(tag string, listener func(View, string)) SetChangeListener(tag string, listener func(View, string))
// HasFocus returns 'true' if the view has focus // HasFocus returns 'true' if the view has focus
@ -290,11 +290,11 @@ func (view *viewData) propertyChangedEvent(tag string) {
} }
func (view *viewData) Set(tag string, value interface{}) bool { func (view *viewData) Set(tag string, value any) bool {
return view.set(strings.ToLower(tag), value) return view.set(strings.ToLower(tag), value)
} }
func (view *viewData) set(tag string, value interface{}) bool { func (view *viewData) set(tag string, value any) bool {
if value == nil { if value == nil {
view.remove(tag) view.remove(tag)
return true return true
@ -665,11 +665,11 @@ func viewPropertyChanged(view *viewData, tag string) {
} }
} }
func (view *viewData) Get(tag string) interface{} { func (view *viewData) Get(tag string) any {
return view.get(strings.ToLower(tag)) return view.get(strings.ToLower(tag))
} }
func (view *viewData) get(tag string) interface{} { func (view *viewData) get(tag string) any {
if tag == ID { if tag == ID {
if view.viewID != "" { if view.viewID != "" {
return view.viewID return view.viewID

View File

@ -27,7 +27,7 @@ type circleClip struct {
} }
type polygonClip struct { type polygonClip struct {
points []interface{} points []any
} }
// InsetClip creates a rectangle View clipping area. // InsetClip creates a rectangle View clipping area.
@ -73,9 +73,9 @@ func EllipseClip(x, y, rx, ry SizeUnit) ClipShape {
// PolygonClip creates a polygon View clipping area. // PolygonClip creates a polygon View clipping area.
// The elements of the function argument can be or text constants, // The elements of the function argument can be or text constants,
// or the text representation of SizeUnit, or elements of SizeUnit type. // or the text representation of SizeUnit, or elements of SizeUnit type.
func PolygonClip(points []interface{}) ClipShape { func PolygonClip(points []any) ClipShape {
clip := new(polygonClip) clip := new(polygonClip)
clip.points = []interface{}{} clip.points = []any{}
if clip.Set(Points, points) { if clip.Set(Points, points) {
return clip return clip
} }
@ -85,14 +85,14 @@ func PolygonClip(points []interface{}) ClipShape {
// PolygonPointsClip creates a polygon View clipping area. // PolygonPointsClip creates a polygon View clipping area.
func PolygonPointsClip(points []SizeUnit) ClipShape { func PolygonPointsClip(points []SizeUnit) ClipShape {
clip := new(polygonClip) clip := new(polygonClip)
clip.points = []interface{}{} clip.points = []any{}
if clip.Set(Points, points) { if clip.Set(Points, points) {
return clip return clip
} }
return nil return nil
} }
func (clip *insetClip) Set(tag string, value interface{}) bool { func (clip *insetClip) Set(tag string, value any) bool {
switch strings.ToLower(tag) { switch strings.ToLower(tag) {
case Top, Right, Bottom, Left: case Top, Right, Bottom, Left:
if value == nil { if value == nil {
@ -168,7 +168,7 @@ func (clip *insetClip) valid(session Session) bool {
return false return false
} }
func (clip *circleClip) Set(tag string, value interface{}) bool { func (clip *circleClip) Set(tag string, value any) bool {
if value == nil { if value == nil {
clip.Remove(tag) clip.Remove(tag)
} }
@ -232,7 +232,7 @@ func (clip *circleClip) valid(session Session) bool {
return true return true
} }
func (clip *ellipseClip) Set(tag string, value interface{}) bool { func (clip *ellipseClip) Set(tag string, value any) bool {
if value == nil { if value == nil {
clip.Remove(tag) clip.Remove(tag)
} }
@ -302,23 +302,23 @@ func (clip *ellipseClip) valid(session Session) bool {
return rx.Value != 0 && ry.Value != 0 return rx.Value != 0 && ry.Value != 0
} }
func (clip *polygonClip) Get(tag string) interface{} { func (clip *polygonClip) Get(tag string) any {
if Points == strings.ToLower(tag) { if Points == strings.ToLower(tag) {
return clip.points return clip.points
} }
return nil return nil
} }
func (clip *polygonClip) getRaw(tag string) interface{} { func (clip *polygonClip) getRaw(tag string) any {
return clip.Get(tag) return clip.Get(tag)
} }
func (clip *polygonClip) Set(tag string, value interface{}) bool { func (clip *polygonClip) Set(tag string, value any) bool {
if Points == strings.ToLower(tag) { if Points == strings.ToLower(tag) {
switch value := value.(type) { switch value := value.(type) {
case []interface{}: case []any:
result := true result := true
clip.points = make([]interface{}, len(value)) clip.points = make([]any, len(value))
for i, val := range value { for i, val := range value {
switch val := val.(type) { switch val := val.(type) {
case string: case string:
@ -343,7 +343,7 @@ func (clip *polygonClip) Set(tag string, value interface{}) bool {
return result return result
case []SizeUnit: case []SizeUnit:
clip.points = make([]interface{}, len(value)) clip.points = make([]any, len(value))
for i, point := range value { for i, point := range value {
clip.points[i] = point clip.points[i] = point
} }
@ -352,7 +352,7 @@ func (clip *polygonClip) Set(tag string, value interface{}) bool {
case string: case string:
result := true result := true
values := strings.Split(value, ",") values := strings.Split(value, ",")
clip.points = make([]interface{}, len(values)) clip.points = make([]any, len(values))
for i, val := range values { for i, val := range values {
val = strings.Trim(val, " \t\n\r") val = strings.Trim(val, " \t\n\r")
if isConstantName(val) { if isConstantName(val) {
@ -370,18 +370,18 @@ func (clip *polygonClip) Set(tag string, value interface{}) bool {
return false return false
} }
func (clip *polygonClip) setRaw(tag string, value interface{}) { func (clip *polygonClip) setRaw(tag string, value any) {
clip.Set(tag, value) clip.Set(tag, value)
} }
func (clip *polygonClip) Remove(tag string) { func (clip *polygonClip) Remove(tag string) {
if Points == strings.ToLower(tag) { if Points == strings.ToLower(tag) {
clip.points = []interface{}{} clip.points = []any{}
} }
} }
func (clip *polygonClip) Clear() { func (clip *polygonClip) Clear() {
clip.points = []interface{}{} clip.points = []any{}
} }
func (clip *polygonClip) AllTags() []string { func (clip *polygonClip) AllTags() []string {
@ -422,7 +422,7 @@ func (clip *polygonClip) cssStyle(session Session) string {
buffer := allocStringBuilder() buffer := allocStringBuilder()
defer freeStringBuilder(buffer) defer freeStringBuilder(buffer)
writePoint := func(value interface{}) { writePoint := func(value any) {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
if val, ok := session.resolveConstants(value); ok { if val, ok := session.resolveConstants(value); ok {
@ -501,7 +501,7 @@ func parseClipShape(obj DataObject) ClipShape {
return nil return nil
} }
func (style *viewStyle) setClipShape(tag string, value interface{}) bool { func (style *viewStyle) setClipShape(tag string, value any) bool {
switch value := value.(type) { switch value := value.(type) {
case ClipShape: case ClipShape:
style.properties[tag] = value style.properties[tag] = value

View File

@ -130,7 +130,7 @@ func newViewFilter(obj DataObject) ViewFilter {
return nil return nil
} }
func (filter *viewFilter) Set(tag string, value interface{}) bool { func (filter *viewFilter) Set(tag string, value any) bool {
if value == nil { if value == nil {
filter.Remove(tag) filter.Remove(tag)
return true return true
@ -224,7 +224,7 @@ func (filter *viewFilter) cssStyle(session Session) string {
return buffer.String() return buffer.String()
} }
func (style *viewStyle) setFilter(tag string, value interface{}) bool { func (style *viewStyle) setFilter(tag string, value any) bool {
switch value := value.(type) { switch value := value.(type) {
case ViewFilter: case ViewFilter:
style.properties[tag] = value style.properties[tag] = value

View File

@ -442,7 +442,7 @@ func (style *viewStyle) cssViewStyle(builder cssBuilder, session Session) {
} }
} }
func valueToOrientation(value interface{}, session Session) (int, bool) { func valueToOrientation(value any, session Session) (int, bool) {
if value != nil { if value != nil {
switch value := value.(type) { switch value := value.(type) {
case int: case int:
@ -471,11 +471,11 @@ func valueToOrientation(value interface{}, session Session) (int, bool) {
return 0, false return 0, false
} }
func (style *viewStyle) Get(tag string) interface{} { func (style *viewStyle) Get(tag string) any {
return style.get(strings.ToLower(tag)) return style.get(strings.ToLower(tag))
} }
func (style *viewStyle) get(tag string) interface{} { func (style *viewStyle) get(tag string) any {
switch tag { switch tag {
case Border, CellBorder: case Border, CellBorder:
return getBorder(&style.propertyList, tag) return getBorder(&style.propertyList, tag)
@ -539,7 +539,7 @@ func (style *viewStyle) AllTags() []string {
return result return result
} }
func supportedPropertyValue(value interface{}) bool { func supportedPropertyValue(value any) bool {
switch value.(type) { switch value.(type) {
case string: case string:
case []string: case []string:
@ -551,7 +551,7 @@ func supportedPropertyValue(value interface{}) bool {
case fmt.Stringer: case fmt.Stringer:
case []ViewShadow: case []ViewShadow:
case []View: case []View:
case []interface{}: case []any:
case map[string]Animation: case map[string]Animation:
default: default:
return false return false
@ -559,7 +559,7 @@ func supportedPropertyValue(value interface{}) bool {
return true return true
} }
func writePropertyValue(buffer *strings.Builder, tag string, value interface{}, indent string) { func writePropertyValue(buffer *strings.Builder, tag string, value any, indent string) {
writeString := func(text string) { writeString := func(text string) {
simple := (tag != Text && tag != Title && tag != Summary) simple := (tag != Text && tag != Title && tag != Summary)
@ -697,7 +697,7 @@ func writePropertyValue(buffer *strings.Builder, tag string, value interface{},
buffer.WriteRune(']') buffer.WriteRune(']')
} }
case []interface{}: case []any:
switch count := len(value); count { switch count := len(value); count {
case 0: case 0:
buffer.WriteString("[]") buffer.WriteString("[]")
@ -755,7 +755,7 @@ func writeViewStyle(name string, view ViewStyle, buffer *strings.Builder, indent
buffer.WriteString(" {\n") buffer.WriteString(" {\n")
indent += "\t" indent += "\t"
writeProperty := func(tag string, value interface{}) { writeProperty := func(tag string, value any) {
if supportedPropertyValue(value) { if supportedPropertyValue(value) {
buffer.WriteString(indent) buffer.WriteString(indent)
buffer.WriteString(tag) buffer.WriteString(tag)

View File

@ -4,7 +4,7 @@ import (
"strings" "strings"
) )
func (style *viewStyle) setRange(tag string, value interface{}) bool { func (style *viewStyle) setRange(tag string, value any) bool {
switch value := value.(type) { switch value := value.(type) {
case string: case string:
if strings.Contains(value, "@") { if strings.Contains(value, "@") {
@ -31,7 +31,7 @@ func (style *viewStyle) setRange(tag string, value interface{}) bool {
return true return true
} }
func (style *viewStyle) setBackground(value interface{}) bool { func (style *viewStyle) setBackground(value any) bool {
switch value := value.(type) { switch value := value.(type) {
case BackgroundElement: case BackgroundElement:
style.properties[Background] = []BackgroundElement{value} style.properties[Background] = []BackgroundElement{value}
@ -122,11 +122,11 @@ func (style *viewStyle) remove(tag string) {
} }
} }
func (style *viewStyle) Set(tag string, value interface{}) bool { func (style *viewStyle) Set(tag string, value any) bool {
return style.set(strings.ToLower(tag), value) return style.set(strings.ToLower(tag), value)
} }
func (style *viewStyle) set(tag string, value interface{}) bool { func (style *viewStyle) set(tag string, value any) bool {
if value == nil { if value == nil {
style.remove(tag) style.remove(tag)
return true return true

View File

@ -3,7 +3,7 @@ package rui
// Get returns a value of the property with name "tag" of the "rootView" subview with "viewID" id value. // Get returns a value of the property with name "tag" of the "rootView" subview with "viewID" id value.
// The type of return value depends on the property. // The type of return value depends on the property.
// If the subview don't exists or the property is not set then nil is returned. // If the subview don't exists or the property is not set then nil is returned.
func Get(rootView View, viewID, tag string) interface{} { func Get(rootView View, viewID, tag string) any {
var view View var view View
if viewID != "" { if viewID != "" {
view = ViewByID(rootView, viewID) view = ViewByID(rootView, viewID)
@ -19,7 +19,7 @@ func Get(rootView View, viewID, tag string) interface{} {
// Set sets the property with name "tag" of the "rootView" subview with "viewID" id by value. Result: // Set sets the property with name "tag" of the "rootView" subview with "viewID" id by value. Result:
// true - success, // true - success,
// false - error (incompatible type or invalid format of a string value, see AppLog). // false - error (incompatible type or invalid format of a string value, see AppLog).
func Set(rootView View, viewID, tag string, value interface{}) bool { func Set(rootView View, viewID, tag string, value any) bool {
var view View var view View
if viewID != "" { if viewID != "" {
view = ViewByID(rootView, viewID) view = ViewByID(rootView, viewID)
@ -976,9 +976,9 @@ func GetNotTranslate(view View, subviewID string) bool {
return false return false
} }
func valueFromStyle(view View, tag string) interface{} { func valueFromStyle(view View, tag string) any {
session := view.Session() session := view.Session()
getValue := func(styleTag string) interface{} { getValue := func(styleTag string) any {
if style, ok := stringProperty(view, styleTag, session); ok { if style, ok := stringProperty(view, styleTag, session); ok {
if style, ok := session.resolveConstants(style); ok { if style, ok := session.resolveConstants(style); ok {
return session.styleProperty(style, tag) return session.styleProperty(style, tag)

View File

@ -172,11 +172,11 @@ func (container *viewsContainerData) remove(tag string) {
} }
} }
func (container *viewsContainerData) Set(tag string, value interface{}) bool { func (container *viewsContainerData) Set(tag string, value any) bool {
return container.set(strings.ToLower(tag), value) return container.set(strings.ToLower(tag), value)
} }
func (container *viewsContainerData) set(tag string, value interface{}) bool { func (container *viewsContainerData) set(tag string, value any) bool {
if value == nil { if value == nil {
container.remove(tag) container.remove(tag)
return true return true
@ -224,7 +224,7 @@ func (container *viewsContainerData) set(tag string, value interface{}) bool {
} }
container.views = views container.views = views
case []interface{}: case []any:
views := []View{} views := []View{}
for _, v := range value { for _, v := range value {
switch v := v.(type) { switch v := v.(type) {
@ -279,11 +279,11 @@ func (container *viewsContainerData) set(tag string, value interface{}) bool {
return true return true
} }
func (container *viewsContainerData) Get(tag string) interface{} { func (container *viewsContainerData) Get(tag string) any {
return container.get(strings.ToLower(tag)) return container.get(strings.ToLower(tag))
} }
func (container *viewsContainerData) get(tag string) interface{} { func (container *viewsContainerData) get(tag string) any {
switch tag { switch tag {
case Content: case Content:
return container.views return container.views