From eac3379fb1edbc6080e390332701a5ec2a964541 Mon Sep 17 00:00:00 2001 From: anoshenko Date: Sun, 23 Apr 2023 13:41:26 +0300 Subject: [PATCH] Added "outline-offset" property --- README-ru.md | 712 +++++++++++++++++++++++++---------------------- README.md | 44 ++- propertyNames.go | 4 + propertySet.go | 1 + viewStyle.go | 2 +- viewUtils.go | 6 + 6 files changed, 434 insertions(+), 335 deletions(-) diff --git a/README-ru.md b/README-ru.md index 053d99d..c75861b 100644 --- a/README-ru.md +++ b/README-ru.md @@ -121,7 +121,7 @@ SizeUnit объявлена как func StringToSizeUnit(value string) (SizeUnit, bool) -Получить текстовое представление структуры можно Свойством String() +Получить текстовое представление структуры можно свойством String() #### SizeFunc @@ -403,8 +403,8 @@ View это интерфейс для доступа к элементу тип Все элементы интерфейса расширяют интерфейс View, т.е. View является базовым элементом для всех других элементов библиотеки. -View имеет ряд Свойств, таких как высота, ширина, цвет, параметры текста и т.д. Каждое Свойство -имеет текстовое имя. Для чтения и записи значения Свойства используются интерфейс Properties +View имеет ряд свойств, таких как высота, ширина, цвет, параметры текста и т.д. Каждое свойство +имеет текстовое имя. Для чтения и записи значения свойства используются интерфейс Properties (View реализует данный интерфейс): type Properties interface { @@ -415,29 +415,29 @@ View имеет ряд Свойств, таких как высота, шири AllTags() []string } -Функция Get возвращает значение Свойства или nil если Свойство не установлено. +Функция Get возвращает значение свойства или nil если свойство не установлено. -Функция Set устанавливает значение Свойства. Если значение Свойства установлено успешно, то +Функция Set устанавливает значение свойства. Если значение свойства установлено успешно, то функция возвращает true, если нет то false и в лог записывается описание возникшей ошибки. -Функция Remove удаляет значение Свойства, эквивалентно Set(nil) +Функция Remove удаляет значение свойства, эквивалентно Set(nil) -Для упрощения установки/чтения Свойств имеются также две глобальные функции Get и Set: +Для упрощения установки/чтения свойств имеются также две глобальные функции Get и Set: func Get(rootView View, viewID, tag string) any func Set(rootView View, viewID, tag string, value any) bool Данные функции возвращают/устанавливают значение дочернего View -### Отслеживание изменения Свойств +### Отслеживание изменения свойств -Вы можете установить функцию для отслеживания изменения абсолютно любого Свойства View (исключений нет). +Вы можете установить функцию для отслеживания изменения абсолютно любого свойства View (исключений нет). Для установки слушателя изменений интерфейс View содержит функцию: SetChangeListener(tag string, listener func(View, string)) -где первый параметр это имя отслеживаемого Свойства, а второй - функция которая будет вызываться -каждый раз когда значение Свойства изменится. +где первый параметр это имя отслеживаемого свойства, а второй - функция которая будет вызываться +каждый раз когда значение свойства изменится. Например @@ -470,7 +470,7 @@ View имеет ряд Свойств, таких как высота, шири func(string) -Для того чтобы назначить слушателя необходимо его присвоить Свойству с именем события +Для того чтобы назначить слушателя необходимо его присвоить свойству с именем события view.Set(rui.EditTextChanged, func(edit EditView, newText string) { // do something @@ -491,7 +491,7 @@ View имеет ряд Свойств, таких как высота, шири * массив функций []func([<параметры>]) * []any содержащий только func(< View >[, <параметры>]) и func([<параметры>]) -После присваивания Свойству все эти типы преобразуются в массив функций []func(, [<параметры>]). +После присваивания свойству все эти типы преобразуются в массив функций []func(, [<параметры>]). Соответственно функция Get всегда возвращает массив функций []func(, [<параметры>]). В случае отсутствия слушателей этот массив будет пуст @@ -503,7 +503,7 @@ View имеет ряд Свойств, таких как высота, шири * []func(newText string) * []any содержащий только func(editor EditView, newText string) и func(newText string) -А Свойство "edit-text-changed" всегда хранит и возвращает []func(EditView, string). +А свойство "edit-text-changed" всегда хранит и возвращает []func(EditView, string). В дальнейшем при описании конкретных событий будет приводиться только формат основного слушателя. @@ -551,7 +551,7 @@ View имеет ряд Свойств, таких как высота, шири ### Свойства "width", "height", "min-width", "min-height", "max-width", "max-height" -Данные Свойства устанавливают: +Данные свойства устанавливают: | Свойство | Константа | Описание | |--------------|---------------|--------------------------| @@ -562,10 +562,10 @@ View имеет ряд Свойств, таких как высота, шири | "max-width" | rui.MaxWidth | Максимальная ширина View | | "max-height" | rui.MaxHeight | Максимальная высота View | -Данные Свойства имеют тип SizeUnit. +Данные свойства имеют тип SizeUnit. Если значение "width"/"height" не установлены или установлены в Auto, то высота/ширина View определяется его содержимым и ограничено минимальной и максимальной высотой/шириной. -В качестве значения данных Свойств можно установить SizeUnit структуру, текстовое представление +В качестве значения данных свойств можно установить SizeUnit структуру, текстовое представление SizeUnit или имя константы (о константах ниже): view.Set("width", rui.Px(8)) @@ -586,12 +586,12 @@ SizeUnit или имя константы (о константах ниже): } } -Это довольно громоздко поэтому для каждого Свойства существует одноимённая глобальная функция с префиксом Get, +Это довольно громоздко поэтому для каждого свойства существует одноимённая глобальная функция с префиксом Get, которая выполняет данное приведение типа, получает значение константы, если необходимо, и возвращает его. Все функции данного типа имеют два аргумента: View и subviewID ...string. Первый аргумент это корневой View, второй - ID дочернего View. Если ID дочернего View не задать или передать как "", то возвращается значение корневого View. -Для Свойств "width", "height", "min-width", "min-height", "max-width", "max-height" это функции: +Для свойств "width", "height", "min-width", "min-height", "max-width", "max-height" это функции: func GetWidth(view View, subviewID ...string) SizeUnit func GetHeight(view View, subviewID ...string) SizeUnit @@ -623,8 +623,8 @@ SizeUnit или имя константы (о константах ниже): Свойство "margin" определяет внешние отступы от данного View до соседних. Свойство "padding" устанавливает внутренние отступы от границы View до контента. -Значение Свойств "margin" и "padding" хранятся в виде интерфейса BoundsProperty, -реализующего интерфейс Properties (см. выше). BoundsProperty имеет 4 Свойства типа SizeUnit: +Значение свойств "margin" и "padding" хранятся в виде интерфейса BoundsProperty, +реализующего интерфейс Properties (см. выше). BoundsProperty имеет 4 свойства типа SizeUnit: | Свойство | Константа | Описание | |-----------|--------------|------------------| @@ -642,7 +642,7 @@ SizeUnit или имя константы (о константах ниже): "bottom": rui.Inch(0.3), }))) -Соответственно если вы запросите Свойство "margin" или "padding" с помощью метода Get, +Соответственно если вы запросите свойство "margin" или "padding" с помощью метода Get, то вернется интерфейс BoundsProperty: if value := view.Get(rui.Margin); value != nil { @@ -665,7 +665,7 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" "_{ top = <верхний отступ>, right = <правый отступ>, bottom = <нижний отступ>, left = <левый отступ> }" -В качестве значения Свойств "margin" и "padding" методу Set может быть передано: +В качестве значения свойств "margin" и "padding" методу Set может быть передано: * интерфейс BoundsProperty или его текстовое представление; * структура Bounds; * SizeUnit или имя константы типа SizeUnit, в этом случай это значение устанавливается во все отступы. Т.е. @@ -676,12 +676,12 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" view.Set(rui.Margin, rui.Bounds{Top: rui.Px(8), Right: rui.Px(8), Bottom: rui.Px(8), Left: rui.Px(8)}) -Так как значение Свойства "margin" и "padding" всегда хранятся в виде интерфейса BoundsProperty, -то если вы прочитаете функцией Get Свойство "margin" или "padding" установленное значением Bounds +Так как значение свойства "margin" и "padding" всегда хранятся в виде интерфейса BoundsProperty, +то если вы прочитаете функцией Get свойство "margin" или "padding" установленное значением Bounds или SizeUnit, то вы получите BoundsProperty, а не Bounds или SizeUnit. Свойства "margin" и "padding" используются для установки сразу четырех отступов. Для установки -отдельных отступов используются следующие Свойства: +отдельных отступов используются следующие свойства: | Свойство | Константа | Описание | |------------------|--------------------|--------------------------| @@ -705,11 +705,12 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" ### Свойство "border" -Свойство "border" определяет рамку вокруг View. Линия рамки описывается тремя атрибутами: -стиль линии, толщина и цвет. +Свойство "border" определяет рамку вокруг View, при этом внешняя граница рамки совпадает со внешней границей View. +Т.е. рамка всегда располагается внутри View. +Линия рамки описывается тремя атрибутами: стиль линии, толщина и цвет. -Значение Свойства "border" хранится в виде интерфейса BorderProperty, -реализующего интерфейс Properties (см. выше). BorderProperty может содержать следующие Свойства: +Значение свойства "border" хранится в виде интерфейса BorderProperty, +реализующего интерфейс Properties (см. выше). BorderProperty может содержать следующие свойства: | Свойство | Константа | Тип | Описание | |----------------|-------------|----------|-----------------------------| @@ -740,13 +741,13 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" Для создания интерфейса BorderProperty используется функция NewBorder. -Если все линии рамки одинаковы, то для задания стиля, толщины и цвета могут использоваться следующие Свойства: +Если все линии рамки одинаковы, то для задания стиля, толщины и цвета могут использоваться следующие свойства: | Свойство | Константа | Тип | Описание | |----------|---------------|----------|-----------------------| | "style" | Style | int | Стиль линии рамки | | "width" | Width | SizeUnit | Толщина линии рамки | -| "color" | ColorProperty | Color | Цвет линии рамки | +| "color" | ColorTag | Color | Цвет линии рамки | Пример @@ -770,7 +771,7 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" view.Set(rui.Border, NewBorder(rui.Params{ rui.Style: rui.SolidBorder, rui.Width: rui.Px(1), - rui.ColorProperty: rui.Black, + rui.ColorTag: rui.Black, })) Интерфейс BorderProperty может быть преобразован в структуру ViewBorders с помощью функции Border. @@ -788,19 +789,19 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" Width SizeUnit } -Структура ViewBorders может быть передана в качестве параметра функции Set при установке значения Свойства "border". -При этом ViewBorders преобразуется в BorderProperty. Поэтому при чтении Свойства функцией Get будет возвращен интерфейс +Структура ViewBorders может быть передана в качестве параметра функции Set при установке значения свойства "border". +При этом ViewBorders преобразуется в BorderProperty. Поэтому при чтении свойства функцией Get будет возвращен интерфейс BorderProperty, а не структура ViewBorders. Получить структуру ViewBorders без дополнительных преобразований можно с помощью глобальной функции func GetBorder(view View, subviewID ...string) ViewBorders -Кроме вспомогательных Свойств "style", "width" и "color" есть еще 4: "left", "right", "top" и "bottom". -В качестве значения эти Свойства могут принимать только структуру ViewBorder и позволяю установить все +Кроме вспомогательных свойств "style", "width" и "color" есть еще 4: "left", "right", "top" и "bottom". +В качестве значения эти свойства могут принимать только структуру ViewBorder и позволяю установить все атрибуты линии одноименной стороны. Вы также можете устанавливать отдельные атрибуты рамки использую функцию Set интерфейса View. -Для этого используются следующие Свойства +Для этого используются следующие свойства | Свойство | Константа | Тип | Описание | |-----------------------|-------------------|------------|-----------------------------| @@ -835,14 +836,59 @@ BorderProperty, а не структура ViewBorders. Получить стр view.Set(rui.Border, NewBorder(rui.Params{ rui.Style: rui.SolidBorder, rui.Width: rui.Px(1), - rui.ColorProperty: rui.Black, + rui.ColorTag: rui.Black, })) +### Свойства "outline" и "outline-offset" + +Свойство "outline" определяет рамку за пределами View. +Линия рамки описывается тремя атрибутами: стиль линии, толщина и цвет. + +Свойство "outline" похоже на свойство "border". Три главных отличия рамки "outline" от рамки "border": + +1) рамка "border" всегда располагается внутри границ View, а рамка "outline" может располагается как внутри View, +так и за ее пределами; + +2) все стороны рамки "outline" одинаковы, в то время как стороны рамки "border" могут иметь разные цвет, стиль и толщину. + +3) толщина рамки "border" добавляется к "padding", а толщина рамки "outline" не влияет на "padding". + +Значение свойства "border" хранится в виде интерфейса OutlineProperty, +реализующего интерфейс Properties (см. выше). OutlineProperty может содержать следующие свойства: + +| Свойство | Константа | Тип | Описание | +|-----------|-----------|----------|-----------------------| +| "style" | Style | int | Стиль линии рамки | +| "width" | Width | SizeUnit | Толщина линии рамки | +| "color" | ColorTag | Color | Цвет линии рамки | + +Свойство "style" может принимать следующие значения + +Стиль линии может принимать следующие значения: + +| Значение | Константа | Имя | Описание | +|:--------:|------------|----------|--------------------------| +| 0 | NoneLine | "none" | Нет рамки | +| 1 | SolidLine | "solid" | Сплошная линия | +| 2 | DashedLine | "dashed" | Пунктирная линия | +| 3 | DottedLine | "dotted" | Линия состоящая из точек | +| 4 | DoubleLine | "double" | Двойная сплошная линия | + +Все другие значения стиля игнорируются. + +Для создания интерфейса OutlineProperty используется функция NewOutline. + +По умолчанию внутренняя граница рамки "outline" совпадает с границей View (т.е. рамка рисуется вокруг View). +Для изменения этого поведения используется свойство "outline-offset" (константа OutlineOffset) типа SizeUnit. +Данное свойство определяет расстояние между внутренней границей рамки и границей View. +Положительное значение отдаляет рамку от границ View, а отрицательное заставляет рамку располагаться внутри View +(при этом рамка рисуется поверх содержимого View). + ### Свойство "radius" Свойство "radius" задает эллиптический радиус скругления углов View. Радиусы задаются интерфейсом RadiusProperty реализующим интерфейс Properties (см. выше). -Для этого используются следующие Свойства типа SizeUnit: +Для этого используются следующие свойства типа SizeUnit: | Свойство | Константа | Описание | |------------------|--------------|--------------------------------| @@ -855,7 +901,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы | "bottom-right-x" | BottomRightX | x-радиус нижнего правого угла | | "bottom-right-y" | BottomRightY | y-радиус нижнего правого угла | -Если x- и y-радиусы одинаковы то можно воспользоваться вспомогательными Свойствами +Если x- и y-радиусы одинаковы то можно воспользоваться вспомогательными свойствами | Свойство | Константа | Описание | |----------------|--------------|------------------------------| @@ -864,7 +910,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы | "bottom-left" | BottomLeft | радиус нижнего левого угла | | "bottom-right" | BottomRight | радиус нижнего правого угла | -Для установки всех радиусов одинаковыми значениями используются Свойства "x" и "y" +Для установки всех радиусов одинаковыми значениями используются свойства "x" и "y" Интерфейс RadiusProperty создается с помощью функции NewRadiusProperty. Пример @@ -888,7 +934,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы rui.BottomRightY: rui.Px(0), })) -Если все радиусы одинаковы, то данное значение типа SizeUnit может быть напрямую присвоено Свойству "radius" +Если все радиусы одинаковы, то данное значение типа SizeUnit может быть напрямую присвоено свойству "radius" view.Set(rui.Radius, rui.Px(4)) @@ -942,15 +988,15 @@ RadiusProperty имеет текстовое представление след TopLeftX, TopLeftY, TopRightX, TopRightY, BottomLeftX, BottomLeftY, BottomRightX, BottomRightY SizeUnit } -Структура BoxRadius может быть передана в качестве параметра функции Set при установке значения Свойства "radius". -При этом BoxRadius преобразуется в RadiusProperty. Поэтому при чтении Свойства функцией Get будет возвращен интерфейс +Структура BoxRadius может быть передана в качестве параметра функции Set при установке значения свойства "radius". +При этом BoxRadius преобразуется в RadiusProperty. Поэтому при чтении свойства функцией Get будет возвращен интерфейс RadiusProperty, а не структура BoxRadius. Получить структуру BoxRadius без дополнительных преобразований можно с помощью глобальной функции func GetRadius(view View, subviewID ...string) BoxRadius Вы также можете устанавливать отдельные радиусы использую функцию Set интерфейса View. -Для этого используются следующие Свойства +Для этого используются следующие свойства | Свойство | Константа | Описание | |-------------------------|--------------------|-------------------------------------| @@ -984,11 +1030,11 @@ RadiusProperty, а не структура BoxRadius. Получить стру ### Свойство "shadow" Свойство "shadow" позволяет задать тени для View. Теней может быть несколько. Тень описывается -с помощью интерфейса ViewShadow расширяющего интерфейс Properties (см. выше). У тени имеются следующие Свойства: +с помощью интерфейса ViewShadow расширяющего интерфейс Properties (см. выше). У тени имеются следующие свойства: | Свойство | Константа | Тип | Описание | |-----------------|---------------|----------|---------------------------------------------------------------| -| "color" | ColorProperty | Color | Цвет тени | +| "color" | ColorTag | Color | Цвет тени | | "inset" | Inset | bool | true - тень внутри View, false - снаружи | | "x-offset" | XOffset | SizeUnit | Смещение тени по оси X | | "y-offset" | YOffset | SizeUnit | Смещение тени по оси Y | @@ -1007,12 +1053,12 @@ RadiusProperty, а не структура BoxRadius. Получить стру константы. Например: shadow := NewShadowWithParams(rui.Params{ - rui.ColorProperty : "@shadowColor", + rui.ColorTag : "@shadowColor", rui.BlurRadius : 8.0, rui.Dilation : 16.0, }) -В качестве значения Свойству "shadow" может быть присвоено ViewShadow, массив ViewShadow, +В качестве значения свойству "shadow" может быть присвоено ViewShadow, массив ViewShadow, текстовое представление ViewShadow. Текстовое представление ViewShadow имеет следующий формат: @@ -1041,7 +1087,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру Свойство "background-clip" определяет как цвет фона и/или фоновое изображение будут выводиться под границами блока. -Если фоновое изображение или цвет не заданы, это Свойство будет иметь визуальный эффект, только если у границы есть прозрачные области или частично непрозрачные области; в противном случае граница скрывает разницу. +Если фоновое изображение или цвет не заданы, это свойство будет иметь визуальный эффект, только если у границы есть прозрачные области или частично непрозрачные области; в противном случае граница скрывает разницу. Свойство может принимать следующие значения: @@ -1054,7 +1100,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру ### Свойство "background" В качестве фона View, помимо цвета, можно задать также картинки и/или градиентные заливки. -Для этого используется Свойство "background". Фон может содержать несколько картинок и градиентов. +Для этого используется свойство "background". Фон может содержать несколько картинок и градиентов. Каждый элемент фона описывается интерфейсом BackgroundElement. BackgroundElement может быть трех типов: линейный градиент, радиальный градиент и изображение. @@ -1372,7 +1418,7 @@ radius необходимо передать nil Свойство "filter" (константа Filter) применяет ко View такие графические эффекты, как размытие, смещение цвета, изменение яркости/контрастности и т.п. Свойства "backdrop-filter" (константа BackdropFilter) применяет такие же эффекты но к содержимому располагающемся ниже View. -В качестве значения Свойств "filter" и "backdrop-filter" используется только интерфейс ViewFilter. ViewFilter создается с помощью +В качестве значения свойств "filter" и "backdrop-filter" используется только интерфейс ViewFilter. ViewFilter создается с помощью функции func NewViewFilter(params Params) ViewFilter @@ -1400,7 +1446,7 @@ radius необходимо передать nil ### Свойство "semantics" Свойство "semantics" (константа Semantics) типа string определяет семантический смысл View. -Данное Свойство может не иметь видимого эффекта, но позволяет поисковикам понимать структуру вашего приложения. +Данное свойство может не иметь видимого эффекта, но позволяет поисковикам понимать структуру вашего приложения. Так же оно помогает озвучивать интерфейс системам для людей с ограниченными возможностями: | Значение | Имя | Семантика | @@ -1428,14 +1474,14 @@ radius необходимо передать nil ### Свойства текста -Все перечисленные в этом разделе Свойства являются наследуемыми, т.е. Свойство будет применяться не только ко View +Все перечисленные в этом разделе свойства являются наследуемыми, т.е. свойство будет применяться не только ко View для которого оно установлено, но и ко всем View вложенным в него. -Имеются следующие Свойства для настройки параметров отображения текста: +Имеются следующие свойства для настройки параметров отображения текста: #### Свойство "font-name" -Свойство "font-name" (константа FontName) - текстовое Свойство определяет имя используемого шрифта. +Свойство "font-name" (константа FontName) - текстовое свойство определяет имя используемого шрифта. Может задаваться несколько шрифтов. В этом случае они разделяются пробелом. Шрифты применяются в том порядке в котором они перечислены. Т.е. сначала применяется первый, если он недоступен, то второй, третий и т.д. @@ -1446,7 +1492,7 @@ radius необходимо передать nil #### Свойство "text-color" -Свойство "text-color" (константа TextColor) - Свойство типа Color определяет цвет текста. +Свойство "text-color" (константа TextColor) - свойство типа Color определяет цвет текста. Получить значение данного свойства можно с помощью функции @@ -1454,7 +1500,7 @@ radius необходимо передать nil #### Свойство "text-size" -Свойство "text-size" (константа TextSize) - Свойство типа SizeUnit определяет размер шрифта. +Свойство "text-size" (константа TextSize) - свойство типа SizeUnit определяет размер шрифта. Получить значение данного свойства можно с помощью функции @@ -1462,7 +1508,7 @@ radius необходимо передать nil #### Свойство "italic" -Свойство "italic" (константа Italic) - Свойство типа bool. Если значение равно true, то к тексту применяется курсивное начертание +Свойство "italic" (константа Italic) - свойство типа bool. Если значение равно true, то к тексту применяется курсивное начертание Получить значение данного свойства можно с помощью функции @@ -1470,7 +1516,7 @@ radius необходимо передать nil #### Свойство "small-caps" -Свойство "small-caps" (константа SmallCaps) - Свойство типа bool. Если значение равно true, то к тексту применяется начертание капителью +Свойство "small-caps" (константа SmallCaps) - свойство типа bool. Если значение равно true, то к тексту применяется начертание капителью Получить значение данного свойства можно с помощью функции @@ -1504,7 +1550,7 @@ radius необходимо передать nil * Строки переносятся по любым пробелам, в том числе в середине последовательности пробелов. * Пробелы занимают место и не висят на концах строк, а значит влияют на внутренние размеры (min-content и max-content). -В приведённой ниже таблице указано поведение различных значений Свойства "white-space" +В приведённой ниже таблице указано поведение различных значений свойства "white-space" | | Новые строки | Пробелы и табуляция | Перенос по словам | Пробелы в конце строки | |-----------------------|-----------------------------|-----------------------------|-------------------|-----------------------------| @@ -1518,7 +1564,7 @@ radius необходимо передать nil #### Свойство "tab-size" Свойство "tab-size" (константа TabSize) типа int задает размер символа табуляции (U+0009) в пробелах. -Значение Свойства "tab-size" должно быть больше 0. +Значение свойства "tab-size" должно быть больше 0. #### Свойство "word-break" @@ -1539,7 +1585,7 @@ radius необходимо передать nil #### Свойства "strikethrough", "overline" и "underline" -Данные Свойства устанавливают декоративные линии на тексте: +Данные свойства устанавливают декоративные линии на тексте: | Свойство | Константа | Тип декоративной линии | |-----------------|----------------|-----------------------------| @@ -1547,7 +1593,7 @@ radius необходимо передать nil | "overline" | Overline | Линия над текстом | | "underline" | Underline | Линия под текстом | -Получить значение данных Свойств можно с помощью функций +Получить значение данных свойств можно с помощью функций func IsStrikethrough(view View, subviewID ...string) bool func IsOverline(view View, subviewID ...string) bool @@ -1555,8 +1601,8 @@ radius необходимо передать nil #### Свойство "text-line-thickness" -Свойство "text-line-thickness" (константа TextLineThickness) - Свойство типа SizeUnit. -Свойство устанавливает толщину декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". +Свойство "text-line-thickness" (константа TextLineThickness) - свойство типа SizeUnit. +Свойство устанавливает толщину декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". Получить значение данного свойства можно с помощью функции @@ -1564,8 +1610,8 @@ radius необходимо передать nil #### Свойство "text-line-style" -Свойство "text-line-style" (константа TextLineStyle) - Свойство типа int. -Свойство устанавливает стиль декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". +Свойство "text-line-style" (константа TextLineStyle) - свойство типа int. +Свойство устанавливает стиль декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". Возможны следующие значения: | Значение | Константа | Имя | Описание | @@ -1576,7 +1622,7 @@ radius необходимо передать nil | 4 | DoubleLine | "double" | Двойная сплошная линия | | 5 | WavyLine | "wavy" | Волнистая линия | -Если Свойство не определено то используется сплошная линия (SolidLine (1)). +Если свойство не определено то используется сплошная линия (SolidLine (1)). Получить значение данного свойства можно с помощью функции @@ -1584,9 +1630,9 @@ radius необходимо передать nil #### Свойство "text-line-color" -Свойство "text-line-color" (константа TextLineColor) - Свойство типа Color. -Свойство устанавливает цвет декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". -Если Свойство не определено то для линий используется цвет текста заданный с помощью Свойства "text-color". +Свойство "text-line-color" (константа TextLineColor) - свойство типа Color. +Свойство устанавливает цвет декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". +Если свойство не определено то для линий используется цвет текста заданный с помощью свойства "text-color". Получить значение данного свойства можно с помощью функции @@ -1594,7 +1640,7 @@ radius необходимо передать nil #### Свойство "text-weight" -Свойство "text-weight" (константа TextWeight) - Свойство типа int устанавливает начертание шрифта. Допустимые значения: +Свойство "text-weight" (константа TextWeight) - свойство типа int устанавливает начертание шрифта. Допустимые значения: | Значение | Константа | Общее название начертания | |:--------:|----------------|------------------------------------------------------------------| @@ -1630,11 +1676,11 @@ radius необходимо передать nil константы. Например: shadow := NewShadowWithParams(rui.Params{ - rui.ColorProperty : "@shadowColor", + rui.ColorTag : "@shadowColor", rui.BlurRadius : 8.0, }) -В качестве значения Свойству "text-shadow" может быть присвоено ViewShadow, массив ViewShadow, +В качестве значения свойству "text-shadow" может быть присвоено ViewShadow, массив ViewShadow, текстовое представление ViewShadow (см. выше, раздел "Свойство 'shadow'"). Получить значение данного свойства можно с помощью функции @@ -1645,7 +1691,7 @@ radius необходимо передать nil #### Свойство "text-align" -Свойство "text-align" (константа TextAlign) - Свойство типа int устанавливает выравнивание текста. Допустимые значения: +Свойство "text-align" (константа TextAlign) - свойство типа int устанавливает выравнивание текста. Допустимые значения: | Значение | Константа | Имя | Значение | |:--------:|--------------|-----------|------------------------------| @@ -1660,7 +1706,7 @@ radius необходимо передать nil #### Свойство "text-indent" -Свойство "text-indent" (TextIndent) - Свойство типа SizeUnit определяет размер отступа (пустого места) перед первой строкой текста. +Свойство "text-indent" (TextIndent) - свойство типа SizeUnit определяет размер отступа (пустого места) перед первой строкой текста. Получить значение данного свойства можно с помощью функции @@ -1668,7 +1714,7 @@ radius необходимо передать nil #### Свойство "letter-spacing" -Свойство "letter-spacing" (LetterSpacing) - Свойство типа SizeUnit определяет межбуквенное расстояние в тексте. +Свойство "letter-spacing" (LetterSpacing) - свойство типа SizeUnit определяет межбуквенное расстояние в тексте. Значение может быть отрицательным, но при этом могут быть ограничения, зависящие от конкретной реализации. Агент пользователя может не увеличивать или уменьшать межбуквенное расстояние для выравнивания текста. @@ -1678,7 +1724,7 @@ radius необходимо передать nil #### Свойство "word-spacing" -Свойство "word-spacing" (константа WordSpacing) - Свойство типа SizeUnit определяет длину пробела между словами. +Свойство "word-spacing" (константа WordSpacing) - свойство типа SizeUnit определяет длину пробела между словами. Если величина задана в процентах, то она определяет дополнительный интервал как процент от предварительной ширины символа. В остальных случаях она определяет дополнительный интервал в дополнение к внутреннему интервалу между словами, определяемому шрифтом. @@ -1688,7 +1734,7 @@ radius необходимо передать nil #### Свойство "line-height" -Свойство "line-height" (константа LineHeight) - Свойство типа SizeUnit устанавливает величину пространства между строками. +Свойство "line-height" (константа LineHeight) - свойство типа SizeUnit устанавливает величину пространства между строками. Получить значение данного свойства можно с помощью функции @@ -1696,7 +1742,7 @@ radius необходимо передать nil #### Свойство "text-transform" -Свойство "text-transform" (константа TextTransform) - Свойство типа int определяет регистр символов. Допустимые значения: +Свойство "text-transform" (константа TextTransform) - свойство типа int определяет регистр символов. Допустимые значения: | Значение | Константа | Преобразование регистра | |:--------:|-------------------------|-----------------------------------------| @@ -1711,7 +1757,7 @@ radius необходимо передать nil #### Свойство "text-direction" -Свойство "text-direction" (константа TextDirection) - Свойство типа int определяет направление вывода текста. Допустимые значения: +Свойство "text-direction" (константа TextDirection) - свойство типа int определяет направление вывода текста. Допустимые значения: | Значение | Константа | Направление вывода текста | |:--------:|-------------------------|--------------------------------------------------------------------------| @@ -1725,7 +1771,7 @@ radius необходимо передать nil #### Свойство "writing-mode" -Свойство "writing-mode" (константа WritingMode) - Свойство типа int определяет как располагаются строки текста +Свойство "writing-mode" (константа WritingMode) - свойство типа int определяет как располагаются строки текста вертикально или горизонтально, а также направление в котором выводятся строки. Возможны следующие значения: @@ -1758,13 +1804,13 @@ radius необходимо передать nil #### Свойство "user-select" Свойство "user-select" (константа UserSelect) типа bool определяет может ли пользователь выделять текст. -Соответственно если Свойство установлено в true, то пользователь может выделять текст. Если в false, то не может. +Соответственно если свойство установлено в true, то пользователь может выделять текст. Если в false, то не может. -Значение по умолчанию зависит, от значения Свойства "semantics". Если "semantics" установлено в "p", "h1"..."h6", +Значение по умолчанию зависит, от значения свойства "semantics". Если "semantics" установлено в "p", "h1"..."h6", "blockquote" или "code", то значение по умолчанию равно "true", в остальных случаях значение по умолчанию равно "false". Исключением является TableView. Для него значение по умолчанию равно "true". -Как и все Свойства текста Свойство "user-select" наследуемое, т.е. если вы установите его для контейнера, +Как и все свойства текста свойство "user-select" наследуемое, т.е. если вы установите его для контейнера, то оно также примениться ко всем дочерним элементам Получить значение данного свойства можно с помощью функции @@ -1773,7 +1819,7 @@ radius необходимо передать nil ### Свойства трансформации -Данные Свойства используются для трансформации (наклон, масштабирование и т.п.) содержимого View. +Данные свойства используются для трансформации (наклон, масштабирование и т.п.) содержимого View. #### Свойство "perspective" @@ -1781,9 +1827,9 @@ radius необходимо передать nil для того чтобы придать 3D-позиционируемому элементу эффект перспективы. Каждый трансформируемый элемент с z > 0 станет больше, с z < 0 соответственно меньше. -Элементы части которые находятся за пользователем, т.е. z-координата этих элементов больше чем значение Свойства perspective, не отрисовываются. +Элементы части которые находятся за пользователем, т.е. z-координата этих элементов больше чем значение свойства perspective, не отрисовываются. -Точка схождения по умолчанию расположена в центре элемента, но её можно переместить используя Свойства +Точка схождения по умолчанию расположена в центре элемента, но её можно переместить используя свойства "perspective-origin-x" и "perspective-origin-y". Получить значение данного свойства можно с помощью функции @@ -1793,11 +1839,11 @@ radius необходимо передать nil #### Свойства "perspective-origin-x" и "perspective-origin-y" Свойства "perspective-origin-x" и "perspective-origin-y" (константы PerspectiveOriginX и PerspectiveOriginY) -типа SizeUnit определяют позицию, с которой смотрит зритель. Она используется Свойством "perspective" как точка схода. +типа SizeUnit определяют позицию, с которой смотрит зритель. Она используется свойством "perspective" как точка схода. -По умолчанию Свойства "perspective-origin-x" и "perspective-origin-y" имеют значение 50%, т.е. указывают на центр View. +По умолчанию свойства "perspective-origin-x" и "perspective-origin-y" имеют значение 50%, т.е. указывают на центр View. -Получить значение данных Свойств можно с помощью функции +Получить значение данных свойств можно с помощью функции func GetPerspectiveOrigin(view View, subviewID ...string) (SizeUnit, SizeUnit) @@ -1808,7 +1854,7 @@ radius необходимо передать nil Задняя поверхность элемента является зеркальным отражением его передней поверхности. Однако невидимая в 2D, задняя грань может быть видимой, когда преобразование вызывает вращение элемента в 3D пространстве. -(Это Свойство не влияет на 2D-преобразования, которые не имеют перспективы.) +(Это свойство не влияет на 2D-преобразования, которые не имеют перспективы.) Получить значение данного свойства можно с помощью функции @@ -1821,9 +1867,9 @@ radius необходимо передать nil Исходная точка преобразования - это точка, вокруг которой происходит преобразование. Например, вращение. -Свойство "origin-z" игнорируется если не установлено Свойство "perspective". +Свойство "origin-z" игнорируется если не установлено свойство "perspective". -Получить значение данных Свойств можно с помощью функции +Получить значение данных свойств можно с помощью функции func GetOrigin(view View, subviewID ...string) (SizeUnit, SizeUnit, SizeUnit) @@ -1832,9 +1878,9 @@ radius необходимо передать nil Свойства "translate-x", "translate-y" и "translate-z" (константа TranslateX, TranslateY и TranslateZ) типа SizeUnit позволяют задать смещение содержимого View. -Свойство "translate-z" игнорируется если не установлено Свойство "perspective". +Свойство "translate-z" игнорируется если не установлено свойство "perspective". -Получить значение данных Свойств можно с помощью функции +Получить значение данных свойств можно с помощью функции func GetTranslate(view View, subviewID ...string) (SizeUnit, SizeUnit, SizeUnit) @@ -1845,26 +1891,26 @@ radius необходимо передать nil Исходный масштаб равен 1. Значение от 0 до 1 используется для уменьшения. Больше 1 - для увеличения. Значения меньше или равное 0 являются недопустимыми (функция Set будет возвращать значение false) -Свойство "scale-z" игнорируется если не установлено Свойство "perspective". +Свойство "scale-z" игнорируется если не установлено свойство "perspective". -Получить значение данных Свойств можно с помощью функции +Получить значение данных свойств можно с помощью функции func GetScale(view View, subviewID ...string) (float64, float64, float64) #### Свойства "rotate" Свойство "rotate" (константа Rotate) типа AngleUnit задает угол поворота содержимого вокруг -вектора задаваемого Свойствами "rotate-x", "rotate-y" и "rotate-z". +вектора задаваемого свойствами "rotate-x", "rotate-y" и "rotate-z". #### Свойства "rotate-x", "rotate-y" и "rotate-z" Свойства "rotate-x", "rotate-y" и "rotate-z" (константа RotateX, RotateY и RotateZ) типа float64 -задают вектор вокруг которого осуществляется вращение на угол заданный Свойством "rotate". -Данный вектор проходит через точку заданную Свойствами "origin-x", "origin-y" и "origin-z" +задают вектор вокруг которого осуществляется вращение на угол заданный свойством "rotate". +Данный вектор проходит через точку заданную свойствами "origin-x", "origin-y" и "origin-z" -Свойство "rotate-z" игнорируется если не установлено Свойство "perspective". +Свойство "rotate-z" игнорируется если не установлено свойство "perspective". -Получить значение данных Свойств, а также Свойства "rotate" можно с помощью функции +Получить значение данных свойств, а также свойства "rotate" можно с помощью функции func GetRotate(view View, subviewID ...string) (float64, float64, float64, AngleUnit) @@ -1872,15 +1918,15 @@ radius необходимо передать nil Свойства "skew-x" и "skew-y" (константа SkewX и SkewY) типа AngleUnit задают скос (наклон) содержимого, превращая тем самым его из прямоугольника в параллелограмм. Скос осуществляется вокруг точки, -задаваемой Свойствами transform-origin-x и transform-origin-y. +задаваемой свойствами transform-origin-x и transform-origin-y. -Получить значение данных Свойств можно с помощью функции +Получить значение данных свойств можно с помощью функции func GetSkew(view View, subviewID ...string) (AngleUnit, AngleUnit) ### Пользовательские данные -Вы можете сохранить любые ваши данные в виде Свойства "user-data" (константа UserData) +Вы можете сохранить любые ваши данные в виде свойства "user-data" (константа UserData) ### События клавиатуры @@ -2206,18 +2252,18 @@ radius необходимо передать nil дочерних элементов интерфейса (View). ViewsContainer является базовым для других контейнеров (ListLayout, GridLayout, StackLayout и т.д.) и самостоятельно не используется. -Помимо всех Свойств View данный элемент имеет всего одно дополнительное Свойство "content" +Помимо всех свойств View данный элемент имеет всего одно дополнительное свойство "content" ### "content" Свойство "content" (константа Content) определяет массив дочерних View. Функция Get интерфейса для данного свойства всегда возвращает []View. -В качестве значения Свойства "content" могут быть переданы следующие 5 типов данных: +В качестве значения свойства "content" могут быть переданы следующие 5 типов данных: * View - преобразуется во []View, содержащий один элемент; -* []View - nil-элементы запрещены, если массив будет содержать nil, то Свойство не будет +* []View - nil-элементы запрещены, если массив будет содержать nil, то свойство не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке; * string - если строка является текстовым представление View, то создается соответствующий View, @@ -2228,13 +2274,13 @@ radius необходимо передать nil * []any - данный массив должен содержать только View и string. Каждый string-элемент преобразуется во View, как описано выше. Если массив будет содержать недопустимое значения, -то Свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке. +то свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке. -Поучить значение Свойства "content" можно с помощи функции интерфейса ViewsContainer +Поучить значение свойства "content" можно с помощи функции интерфейса ViewsContainer Views() []View -Для редактирования Свойства "content" можно использовать следующие функции интерфейса ViewsContainer: +Для редактирования свойства "content" можно использовать следующие функции интерфейса ViewsContainer: Append(view View) @@ -2257,7 +2303,7 @@ ListLayout является контейнером, реализующим ин func NewListLayout(session Session, params Params) ListLayout Элементы в данном контейнере располагаются в виде списка. Расположением дочерних элементов можно управлять. -Для этого ListLayout имеет ряд Свойств +Для этого ListLayout имеет ряд свойств ### "orientation" @@ -2340,8 +2386,8 @@ GridLayout является контейнером, реализующим ин ### "column" и "row" -Расположение View внутри GridLayout определяется с помощью Свойств "column" и "row". -Данные Свойства устанавливаться для каждого из дочерних View. +Расположение View внутри GridLayout определяется с помощью свойств "column" и "row". +Данные свойства устанавливаться для каждого из дочерних View. Дочерний View может занимать несколько ячеек внутри GridLayout. При этом они могут перекрываться. @@ -2380,8 +2426,8 @@ GridLayout является контейнером, реализующим ин ### "grid-auto-flow" -Если для дочерних View не задаются Свойства "row" и "column", то используется автоматический алгоритм размещения элементов. -Возможны четыре варианта данного алгоритма. Используемый вариант задается с помощью Свойства "grid-auto-flow" типа int. +Если для дочерних View не задаются свойства "row" и "column", то используется автоматический алгоритм размещения элементов. +Возможны четыре варианта данного алгоритма. Используемый вариант задается с помощью свойства "grid-auto-flow" типа int. Свойство "grid-auto-flow" может принимать следующие значения: * RowAutoFlow (0) (text name "row") - Views размещаются путем заполнения каждой строки по очереди, добавляя новые столбцы по мере необходимости; @@ -2399,10 +2445,10 @@ GridLayout является контейнером, реализующим ин По умолчанию размеры ячеек вычисляются на основе размеров помещенных в них дочерних View. Свойства "cell-width" и "cell-height" (константы CellWidth и CellHeight) позволяют установить фиксированную ширину и высоту ячеек независимо от размеров дочерних элементов. -Данные Свойства имеют тип []SizeUnit. Каждый элемент массива определяет размер соответствующего +Данные свойства имеют тип []SizeUnit. Каждый элемент массива определяет размер соответствующего столбца или строки. -Данным Свойствам могут быть присвоены следующие типы данных: +Данным свойствам могут быть присвоены следующие типы данных: * SizeUnit или текстовое представление SizeUnit (или SizeUnit константа). В этом случае соответствующие размеры всех ячеек устанавливаются одинаковыми; @@ -2416,10 +2462,10 @@ GridLayout является контейнером, реализующим ин * []any. Каждый элемент должен или иметь тип SizeUnit или быть текстовым представлением SizeUnit (или SizeUnit константой) -Если количество элементов в Свойствах "cell-width" и "cell-height" меньше, чем используемое число +Если количество элементов в свойствах "cell-width" и "cell-height" меньше, чем используемое число столбцов и строк, то недостающие элементы устанавливаются в Auto. -В значениях Свойств "cell-width" и "cell-height" может использоваться SizeUnit тип SizeInFraction. +В значениях свойств "cell-width" и "cell-height" может использоваться SizeUnit тип SizeInFraction. Этот тип означает 1 часть. Часть вычисляется так: из размера контейнера вычитается размер всех ячеек имеющих тип не SizeInFraction, а затем оставшийся размер делится на количество частей. Значение SizeUnit типа SizeInFraction может быть как целым, так и дробным. @@ -2461,7 +2507,7 @@ GridLayout является контейнером, реализующим ин ColumnLayout является контейнером, реализующим интерфейс ViewsContainer. Все дочерние View располагаются в виде вертикального списка выровненные по левому или правому краю и разбитого -на несколько колонок. Выравнивание зависит от Свойства "text-direction". +на несколько колонок. Выравнивание зависит от свойства "text-direction". Для создания ColumnLayout используется функция @@ -2471,12 +2517,12 @@ ColumnLayout является контейнером, реализующим и Свойство "column-count" (константа ColumnCount) типа int устанавливает количество колонок. -Если данное Свойство равно 0 и не задано Свойство "column-width", то разбитие на колонки +Если данное свойство равно 0 и не задано свойство "column-width", то разбитие на колонки не выполняется, а контейнер прокручивается вниз. Если значение данного свойства больше 0, то список разбивается на колонки. Высота колонки равна высоте ColumnLayout, а ширина вычисляется как ширина ColumnLayout делённая на -"column-count". Каждая следующая колонка располагается в зависимости от Свойства +"column-count". Каждая следующая колонка располагается в зависимости от свойства "text-direction" справа или слева от предыдущей, а контейнер прокручивается по горизонтали. Получить значение данного свойства можно с помощью функции @@ -2508,14 +2554,14 @@ ColumnLayout является контейнером, реализующим и Свойство "column-separator" (константа ColumnSeparator) позволяет задать линию которая будет рисоваться в разрывах колонок. Линия рамки описывается тремя атрибутами: стиль линии, толщина и цвет. -Значение Свойства "column-separator" хранится в виде интерфейса ColumnSeparatorProperty, -реализующего интерфейс Properties (см. выше). ColumnSeparatorProperty может содержать следующие Свойства: +Значение свойства "column-separator" хранится в виде интерфейса ColumnSeparatorProperty, +реализующего интерфейс Properties (см. выше). ColumnSeparatorProperty может содержать следующие свойства: | Свойство | Константа | Тип | Описание | |----------|---------------|----------|------------------| | "style" | Style | int | Стиль линии | | "width" | Width | SizeUnit | Толщина линии | -| "color" | ColorProperty | Color | Цвет линии | +| "color" | ColorTag | Color | Цвет линии | Стиль линии может принимать следующие значения: @@ -2545,14 +2591,14 @@ ViewBorder описана как Структура ViewBorder может быть передана в качестве параметра функции Set при установке значения Свойства "column-separator". При этом ViewBorder преобразуется в ColumnSeparatorProperty. -Поэтому при чтении Свойства функцией Get будет возвращен интерфейс ColumnSeparatorProperty, +Поэтому при чтении свойства функцией Get будет возвращен интерфейс ColumnSeparatorProperty, а не структура ViewBorder. Получить структуру ViewBorders без дополнительных преобразований можно с помощью глобальной функции func GetColumnSeparator(view View, subviewID ...string) ViewBorder Вы также можете устанавливать отдельные атрибуты линии использую функцию Set интерфейса View. -Для этого используются следующие Свойства +Для этого используются следующие свойства | Свойство | Константа | Тип | Описание | |--------------------------|----------------------|----------|---------------| @@ -2571,7 +2617,7 @@ ViewBorder описана как view.Set(rui.ColumnSeparator, ColumnSeparatorProperty(rui.Params{ rui.Style: rui.SolidBorder, rui.Width: rui.Px(1), - rui.ColorProperty: rui.Black, + rui.ColorTag: rui.Black, })) ### Свойство "column-fill" @@ -2595,7 +2641,7 @@ ViewBorder описана как заголовок картинки и сама картинки и т.д. Свойство "avoid-break" (константа AvoidBreak) типа bool позволяет избежать этого эффекта. -Необходимо установить для View, который нельзя разрывать, данное Свойство со значением "true". +Необходимо установить для View, который нельзя разрывать, данное свойство со значением "true". Соответственно значение "false" данного свойства позволяет разрывать View. Значение по умолчанию "false". @@ -2627,7 +2673,7 @@ StackLayout является контейнером, реализующим ин func NewStackLayout(session Session, params Params) StackLayout -Помимо Свойств Append, Insert, RemoveView и Свойства "content" интерфейса ViewsContainer +Помимо свойств Append, Insert, RemoveView и свойства "content" интерфейса ViewsContainer контейнер StackLayout имеет еще две функции интерфейса для управления дочерними View: Push и Pop Push(view View, animation int, onPushFinished func()) @@ -2667,7 +2713,7 @@ StackLayout является контейнером, реализующим ин return nil } -Конечно это менее удобно по сравнению с функцией Peek. Однако Свойство "current" может быть использовано +Конечно это менее удобно по сравнению с функцией Peek. Однако свойство "current" может быть использовано для отслеживания изменения текущего View: layout.SetChangeListener(rui.Current, func(view rui.View, tag string) { @@ -2682,7 +2728,7 @@ StackLayout является контейнером, реализующим ин Данная функция вернет true в случае успеха и false если дочерний View или View с таким id не существует и в лог будет записано сообщение об ошибке. -Также чтобы сделать любой дочерний View текущим (видимым) можно использовать Свойство "current". +Также чтобы сделать любой дочерний View текущим (видимым) можно использовать свойство "current". ## TabsLayout @@ -2697,18 +2743,18 @@ TabsLayout является контейнером, реализующим ин Для каждого View создается закладка. На закладке может отображаться заголовок, иконка и кнопка закрытия. -Заголовок задается с помощью текстового Свойства "title" (константа Title) дочернего View. +Заголовок задается с помощью текстового свойства "title" (константа Title) дочернего View. Свойство "title" опционально. Если оно не задано, то на вкладке не будет текста. -Иконка задается с помощью текстового Свойства "icon" (константа Icon) дочернего View. +Иконка задается с помощью текстового свойства "icon" (константа Icon) дочернего View. В качестве значения ему присваивается имя файла иконки (если иконка располагается в ресурсах приложения) или url. Свойство "icon" опционально. Если оно не задано, то на вкладке не будет иконки. -Отображение кнопки закрытия вкладки управляется с помощью булевского Свойства "tab-close-button" (константа TabCloseButton). +Отображение кнопки закрытия вкладки управляется с помощью булевского свойства "tab-close-button" (константа TabCloseButton). Значение "true" включает отображение кнопки закрытия вкладки. Значение по умолчанию "false". Свойства "tab-close-button" может быть задано как для дочернего View так и для самого TabsLayout. -Установка значения Свойства "tab-close-button" для TabsLayout включает/выключает отображение +Установка значения свойства "tab-close-button" для TabsLayout включает/выключает отображение кнопки закрытия сразу для всех вкладок. Значение "tab-close-button" установленное для дочернего элемента имеет более высокий приоритет по сравнению со значением установленным для TabsLayout. @@ -2726,20 +2772,20 @@ TabsLayout является контейнером, реализующим ин layout.RemoveView(index) }) -Управлять текущим View можно с помощью целочисленного Свойства "current" (константа Current). -Для программного переключения вкладок присвойте данному Свойству значение индекса новой текущего View. -Прочитать значение Свойства "current" можно с помощью функции +Управлять текущим View можно с помощью целочисленного свойства "current" (константа Current). +Для программного переключения вкладок присвойте данному свойству значение индекса новой текущего View. +Прочитать значение свойства "current" можно с помощью функции func GetCurrent(view View, subviewID ...string) int -Также Свойство "current" может быть использовано для отслеживания изменения текущего View: +Также свойство "current" может быть использовано для отслеживания изменения текущего View: tabsView.SetChangeListener(rui.Current, func(view rui.View, tag string) { // current view changed }) Вкладки располагаются вдоль одной из сторон контейнера TabsLayout. Расположение вкладок -задается с помощью целочисленного Свойства "tabs" (константа Tabs). Данное Свойство может +задается с помощью целочисленного свойства "tabs" (константа Tabs). Данное свойство может принимать следующие значения | Значение | Константа | Имя | Расположение вкладок | @@ -2758,13 +2804,13 @@ TabsLayout является контейнером, реализующим ин При отображении текущей (выбранной) вкладки типа TopTabs, BottomTabs, LeftListTabs и RightListTabs используется стиль "ruiCurrentTab", а для вкладки типа LeftTabs и RightTabs используется стиль "ruiCurrentVerticalTab". Если вы хотите кастомизировать отображение вкладок, то вы можете либо переопределить данные стили, либо -назначить свой стиль с помощью Свойства "current-tab-style" (константа CurrentTabStyle). +назначить свой стиль с помощью свойства "current-tab-style" (константа CurrentTabStyle). Соответственно, для неактивной вкладки используются стили "ruiTab" и "ruiVerticalTab", а -назначить свой стиль можно с помощью Свойства "tab-style" (константа TabStyle). +назначить свой стиль можно с помощью свойства "tab-style" (константа TabStyle). Для отображения панели вкладок используется стиль "ruiTabBar", а -назначить свой стиль можно с помощью Свойства "tab-bar-style" (константа TabBarStyle). +назначить свой стиль можно с помощью свойства "tab-bar-style" (константа TabBarStyle). ## AbsoluteLayout @@ -2775,9 +2821,9 @@ AbsoluteLayout является контейнером, реализующим func NewAbsoluteLayout(session Session, params Params) AbsoluteLayout -Дочерние View позиционируются с помощью Свойств типа SizeUnit: "left", "right", "top" и +Дочерние View позиционируются с помощью свойств типа SizeUnit: "left", "right", "top" и "bottom" (соответственно константы Left, Right, Top и Bottom). Можно задавать любые из -этих Свойств для дочернего View. Если ни "left" ни "right" не заданы, то дочерний View +этих свойств для дочернего View. Если ни "left" ни "right" не заданы, то дочерний View будет прижат к левому краю контейнера. Если ни "top" ни "bottom" не заданы, то дочерний View будет прижат к верхнему краю контейнера. @@ -2788,27 +2834,27 @@ DetailsView является контейнером, реализующим ин func NewDetailsView(session Session, params Params) DetailsView -Помимо дочерних View данный контейнер имеет Свойство "summary" (константа Summary). -В качестве значения Свойства "summary" может быть или View или строка текста. +Помимо дочерних View данный контейнер имеет свойство "summary" (константа Summary). +В качестве значения свойства "summary" может быть или View или строка текста. DetailsView может находиться в одном из двух состояний: -* отображается только содержимое Свойства "summary". Дочерние View скрыты и не занимают место на экране +* отображается только содержимое свойства "summary". Дочерние View скрыты и не занимают место на экране -* отображается сначала содержимое Свойства "summary", а ниже дочерние View. +* отображается сначала содержимое свойства "summary", а ниже дочерние View. Размещение дочерних View, аналогично ColumnLayout с "column-count" равным 0. DetailsView переключается между состояниями по клику по "summary". -Для принудительного переключения состояний DetailsView используется bool Свойство +Для принудительного переключения состояний DetailsView используется bool свойство "expanded" (константа Expanded). Соответственно значение "true" показывает дочерние View, "false" - скрывает. -Получить значение Свойства "expanded" можно с помощью функции +Получить значение свойства "expanded" можно с помощью функции func IsDetailsExpanded(view View, subviewID ...string) bool -а значение Свойства "summary" можно получить с помощью функции +а значение свойства "summary" можно получить с помощью функции func GetDetailsSummary(view View, subviewID ...string) View @@ -2820,11 +2866,11 @@ Resizable является контейнером в который можно Вокруг вложенного View создается рамка, потянув за которую можно менять размеры. Resizable не реализует интерфейс ViewsContainer. Для управлением вложенным View используется -только Свойство Content. Данному Свойству может быть присвоено значение типа View или +только свойство Content. Данному свойству может быть присвоено значение типа View или строка текста. Во втором случае создается TextView. Рамка вокруг вложенного View может быть как со всех сторон, так и только с отдельных. -Для задания сторон рамки используется Свойство "side" (константа Side) типа int. +Для задания сторон рамки используется свойство "side" (константа Side) типа int. Оно может принимать следующие значения: | Значение | Константа | Имя | Сторона рамки | @@ -2840,7 +2886,7 @@ AllSides определено как AllSides = TopSide | RightSide | BottomSide | LeftSide -Для установки ширины рамки используется SizeUnit Свойство "resize-border-width" (константа ResizeBorderWidth). +Для установки ширины рамки используется SizeUnit свойство "resize-border-width" (константа ResizeBorderWidth). Значение по умолчанию для "resize-border-width" равно 4px. ## TextView @@ -2851,14 +2897,14 @@ AllSides определено как func NewTextView(session Session, params Params) TextView -Выводимый текст задается string Свойством "text" (константа Text). -Помимо метода Get значение Свойства "text" может быть получено с помощью функции +Выводимый текст задается string свойством "text" (константа Text). +Помимо метода Get значение свойства "text" может быть получено с помощью функции func GetText(view View, subviewID ...string) string -TextView наследует от View все Свойства параметров текста ("font-name", "text-size", "text-color" и т.д.). +TextView наследует от View все свойства параметров текста ("font-name", "text-size", "text-color" и т.д.). Кроме них добавляется еще один "text-overflow" (константа TextOverflow). Он определяет как обрезается -текст если он выходит за границы. Данное Свойство типа int может принимать следующие значения +текст если он выходит за границы. Данное свойство типа int может принимать следующие значения | Значение | Константа | Имя | Обрезка текста | |:--------:|----------------------|------------|--------------------------------------------| @@ -2873,8 +2919,8 @@ TextView наследует от View все Свойства параметро func NewImageView(session Session, params Params) ImageView -Выводимое изображение задается string Свойством "src" (константа Source). -В качестве значения данному Свойству присваивается либо имя изображения в папке images ресурсов, +Выводимое изображение задается string свойством "src" (константа Source). +В качестве значения данному свойству присваивается либо имя изображения в папке images ресурсов, либо url изображения, либо inline-изображение. inline-изображение это содержимое файла изображения закодированное в формате base64. @@ -2953,7 +2999,7 @@ NaturalSize() возвращает исходную ширину и высоту | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по высоте | -Для получения значений Свойств ImageView могут использоваться следующие функции: +Для получения значений свойств ImageView могут использоваться следующие функции: func GetImageViewSource(view View, subviewID ...string) string func GetImageViewAltText(view View, subviewID ...string) string @@ -2969,7 +3015,7 @@ NaturalSize() возвращает исходную ширину и высоту func NewSvgImageView(session Session, params Params) ImageView -Выводимое изображение задается string Свойством "content" (константа Content). +Выводимое изображение задается string свойством "content" (константа Content). В качестве значения данному свойству может присваиваться * имя изображения в папке images ресурсов; * url изображения; @@ -3003,8 +3049,8 @@ NaturalSize() возвращает исходную ширину и высоту func NewEditView(session Session, params Params) EditView Возможно несколько вариантов редактируемого текста. Тип редактируемого текста устанавливается -с помощью int Свойства "edit-view-type" (константа EditViewType). -Данное Свойство может принимать следующие значения: +с помощью int свойства "edit-view-type" (константа EditViewType). +Данное свойство может принимать следующие значения: | Значение | Константа | Имя | Тип редактора | |:--------:|----------------|-------------|-----------------------------------------------------| @@ -3016,37 +3062,37 @@ NaturalSize() возвращает исходную ширину и высоту | 5 | PhoneText | "phone" | Редактор для ввода телефонного номера | | 6 | MultiLineText | "multiline" | Многострочный редактор текста | -Для упрощения текста программы можно использовать Свойства "type" (константа Type) вместо "edit-view-type". -Эти имена Свойств синонимы. Но при описании стиля "type" использовать нельзя +Для упрощения текста программы можно использовать свойства "type" (константа Type) вместо "edit-view-type". +Эти имена свойств синонимы. Но при описании стиля "type" использовать нельзя -Для установки/получения редактируемого текста используется string Свойство "text" (константа Text) +Для установки/получения редактируемого текста используется string свойство "text" (константа Text) -Максимальная длина редактируемого текста устанавливается с помощью int Свойства "max-length" +Максимальная длина редактируемого текста устанавливается с помощью int свойства "max-length" (константа MaxLength). Вы можете ограничить вводимый текст с помощью регулярного выражения. Для этого используется -string Свойство "edit-view-pattern" (константа EditViewPattern). Вместо "edit-view-pattern" +string свойство "edit-view-pattern" (константа EditViewPattern). Вместо "edit-view-pattern" можно использовать синоним "pattern" (константа Pattern), за исключением описания стиля. -Для запрещения редактирования текста используется bool Свойство "readonly" (константа ReadOnly). +Для запрещения редактирования текста используется bool свойство "readonly" (константа ReadOnly). -Для включения/выключения встроенной проверки орфографии используется bool Свойство "spellcheck" +Для включения/выключения встроенной проверки орфографии используется bool свойство "spellcheck" (константа Spellcheck). Проверка орфографии можно включить только если тип редактора установлен в SingleLineText или MultiLineText. Для редактора можно установить подсказку которая будет показываться пока редактор пуст. -Для этого используется string Свойство "hint" (константа Hint). +Для этого используется string свойство "hint" (константа Hint). Для многострочного редактора может быть включен режим автоматического переноса. Для -этого используется bool Свойство "edit-wrap" (константа EditWrap). Если "edit-wrap" выключен (значение по умолчанию), +этого используется bool свойство "edit-wrap" (константа EditWrap). Если "edit-wrap" выключен (значение по умолчанию), то используется горизонтальная прокрутка. Если включен, то по достижении границы EditView текст переносится на новую строку. -Для изменения цвета каретки ввода текста используется Color Свойство "caret-color" (константа CaretColor). +Для изменения цвета каретки ввода текста используется Color свойство "caret-color" (константа CaretColor). Свойство "caret-color" может быть задано не только для EditView, но и для любого контейнера. В этом случае цвет каретки меняется для всех дочерних EditView помещенных в этот контейнер -Для получения значений Свойств EditView могут использоваться следующие функции: +Для получения значений свойств EditView могут использоваться следующие функции: func GetText(view View, subviewID ...string) string func GetHint(view View, subviewID ...string) string @@ -3078,7 +3124,7 @@ EditTextChangedEvent). Основной слушатель события име func NewNumberPicker(session Session, params Params) NumberPicker NumberPicker может работать в двух режимах: редактор текста и слайдер. -Режим устанавливает int Свойство "number-picker-type" (константа NumberPickerType). +Режим устанавливает int свойство "number-picker-type" (константа NumberPickerType). Свойство "number-picker-type" может принимать следующие значения: | Значение | Константа | Имя | Тип редактора | @@ -3086,8 +3132,8 @@ NumberPicker может работать в двух режимах: редак | 0 | NumberEditor | "editor" | Редактор текста. Значение по умолчанию | | 1 | NumberSlider | "slider" | Слайдер | -Установить/прочитать текущее значение можно с помощью Свойства "number-picker-value" -(константа NumberPickerValue). В качестве значения Свойству "number-picker-value" могут быть переданы: +Установить/прочитать текущее значение можно с помощью свойства "number-picker-value" +(константа NumberPickerValue). В качестве значения свойству "number-picker-value" могут быть переданы: * float64 * float32 @@ -3098,11 +3144,11 @@ NumberPicker может работать в двух режимах: редак * текстовое представление любых из выше перечисленных типов Все эти типы приводятся к float64. Соответственно функция Get всегда возвращает float64 значение. -Прочитано значение Свойства "number-picker-value" может быть также с помощью функции: +Прочитано значение свойства "number-picker-value" может быть также с помощью функции: func GetNumberPickerValue(view View, subviewID ...string) float64 -На вводимые значения могут быть наложены ограничения. Для этого используются следующие Свойства: +На вводимые значения могут быть наложены ограничения. Для этого используются следующие свойства: | Свойство | Константа | Ограничение | |----------------------|------------------|------------------------| @@ -3110,13 +3156,13 @@ NumberPicker может работать в двух режимах: редак | "number-picker-max" | NumberPickerMax | Максимальное значение | | "number-picker-step" | NumberPickerStep | Шаг изменения значения | -Присвоены данным Свойствам могут те же типы значений, что и "number-picker-value". +Присвоены данным свойствам могут те же типы значений, что и "number-picker-value". По умолчанию, в случае если "number-picker-type" равно NumberSlider, минимальное значение равно 0, максимальное - 1. Если же "number-picker-type" равно NumberEditor то вводимые числа, по умолчанию, ограничены лишь диапазоном значений float64. -Прочитать значения данных Свойств можно с помощью функций: +Прочитать значения данных свойств можно с помощью функций: func GetNumberPickerMinMax(view View, subviewID ...string) (float64, float64) func GetNumberPickerStep(view View, subviewID ...string) float64 @@ -3140,8 +3186,8 @@ NumberChangedEvent). Основной слушатель события име func NewDatePicker(session Session, params Params) DatePicker -Установить/прочитать текущее значение можно с помощью Свойства "date-picker-value" -(константа DatePickerValue). В качестве значения Свойству "date-picker-value" могут быть переданы: +Установить/прочитать текущее значение можно с помощью свойства "date-picker-value" +(константа DatePickerValue). В качестве значения свойству "date-picker-value" могут быть переданы: * time.Time * константа @@ -3149,11 +3195,11 @@ NumberChangedEvent). Основной слушатель события име func time.Parse(layout string, value string) (time.Time, error) Текст преобразуется в time.Time. Соответственно функция Get всегда возвращает time.Time значение. -Прочитано значение Свойства "date-picker-value" может быть также с помощью функции: +Прочитано значение свойства "date-picker-value" может быть также с помощью функции: func GetDatePickerValue(view View, subviewID ...string) time.Time -На вводимые даты могут быть наложены ограничения. Для этого используются следующие Свойства: +На вводимые даты могут быть наложены ограничения. Для этого используются следующие свойства: | Свойство | Константа | Тип данных | Ограничение | |--------------------|----------------|------------|----------------------------| @@ -3161,7 +3207,7 @@ NumberChangedEvent). Основной слушатель события име | "date-picker-max" | DatePickerMax | time.Time | Максимальное значение даты | | "date-picker-step" | DatePickerStep | int | Шаг изменения даты в днях | -Прочитать значения данных Свойств можно с помощью функций: +Прочитать значения данных свойств можно с помощью функций: func GetDatePickerMin(view View, subviewID ...string) (time.Time, bool) func GetDatePickerMax(view View, subviewID ...string) (time.Time, bool) @@ -3186,8 +3232,8 @@ DateChangedEvent). Основной слушатель события имее func NewTimePicker(session Session, params Params) TimePicker -Установить/прочитать текущее значение можно с помощью Свойства "time-picker-value" -(константа TimePickerValue). В качестве значения Свойству "time-picker-value" могут быть переданы: +Установить/прочитать текущее значение можно с помощью свойства "time-picker-value" +(константа TimePickerValue). В качестве значения свойству "time-picker-value" могут быть переданы: * time.Time * константа @@ -3195,11 +3241,11 @@ DateChangedEvent). Основной слушатель события имее func time.Parse(layout string, value string) (time.Time, error) Текст преобразуется в time.Time. Соответственно функция Get всегда возвращает time.Time значение. -Прочитано значение Свойства "time-picker-value" может быть также с помощью функции: +Прочитано значение свойства "time-picker-value" может быть также с помощью функции: func GetTimePickerValue(view View, subviewID ...string) time.Time -На вводимое время могут быть наложены ограничения. Для этого используются следующие Свойства: +На вводимое время могут быть наложены ограничения. Для этого используются следующие свойства: | Свойство | Константа | Тип данных | Ограничение | |--------------------|----------------|------------|----------------------------------| @@ -3207,7 +3253,7 @@ DateChangedEvent). Основной слушатель события имее | "time-picker-max" | TimePickerMax | time.Time | Максимальное значение времени | | "time-picker-step" | TimePickerStep | int | Шаг изменения времени в секундах | -Прочитать значения данных Свойств можно с помощью функций: +Прочитать значения данных свойств можно с помощью функций: func GetTimePickerMin(view View, subviewID ...string) (time.Time, bool) func GetTimePickerMax(view View, subviewID ...string) (time.Time, bool) @@ -3232,14 +3278,14 @@ TimeChangedEvent). Основной слушатель события имее func NewColorPicker(session Session, params Params) ColorPicker -Установить/прочитать текущее значение можно с помощью Свойства "color-picker-value" -(константа ColorPickerValue). В качестве значения Свойству "color-picker-value" могут быть переданы: +Установить/прочитать текущее значение можно с помощью свойства "color-picker-value" +(константа ColorPickerValue). В качестве значения свойству "color-picker-value" могут быть переданы: * Color * текстовое представление Color * константа -Прочитано значение Свойства "color-picker-value" может быть также с помощью функции: +Прочитано значение свойства "color-picker-value" может быть также с помощью функции: func GetColorPickerValue(view View, subviewID ...string) Color @@ -3262,12 +3308,12 @@ ColorChangedEvent). Основной слушатель события имее func NewFilePicker(session Session, params Params) FilePicker -Булевское Свойство "multiple" (константа Multiple) используется для установки режима выбора нескольких файлов. +Булевское свойство "multiple" (константа Multiple) используется для установки режима выбора нескольких файлов. Значение "true" включает режим выбора нескольких файлов, "false" включает режим выбора одиночного файл. Значение по умолчанию "false". -Вы можете ограничить выбор только определенными типами файлов. Для этого используется Свойство "accept" (константа Accept). -Данному Свойству присваивается список разрешенных расширений файлов и/или mime-типов. Значение можно задавать или в виде +Вы можете ограничить выбор только определенными типами файлов. Для этого используется свойство "accept" (константа Accept). +Данному свойству присваивается список разрешенных расширений файлов и/или mime-типов. Значение можно задавать или в виде строки (элементы при этом разделяются запятыми) или в виде массива строк. Примеры rui.Set(view, "myFilePicker", rui.Accept, "png, jpg, jpeg") @@ -3343,22 +3389,22 @@ FileInfo содержит только информацию о файле, но func NewDropDownList(session Session, params Params) DropDownList -Список возможных значений задается с помощью Свойства "items" (константа Items). -В качестве значения Свойству "items" могут быть переданы следующие типы данных +Список возможных значений задается с помощью свойства "items" (константа Items). +В качестве значения свойству "items" могут быть переданы следующие типы данных * []string * []fmt.Stringer * []any содержащий в качестве элементов только: string, fmt.Stringer, bool, rune, float32, float64, int, int8…int64, uint, uint8…uint64. -Все эти типы данных преобразуются в []string и присваиваются Свойству "items". -Прочитать значение Свойства "items" можно с помощью функции +Все эти типы данных преобразуются в []string и присваиваются свойству "items". +Прочитать значение свойства "items" можно с помощью функции func GetDropDownItems(view View, subviewID ...string) []string -Можно запретить выбор отдельных пунктов. Для этого используется Свойство "disabled-items" (константа DisabledItems). -Данному Свойству присваивается массив индексов запрещенных пунктов. Индекс может задаваться или числом или в виде текста -или как константа. Поэтому Свойству "disabled-items" могут присваиваться следующие типы данных: +Можно запретить выбор отдельных пунктов. Для этого используется свойство "disabled-items" (константа DisabledItems). +Данному свойству присваивается массив индексов запрещенных пунктов. Индекс может задаваться или числом или в виде текста +или как константа. Поэтому свойству "disabled-items" могут присваиваться следующие типы данных: * []int * int @@ -3366,17 +3412,17 @@ float32, float64, int, int8…int64, uint, uint8…uint64. * string может содержать несколько индексов разделенных запятыми * []any содержащий в качестве элементов только: string, int, int8…int64, uint, uint8…uint64. -Все эти типы данных преобразуются в []any и присваиваются Свойству "disabled-items". -Прочитать значение Свойства "disabled-items" можно с помощью функции +Все эти типы данных преобразуются в []any и присваиваются свойству "disabled-items". +Прочитать значение свойства "disabled-items" можно с помощью функции func GetDropDownDisabledItems(view View, subviewID ...string) []int -Выбранное значение определяется int Свойством "current" (константа Current). Значение по умолчанию 0. +Выбранное значение определяется int свойством "current" (константа Current). Значение по умолчанию 0. Прочитать значение данного свойства можно с помощью функции func GetCurrent(view View, subviewID ...string) int -Для отслеживания изменения Свойства "current" используется событие "drop-down-event" (константа +Для отслеживания изменения свойства "current" используется событие "drop-down-event" (константа DropDownEvent). Основной слушатель события имеет следующий формат: func(list DropDownList, newCurrent int) @@ -3396,15 +3442,15 @@ DropDownEvent). Основной слушатель события имеет с func NewProgressBar(session Session, params Params) ProgressBar -ProgressBar имеет два Свойства типа float64: +ProgressBar имеет два свойства типа float64: * "progress-max" (константа ProgressBarMax) - максимальное значение (по умолчанию 1); * "progress-value" (константа ProgressBarValue) - текущее значение (по умолчанию 0). Минимальное всегда 0. -В качестве значений этим Свойствам может быть присвоено кроме float64 также float32, int, +В качестве значений этим свойствам может быть присвоено кроме float64 также float32, int, int8…int64, uint, uint8…uint64 -Прочитать значение данных Свойств можно с помощью функций +Прочитать значение данных свойств можно с помощью функций func GetProgressBarMax(view View, subviewID ...string) float64 func GetProgressBarValue(view View, subviewID ...string) float64 @@ -3412,7 +3458,7 @@ int8…int64, uint, uint8…uint64 ## Button Элемент Button реализует нажимаемую кнопку. Это CustomView (о нем ниже) на базе ListLayout и, -соответственно, обладает всеми Свойствами ListLayout. Но в отличие от ListLayout может получать +соответственно, обладает всеми свойствами ListLayout. Но в отличие от ListLayout может получать фокус ввода. Контент, по умолчанию, выровнен по центру. @@ -3428,14 +3474,14 @@ int8…int64, uint, uint8…uint64 func NewListView(session Session, params Params) ListView -ListView реализован на основе ListLayout и поэтому он поддерживает все Свойства ListLayout: +ListView реализован на основе ListLayout и поэтому он поддерживает все свойства ListLayout: "orientation", "list-wrap", "vertical-align", "horizontal-align", "list-row-gap" и "list-column-gap". -Помимо эти Свойств ListView имеет ещё следующие: +Помимо эти свойств ListView имеет ещё следующие: ### Свойство "items" -Элементы списка задаются с помощью Свойства "items" (константа Items). Основным значением +Элементы списка задаются с помощью свойства "items" (константа Items). Основным значением Свойства "items" является интерфейс ListAdapter: type ListAdapter interface { @@ -3516,7 +3562,7 @@ ReloadListViewData() интерфейса ListView или глобальную Вы можете установить фиксированную высоту и ширину элемента списка. Для этого используются SizeUnit Свойства "item-width" и "item-height" -Получить значения данных Свойств можно с помощью функций +Получить значения данных свойств можно с помощью функций func GetListItemWidth(view View, subviewID ...string) SizeUnit func GetListItemHeight(view View, subviewID ...string) SizeUnit @@ -3557,7 +3603,7 @@ ReloadListViewData() интерфейса ListView или глобальную ListView позволяет выбирать пункты списка имеющие статус "разрешен" (см. ListAdapter). Элемент может быть выбран как интерактивно, так и программно. Для этого используется -int Свойство "current" (константа Current). Значение "current" меньше 0 означает что +int свойство "current" (константа Current). Значение "current" меньше 0 означает что не выбран ни один пункт Получить значение данного свойства можно с помощью функции @@ -3566,7 +3612,7 @@ int Свойство "current" (константа Current). Значение "c ### Свойства "list-item-style", "current-style" и "current-inactive-style" -Данные три Свойства отвечают за стиль фона и Свойства текста каждого элемента списка. +Данные три свойства отвечают за стиль фона и свойства текста каждого элемента списка. | Свойство | Константа | Стиль | |--------------------------|----------------------|-------------------------------------------------| @@ -3592,8 +3638,8 @@ int Свойство "current" (константа Current). Значение "c func GetListViewCheckbox(view View, subviewID ...string) int -Получить/установить список помеченных пунктов можно с помощью Свойства "checked" (константа Checked). -Данное Свойство имеет тип []int и хранит индексы помеченных элементов. +Получить/установить список помеченных пунктов можно с помощью свойства "checked" (константа Checked). +Данное свойство имеет тип []int и хранит индексы помеченных элементов. Получить значение данного свойства можно с помощью функции func GetListViewCheckedItems(view View, subviewID ...string) []int @@ -3603,7 +3649,7 @@ int Свойство "current" (константа Current). Значение "c func IsListViewCheckedItem(view View, subviewID string, index int) bool По умолчанию чекбокс расположен в верхнем левом углу элемента. Изменить его положение можно -с помощью int Свойств "checkbox-horizontal-align" и "checkbox-vertical-align" (константы +с помощью int свойств "checkbox-horizontal-align" и "checkbox-vertical-align" (константы CheckboxHorizontalAlign и CheckboxVerticalAlign) Свойство "checkbox-horizontal-align" (константа СheckboxHorizontalAlign) может принимать следующие значения: @@ -3625,7 +3671,7 @@ CheckboxHorizontalAlign и CheckboxVerticalAlign) Особый случай когда и "checkbox-horizontal-align" и "checkbox-vertical-align" равны CenterAlign (2). В этом случае чекбокс расположен по центру по горизонтали, контент ниже -Получить значения Свойств можно "checkbox-horizontal-align" и "checkbox-vertical-align" с помощью функций +Получить значения свойств можно "checkbox-horizontal-align" и "checkbox-vertical-align" с помощью функций func GetListViewCheckboxHorizontalAlign(view View, subviewID ...string) int func GetListViewCheckboxVerticalAlign(view View, subviewID ...string) int @@ -3693,7 +3739,7 @@ Cell(row, column int) возвращает содержимое ячейки т ### Свойство "cell-style" -Свойство "cell-style" (константа CellStyle) предназначено для настройки оформления ячейки таблицы. Данному Свойству +Свойство "cell-style" (константа CellStyle) предназначено для настройки оформления ячейки таблицы. Данному свойству может быть присвоено только реализация интерфейса TableCellStyle. type TableCellStyle interface { @@ -3701,7 +3747,7 @@ Cell(row, column int) возвращает содержимое ячейки т } Данный интерфейс содержит только одну функцию CellStyle, которая возвращает параметры оформления -заданной ячейки таблицы. Можно использовать любые Свойства интерфейса View. Например +заданной ячейки таблицы. Можно использовать любые свойства интерфейса View. Например func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { if row == 0 { @@ -3717,9 +3763,9 @@ Cell(row, column int) возвращает содержимое ячейки т #### Свойства "row-span" и "column-span" -Помимо Свойств интерфейса View, функцией CellStyle могут возвращаться еще два Свойства типа int: +Помимо свойств интерфейса View, функцией CellStyle могут возвращаться еще два свойства типа int: "row-span" (константа RowSpan) и "column-span" (константа ColumnSpan). -Данные Свойства используются для объединения ячеек таблицы. +Данные свойства используются для объединения ячеек таблицы. Свойство "row-span" указывает сколько ячеек надо объединить по вертикали, а "column-span" - по горизонтали. Например @@ -3742,7 +3788,7 @@ Cell(row, column int) возвращает содержимое ячейки т | | | | |------|-------|--------| -Если в качестве значения Свойства "content" используется [][]any, то для объединения +Если в качестве значения свойства "content" используется [][]any, то для объединения ячеек используются пустые структуры type VerticalTableJoin struct { @@ -3761,7 +3807,7 @@ Cell(row, column int) возвращает содержимое ячейки т ### Свойство "row-style" Свойство "row-style" (константа RowStyle) предназначено для настройки оформления строки таблицы. -Данному Свойству может быть присвоены или реализация интерфейса TableRowStyle или []Params. +Данному свойству может быть присвоены или реализация интерфейса TableRowStyle или []Params. TableRowStyle объявлена как type TableRowStyle interface { @@ -3770,12 +3816,12 @@ TableRowStyle объявлена как Функция RowStyle возвращает параметры применяемые ко всей строке таблицы. Свойство "row-style" имеет более низкий приоритет по сравнению со свойством "cell-style", -т.е. Свойства заданные в "cell-style" будут использоваться вместо заданных в "row-style" +т.е. свойства заданные в "cell-style" будут использоваться вместо заданных в "row-style" ### Свойство "column-style" Свойство "column-style" (константа ColumnStyle) предназначено для настройки оформления столбца таблицы. -Данному Свойству может быть присвоены или реализация интерфейса TableColumnStyle или []Params. +Данному свойству может быть присвоены или реализация интерфейса TableColumnStyle или []Params. TableColumnStyle объявлена как type TableColumnStyle interface { @@ -3793,18 +3839,18 @@ TableColumnStyle объявлена как присвоено, значение типа: * string - имя стиля; -* []Params - перечисление Свойств "шапки". +* []Params - перечисление свойств "шапки". ### Свойства "foot-height" и "foot-style" Таблица может иметь в конце финализирующие строки (например строка "Итого"). Свойство "foot-height" (константа FootHeight) типа int указывает количество этих финализирующих строк. -Свойство "foot-style" (константа FootStyle) задает их стиль. Значения Свойства "foot-style" аналогичны Свойству "head-style". +Свойство "foot-style" (константа FootStyle) задает их стиль. Значения свойства "foot-style" аналогичны свойству "head-style". ### Свойство "cell-padding" Свойство "cell-padding" (константа CellPadding) типа SizeUnit задает отступы от границ ячейки до -контента. Данное Свойство эквивалентно +контента. Данное свойство эквивалентно func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { return rui.Params { rui.Padding: } @@ -3813,13 +3859,13 @@ TableColumnStyle объявлена как И введено для удобства, чтобы не надо было писать адаптер для задания отступов. Свойство "cell-padding" имеет более низкий приоритет по сравнению со свойством "cell-style". -"cell-padding" может также использоваться при задании параметров в Свойствах +"cell-padding" может также использоваться при задании параметров в свойствах "row-style", "column-style", "foot-style" и "head-style" ### Свойство "cell-border" Свойство "cell-border" (константа CellBorder) задает рамку для всех ячеек таблицы. -Данное Свойство эквивалентно +Данное свойство эквивалентно func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { return rui.Params { rui.Border: } @@ -3828,7 +3874,7 @@ TableColumnStyle объявлена как И введено для удобства, чтобы не надо было писать адаптер для рамки. Свойство "cell-border" имеет более низкий приоритет по сравнению со свойством "cell-style". -"cell-border" может также использоваться при задании параметров в Свойствах +"cell-border" может также использоваться при задании параметров в свойствах "row-style", "column-style", "foot-style" и "head-style" ### Свойство "table-vertical-align" @@ -3843,7 +3889,7 @@ TableColumnStyle объявлена как | 2 | CenterAlign | "center" | Выравнивание по центру | | 3, 4 | BaselineAlign | "baseline" | Выравнивание по базовой линии | -Для горизонтального выравнивания используется Свойство "text-align". +Для горизонтального выравнивания используется свойство "text-align". Получить значение данного свойства можно с помощью функции @@ -3895,7 +3941,7 @@ TableColumnStyle объявлена как выбор определенных элементов. Свойство "selection-mode" (константа SelectionMode) позволяет задать такое правило. -В режиме CellSelection данному Свойству присваивается реализация интерфейса +В режиме CellSelection данному свойству присваивается реализация интерфейса type TableAllowCellSelection interface { AllowCellSelection(row, column int) bool @@ -4015,7 +4061,7 @@ CanvasView это область в которой вы можете рисов func NewCanvasView(session Session, params Params) CanvasView -CanvasView имеет всего одно дополнительное Свойство: "draw-function" (константа DrawFunction). +CanvasView имеет всего одно дополнительное свойство: "draw-function" (константа DrawFunction). С помощью данного свойства задается функция рисования имеющая следующее описание func(Canvas) @@ -4321,7 +4367,7 @@ width, height - ширина и высота результата ## AudioPlayer, VideoPlayer, MediaPlayer AudioPlayer и VideoPlayer это элементы которые предназначены для воспроизведения аудио и видео. -Оба элемента реализуют интерфейс MediaPlayer. Большинство Свойств и все события AudioPlayer и VideoPlayer +Оба элемента реализуют интерфейс MediaPlayer. Большинство свойств и все события AudioPlayer и VideoPlayer являются общими и реализуются через MediaPlayer. ### Свойство "src" @@ -4351,7 +4397,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ Свойство "controls" (константа Controls) типа bool указывает, должны ли отображаться элементы пользовательского интерфейса для управления воспроизведения медиа ресурса. Значение по умолчанию false. -Если Свойство "controls" равно false для AudioPlayer, то он будет невидим и не будет занимать место на экране. +Если свойство "controls" равно false для AudioPlayer, то он будет невидим и не будет занимать место на экране. ### Свойство "loop" @@ -4379,7 +4425,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ Свойство "poster" (константа Poster) типа string используется только для VideoPlayer. Оно задает url картинки которая будет показываться пока видео не загрузится. -Если данное Свойство не задано, то будет сначала показываться черный экран, а затем первый кадр (как только он загрузится). +Если данное свойство не задано, то будет сначала показываться черный экран, а затем первый кадр (как только он загрузится). ### Свойства "video-width" и "video-height" @@ -4395,7 +4441,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ rui.Set(view, "videoPlayer", rui.VideoHeight, frame.Height) }) -Если задано только одно из Свойств "video-width" или "video-height", то второе вычисляется на основе пропорций видео +Если задано только одно из свойств "video-width" или "video-height", то второе вычисляется на основе пропорций видео ### События @@ -4526,7 +4572,7 @@ Popup это интерфейс позволяющий отобразить пр где view - View содержимого всплывающего окна (не может быть nil); params - параметры всплывающего окна (может быть nil). В качестве параметров всплывающего окна, могут -использоваться как любые Свойства View, так и ряд дополнительных Свойств (они будут описаны ниже) +использоваться как любые свойства View, так и ряд дополнительных свойств (они будут описаны ниже) После создания Popup его необходимо отобразить. Для этого используется метод Show() интерфейса Popup. Для упрощения кода можно использовать функцию ShowPopup, которая определена как @@ -4549,21 +4595,21 @@ params - параметры всплывающего окна (может быт ### Заголовок Popup Всплывающее окно может иметь заголовок. Для того чтобы добавить заголовок необходимо добавить текст заголовка. -Для этого используется Свойство "title" (константа Title) которое может принимать два типа значений: +Для этого используется свойство "title" (константа Title) которое может принимать два типа значений: * string * View -Для установления стиля заголовка используется Свойство "title-style" (константа TitleStyle) типа string. +Для установления стиля заголовка используется свойство "title-style" (константа TitleStyle) типа string. Стиль заголовка по умолчанию "ruiPopupTitle". Если вы хотите чтобы все ваши всплывающие окна имели одинаковый стиль, -для этого лучше не использовать Свойство "title-style", а переопределить стиль "ruiPopupTitle". +для этого лучше не использовать свойство "title-style", а переопределить стиль "ruiPopupTitle". -Заголовок также может иметь кнопку закрытия окна. Для ее добавления к заголовку используется Свойство "close-button" типа bool. -Установка этого Свойства в "true" добавляет к заголовку кнопку закрытия окна (значение по умолчанию равно "false"). +Заголовок также может иметь кнопку закрытия окна. Для ее добавления к заголовку используется свойство "close-button" типа bool. +Установка этого свойства в "true" добавляет к заголовку кнопку закрытия окна (значение по умолчанию равно "false"). ### Стрелка Popup -Всплывающее окно может иметь у одной из сторон стрелку. Стрелка задается с помощью Свойства "arrow" (константа Arrow). +Всплывающее окно может иметь у одной из сторон стрелку. Стрелка задается с помощью свойства "arrow" (константа Arrow). Свойство "arrow" может принимать следующие значения | Значение | Константа | Расположение стрелки | @@ -4574,11 +4620,11 @@ params - параметры всплывающего окна (может быт | 3 | BottomArrow | Стрелка у нижней стороны всплывающего окна | | 4 | LeftArrow | Стрелка у левой стороны всплывающего окна | -Размеры стрелки задаются с помощью Свойств "arrow-size" (константа ArrowSize) и "arrow-width" (константа ArrowWidth) типа SizeUnit. +Размеры стрелки задаются с помощью свойств "arrow-size" (константа ArrowSize) и "arrow-width" (константа ArrowWidth) типа SizeUnit. Они задают длину ("arrow-size") и ширину ("arrow-width") стрелки. Если данные свойства не заданы то используются константы "@ruiArrowSize" (значение по умолчанию 16px) и "@ruiArrowWidth" (значение по умолчанию 16px). -Выравнивание стрелки относительно всплывающего окна задается с помощью Свойства "arrow-align" (константа ArrowAlign). +Выравнивание стрелки относительно всплывающего окна задается с помощью свойства "arrow-align" (константа ArrowAlign). Свойство "arrow-align" может принимать следующие значения | Значение | Константы | Выравнивание | @@ -4587,11 +4633,11 @@ params - параметры всплывающего окна (может быт | 1 | BottomAlign / RightAlign | Выравнивание по нижнему / правому краю стороны | | 2 | CenterAlign | Выравнивание по центру (значение по умолчанию) | -Также для стрелки можно задать дополнительное смещение. Для этого используется Свойств "arrow-offset" (константа ArrowOffset) типа SizeUnit. +Также для стрелки можно задать дополнительное смещение. Для этого используется свойств "arrow-offset" (константа ArrowOffset) типа SizeUnit. -Если значение Свойства "arrow-align" равно TopAlign/LeftAlign, то смещение задается относительно верхней / левой стороны. -Если значение Свойства "arrow-align" равно BottomAlign/RightAlign, то смещение задается относительно нижней / правой стороны. -Если значение Свойства "arrow-align" равно CenterAlign, то смещение (может быть как положительным так и отрицательным) добавляется в виде отступа стрелки. +Если значение свойства "arrow-align" равно TopAlign/LeftAlign, то смещение задается относительно верхней / левой стороны. +Если значение свойства "arrow-align" равно BottomAlign/RightAlign, то смещение задается относительно нижней / правой стороны. +Если значение свойства "arrow-align" равно CenterAlign, то смещение (может быть как положительным так и отрицательным) добавляется в виде отступа стрелки. Т.е по центру выравнивается стрелка со смещением Если "arrow-offset" не задано, то значением по умолчанию для "arrow-align" равного CenterAlign является 0. @@ -4606,8 +4652,8 @@ params - параметры всплывающего окна (может быт Если все же необходимо переопределить поведение этой кнопки, то это можно сделать создав кастомный заголовок и создав в нем свою кнопку закрытия. -Существует еще один способ автоматического вызова метода Dismiss(). Это Свойство "outside-close" (константа OutsideClose) типа bool. -Если это Свойство установлено в "true", то клик мышью вне пределов всплывающего окна автоматически вызывает метод Dismiss(). +Существует еще один способ автоматического вызова метода Dismiss(). Это свойство "outside-close" (константа OutsideClose) типа bool. +Если это свойство установлено в "true", то клик мышью вне пределов всплывающего окна автоматически вызывает метод Dismiss(). Для отслеживания закрытия всплывающего окна используются событие "dismiss-event" (константа DismissEvent). Оно возникает после того как Popup исчезнет с экрана. @@ -4618,7 +4664,7 @@ params - параметры всплывающего окна (может быт ### Область кнопок Часто во всплывающее окно необходимо добавить кнопки, такие как "OK", "Cancel" и т.п. -С помощью Свойства "buttons" (константа Buttons) вы можете добавлять кнопки, которые будут располагаться внизу окна. +С помощью свойства "buttons" (константа Buttons) вы можете добавлять кнопки, которые будут располагаться внизу окна. Свойству "buttons" можно присваивать следующие типы данных: * PopupButton @@ -4634,7 +4680,7 @@ params - параметры всплывающего окна (может быт где Title - текст кнопки, OnClick - функция вызываемая при нажатии на кнопку По умолчанию кнопки выравниваются по правому краю окна. Однако это поведение можно переопределить. -Для этого используется Свойство "buttons-align" (константа ButtonsAlign) типа int, которое может принимать следующие значения: +Для этого используется свойство "buttons-align" (константа ButtonsAlign) типа int, которое может принимать следующие значения: | Значение | Константа | Имя | Выравнивание | |:--------:|--------------|-----------|------------------------------| @@ -4647,7 +4693,7 @@ params - параметры всплывающего окна (может быт ### Выравнивание Popup -По умолчанию всплывающее окно располагается по центру окна браузера. Изменить это поведение можно с помощью Свойств +По умолчанию всплывающее окно располагается по центру окна браузера. Изменить это поведение можно с помощью свойств "vertical-align" (константа VerticalAlign) и "horizontal-align" (константа HorizontalAlign) типа int. Свойство "vertical-align" может принимать следующие значения: @@ -4668,7 +4714,7 @@ params - параметры всплывающего окна (может быт | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по ширине | -Для сдвига окна может использоваться Свойство "margin". +Для сдвига окна может использоваться свойство "margin". Например, организовать выпадающее окно привязанное к кнопке можно так @@ -4702,9 +4748,9 @@ onNo или onCancel (если она не nil). func ShowMenu(session Session, params Params) Popup -Данная функция выводит на экран меню. Пункты меню задаются с помощью Свойства Items. -Свойство идентично Items идентично одноименному Свойству ListView. -С помощью Свойства "popup-menu-result" (константа PopupMenuResult) задается функция вызываемая при выборе пункта меню. +Данная функция выводит на экран меню. Пункты меню задаются с помощью свойства Items. +Свойство идентично Items идентично одноименному свойству ListView. +С помощью свойства "popup-menu-result" (константа PopupMenuResult) задается функция вызываемая при выборе пункта меню. Ее формат func(int) @@ -4723,8 +4769,8 @@ onNo или onCancel (если она не nil). Библиотека поддерживает два вида анимации: -* Анимированное изменения значения Свойства (далее "анимация перехода") -* Сценарий анимированного изменения одного или нескольких Свойств (далее просто "сценарий анимации") +* Анимированное изменения значения свойства (далее "анимация перехода") +* Сценарий анимированного изменения одного или нескольких свойств (далее просто "сценарий анимации") ### Интерфейс Animation @@ -4733,10 +4779,10 @@ onNo или onCancel (если она не nil). func NewAnimation(params Params) Animation -Часть Свойств интерфейса Animation используется в обоих типах анимации, остальные используются +Часть свойств интерфейса Animation используется в обоих типах анимации, остальные используются только в сценариях анимации. -Общими Свойствами являются +Общими свойствами являются | Свойство | Константа | Тип | По умолчанию | Описание | |-------------------|----------------|---------|--------------|-------------------------------------------------| @@ -4787,10 +4833,10 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете ### Анимация перехода -Анимация перехода может применяться к Свойствам типа: SizeUnit, Color, AngleUnit, float64 и составным свойствам +Анимация перехода может применяться к свойствам типа: SizeUnit, Color, AngleUnit, float64 и составным свойствам в составе которых имеются элементы перечисленных типов (например "shadow", "border" и т.д.). -При попытке применить анимацию к Свойствам других типов (например, bool, string) ошибки не произойдет, +При попытке применить анимацию к свойствам других типов (например, bool, string) ошибки не произойдет, просто анимации не будет. Анимация перехода бывает двух видов: @@ -4802,7 +4848,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете SetAnimated(tag string, value any, animation Animation) bool -Она присваивает Свойству новое значение, при этом изменение происходит с использованием заданной анимации. +Она присваивает свойству новое значение, при этом изменение происходит с использованием заданной анимации. Например, view.SetAnimated(rui.Width, rui.Px(400), rui.NewAnimation(rui.Params{ @@ -4810,13 +4856,13 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете rui.TimingFunction: rui.EaseOutTiming, })) -Есть также глобальная функция для анимированного однократного изменения значения Свойства дочернего View +Есть также глобальная функция для анимированного однократного изменения значения свойства дочернего View func SetAnimated(rootView View, viewID, tag string, value any, animation Animation) bool -Постоянная анимация запускается каждый раз когда изменяется значение Свойства. Для задания постоянной -анимации перехода используется Свойство "transition" (константа Transition). В качества значения данному -Свойству присваивается rui.Params, где в качестве ключа должно быть имя Свойства, а значение - интерфейс Animation. +Постоянная анимация запускается каждый раз когда изменяется значение свойства. Для задания постоянной +анимации перехода используется свойство "transition" (константа Transition). В качества значения данному +Свойству присваивается rui.Params, где в качестве ключа должно быть имя свойства, а значение - интерфейс Animation. Например, view.Set(rui.Transition, rui.Params{ @@ -4831,7 +4877,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете }, }) -Вызов функции SetAnimated не меняет значение Свойства "transition". +Вызов функции SetAnimated не меняет значение свойства "transition". Для получения текущего списка постоянных анимаций перехода используется функция @@ -4862,7 +4908,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете func(View, string) -где второй аргумент это имя Свойства. +где второй аргумент это имя свойства. Можно также использовать слушателя следующего формата: @@ -4880,12 +4926,12 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете ### Сценарий анимации Сценарий анимации описывает более сложную анимацию, по сравнению с анимацией перехода. Для этого -в Animation добавляются дополнительные Свойства: +в Animation добавляются дополнительные свойства: #### Свойство "property" -Свойство "property" (константа PropertyTag) описывает изменения Свойств. В качестве значения ему присваивается -[]AnimatedProperty. Структура AnimatedProperty описывает изменение одного Свойства. Она описана как +Свойство "property" (константа PropertyTag) описывает изменения свойств. В качестве значения ему присваивается +[]AnimatedProperty. Структура AnimatedProperty описывает изменение одного свойства. Она описана как type AnimatedProperty struct { Tag string @@ -4893,14 +4939,14 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете KeyFrames map[int]any } -где Tag - имя Свойства, From - начальное значение Свойства, To - конечное значение Свойства, -KeyFrames - промежуточные значения Свойства (ключевые кадры). +где Tag - имя свойства, From - начальное значение свойства, To - конечное значение свойства, +KeyFrames - промежуточные значения свойства (ключевые кадры). Обязательными являются поля Tag, From, To. Поле KeyFrames опционально, может быть nil. Поле KeyFrames описывает ключевые кадры. В качестве ключа типа int используется процент времени -прошедший с начала анимации (именно начала самой анимации, время заданное Свойством "delay" исключается). -А значение это значение Свойства в данный момент времени. Например +прошедший с начала анимации (именно начала самой анимации, время заданное свойством "delay" исключается). +А значение это значение свойства в данный момент времени. Например prop := rui.AnimatedProperty { Tag: rui.Width, @@ -4911,17 +4957,17 @@ KeyFrames - промежуточные значения Свойства (клю } } -В данном примере Свойство "width" 90% времени будет увеличиваться со 100px до 220px. В оставшиеся +В данном примере свойство "width" 90% времени будет увеличиваться со 100px до 220px. В оставшиеся 10% времени - будет уменьшаться с 220px до 200px. -Свойству "property" присваивается []AnimatedProperty, а значит можно анимировать сразу несколько Свойств. +Свойству "property" присваивается []AnimatedProperty, а значит можно анимировать сразу несколько свойств. Вы должны задать хотя бы один элемент "property", иначе анимация будет игнорироваться. #### Свойство "id" Свойство "id" (константа ID) типа string задает идентификатор анимации. Передается в качестве параметра слушателю -события анимации. Если вы не планируете использовать слушателей событий для анимации, то данное Свойство +события анимации. Если вы не планируете использовать слушателей событий для анимации, то данное свойство можно не задавать. #### Свойство "iteration-count" @@ -4944,7 +4990,7 @@ KeyFrames - промежуточные значения Свойства (клю #### Запуск анимации -Для запуска сценария анимации необходимо созданный Animation интерфейс присвоить Свойству "animation" +Для запуска сценария анимации необходимо созданный Animation интерфейс присвоить свойству "animation" (константа AnimationTag). Если View уже отображается на экране, то анимация запускается сразу (с учетом заданной задержки), в противоположном случае анимация запускается как только View отобразится на экране. @@ -4971,10 +5017,10 @@ KeyFrames - промежуточные значения Свойства (клю #### Свойство "animation-paused" Свойство "animation-paused" (константа AnimationPaused) типа bool позволяет приостановить анимацию. -Для того чтобы поставить анимацию на паузу необходимо данному Свойству присвоить значение true, а +Для того чтобы поставить анимацию на паузу необходимо данному свойству присвоить значение true, а для возобновления - false. -Внимание. В момент присваивания значения Свойству "animation" Свойство "animation-paused" сбрасывается в false. +Внимание. В момент присваивания значения свойству "animation" свойство "animation-paused" сбрасывается в false. #### События анимации @@ -5082,11 +5128,11 @@ Safari и Firefox. * SetTitleColor(color Color) устанавливает цвет панели навигации браузера. Поддерживается только в Safari и Chrome для Android. -* Get(viewID, tag string) any - возвращает значение Свойства View с именем tag. Эквивалентно +* Get(viewID, tag string) any - возвращает значение свойства View с именем tag. Эквивалентно rui.Get(session.RootView(), viewID, tag) -* Set(viewID, tag string, value any) bool - устанавливает значение Свойства View с именем tag. +* Set(viewID, tag string, value any) bool - устанавливает значение свойства View с именем tag. rui.Set(session.RootView(), viewID, tag, value) @@ -5271,15 +5317,15 @@ Safari и Firefox. Темы оформляются в виде rui файла и помещаются в папку themes. -Корневым объектом темы является объект с именем 'theme'. Данный объект может содержать следующие Свойства: +Корневым объектом темы является объект с именем 'theme'. Данный объект может содержать следующие свойства: -* name - текстовое Свойство задающее имя темы. Если данное Свойство не задано или оно равно пустой строке, +* name - текстовое свойство задающее имя темы. Если данное свойство не задано или оно равно пустой строке, то это тема по умолчанию. -* constants - Свойство-объект определяющий константы. Имя объекта может быть любым. Рекомендуется использовать "_". -Объект может иметь любое количество текстовых Свойств задающих пару "имя константы" = "значение". +* constants - свойство-объект определяющий константы. Имя объекта может быть любым. Рекомендуется использовать "_". +Объект может иметь любое количество текстовых свойств задающих пару "имя константы" = "значение". В данном разделе помещаются константы типа SizeUnit, AngleUnit, текстовые и числовые. Для того чтобы -присвоить константу какому либо Свойству View надо Свойству присвоить имя константы добавив вначале символ '@'. +присвоить константу какому либо свойству View надо свойству присвоить имя константы добавив вначале символ '@'. Например theme { @@ -5292,7 +5338,7 @@ Safari и Firefox. rui.Set(view, "subView", rui.Padding, "@defaultPadding") -* constants:touch - Свойство-объект определяющий константы используемые только для touch screen. +* constants:touch - свойство-объект определяющий константы используемые только для touch screen. Например, как сделать отступы больше на touch screen: theme { @@ -5304,8 +5350,8 @@ Safari и Firefox. }, } -* colors - Свойство-объект определяющий цветовые константы для светлой темы оформления (тема по умолчанию). -Объект может иметь любое количество текстовых Свойств задающих пару "имя цвета" = "цвет". Аналогично +* colors - свойство-объект определяющий цветовые константы для светлой темы оформления (тема по умолчанию). +Объект может иметь любое количество текстовых свойств задающих пару "имя цвета" = "цвет". Аналогично константам, при присваивании необходимо вначале имени цвета добавить '@'. Например theme { @@ -5330,7 +5376,7 @@ Safari и Firefox. rui.Set(view, "subView", rui.TextColor, "@red") // blue text rui.Set(view, "subView", rui.TextColor, "red") // red text -* colors:dark - Свойство-объект определяющий цветовые константы для темной темы оформления +* colors:dark - свойство-объект определяющий цветовые константы для темной темы оформления * styles - массив общих стилей. Каждый элемент массива должен быть объектом. Имя объекта является именем стиля. Например, @@ -5350,10 +5396,10 @@ Safari и Firefox. ] } -Для использования стилей у View есть два текстовых Свойства "style" (константа Style) и "style-disabled" -(константа StyleDisabled). Свойству "style" присваивается имя Свойства которое применяется ко View при -значении Свойства "disabled" равного false. Свойству "style-disabled" присваивается имя Свойства -которое применяется ко View при значении Свойства "disabled" равного true. Если "style-disabled" +Для использования стилей у View есть два текстовых свойства "style" (константа Style) и "style-disabled" +(константа StyleDisabled). Свойству "style" присваивается имя свойства которое применяется ко View при +значении свойства "disabled" равного false. Свойству "style-disabled" присваивается имя свойства +которое применяется ко View при значении свойства "disabled" равного true. Если "style-disabled" не определен, то свойство "style" используется в обоих режимах. Внимание! Символ '@' к имени стиля добавлять НЕ НАДО. Если вы добавите символ '@' к имени, то имя @@ -5433,32 +5479,32 @@ Safari и Firefox. |---------------------|-----------------------------------------------------------------------------| | ruiApp | Данный стиль используется для назначения стиля текста (шрифт, размер и т.д.) по умолчанию | | ruiView | Стиль View по умолчанию | -| ruiArticle | Стиль используемый если Свойство "semantics" установлено в "article" | -| ruiSection | Стиль используемый если Свойство "semantics" установлено в "section" | -| ruiAside | Стиль используемый если Свойство "semantics" установлено в "aside" | -| ruiHeader | Стиль используемый если Свойство "semantics" установлено в "header" | -| ruiMain | Стиль используемый если Свойство "semantics" установлено в "main" | -| ruiFooter | Стиль используемый если Свойство "semantics" установлено в "footer" | -| ruiNavigation | Стиль используемый если Свойство "semantics" установлено в "navigation" | -| ruiFigure | Стиль используемый если Свойство "semantics" установлено в "figure" | -| ruiFigureCaption | Стиль используемый если Свойство "semantics" установлено в "figure-caption" | -| ruiButton | Стиль используемый если Свойство "semantics" установлено в "button" | -| ruiParagraph | Стиль используемый если Свойство "semantics" установлено в "paragraph" | -| ruiH1 | Стиль используемый если Свойство "semantics" установлено в "h1" | -| ruiH2 | Стиль используемый если Свойство "semantics" установлено в "h2" | -| ruiH3 | Стиль используемый если Свойство "semantics" установлено в "h3" | -| ruiH4 | Стиль используемый если Свойство "semantics" установлено в "h4" | -| ruiH5 | Стиль используемый если Свойство "semantics" установлено в "h5" | -| ruiH6 | Стиль используемый если Свойство "semantics" установлено в "h6" | -| ruiBlockquote | Стиль используемый если Свойство "semantics" установлено в "blockquote" | -| ruiCode | Стиль используемый если Свойство "semantics" установлено в "code" | +| ruiArticle | Стиль используемый если свойство "semantics" установлено в "article" | +| ruiSection | Стиль используемый если свойство "semantics" установлено в "section" | +| ruiAside | Стиль используемый если свойство "semantics" установлено в "aside" | +| ruiHeader | Стиль используемый если свойство "semantics" установлено в "header" | +| ruiMain | Стиль используемый если свойство "semantics" установлено в "main" | +| ruiFooter | Стиль используемый если свойство "semantics" установлено в "footer" | +| ruiNavigation | Стиль используемый если свойство "semantics" установлено в "navigation" | +| ruiFigure | Стиль используемый если свойство "semantics" установлено в "figure" | +| ruiFigureCaption | Стиль используемый если свойство "semantics" установлено в "figure-caption" | +| ruiButton | Стиль используемый если свойство "semantics" установлено в "button" | +| ruiParagraph | Стиль используемый если свойство "semantics" установлено в "paragraph" | +| ruiH1 | Стиль используемый если свойство "semantics" установлено в "h1" | +| ruiH2 | Стиль используемый если свойство "semantics" установлено в "h2" | +| ruiH3 | Стиль используемый если свойство "semantics" установлено в "h3" | +| ruiH4 | Стиль используемый если свойство "semantics" установлено в "h4" | +| ruiH5 | Стиль используемый если свойство "semantics" установлено в "h5" | +| ruiH6 | Стиль используемый если свойство "semantics" установлено в "h6" | +| ruiBlockquote | Стиль используемый если свойство "semantics" установлено в "blockquote" | +| ruiCode | Стиль используемый если свойство "semantics" установлено в "code" | | ruiTable | Стиль TableView по умолчанию | | ruiTableHead | Стиль заголовка TableView по умолчанию | | ruiTableFoot | Стиль итого TableView по умолчанию | | ruiTableRow | Стиль строки TableView по умолчанию | | ruiTableColumn | Стиль колонки TableView по умолчанию | | ruiTableCell | Стиль ячейки TableView по умолчанию | -| ruiDisabledButton | Стиль Button если Свойство "disabled" установлено в true | +| ruiDisabledButton | Стиль Button если свойство "disabled" установлено в true | | ruiCheckbox | Стиль Checkbox | | ruiListItem | Стиль пункта ListView | | ruiListItemSelected | Стиль выбранного пункта ListView когда ListView не владеет фокусом | diff --git a/README.md b/README.md index aef4046..86d4206 100644 --- a/README.md +++ b/README.md @@ -745,7 +745,7 @@ If all the lines of the frame are the same, then the following properties can be |-----------|----------|----------|---------------------| | "style" | Style | int | Border line style | | "width" | Width | SizeUnit | Border line width | -| "color" | Color | Color | Border line color | +| "color" | ColorTag | Color | Border line color | Example @@ -836,6 +836,48 @@ equivalent to rui.ColorProperty: rui.Black, })) +### "outline" and "outline-offset" properties + +The "outline" property defines the border outside the View. +A frame line is described by three attributes: line style, thickness, and color. + +The "outline" property is similar to the "border" property. The three main differences between an "outline" frame and a "border" frame are: + +1) the "border" frame is always located inside the boundaries of the View, and the "outline" frame can be located both inside the View and outside it; + +2) all sides of the "outline" frame are the same, while the sides of the "border" frame can have different color, style and thickness. + +3) "border" thickness is added to "padding" and "outline" thickness does not affect "padding". + +The value of the "border" property is stored as an OutlineProperty interface that implements the Properties interface (see above). +OutlineProperty can contain the following properties: + +| Property | Constant | Type | Description | +|-----------|----------|----------|---------------------| +| "style" | Style | int | Border line style | +| "width" | Width | SizeUnit | Border line width | +| "color" | ColorTag | Color | Border line color | + +Line style can take the following values: + +| Value | Constant | Name | Description | +|:-----:|------------|----------|---------------------| +| 0 | NoneLine | "none" | No frame | +| 1 | SolidLine | "solid" | Solid line | +| 2 | DashedLine | "dashed" | Dashed line | +| 3 | DottedLine | "dotted" | Dotted line | +| 4 | DoubleLine | "double" | Double solid line | + +All other style values are ignored. + +The NewOutline function is used to create the OutlineProperty interface. + +By default, the inner border of the "outline" border is the same as the border of the View (i.e. the border is drawn around the View). +To change this behavior, use the "outline-offset" SizeUnit property (OutlineOffset constant). +This property defines the distance between the inner border of the frame and the border of the View. +A positive value moves the frame away from the View's boundaries, while a negative value forces the frame to be inside the View +(in this case, the frame is drawn on top of the contents of the View). + ### "radius" property The "radius" property sets the elliptical corner radius of the View. Radii are specified by the RadiusProperty diff --git a/propertyNames.go b/propertyNames.go index 553b865..0eebcf1 100644 --- a/propertyNames.go +++ b/propertyNames.go @@ -277,6 +277,10 @@ const ( // The "outline-width" SizeUnit property sets the width of an view's outline. OutlineWidth = "outline-width" + // OutlineWidth is the constant for the "outline-offset" property tag. + // The "outline-offset" SizeUnit property sets the amount of space between an outline and the edge or border of an element.. + OutlineOffset = "outline-offset" + // Shadow is the constant for the "shadow" property tag. // The "shadow" property adds shadow effects around a view's frame. A shadow is described // by X and Y offsets relative to the element, blur and spread radius, and color. diff --git a/propertySet.go b/propertySet.go index 0df23ce..5dc8bd9 100644 --- a/propertySet.go +++ b/propertySet.go @@ -136,6 +136,7 @@ var sizeProperties = map[string]string{ BorderTopWidth: BorderTopWidth, BorderBottomWidth: BorderBottomWidth, OutlineWidth: OutlineWidth, + OutlineOffset: OutlineOffset, XOffset: XOffset, YOffset: YOffset, BlurRadius: BlurRadius, diff --git a/viewStyle.go b/viewStyle.go index 98895e2..71b261f 100644 --- a/viewStyle.go +++ b/viewStyle.go @@ -212,7 +212,7 @@ func (style *viewStyle) cssViewStyle(builder cssBuilder, session Session) { for _, tag := range []string{ Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight, Left, Right, Top, Bottom, TextSize, TextIndent, LetterSpacing, WordSpacing, LineHeight, TextLineThickness, - ListRowGap, ListColumnGap, GridRowGap, GridColumnGap, ColumnGap, ColumnWidth} { + ListRowGap, ListColumnGap, GridRowGap, GridColumnGap, ColumnGap, ColumnWidth, OutlineOffset} { if size, ok := sizeProperty(style, tag, session); ok && size.Type != Auto { cssTag, ok := sizeProperties[tag] diff --git a/viewUtils.go b/viewUtils.go index fd8bb48..3322fbb 100644 --- a/viewUtils.go +++ b/viewUtils.go @@ -321,6 +321,12 @@ func GetOutline(view View, subviewID ...string) ViewOutline { return ViewOutline{Style: NoneLine, Width: AutoSize(), Color: 0} } +// GetOutlineOffset returns the subview outline offset. +// If the second argument (subviewID) is not specified or it is "" then a offset of the first argument (view) is returned +func GetOutlineOffset(view View, subviewID ...string) SizeUnit { + return sizeStyledProperty(view, subviewID, OutlineOffset, false) +} + // GetViewShadows returns shadows of the subview. // If the second argument (subviewID) is not specified or it is "" then shadows of the first argument (view) is returned. func GetViewShadows(view View, subviewID ...string) []ViewShadow {