From 7bb4da32bffa26bb3bb3fc2979a5fd0179f6b4b4 Mon Sep 17 00:00:00 2001 From: anoshenko Date: Fri, 11 Nov 2022 12:55:58 +0300 Subject: [PATCH] Added "srcset" property to ImageView --- README-ru.md | 1036 +++++++++++++++++++++++----------------------- README.md | 20 +- appWasm.go | 11 +- imageView.go | 49 ++- propertyNames.go | 7 + 5 files changed, 590 insertions(+), 533 deletions(-) diff --git a/README-ru.md b/README-ru.md index 784912c..e214ab5 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,6 @@ # Библиотека RUI -Библиотека RUI (Remoute User Interface) предназначена для создания web приложений на языке go. +Библиотека RUI (Remote User Interface) предназначена для создания web приложений на языке go. Особенностью библиотеки заключается в том, что вся обработка данных осуществляется на сервере, а браузер используется как тонкий клиент. Для связи клиента и сервера используется WebSocket. @@ -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)) -где первый параметр это имя отслеживаемого свойства, а второй - функция которая будет вызываться -какждый раз когда значение свойства изменится. +где первый параметр это имя отслеживаемого Свойства, а второй - функция которая будет вызываться +каждый раз когда значение Свойства изменится. Например @@ -466,11 +466,11 @@ 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 @@ -615,7 +615,7 @@ SizeUnit или имя константы (о константах ниже): Значение по умолчанию для всех типов View кроме многострочного редактора текста это NoneResize (0). Значение по умолчанию для многострочного редактора текста это BothResize (1). -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetResize(view View, subviewID ...string) int @@ -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" используются для установки сразу четырех отступов. Для установки -отдельных отступов используются следующие свойства: +отдельных отступов используются следующие Свойства: | Свойство | Константа | Описание | |------------------|--------------------|--------------------------| @@ -708,8 +708,8 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" Свойство "border" определяет рамку вокруг View. Линия рамки описывается тремя атрибутами: стиль линии, толщина и цвет. -Значение свойства "border" хранится в виде интерфейса BorderProperty, -реализующего интерфейс Properties (см. выше). BorderProperty может содержать следующие свойства: +Значение Свойства "border" хранится в виде интерфейса BorderProperty, +реализующего интерфейс Properties (см. выше). BorderProperty может содержать следующие Свойства: | Свойство | Константа | Тип | Описание | |----------------|-------------|----------|-----------------------------| @@ -740,7 +740,7 @@ BoundsProperty с помощью функции "Bounds(session Session) Bounds" Для создания интерфейса BorderProperty используется функция NewBorder. -Если все линии рамки одинаковы, то для задания стиля, толщины и цвета могут использоваться следующие свойства: +Если все линии рамки одинаковы, то для задания стиля, толщины и цвета могут использоваться следующие Свойства: | Свойство | Константа | Тип | Описание | |----------|---------------|----------|-----------------------| @@ -788,19 +788,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. -Для этого используются следующие свойства +Для этого используются следующие Свойства | Свойство | Константа | Тип | Описание | |-----------------------|-------------------|------------|-----------------------------| @@ -842,7 +842,7 @@ BorderProperty, а не структура ViewBorders. Получить стр Свойство "radius" задает эллиптический радиус скругления углов View. Радиусы задаются интерфейсом RadiusProperty реализующим интерфейс Properties (см. выше). -Для этого используются следующие свойства типа SizeUnit: +Для этого используются следующие Свойства типа SizeUnit: | Свойство | Константа | Описание | |------------------|--------------|--------------------------------| @@ -855,7 +855,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы | "bottom-right-x" | BottomRightX | x-радиус нижнего правого угла | | "bottom-right-y" | BottomRightY | y-радиус нижнего правого угла | -Если x- и y-радиусы одинаковы то можно воспользоваться вспомогательными свойствами +Если x- и y-радиусы одинаковы то можно воспользоваться вспомогательными Свойствами | Свойство | Константа | Описание | |----------------|--------------|------------------------------| @@ -864,7 +864,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы | "bottom-left" | BottomLeft | радиус нижнего левого угла | | "bottom-right" | BottomRight | радиус нижнего правого угла | -Для установки всех радиусов одинаковыми значениями используются свойства "x" и "y" +Для установки всех радиусов одинаковыми значениями используются Свойства "x" и "y" Интерфейс RadiusProperty создается с помощью функции NewRadiusProperty. Пример @@ -888,7 +888,7 @@ RadiusProperty реализующим интерфейс Properties (см. вы rui.BottomRightY: rui.Px(0), })) -Если все радиусы одинаковы, то данное значение типа SizeUnit может быть напрямую присвоено свойству "radius" +Если все радиусы одинаковы, то данное значение типа SizeUnit может быть напрямую присвоено Свойству "radius" view.Set(rui.Radius, rui.Px(4)) @@ -916,7 +916,7 @@ RadiusProperty имеет текстовое представление след | "bottom-right-y" | y-радиус нижнего правого угла | Значения вида " / " можно присваивать только -свойствам "top-left", "top-right", "bottom-left" и "bottom-right". +Свойствам "top-left", "top-right", "bottom-left" и "bottom-right". Примеры: @@ -942,15 +942,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,7 +984,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру ### Свойство "shadow" Свойство "shadow" позволяет задать тени для View. Теней может быть несколько. Тень описывается -с помощью интерфейса ViewShadow расширяющего интерфейс Properties (см. выше). У тени имеются следующие свойства: +с помощью интерфейса ViewShadow расширяющего интерфейс Properties (см. выше). У тени имеются следующие Свойства: | Свойство | Константа | Тип | Описание | |-----------------|---------------|----------|---------------------------------------------------------------| @@ -1012,16 +1012,16 @@ RadiusProperty, а не структура BoxRadius. Получить стру rui.Dilation : 16.0, }) -В качестве значения свойству "shadow" может быть присвоено ViewShadow, массив ViewShadow, +В качестве значения Свойству "shadow" может быть присвоено ViewShadow, массив ViewShadow, текстовое представление ViewShadow. Текстовое представление ViewShadow имеет следующий формат: _{ color = <цвет> [, x-offset = <смещение>] [, y-offset = <смещение>] [, blur = <радиус>] - [, spread-radius = <увеличени>] [, inset = <тип>] } + [, spread-radius = <увеличение>] [, inset = <тип>] } -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetViewShadows(view View, subviewID ...string) []ViewShadow @@ -1041,7 +1041,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру Свойство "background-clip" определяет как цвет фона и/или фоновое изображение будут выводиться под границами блока. -Если фоновое изображение или цвет не заданы, это свойство будет иметь визуальный эффект, только если у границы есть прозрачные области или частично непрозрачные области; в противном случае граница скрывает разницу. +Если фоновое изображение или цвет не заданы, это Свойство будет иметь визуальный эффект, только если у границы есть прозрачные области или частично непрозрачные области; в противном случае граница скрывает разницу. Свойство может принимать следующие значения: @@ -1054,7 +1054,7 @@ RadiusProperty, а не структура BoxRadius. Получить стру ### Свойство "background" В качестве фона View, помимо цвета, можно задать также картинки и/или градиентные заливки. -Для этого используется свойство "background". Фон может содержать несколько картинок и градиентов. +Для этого используется Свойство "background". Фон может содержать несколько картинок и градиентов. Каждый элемент фона описывается интерфейсом BackgroundElement. BackgroundElement может быть трех типов: линейный градиент, радиальный градиент и изображение. @@ -1165,7 +1165,7 @@ Angle задает угол относительно начального угл AngleUnit или string (угловая константа или текстовое описание угла). Поле Color является обязательным и не может быть nil. Поле Angle опционально, если оно равно nil, то угол -задается как середина между соседними углами. Для первго элемента угол по умолчанию равен 0°, для последнего - 360°. +задается как середина между соседними углами. Для первого элемента угол по умолчанию равен 0°, для последнего - 360°. * Repeating ("repeating") - булево значение, определяющее будет ли повторяться градиент после последнего ключевого угла. Необязательный параметр. Значение по умолчанию - false (не повторять) @@ -1277,12 +1277,12 @@ radius необходимо передать nil polygon{ points = ", , , ,…" } -### Свойство "оpacity" +### Свойство "opacity" -Свойство "оpacity" (константа Opacity) типа float64 задает прозрачность View. Допустимые значения от 0 до 1. +Свойство "opacity" (константа Opacity) типа float64 задает прозрачность View. Допустимые значения от 0 до 1. Где 1 - View полностью непрозрачен, 0 - полностью прозрачен. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetOpacity(view View, subviewID ...string) float64 @@ -1292,7 +1292,7 @@ radius необходимо передать nil В случае перекрытия элементов, это значение определяет порядок наложения. В общем случае, элементы с большим z-index перекрывают элементы с меньшим. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetZIndex(view View, subviewID ...string) int @@ -1306,16 +1306,16 @@ radius необходимо передать nil | 1 | Invisible | "invisible" | View невидим, но занимает место. | | 2 | Gone | "gone" | View невидим и не занимает место. | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetVisibility(view View, subviewID ...string) int ### Свойства "filter" и "backdrop-filter" -Свойство "filter" (константа Filter) применяет ко View такие графические эффекты, как размытие, смещение цвета, изменение яркости/контрасности и т.п. -Свойства "backdrop-filter" (константа BackdropFilter) применяет такие же эффекты но к содержимому располагающемося ниже View. +Свойство "filter" (константа Filter) применяет ко View такие графические эффекты, как размытие, смещение цвета, изменение яркости/контрастности и т.п. +Свойства "backdrop-filter" (константа BackdropFilter) применяет такие же эффекты но к содержимому располагающемся ниже View. -В качестве значения свойств "filter" и "backdrop-filter" используется только интерфейс ViewFilter. ViewFilter создается с помощью +В качестве значения Свойств "filter" и "backdrop-filter" используется только интерфейс ViewFilter. ViewFilter создается с помощью функции func NewViewFilter(params Params) ViewFilter @@ -1332,7 +1332,7 @@ radius необходимо передать nil | "hue-rotate" | HueRotate | AngleUnit | Вращение оттенка | | "invert" | Invert | float64 0…100% | Инвертирование цветов | | "opacity" | Opacity | float64 0…100% | Изменение прозрачности | -| "saturate" | Saturate | float64 0…10000% | Изменение насыщености | +| "saturate" | Saturate | float64 0…10000% | Изменение насыщенности | | "sepia" | Sepia | float64 0…100% | Преобразование в серпию | Получить значение текущего фильтра можно с помощью функций @@ -1343,7 +1343,7 @@ radius необходимо передать nil ### Свойство "semantics" Свойство "semantics" (константа Semantics) типа string определяет семантический смысл View. -Данное свойство может не иметь видимого эффекта, но позволяет поисковикам понимать структуру вашего приложения. +Данное Свойство может не иметь видимого эффекта, но позволяет поисковикам понимать структуру вашего приложения. Так же оно помогает озвучивать интерфейс системам для людей с ограниченными возможностями: | Значение | Имя | Семантика | @@ -1371,51 +1371,51 @@ radius необходимо передать nil ### Свойства текста -Все перечисленные в этом разделе свойства являются наследуемыми, т.е. свойство будет применяться не только ко View +Все перечисленные в этом разделе Свойства являются наследуемыми, т.е. Свойство будет применяться не только ко View для которого оно установлено, но и ко всем View вложенным в него. -Имеются следующие свойства для настройки параметров отображения текста: +Имеются следующие Свойства для настройки параметров отображения текста: #### Свойство "font-name" -Свойство "font-name" (константа FontName) - текстовое свойство определяет имя используемого шрифта. +Свойство "font-name" (константа FontName) - текстовое Свойство определяет имя используемого шрифта. Может задаваться несколько шрифтов. В этом случае они разделяются пробелом. Шрифты применяются в том порядке в котором они перечислены. Т.е. сначала применяется первый, если он недоступен, то второй, третий и т.д. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetFontName(view View, subviewID ...string) string #### Свойство "text-color" -Свойство "text-color" (константа TextColor) - свойство типа Color определяет цвет текста. +Свойство "text-color" (константа TextColor) - Свойство типа Color определяет цвет текста. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextColor(view View, subviewID ...string) Color #### Свойство "text-size" -Свойство "text-size" (константа TextSize) - свойство типа SizeUnit определяет размер шрифта. +Свойство "text-size" (константа TextSize) - Свойство типа SizeUnit определяет размер шрифта. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextSize(view View, subviewID ...string) SizeUnit #### Свойство "italic" -Свойство "italic" (константа Italic) - свойство типа bool. Если значение равно true, то к тексту применяется курсивное начертание +Свойство "italic" (константа Italic) - Свойство типа bool. Если значение равно true, то к тексту применяется курсивное начертание -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func IsItalic(view View, subviewID ...string) bool #### Свойство "small-caps" -Свойство "small-caps" (константа SmallCaps) - свойство типа bool. Если значение равно true, то к тексту применяется начертание капителью +Свойство "small-caps" (константа SmallCaps) - Свойство типа bool. Если значение равно true, то к тексту применяется начертание капителью -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func IsSmallCaps(view View, subviewID ...string) bool @@ -1447,7 +1447,7 @@ radius необходимо передать nil * Строки переносятся по любым пробелам, в том числе в середине последовательности пробелов. * Пробелы занимают место и не висят на концах строк, а значит влияют на внутренние размеры (min-content и max-content). -В приведённой ниже таблице указано поведение различных значений свойства "white-space" +В приведённой ниже таблице указано поведение различных значений Свойства "white-space" | | Новые строки | Пробелы и табуляция | Перенос по словам | Пробелы в конце строки | |-----------------------|-----------------------------|-----------------------------|-------------------|-----------------------------| @@ -1461,7 +1461,7 @@ radius необходимо передать nil #### Свойство "tab-size" Свойство "tab-size" (константа TabSize) типа int задает размер символа табуляции (U+0009) в пробелах. -Значение свойства "tab-size" должно быть больше 0. +Значение Свойства "tab-size" должно быть больше 0. #### Свойство "word-break" @@ -1482,7 +1482,7 @@ radius необходимо передать nil #### Свойства "strikethrough", "overline" и "underline" -Данные свойства устанавливают декоративные линии на тексте: +Данные Свойства устанавливают декоративные линии на тексте: | Свойство | Константа | Тип декоративной линии | |-----------------|----------------|-----------------------------| @@ -1490,7 +1490,7 @@ radius необходимо передать nil | "overline" | Overline | Линия над текстом | | "underline" | Underline | Линия под текстом | -Получить значение данных свойств можно с помощью функций +Получить значение данных Свойств можно с помощью функций func IsStrikethrough(view View, subviewID ...string) bool func IsOverline(view View, subviewID ...string) bool @@ -1498,17 +1498,17 @@ radius необходимо передать nil #### Свойство "text-line-thickness" -Свойство "text-line-thickness" (константа TextLineThickness) - свойство типа SizeUnit. -Свойство устанавливает толщину декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". +Свойство "text-line-thickness" (константа TextLineThickness) - Свойство типа SizeUnit. +Свойство устанавливает толщину декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции GetTextLineThickness(view View, subviewID ...string) SizeUnit #### Свойство "text-line-style" -Свойство "text-line-style" (константа TextLineStyle) - свойство типа int. -Свойство устанавливает стиль декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". +Свойство "text-line-style" (константа TextLineStyle) - Свойство типа int. +Свойство устанавливает стиль декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". Возможны следующие значения: | Значение | Константа | Имя | Описание | @@ -1519,41 +1519,41 @@ radius необходимо передать nil | 4 | DoubleLine | "double" | Двойная сплошная линия | | 5 | WavyLine | "wavy" | Волнистая линия | -Если свойство не определено то используется сплошная линия (SolidLine (1)). +Если Свойство не определено то используется сплошная линия (SolidLine (1)). -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextLineStyle(view View, subviewID ...string) int #### Свойство "text-line-color" -Свойство "text-line-color" (константа TextLineColor) - свойство типа Color. -Свойство устанавливает цвет декоративных линий на тексте заданных с помощью свойств "strikethrough", "overline" и "underline". -Если свойство не определено то для линий используется цвет текста заданный с помощью свойства "text-color". +Свойство "text-line-color" (константа TextLineColor) - Свойство типа Color. +Свойство устанавливает цвет декоративных линий на тексте заданных с помощью Свойств "strikethrough", "overline" и "underline". +Если Свойство не определено то для линий используется цвет текста заданный с помощью Свойства "text-color". -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextLineColor(view View, subviewID ...string) Color #### Свойство "text-weight" -Свойство "text-weight" (константа TextWeight) - свойство типа int устанавливает начертание шрифта. Допустимые значения: +Свойство "text-weight" (константа TextWeight) - Свойство типа int устанавливает начертание шрифта. Допустимые значения: -| Значение | Константа | Общее название начертания | -|:--------:|----------------|-----------------------------------------------------------------| -| 1 | ThinFont | Тонкий (Волосяной) Thin (Hairline) | -| 2 | ExtraLightFont | Дополнительный светлый (Сверхсветлый) Extra Light (Ultra Light) | -| 3 | LightFont | Светлый Light | -| 4 | NormalFont | Нормальный Normal. Значение по умолчанию | -| 5 | MediumFont | Средний Medium | -| 6 | SemiBoldFont | Полужирный Semi Bold (Demi Bold) | -| 7 | BoldFont | Жирный Bold | -| 8 | ExtraBoldFont | Дополнительный жирный (Сверхжирный) Extra Bold (Ultra Bold) | -| 9 | BlackFont | Чёрный (Густой) Black (Heavy) | +| Значение | Константа | Общее название начертания | +|:--------:|----------------|------------------------------------------------------------------| +| 1 | ThinFont | Тонкий (Волосяной) Thin (Hairline) | +| 2 | ExtraLightFont | Дополнительный светлый (Сверх светлый) Extra Light (Ultra Light) | +| 3 | LightFont | Светлый Light | +| 4 | NormalFont | Нормальный Normal. Значение по умолчанию | +| 5 | MediumFont | Средний Medium | +| 6 | SemiBoldFont | Полужирный Semi Bold (Demi Bold) | +| 7 | BoldFont | Жирный Bold | +| 8 | ExtraBoldFont | Дополнительный жирный (Сверх жирный) Extra Bold (Ultra Bold) | +| 9 | BlackFont | Чёрный (Густой) Black (Heavy) | -Некоторые шрифты доступны только в нормальном или полужирном начертании. В этом случае значение данного свойства игнорируется +Некоторые шрифты доступны только в нормальном или полужирном начертании. В этом случае значение данного Свойства игнорируется -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextWeight(view View, subviewID ...string) int @@ -1561,7 +1561,7 @@ radius необходимо передать nil Свойство "text-shadow" позволяет задать тени для текста. Теней может быть несколько. Тень описывается с помощью интерфейса ViewShadow (см. выше, раздел "Свойство 'shadow'"). Для тени текста используются только -свойства "color", "x-offset", "y-offset" и "blur". Свойства "inset" и "spread-radius" игнорируются (т.е. их +Свойства "color", "x-offset", "y-offset" и "blur". Свойства "inset" и "spread-radius" игнорируются (т.е. их задание не является ошибкой, просто никакого влияния на тень текста они не имеют). Для создания ViewShadow для тени текста используются функции: @@ -1577,10 +1577,10 @@ radius необходимо передать nil rui.BlurRadius : 8.0, }) -В качестве значения свойству "text-shadow" может быть присвоено ViewShadow, массив ViewShadow, +В качестве значения Свойству "text-shadow" может быть присвоено ViewShadow, массив ViewShadow, текстовое представление ViewShadow (см. выше, раздел "Свойство 'shadow'"). -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextShadows(view View, subviewID ...string) []ViewShadow @@ -1588,7 +1588,7 @@ radius необходимо передать nil #### Свойство "text-align" -Свойство "text-align" (константа TextAlign) - свойство типа int устанавливает выравнивание текста. Допустимые значения: +Свойство "text-align" (константа TextAlign) - Свойство типа int устанавливает выравнивание текста. Допустимые значения: | Значение | Константа | Имя | Значение | |:--------:|--------------|-----------|------------------------------| @@ -1597,49 +1597,49 @@ radius необходимо передать nil | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | JustifyAlign | "justify" | Выравнивание по ширине | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextAlign(view View, subviewID ...string) int #### Свойство "text-indent" -Свойство "text-indent" (TextIndent) - свойство типа SizeUnit определяет размер отступа (пустого места) перед первой строкой текста. +Свойство "text-indent" (TextIndent) - Свойство типа SizeUnit определяет размер отступа (пустого места) перед первой строкой текста. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextIndent(view View, subviewID ...string) SizeUnit #### Свойство "letter-spacing" -Свойство "letter-spacing" (LetterSpacing) - свойство типа SizeUnit определяет межбуквенное расстояние в тексте. +Свойство "letter-spacing" (LetterSpacing) - Свойство типа SizeUnit определяет межбуквенное расстояние в тексте. Значение может быть отрицательным, но при этом могут быть ограничения, зависящие от конкретной реализации. Агент пользователя может не увеличивать или уменьшать межбуквенное расстояние для выравнивания текста. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetLetterSpacing(view View, subviewID ...string) SizeUnit #### Свойство "word-spacing" -Свойство "word-spacing" (константа WordSpacing) - свойство типа SizeUnit определяет длину пробела между словами. +Свойство "word-spacing" (константа WordSpacing) - Свойство типа SizeUnit определяет длину пробела между словами. Если величина задана в процентах, то она определяет дополнительный интервал как процент от предварительной ширины символа. В остальных случаях она определяет дополнительный интервал в дополнение к внутреннему интервалу между словами, определяемому шрифтом. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetWordSpacing(view View, subviewID ...string) SizeUnit #### Свойство "line-height" -Свойство "line-height" (константа LineHeight) - свойство типа SizeUnit устанавливает величину пространства между строками. +Свойство "line-height" (константа LineHeight) - Свойство типа SizeUnit устанавливает величину пространства между строками. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetLineHeight(view View, subviewID ...string) SizeUnit #### Свойство "text-transform" -Свойство "text-transform" (константа TextTransform) - свойство типа int определяет регистр символов. Допустимые значения: +Свойство "text-transform" (константа TextTransform) - Свойство типа int определяет регистр символов. Допустимые значения: | Значение | Константа | Преобразование регистра | |:--------:|-------------------------|-----------------------------------------| @@ -1648,13 +1648,13 @@ radius необходимо передать nil | 2 | LowerCaseTextTransform | Все символы строчные | | 3 | UpperCaseTextTransform | Все символы заглавные | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextTransform(view View, subviewID ...string) int #### Свойство "text-direction" -Свойство "text-direction" (константа TextDirection) - свойство типа int определяет направление вывода текста. Допустимые значения: +Свойство "text-direction" (константа TextDirection) - Свойство типа int определяет направление вывода текста. Допустимые значения: | Значение | Константа | Направление вывода текста | |:--------:|-------------------------|--------------------------------------------------------------------------| @@ -1662,24 +1662,24 @@ radius необходимо передать nil | 1 | LeftToRightDirection | Слева направо. Используется для английского и большинства других языков. | | 2 | RightToLeftDirection | Справа налево. Используется для иврит, арабский и некоторых других. | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTextDirection(view View, subviewID ...string) int #### Свойство "writing-mode" -Свойство "writing-mode" (константа WritingMode) - свойство типа int определяет как располагаются строки текста +Свойство "writing-mode" (константа WritingMode) - Свойство типа int определяет как располагаются строки текста вертикально или горизонтально, а также направление в котором выводятся строки. Возможны следующие значения: | Значение | Константа | Значение | |:--------:|-----------------------|--------------------------------------------------------------------| -| 0 | HorizontalTopToBottom | Горизонтальные строки выводятся сверху сниз. Значение по умолчанию | +| 0 | HorizontalTopToBottom | Горизонтальные строки выводятся сверху вниз. Значение по умолчанию | | 1 | HorizontalBottomToTop | Горизонтальные строки выводятся снизу вверх. | | 2 | VerticalRightToLeft | Вертикальные строки выводятся справа налево. | | 3 | VerticalLeftToRight | Вертикальные строки выводятся слева направо. | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetWritingMode(view View, subviewID ...string) int @@ -1694,29 +1694,29 @@ radius необходимо передать nil | 0 | MixedTextOrientation | Символы повернуты на 90 по часовой стрелке. Значение по умолчанию. | | 1 | UprightTextOrientation | Символы расположены нормально (вертикально). | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetVerticalTextOrientation(view View, subviewID ...string) int #### Свойство "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" наследуемое, т.е. если вы установите его для контейнера, то оно также примениться ко всем дочерним элементам -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func IsUserSelect(view View, subviewID ...string) bool ### Свойства трансформации -Данные свойства используются для трансформации (наклон, масштабирование и т.п.) содержимого View. +Данные Свойства используются для трансформации (наклон, масштабирование и т.п.) содержимого View. #### Свойство "perspective" @@ -1724,23 +1724,23 @@ radius необходимо передать nil для того чтобы придать 3D-позиционируемому элементу эффект перспективы. Каждый трансформируемый элемент с z > 0 станет больше, с z < 0 соответственно меньше. -Элементы части которые находятся за пользователем, т.е. z-координата этих элементов больше чем значение свойства perspective, не отрисовываются. +Элементы части которые находятся за пользователем, т.е. z-координата этих элементов больше чем значение Свойства perspective, не отрисовываются. -Точка схождения по умолчанию расположена в центре элемента, но её можно переместить используя свойства +Точка схождения по умолчанию расположена в центре элемента, но её можно переместить используя Свойства "perspective-origin-x" и "perspective-origin-y". -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetPerspective(view View, subviewID ...string) SizeUnit #### Свойства "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) @@ -1751,9 +1751,9 @@ radius необходимо передать nil Задняя поверхность элемента является зеркальным отражением его передней поверхности. Однако невидимая в 2D, задняя грань может быть видимой, когда преобразование вызывает вращение элемента в 3D пространстве. -(Это свойство не влияет на 2D-преобразования, которые не имеют перспективы.) +(Это Свойство не влияет на 2D-преобразования, которые не имеют перспективы.) -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetBackfaceVisible(view View, subviewID ...string) bool @@ -1764,9 +1764,9 @@ radius необходимо передать nil Исходная точка преобразования - это точка, вокруг которой происходит преобразование. Например, вращение. -Свойство "origin-z" игнорируется если не установлено свойство "perspective". +Свойство "origin-z" игнорируется если не установлено Свойство "perspective". -Получить значение данных свойств можно с помощью функции +Получить значение данных Свойств можно с помощью функции func GetOrigin(view View, subviewID ...string) (SizeUnit, SizeUnit, SizeUnit) @@ -1775,9 +1775,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) @@ -1788,26 +1788,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) @@ -1815,15 +1815,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) ### События клавиатуры @@ -1848,8 +1848,8 @@ radius необходимо передать nil | Repeat | bool | Повторное нажатие: клавиша была нажата до тех пор, пока её ввод не начал автоматически повторяться. | | CtrlKey | bool | Клавиша Ctrl была активна, когда возникло событие. | | ShiftKey | bool | Клавиша Shift была активна, когда возникло событие. | -| AltKey | bool | Kлавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | -| MetaKey | bool | Kлавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| +| AltKey | bool | Клавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | +| MetaKey | bool | Клавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| Можно также использовать слушателей следующих форматов: @@ -1893,11 +1893,11 @@ radius необходимо передать nil | "mouse-down" | MouseDown | Клавиша мыши была нажата. | | "mouse-up" | MouseUp | Клавиша мыши была отпущена. | | "mouse-move" | MouseMove | Переместился курсор мыши | -| "mouse-out" | MouseOut | Курсор мыши вышел за пределы View, или зашел в дочерной View | +| "mouse-out" | MouseOut | Курсор мыши вышел за пределы View, или зашел в дочерней View | | "mouse-over" | MouseOver | Курсор мыши зашел в пределы View | | "click-event" | ClickEvent | Произошел клик мышкой | | "double-click-event" | DoubleClickEvent | Произошел двойной клик мышкой | -| "context-menu-event" | ContextMenuEvent | Нажета клавиша вызова контекстного меню (правая кнопка мыши) | +| "context-menu-event" | ContextMenuEvent | Нажата клавиша вызова контекстного меню (правая кнопка мыши) | Основной слушатель данных событий имеет следующий формат: @@ -1909,17 +1909,17 @@ radius необходимо передать nil |-----------|---------|----------------------------------------------------------------------------------------------------------------------| | TimeStamp | uint64 | Время, когда событие было создано (в миллисекундах). Точка отсчета зависит от реализации браузера (ЭПОХА, запуск браузера и т.п.). | | Button | int | Номер кнопки мыши, нажатие на которую инициировало событие | -| Buttons | int | Битовая маска, показывающия какие кнопки мыши были нажаты в момент возникновения события | +| Buttons | int | Битовая маска, показывающая какие кнопки мыши были нажаты в момент возникновения события | | X | float64 | Горизонтальная позиция мыши относительно начала координат View | | Y | float64 | Вертикальная позиция мыши относительно начала координат View | -| ClientX | float64 | Горизонтальная позиция мыши относительно левого верхнего угда приложения | -| ClientY | float64 | Вертикальная позиция мыши относительно левого верхнего угда приложения | -| ScreenX | float64 | Горизонтальная позиция мыши относительно левого верхнего угда экрана | -| ScreenY | float64 | Вертикальная позиция мыши относительно левого верхнего угда экрана | +| ClientX | float64 | Горизонтальная позиция мыши относительно левого верхнего угла приложения | +| ClientY | float64 | Вертикальная позиция мыши относительно левого верхнего угла приложения | +| ScreenX | float64 | Горизонтальная позиция мыши относительно левого верхнего угла экрана | +| ScreenY | float64 | Вертикальная позиция мыши относительно левого верхнего угла экрана | | CtrlKey | bool | Клавиша Ctrl была активна, когда возникло событие. | | ShiftKey | bool | Клавиша Shift была активна, когда возникло событие. | -| AltKey | bool | Kлавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | -| MetaKey | bool | Kлавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| +| AltKey | bool | Клавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | +| MetaKey | bool | Клавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| Поле Button может принимать следующие значения @@ -1932,7 +1932,7 @@ radius необходимо передать nil | 3 | MouseButton4 | Четвёртая кнопка мыши. Обычно кнопка браузера Назад | | 4 | MouseButton5 | Пятая кнопка мыши. Обычно кнопка браузера Вперёд | -Поле Button преставляет собой битовую маску объединающую (с помощью ИЛИ) следующие значения +Поле Button представляет собой битовую маску объединяющую (с помощью ИЛИ) следующие значения | Значение | Константа | Описание | |:--------:|--------------------|------------------------| @@ -1973,7 +1973,7 @@ radius необходимо передать nil | "pointer-up" | PointerUp | Указатель был отпущен. | | "pointer-move" | PointerMove | Указатель перемещен | | "pointer-cancel" | PointerCancel | События указателя прерваны. | -| "pointer-out" | PointerOut | Указатель вышел за пределы View, или зашел в дочерной View | +| "pointer-out" | PointerOut | Указатель вышел за пределы View, или зашел в дочерней View | | "pointer-over" | PointerOver | Указатель зашел в пределы View | Основной слушатель данных событий имеет следующий формат: @@ -2035,20 +2035,20 @@ radius необходимо передать nil | Touches | []Touch | Массив структур Touch, каждая из которых описывает одно касание | | CtrlKey | bool | Клавиша Ctrl была активна, когда возникло событие. | | ShiftKey | bool | Клавиша Shift была активна, когда возникло событие. | -| AltKey | bool | Kлавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | -| MetaKey | bool | Kлавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| +| AltKey | bool | Клавиша Alt ( Option или ⌥ в OS X) была активна, когда возникло событие. | +| MetaKey | bool | Клавиша Meta (для Mac это клавиша ⌘ Command; для Windows - клавиша "Windows" ⊞) была активна, когда возникло событие.| Структура Touch описывает одиночное касание и имеет следующие поля | Поле | Тип | Описание | |---------------|---------|--------------------------------------------------------------------------------------------------------------------------| -| Identifier | int | Уникальный идентификатор присваюваемый каждому касанию и не меняющийся до его завершения. | +| Identifier | int | Уникальный идентификатор присваиваемый каждому касанию и не меняющийся до его завершения. | | X | float64 | Горизонтальная позиция мыши относительно начала координат View | | Y | float64 | Вертикальная позиция мыши относительно начала координат View | -| ClientX | float64 | Горизонтальная позиция мыши относительно левого верхнего угда приложения | -| ClientY | float64 | Вертикальная позиция мыши относительно левого верхнего угда приложения | -| ScreenX | float64 | Горизонтальная позиция мыши относительно левого верхнего угда экрана | -| ScreenY | float64 | Вертикальная позиция мыши относительно левого верхнего угда экрана | +| ClientX | float64 | Горизонтальная позиция мыши относительно левого верхнего угла приложения | +| ClientY | float64 | Вертикальная позиция мыши относительно левого верхнего угла приложения | +| ScreenX | float64 | Горизонтальная позиция мыши относительно левого верхнего угла экрана | +| ScreenY | float64 | Вертикальная позиция мыши относительно левого верхнего угла экрана | | RadiusX | float64 | x-радиус эллипса в пикселях, который наиболее точно ограничивает область контакта с экраном. | | RadiusY | float64 | y-радиус эллипса в пикселях, который наиболее точно ограничивает область контакта с экраном. | | RotationAngle | float64 | Угол (в градусах), на который нужно повернуть по часовой стрелке эллипс, описываемый параметрами radiusX и radiusY, чтобы наиболее точно покрыть область контакта между пользователем и поверхностью. | @@ -2080,7 +2080,7 @@ radius необходимо передать nil Left, Top, Width, Height float64 } -Соотвественно элементы Frame содержат следующие данные +Соответственно элементы Frame содержат следующие данные * Left - новое смещение в пикселях по горизонтали относительно родительского View (левая позиция); * Top - новое смещение в пикселях по вертикали относительно родительского View (верхняя позиция) * Width - новая ширина видимой части View в пикселях; @@ -2106,7 +2106,7 @@ radius необходимо передать nil ### Событие прокрутки -Событие "scroll-event" (константа ScrollEvent) созникает при прокрутке содержимого View. +Событие "scroll-event" (константа ScrollEvent) возникает при прокрутке содержимого View. Основной слушатель данных событий имеет следующий формат: func(View, Frame) @@ -2149,18 +2149,18 @@ radius необходимо передать nil дочерних элементов интерфейса (View). ViewsContainer является базовым для других контейнеров (ListLayout, GridLayout, StackLayout и т.д.) и самостоятельно не используется. -Помимо всех свойств View данный элемент имеет всего одно дополнительное свойство "content" +Помимо всех Свойств View данный элемент имеет всего одно дополнительное Свойство "content" ### "content" -Свойство "content" (константа Сontent) определяет массив дочерних View. Функция Get интерфейса -для данного свойства всегда возвращает []View. +Свойство "content" (константа Content) определяет массив дочерних View. Функция Get интерфейса +для данного Свойства всегда возвращает []View. -В качестве значения свойства "content" могут быть переданы следующие 5 типов данных: +В качестве значения Свойства "content" могут быть переданы следующие 5 типов данных: * View - преобразуется во []View, содержащий один элемент; -* []View - nil-элементы запрещены, если массив будет содержать nil, то свойство не будет +* []View - nil-элементы запрещены, если массив будет содержать nil, то Свойство не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке; * string - если строка является текстовым представление View, то создается соответствующий View, @@ -2170,14 +2170,14 @@ radius необходимо передать nil * []string - каждый элемент массива преобразуется во View как описано в предыдущем пункте; * []any - данный массив должен содержать только View и string. Каждый string-элемент -преобразуется во View, как описано выше. Если массив будет содержать недопустимае значения, -то свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке. +преобразуется во View, как описано выше. Если массив будет содержать недопустимое значения, +то Свойство "content" не будет установлено, а функция Set вернет false и в лог запишется сообщение об ошибке. -Поучить значение свойства "content" можно с помощи функции интерфейса ViewsContainer +Поучить значение Свойства "content" можно с помощи функции интерфейса ViewsContainer Views() []View -Для редактирования свойства "content" можно использовать следующие функции интерфейса ViewsContainer: +Для редактирования Свойства "content" можно использовать следующие функции интерфейса ViewsContainer: Append(view View) @@ -2200,7 +2200,7 @@ ListLayout является контейнером, реализующим ин func NewListLayout(session Session, params Params) ListLayout Элементы в данном контейнере располагаются в виде списка. Расположением дочерних элементов можно управлять. -Для этого ListLayout имеет ряд свойств +Для этого ListLayout имеет ряд Свойств ### "orientation" @@ -2215,7 +2215,7 @@ ListLayout является контейнером, реализующим ин | 3 | EndToStartOrientation | Дочерние элементы располагаются в строку с конца в начала. | Положение начала и конца для StartToEndOrientation и EndToStartOrientation зависит от значения -свойства "text-direction". Для языков с письмом справа налево (арабский, иврит) начало находится +Свойства "text-direction". Для языков с письмом справа налево (арабский, иврит) начало находится справа, для остальных языков - слева. ### "list-wrap" @@ -2245,7 +2245,7 @@ ListLayout является контейнером, реализующим ин ### "horizontal-align" -Свойство "horizontal-align" (константа HorizontalAlign) типа int устанавливет +Свойство "horizontal-align" (константа HorizontalAlign) типа int устанавливает горизонтальное выравнивание элементов в списке. Допустимые значения: | Значение | Константа | Имя | Значение | @@ -2272,8 +2272,8 @@ GridLayout является контейнером, реализующим ин ### "column" и "row" -Расположение View внутри GridLayout определяется с помощью свойств "column" и "row". -Данные свойства устанавливаться для каждого из дочерних View. +Расположение View внутри GridLayout определяется с помощью Свойств "column" и "row". +Данные Свойства устанавливаться для каждого из дочерних View. Дочерний View может занимать несколько ячеек внутри GridLayout. При этом они могут перекрываться. @@ -2308,17 +2308,17 @@ GridLayout является контейнером, реализующим ин }) В данном примере view1 занимает в нулевой строке столбцы 1 и 2, а view1 занимает -в нулевом стобце строки 0, 1 и 2. +в нулевом столбце строки 0, 1 и 2. ### "grid-auto-flow" -Если для дочерних View не задаются свойства "row" и "column", то используется автоматический алгоритм размещения элементов. -Возможны четыре варианта данного алгоритма. Используемый вариант задается с помощью свойства "grid-auto-flow" типа int. -Cвойство "grid-auto-flow" может принимать следующие значения: +Если для дочерних View не задаются Свойства "row" и "column", то используется автоматический алгоритм размещения элементов. +Возможны четыре варианта данного алгоритма. Используемый вариант задается с помощью Свойства "grid-auto-flow" типа int. +Свойство "grid-auto-flow" может принимать следующие значения: * RowAutoFlow (0) (text name "row") - Views размещаются путем заполнения каждой строки по очереди, добавляя новые столбцы по мере необходимости; -* ColumnAutoFlow (1) (text name "colunm") - Views размещаются путем заполнения каждого столбца по очереди, добавляя новые столбцы по мере необходимости; +* ColumnAutoFlow (1) (text name "column") - Views размещаются путем заполнения каждого столбца по очереди, добавляя новые столбцы по мере необходимости; * RowDenseAutoFlow (2) (text name "row-dense") - Views размещаются путем заполнения каждой строки и добавления новых строк по мере необходимости. Алгоритм «плотной» упаковки пытается заполнить дыры в сетке передвигая более мелкие View вперед очереди. @@ -2331,13 +2331,13 @@ Cвойство "grid-auto-flow" может принимать следующи По умолчанию размеры ячеек вычисляются на основе размеров помещенных в них дочерних View. Свойства "cell-width" и "cell-height" (константы CellWidth и CellHeight) позволяют установить фиксированную ширину и высоту ячеек независимо от размеров дочерних элементов. -Данные свойства имеют тип []SizeUnit. Каждый элемент массива определяет размер соответствующего +Данные Свойства имеют тип []SizeUnit. Каждый элемент массива определяет размер соответствующего столбца или строки. -Данным свойствам могут быть присвоены следующие типы данных: +Данным Свойствам могут быть присвоены следующие типы данных: * SizeUnit или текстовое представление SizeUnit (или SizeUnit константа). В этом случае -соотвествующие размеры всех ячеек устанавливаются одинаковыми; +соответствующие размеры всех ячеек устанавливаются одинаковыми; * []SizeUnit; @@ -2348,10 +2348,10 @@ Cвойство "grid-auto-flow" может принимать следующи * []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 может быть как целым, так и дробным. @@ -2377,7 +2377,7 @@ Cвойство "grid-auto-flow" может принимать следующи ### "cell-horizontal-align" -Свойство "cell-horizontal-align" (константа CellHorizontalAlign) типа int устанавливет +Свойство "cell-horizontal-align" (константа CellHorizontalAlign) типа int устанавливает горизонтальное выравнивание дочерних элементов внутри занимаемой ячейки. Допустимые значения: | Значение | Константа | Имя | Значение | @@ -2393,7 +2393,7 @@ Cвойство "grid-auto-flow" может принимать следующи ColumnLayout является контейнером, реализующим интерфейс ViewsContainer. Все дочерние View располагаются в виде вертикального списка выровненные по левому или правому краю и разбитого -на несколько колонок. Выравнивание зависит от свойства "text-direction". +на несколько колонок. Выравнивание зависит от Свойства "text-direction". Для создания ColumnLayout используется функция @@ -2401,29 +2401,29 @@ ColumnLayout является контейнером, реализующим и ### Свойство "column-count" -Свойство "column-count" (константа ColumnCount) типа int устанавливет количество колонок. +Свойство "column-count" (константа ColumnCount) типа int устанавливает количество колонок. -Если данное свойство равно 0 и не задано свойство "column-width", то разбитие на колонки +Если данное Свойство равно 0 и не задано Свойство "column-width", то разбитие на колонки не выполняется, а контейнер прокручивается вниз. -Если значение данного свойства больше 0, то список разбивается на колонки. Высота колонки +Если значение данного Свойства больше 0, то список разбивается на колонки. Высота колонки равна высоте ColumnLayout, а ширина вычисляется как ширина ColumnLayout делённая на -"column-count". Каждая следующая колонка располагается в зависимости от свойства +"column-count". Каждая следующая колонка располагается в зависимости от Свойства "text-direction" справа или слева от предыдущей, а контейнер прокручивается по горизонтали. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetColumnCount(view View, subviewID ...string) int ### Свойство "column-width" Свойство "column-width" (константа ColumnWidth) типа SizeUnit используется только если -"column-count" равно 0 и устанавливет ширину колонки. +"column-count" равно 0 и устанавливает ширину колонки. ВАЖНО! В качестве значения "column-width" нельзя использовать проценты (т.е. если вы зададите значение в процентах, то это проигнорируется системой) -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetColumnWidth(view View, subviewID ...string) SizeUnit @@ -2431,7 +2431,7 @@ ColumnLayout является контейнером, реализующим и Свойство "column-gap" (константа ColumnGap) типа SizeUnit устанавливает ширину разрыва между колонками. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetColumnGap(view View, subviewID ...string) SizeUnit @@ -2440,8 +2440,8 @@ ColumnLayout является контейнером, реализующим и Свойство "column-separator" (константа ColumnSeparator) позволяет задать линию которая будет рисоваться в разрывах колонок. Линия рамки описывается тремя атрибутами: стиль линии, толщина и цвет. -Значение свойства "column-separator" хранится в виде интерфейса ColumnSeparatorProperty, -реализующего интерфейс Properties (см. выше). ColumnSeparatorProperty может содержать следующие свойства: +Значение Свойства "column-separator" хранится в виде интерфейса ColumnSeparatorProperty, +реализующего интерфейс Properties (см. выше). ColumnSeparatorProperty может содержать следующие Свойства: | Свойство | Константа | Тип | Описание | |----------|---------------|----------|------------------| @@ -2476,15 +2476,15 @@ ViewBorder описана как } Структура ViewBorder может быть передана в качестве параметра функции Set при установке значения -свойства "column-separator". При этом ViewBorder преобразуется в ColumnSeparatorProperty. -Поэтому при чтении свойства функцией Get будет возвращен интерфейс ColumnSeparatorProperty, +Свойства "column-separator". При этом ViewBorder преобразуется в ColumnSeparatorProperty. +Поэтому при чтении Свойства функцией Get будет возвращен интерфейс ColumnSeparatorProperty, а не структура ViewBorder. Получить структуру ViewBorders без дополнительных преобразований можно с помощью глобальной функции func GetColumnSeparator(view View, subviewID ...string) ViewBorder Вы также можете устанавливать отдельные атрибуты линии использую функцию Set интерфейса View. -Для этого используются следующие свойства +Для этого используются следующие Свойства | Свойство | Константа | Тип | Описание | |--------------------------|----------------------|----------|---------------| @@ -2513,11 +2513,11 @@ ViewBorder описана как заголовок картинки и сама картинки и т.д. Свойство "avoid-break" (константа AvoidBreak) типа bool позволяет избежать этого эффекта. -Необходимо установить для View, который нельзя разрывать, данное свойство со значением "true". -Соответственно значение "false" данного свойства позволяет разрывать View. +Необходимо установить для View, который нельзя разрывать, данное Свойство со значением "true". +Соответственно значение "false" данного Свойства позволяет разрывать View. Значение по умолчанию "false". -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetAvoidBreak(view View, subviewID ...string) bool @@ -2531,19 +2531,19 @@ 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()) Данная функция добавляет новый View в контейнер и делает его текущим. Она похожа на Append, -но в отличие от нее дабавление выполняется с использованием эффекта анимации. Вид анимации +но в отличие от нее добавление выполняется с использованием эффекта анимации. Вид анимации задается вторым аргументом и может принимать следующие значения: | Значение | Константа | Анимация | |:--------:|---------------------|-----------------------------| | 0 | DefaultAnimation | Анимация по умолчанию. Для функции Push это EndToStartAnimation, для Pop - StartToEndAnimation | -| 1 | StartToEndAnimation | Анимация из начала в конец. Начало и конец определются направлением вывода текста | +| 1 | StartToEndAnimation | Анимация из начала в конец. Начало и конец определяются направлением вывода текста | | 2 | EndToStartAnimation | Анимация из конца в начало. | | 3 | TopDownAnimation | Анимация сверху вниз. | | 4 | BottomUpAnimation | Анимация снизу вверх. | @@ -2554,14 +2554,14 @@ StackLayout является контейнером, реализующим ин Данная функция удаляет текущий View из контейнера используя анимацию. Второй аргумент onPopFinished - функция вызываемая по окончании анимации. Может быть nil. -Функция вернёт false если StackLayout пуст и true если текущий элемени был удален. +Функция вернёт false если StackLayout пуст и true если текущий элемент был удален. Получить текущий (видимый) View можно с помощью функции интерфейса Peek() View Так же получить текущий View можно используя его индекс. Для получения индекса используется -свойство "current" (константа Current). Пример +Свойство "current" (константа Current). Пример func peek(layout rui.StackLayout) { views := layout.Views() @@ -2571,7 +2571,7 @@ StackLayout является контейнером, реализующим ин return nil } -Конечно это менее удобно по сравнению с функцией Peek. Однако свойство "current" может быть использовано +Конечно это менее удобно по сравнению с функцией Peek. Однако Свойство "current" может быть использовано для отслеживания изменения текущего View: layout.SetChangeListener(rui.Current, func(view rui.View, tag string) { @@ -2586,7 +2586,7 @@ StackLayout является контейнером, реализующим ин Данная функция вернет true в случае успеха и false если дочерний View или View с таким id не существует и в лог будет записано сообщение об ошибке. -Также чтобы сделать любой дочерний View текущим (видимым) можно использовать свойство "current". +Также чтобы сделать любой дочерний View текущим (видимым) можно использовать Свойство "current". ## TabsLayout @@ -2601,19 +2601,19 @@ 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". -Cвойства "tab-close-button" может быть задано как для дочернего View так и для самого TabsLayout. -Установка значения свойства "tab-close-button" для TabsLayout включает/выключает отображение -кнопки закрытия сразу для всех вкладок. Значение "tab-close-button" установленое для дочернего +Свойства "tab-close-button" может быть задано как для дочернего View так и для самого TabsLayout. +Установка значения Свойства "tab-close-button" для TabsLayout включает/выключает отображение +кнопки закрытия сразу для всех вкладок. Значение "tab-close-button" установленное для дочернего элемента имеет более высокий приоритет по сравнению со значением установленным для TabsLayout. Кнопка закрытия вкладки не закрывает вкладку, а только генерирует событие "tab-close-event" (константа TabCloseEvent). @@ -2630,20 +2630,20 @@ Cвойства "tab-close-button" может быть задано как дл 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). Данное Свойство может принимать следующие значения | Значение | Константа | Имя | Расположение вкладок | @@ -2661,27 +2661,27 @@ Cвойства "tab-close-button" может быть задано как дл При отображении текущей (выбранной) вкладки типа 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 AbsoluteLayout является контейнером, реализующим интерфейс ViewsContainer. Дочерние View -могут располагатся в произвольных позициях пространства контейнера. +могут располагаться в произвольных позициях пространства контейнера. Для создания 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 будет прижат к верхнему краю контейнера. @@ -2692,27 +2692,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 @@ -2721,14 +2721,14 @@ View, "false" - скрывает. Resizable является контейнером в который можно поместить только один View. Resizable позволяет интерактивно менять размеры вложенного View. -Вокруг влоденного View создается рамка, потянув за которую можно менять размеры. +Вокруг вложенного View создается рамка, потянув за которую можно менять размеры. Resizable не реализует интерфейс ViewsContainer. Для управлением вложенным View используется -только свойство Content. Данному свойству может быть присвоено значение типа View или +только Свойство Content. Данному Свойству может быть присвоено значение типа View или строка текста. Во втором случае создается TextView. Рамка вокруг вложенного View может быть как со всех сторон, так и только с отдельных. -Для задания сторон рамки используется свойство "side" (константа Side) типа int. +Для задания сторон рамки используется Свойство "side" (константа Side) типа int. Оно может принимать следующие значения: | Значение | Константа | Имя | Сторона рамки | @@ -2744,7 +2744,7 @@ AllSides определено как AllSides = TopSide | RightSide | BottomSide | LeftSide -Для установки ширины рамки используется SizeUnit свойство "resize-border-width" (константа ResizeBorderWidth). +Для установки ширины рамки используется SizeUnit Свойство "resize-border-width" (константа ResizeBorderWidth). Значение по умолчанию для "resize-border-width" равно 4px. ## TextView @@ -2755,14 +2755,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 может принимать следующие значения | Значение | Константа | Имя | Обрезка текста | |:--------:|----------------------|------------|--------------------------------------------| @@ -2777,11 +2777,11 @@ TextView наследует от View все свойства параметро func NewImageView(session Session, params Params) ImageView -Выводимое изображение задается string свойством "src" (константа Source). -В качестве значения данному свойству присваивается либо имя изображения в папке images ресурсов, -либо url изобрадения. +Выводимое изображение задается string Свойством "src" (константа Source). +В качестве значения данному Свойству присваивается либо имя изображения в папке images ресурсов, +либо url изображения. -ImageView позволяет выдодить разные изображения в зависимости от плотности экрана +ImageView позволяет выводить разные изображения в зависимости от плотности экрана (см. раздел "Изображения для экранов с разной плотностью пикселей"). В связи с этим интерфейс ImageView имеет два дополнительных метода, которые позволяют узнать какое именно изображение отображается: @@ -2815,11 +2815,11 @@ NaturalSize() возвращает исходную ширину и высоту |:--------:|--------------|--------------|-----------------------------------| | 0 | NoneFit | "none" | Размер изображения не изменяется | | 1 | ContainFit | "contain" | Изображение масштабируется так чтобы сохранить соотношение сторон и вписаться в размеры ImageView | -| 2 | CoverFit | "cover" | Изображение масштабируется так чтобы полность заполнить область ImageView. При этом сохраняется соотношение сторон изображения. Если после масштабтрования изображение выходит за границы по высоте или ширине, то оно обрезается | -| 3 | FillFit | "fill" | Изображение масштабируется так чтобы полность заполнить область ImageView. При этом соотношение сторон изображения может не сохраняться | +| 2 | CoverFit | "cover" | Изображение масштабируется так чтобы полностью заполнить область ImageView. При этом сохраняется соотношение сторон изображения. Если после масштабирования изображение выходит за границы по высоте или ширине, то оно обрезается | +| 3 | FillFit | "fill" | Изображение масштабируется так чтобы полностью заполнить область ImageView. При этом соотношение сторон изображения может не сохраняться | | 4 | ScaleDownFit | "scale-down" | Изображение масштабируется так как если бы были указаны NoneFit или ContainFit, в зависимости от того, что приведет к меньшему размеру изображения. Т.е. масштабирование может выполняться только в сторону уменьшения изображения | -Свойство "image-horizontal-align" (константа ImageHorizontalAlign) типа int устанавливет +Свойство "image-horizontal-align" (константа ImageHorizontalAlign) типа int устанавливает горизонтальное выравнивание изображения относительно границ ImageView. Допустимые значения: | Значение | Константа | Имя | Значение | @@ -2839,7 +2839,7 @@ NaturalSize() возвращает исходную ширину и высоту | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по высоте | -Для получения значений свойств ImageView могут использоваться следующие функции: +Для получения значений Свойств ImageView могут использоваться следующие функции: func GetImageViewSource(view View, subviewID ...string) string func GetImageViewAltText(view View, subviewID ...string) string @@ -2855,51 +2855,51 @@ NaturalSize() возвращает исходную ширину и высоту func NewEditView(session Session, params Params) EditView -Возможно несколько вариантов редактируемого текста. Тип редактируемого текста устанвливается -с помощью int свойства "edit-view-type" (константа EditViewType). -Данное свойство может принимать следующие значения: +Возможно несколько вариантов редактируемого текста. Тип редактируемого текста устанавливается +с помощью int Свойства "edit-view-type" (константа EditViewType). +Данное Свойство может принимать следующие значения: | Значение | Константа | Имя | Тип редактора | |:--------:|----------------|-------------|-----------------------------------------------------| | 0 | SingleLineText | "text" | Однострочный редактор текста. Значение по умолчанию | -| 1 | PasswordText | "password" | Радактор пароля. Текст скрывается звездочками | +| 1 | PasswordText | "password" | Редактор пароля. Текст скрывается звездочками | | 2 | EmailText | "email" | Редактор для ввода одиночного e-mail | | 3 | EmailsText | "emails" | Редактор для ввода нескольких e-mail | | 4 | URLText | "url" | Редактор для ввода интернет адреса | | 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). -Cвойство "caret-color" может быть задано не только для EditView, но и для любого контейнера. В этом случае +Для изменения цвета каретки ввода текста используется Color Свойство "caret-color" (константа CaretColor). +Свойство "caret-color" может быть задано не только для EditView, но и для любого контейнера. В этом случае цвет каретки меняется для всех дочерних EditView помещенных в этот контейнер -Для получения значений свойств EditView могут использоваться следующие функции: +Для получения значений Свойств EditView могут использоваться следующие функции: func GetText(view View, subviewID ...string) string func GetHint(view View, subviewID ...string) string @@ -2931,7 +2931,7 @@ EditTextChangedEvent). Основной слушатель события име func NewNumberPicker(session Session, params Params) NumberPicker NumberPicker может работать в двух режимах: редактор текста и слайдер. -Режим устанавливает int свойство "number-picker-type" (константа NumberPickerType). +Режим устанавливает int Свойство "number-picker-type" (константа NumberPickerType). Свойство "number-picker-type" может принимать следующие значения: | Значение | Константа | Имя | Тип редактора | @@ -2939,8 +2939,8 @@ NumberPicker может работать в двух режимах: редак | 0 | NumberEditor | "editor" | Редактор текста. Значение по умолчанию | | 1 | NumberSlider | "slider" | Слайдер | -Установить/прочитать текущее значение можно с помощью свойства "number-picker-value" -(константа NumberPickerValue). В качестве значения свойству "number-picker-value" могут быть переданы: +Установить/прочитать текущее значение можно с помощью Свойства "number-picker-value" +(константа NumberPickerValue). В качестве значения Свойству "number-picker-value" могут быть переданы: * float64 * float32 @@ -2948,14 +2948,14 @@ NumberPicker может работать в двух режимах: редак * int8…int64 * uint * uint8…uint64 -* текстовое представление любых из выше перечисленых типов +* текстовое представление любых из выше перечисленных типов Все эти типы приводятся к float64. Соответственно функция Get всегда возвращает float64 значение. -Прочитано значение свойства "number-picker-value" может быть также с помощью функции: +Прочитано значение Свойства "number-picker-value" может быть также с помощью функции: func GetNumberPickerValue(view View, subviewID ...string) float64 -На вводимые значения могут быть наложены ограничения. Для этого используются следующие свойства: +На вводимые значения могут быть наложены ограничения. Для этого используются следующие Свойства: | Свойство | Константа | Ограничение | |----------------------|------------------|------------------------| @@ -2963,13 +2963,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 @@ -2993,8 +2993,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 * константа @@ -3002,11 +3002,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 -На вводимые даты могут быть наложены ограничения. Для этого используются следующие свойства: +На вводимые даты могут быть наложены ограничения. Для этого используются следующие Свойства: | Свойство | Константа | Тип данных | Ограничение | |--------------------|----------------|------------|----------------------------| @@ -3014,7 +3014,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) @@ -3039,8 +3039,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 * константа @@ -3048,11 +3048,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 -На вводимое время могут быть наложены ограничения. Для этого используются следующие свойства: +На вводимое время могут быть наложены ограничения. Для этого используются следующие Свойства: | Свойство | Константа | Тип данных | Ограничение | |--------------------|----------------|------------|----------------------------------| @@ -3060,7 +3060,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) @@ -3085,14 +3085,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 @@ -3115,12 +3115,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") @@ -3196,22 +3196,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 @@ -3219,17 +3219,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) @@ -3249,15 +3249,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 @@ -3265,7 +3265,7 @@ int8…int64, uint, uint8…uint64 ## Button Элемент Button реализует нажимаемую кнопку. Это CustomView (о нем ниже) на базе ListLayout и, -соответсвенно, обладает всеми свойствами ListLayout. Но в отличие от ListLayout может получать +соответственно, обладает всеми Свойствами ListLayout. Но в отличие от ListLayout может получать фокус ввода. Контент, по умолчанию, выровнен по центру. @@ -3281,15 +3281,15 @@ 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" является интерфейс ListAdapter: +Элементы списка задаются с помощью Свойства "items" (константа Items). Основным значением +Свойства "items" является интерфейс ListAdapter: type ListAdapter interface { ListSize() int @@ -3297,7 +3297,7 @@ ListView реализован на основе ListLayout и поэтому о IsListItemEnabled(index int) bool } -Соостветственно функции этого интерфейса должны возвращать количество элементов, View i-го элемента и +Соответственно функции этого интерфейса должны возвращать количество элементов, View i-го элемента и статус i-го элемента разрешен/запрещен. Вы можете реализовать этот интерфейс сами или воспользоваться вспомогательными функциями: @@ -3306,15 +3306,15 @@ ListView реализован на основе ListLayout и поэтому о func NewViewListAdapter(items []View) ListAdapter NewTextListAdapter создает адаптер из массива строк, второй аргумент это параметры TextView используемого -для отобрыжения текста. NewViewListAdapter создает адаптер из массива View. +для отображения текста. NewViewListAdapter создает адаптер из массива View. -Cвойствy "items" могут быть присвоены следующие типы данных: +Свойству "items" могут быть присвоены следующие типы данных: * ListAdapter; -* []View при присваиваниии преобразуется в ListAdapter с помощью функции NewViewListAdapter; -* []string при присваиваниии преобразуется в ListAdapter с помощью функции NewTextListAdapter; +* []View при присваивании преобразуется в ListAdapter с помощью функции NewViewListAdapter; +* []string при присваивании преобразуется в ListAdapter с помощью функции NewTextListAdapter; * []any который может содержать элементы типа View, string, fmt.Stringer, bool, rune, -float32, float64, int, int8…int64, uint, uint8…uint64. При присваиваниии все типы кроме +float32, float64, int, int8…int64, uint, uint8…uint64. При присваивании все типы кроме View и string преобразуется в string, далее все string в TextView и из получившегося массива View с помощью функции NewViewListAdapter получается ListAdapter. @@ -3336,10 +3336,10 @@ ReloadListViewData() интерфейса ListView или глобальную | 3 | EndToStartOrientation | Элементы располагаются в строку с конца в начала. | Положение начала и конца для StartToEndOrientation и EndToStartOrientation зависит от значения -свойства "text-direction". Для языков с письмом справа налево (арабский, иврит) начало находится +Свойства "text-direction". Для языков с письмом справа налево (арабский, иврит) начало находится справа, для остальных языков - слева. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetListOrientation(view View, subviewID ...string) int @@ -3356,7 +3356,7 @@ ReloadListViewData() интерфейса ListView или глобальную * WrapReverse (2) - начинается новая колонка/строка элементов. Новая колонка располагается по направлению к началу (о положении начала и конца см. выше), новая строка - сверху. -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetListWrap(view View, subviewID ...string) int @@ -3367,9 +3367,9 @@ ReloadListViewData() интерфейса ListView или глобальную горизонтального - разную ширину. Вы можете установить фиксированную высоту и ширину элемента списка. Для этого используются SizeUnit -свойства "item-width" и "item-height" +Свойства "item-width" и "item-height" -Получить значения данных свойств можно с помощью функций +Получить значения данных Свойств можно с помощью функций func GetListItemWidth(view View, subviewID ...string) SizeUnit func GetListItemHeight(view View, subviewID ...string) SizeUnit @@ -3386,13 +3386,13 @@ ReloadListViewData() интерфейса ListView или глобальную | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по высоте | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetListItemVerticalAlign(view View, subviewID ...string) int ### Свойство "item-horizontal-align" -Свойство "item-horizontal-align" (константа ItemHorizontalAlign) типа int устанавливет +Свойство "item-horizontal-align" (константа ItemHorizontalAlign) типа int устанавливает горизонтальное выравнивание содержимого элементов списка. Допустимые значения: | Значение | Константа | Имя | Значение | @@ -3402,7 +3402,7 @@ ReloadListViewData() интерфейса ListView или глобальную | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по ширине | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции GetListItemHorizontalAlign(view View, subviewID ...string) int @@ -3410,16 +3410,16 @@ ReloadListViewData() интерфейса ListView или глобальную ListView позволяет выбирать пункты списка имеющие статус "разрешен" (см. ListAdapter). Элемент может быть выбран как интерактивно, так и программно. Для этого используется -int свойство "current" (константа Current). Значение "current" меньше 0 означает что +int Свойство "current" (константа Current). Значение "current" меньше 0 означает что не выбран ни один пункт -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetCurrent(view View, subviewID ...string) int ### Свойства "list-item-style", "current-style" и "current-inactive-style" -Данные три свойства отвечают за стиль фона и свойства текста каждого элемента списка. +Данные три Свойства отвечают за стиль фона и Свойства текста каждого элемента списка. | Свойство | Константа | Стиль | |--------------------------|----------------------|-------------------------------------------------| @@ -3441,13 +3441,13 @@ int свойство "current" (константа Current). Значение "c | 2 | MultipleCheckbox | "multiple" | ☑ Чекбокс позволяющий пометить несколько пунктов | -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetListViewCheckbox(view View, subviewID ...string) int -Получить/установить список помеченных пунктов можно с помощью свойства "checked" (константа Checked). -Данное свойство имеет тип []int и хранит индексы помеченных элементов. -Получить значение данного свойства можно с помощью функции +Получить/установить список помеченных пунктов можно с помощью Свойства "checked" (константа Checked). +Данное Свойство имеет тип []int и хранит индексы помеченных элементов. +Получить значение данного Свойства можно с помощью функции func GetListViewCheckedItems(view View, subviewID ...string) []int @@ -3456,7 +3456,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) может принимать следующие значения: @@ -3478,7 +3478,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 @@ -3487,12 +3487,12 @@ CheckboxHorizontalAlign и CheckboxVerticalAlign) Для ListView есть три характерных события -* "list-item-clicked" (константа ListItemClickedEvent) - возникает когда пользователь кликает по элементу +* "list-item-clicked" (константа ListItemClickedEvent) - возникает когда пользователь кликнет по элементу списка. Основной слушатель данного события имеет следующий формат: func(ListView, int). Где второй аргумент это индекс элемента. * "list-item-selected" (константа ListItemSelectedEvent) - возникает когда пользователь элемент списка -становится выбраным. Основной слушатель данного события имеет следующий формат: func(ListView, int). +становится выбранным. Основной слушатель данного события имеет следующий формат: func(ListView, int). Где второй аргумент это индекс элемента. * "list-item-checked" (константа ListItemCheckedEvent) - возникает когда пользователь ставит/снимает @@ -3522,7 +3522,7 @@ CheckboxHorizontalAlign и CheckboxVerticalAlign) Cell(row, column int) any } -где функции RowCount() и ColumnCount() должны возврацать количество строк и столбцов в таблице; +где функции RowCount() и ColumnCount() должны возвращать количество строк и столбцов в таблице; Cell(row, column int) возвращает содержимое ячейки таблицы. Функция Cell() может возвращать элементы следующих типов: @@ -3546,7 +3546,7 @@ Cell(row, column int) возвращает содержимое ячейки т ### Свойство "cell-style" -Свойство "cell-style" (константа CellStyle) предназначено для настройки оформления ячейки таблицы. Данному свойству +Свойство "cell-style" (константа CellStyle) предназначено для настройки оформления ячейки таблицы. Данному Свойству может быть присвоено только реализация интерфейса TableCellStyle. type TableCellStyle interface { @@ -3554,7 +3554,7 @@ Cell(row, column int) возвращает содержимое ячейки т } Данный интерфейс содержит только одну функцию CellStyle, которая возвращает параметры оформления -заданной ячейки таблицы. Можно использовать любые свойства интерфейса View. Например +заданной ячейки таблицы. Можно использовать любые Свойства интерфейса View. Например func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { if row == 0 { @@ -3570,11 +3570,11 @@ Cell(row, column int) возвращает содержимое ячейки т #### Свойства "row-span" и "column-span" -Помимо свойств интерфейса View, функцией CellStyle могут возвращаться еще два свойства типа int: +Помимо Свойств интерфейса View, функцией CellStyle могут возвращаться еще два Свойства типа int: "row-span" (константа RowSpan) и "column-span" (константа ColumnSpan). -Данные свойства используются для объединения ячеек таблицы. +Данные Свойства используются для объединения ячеек таблицы. -Свойство "row-span" указавает сколько ячеек надо объединить по вертикали, +Свойство "row-span" указывает сколько ячеек надо объединить по вертикали, а "column-span" - по горизонтали. Например func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { @@ -3595,7 +3595,7 @@ Cell(row, column int) возвращает содержимое ячейки т | | | | |------|-------|--------| -Если в качестве значения свойства "content" используется [][]any, то для объединения +Если в качестве значения Свойства "content" используется [][]any, то для объединения ячеек используются пустые структуры type VerticalTableJoin struct { @@ -3603,7 +3603,7 @@ Cell(row, column int) возвращает содержимое ячейки т type HorizontalTableJoin struct { } -Данные структуры присоединяют ячейку, соответсвенно, к верхней/левой. Описание приведенной выше таблицы будет +Данные структуры присоединяют ячейку, соответственно, к верхней/левой. Описание приведенной выше таблицы будет иметь следующий вид content := [][]any { @@ -3614,7 +3614,7 @@ Cell(row, column int) возвращает содержимое ячейки т ### Свойство "row-style" Свойство "row-style" (константа RowStyle) предназначено для настройки оформления строки таблицы. -Данному свойству может быть присвоены или реализация интерфейса TableRowStyle или []Params. +Данному Свойству может быть присвоены или реализация интерфейса TableRowStyle или []Params. TableRowStyle объявлена как type TableRowStyle interface { @@ -3622,13 +3622,13 @@ TableRowStyle объявлена как } Функция RowStyle возвращает параметры применяемые ко всей строке таблицы. -Свойство "row-style" имеет более низкий приоритет по сравнению со сойством "cell-style", -т.е. свойства заданные в "cell-style" будут использоваться вместо заданных в "row-style" +Свойство "row-style" имеет более низкий приоритет по сравнению со свойством "cell-style", +т.е. Свойства заданные в "cell-style" будут использоваться вместо заданных в "row-style" ### Свойство "column-style" Свойство "column-style" (константа ColumnStyle) предназначено для настройки оформления столбца таблицы. -Данному свойству может быть присвоены или реализация интерфейса TableColumnStyle или []Params. +Данному Свойству может быть присвоены или реализация интерфейса TableColumnStyle или []Params. TableColumnStyle объявлена как type TableColumnStyle interface { @@ -3636,7 +3636,7 @@ TableColumnStyle объявлена как } Функция ColumnStyle возвращает параметры применяемые ко всему столбцу таблицы. -Свойство "column-style" имеет более низкий приоритет по сравнению со сойствами "cell-style" и "row-style". +Свойство "column-style" имеет более низкий приоритет по сравнению со свойствами "cell-style" и "row-style". ### Свойства "head-height" и "head-style" @@ -3646,47 +3646,47 @@ 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: } } И введено для удобства, чтобы не надо было писать адаптер для задания отступов. -Свойство "cell-padding" имеет более низкий приоритет по сравнению со сойством "cell-style". +Свойство "cell-padding" имеет более низкий приоритет по сравнению со свойством "cell-style". -"cell-padding" может также использоваться при задании параметров в свойствах +"cell-padding" может также использоваться при задании параметров в Свойствах "row-style", "column-style", "foot-style" и "head-style" ### Свойство "cell-border" -Свойство "cell-border" (константа CellBorder) задает памку для всех ячеек таблицы. -Данное свойство эквивалентно +Свойство "cell-border" (константа CellBorder) задает рамку для всех ячеек таблицы. +Данное Свойство эквивалентно func (style *myTableCellStyle) CellStyle(row, column int) rui.Params { return rui.Params { rui.Border: } } И введено для удобства, чтобы не надо было писать адаптер для рамки. -Свойство "cell-border" имеет более низкий приоритет по сравнению со сойством "cell-style". +Свойство "cell-border" имеет более низкий приоритет по сравнению со свойством "cell-style". -"cell-border" может также использоваться при задании параметров в свойствах +"cell-border" может также использоваться при задании параметров в Свойствах "row-style", "column-style", "foot-style" и "head-style" ### Свойство "table-vertical-align" -Свойство "table-vertical-align" (константа TableVerticalAlign) типа int задает вертикальное выравание +Свойство "table-vertical-align" (константа TableVerticalAlign) типа int задает вертикальное выравнивание данных внутри ячейки таблицы. Допустимые значения: | Значение | Константа | Имя | Значение | @@ -3696,9 +3696,9 @@ TableColumnStyle объявлена как | 2 | CenterAlign | "center" | Выравнивание по центру | | 3, 4 | BaselineAlign | "baseline" | Выравнивание по базовой линии | -Для горизонтального выравнивания используется свойство "text-align". +Для горизонтального выравнивания используется Свойство "text-align". -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTableVerticalAlign(view View, subviewID ...string) int @@ -3720,7 +3720,7 @@ TableColumnStyle объявлена как (с использованием клавиш управления курсором). В данном режиме таблица может получить фокус ввода. В данном режиме таблица генерирует два вида событий: "table-row-selected" и "table-row-clicked" (о них ниже). -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetSelectionMode(view View, subviewID ...string) int @@ -3736,9 +3736,9 @@ TableColumnStyle объявлена как Если ячейка не выбрана, то значения полей Row и Column будут меньше 0. В режиме RowSelection значение поля Column игнорируется. Также в данном режиме -свойству "current" можно присваивать значение типа int (индекс строки). +Свойству "current" можно присваивать значение типа int (индекс строки). -Получить значение данного свойства можно с помощью функции +Получить значение данного Свойства можно с помощью функции func GetTableCurrent(view View, subviewID ...string) CellIndex @@ -3748,7 +3748,7 @@ TableColumnStyle объявлена как выбор определенных элементов. Свойство "selection-mode" (константа SelectionMode) позволяет задать такое правило. -В режиме CellSelection данному свойству присваивается реализация интерфейса +В режиме CellSelection данному Свойству присваивается реализация интерфейса type TableAllowCellSelection interface { AllowCellSelection(row, column int) bool @@ -3768,7 +3768,7 @@ TableColumnStyle объявлена как Событие "table-cell-selected" генерируется в режиме CellSelection когда пользователь выделил ячейку таблицы с помощью мыши или клавиатуры. -Событие "table-cell-clicked" возникает если пользователь кликает мышью по ячейке таблицы +Событие "table-cell-clicked" возникает если пользователь кликнет мышью по ячейке таблицы (при этом если она не выделена, то сначала возникает событие "table-cell-selected") или нажимает клавишу Enter или пробел @@ -3787,7 +3787,7 @@ TableColumnStyle объявлена как Событие "table-row-selected" генерируется в режиме RowSelection когда пользователь выделил строку таблицы с помощью мыши или клавиатуры. -Событие "table-row-clicked" возникает если пользователь кликает мышью по строке таблицы +Событие "table-row-clicked" возникает если пользователь кликнет мышью по строке таблицы (при этом если она не выделена, то сначала возникает событие "table-row-selected") или нажимает клавишу Enter или пробел @@ -3805,11 +3805,11 @@ TableColumnStyle объявлена как Пользовательский View должен реализовывать интерфейс CustomView, который в свою очередь расширяет интерфейсы ViewsContainer и View. Пользовательский View создается на основе другого, -который назавается Super View. +который называется Super View. Для упрощение задачи уже имеется базовая реализация CustomView в виде структуры CustomViewData. -Создание пользовательского View рассмотрим на примере встроенного элемента Buttom: +Создание пользовательского View рассмотрим на примере встроенного элемента Button: 1) объявляем интерфейс Button, как расширяющий CustomView, и структуру buttonData как расширяющую CustomViewData @@ -3868,14 +3868,14 @@ CanvasView это область в которой вы можете рисов func NewCanvasView(session Session, params Params) CanvasView -CanvasView имеет всего одно дополнительное свойство: "draw-function" (константа DrawFunction). -С помощью данного свойства задается функция рисования имеющая следующее описание +CanvasView имеет всего одно дополнительное Свойство: "draw-function" (константа DrawFunction). +С помощью данного Свойства задается функция рисования имеющая следующее описание func(Canvas) где Canvas это контекст рисования с помощью которого осуществляется рисование -Интерфей Canvas сожержит ряд функция для настройки стилей, текста и непосредственно самого рисования. +Интерфейс Canvas содержит ряд функция для настройки стилей, текста и непосредственно самого рисования. Все координаты и размеры задаются только в пикселях, поэтому при рисовании SizeUnit не используется. Везде используется float64 @@ -3937,15 +3937,15 @@ x1, y1, r1, color1 - координаты центра, радиус и цвет SetLineDash(dash []float64, offset float64) -где dash []float64 задает шаблон линиии в виде чередования длин отрезков и пропусков. Второй аргумент - +где dash []float64 задает шаблон линии в виде чередования длин отрезков и пропусков. Второй аргумент - смещение шаблона относительно начала линии. Пример canvas.SetLineDash([]float64{16, 8, 4, 8}, 0) -Линия рисуется следующим образом: отрезок длиной 16 пикселей, затеп пропуск длиной 8 пикселей, -отрезок длиной 4 пикселя, затеп пропуск длиной 8 пикселей, затем снова отрезок длиной 16 пикселей и т.д. +Линия рисуется следующим образом: отрезок длиной 16 пикселей, затем пропуск длиной 8 пикселей, +отрезок длиной 4 пикселя, затем пропуск длиной 8 пикселей, затем снова отрезок длиной 16 пикселей и т.д. ### Настройка стиля заливки @@ -3972,15 +3972,15 @@ x1, y1, r1, color1 - координаты центра, радиус и цвет StrokeRect(x, y, width, height float64) FillAndStrokeRect(x, y, width, height float64) -FillRect рисует закрашеный прямоугольник. +FillRect рисует закрашенный прямоугольник. StrokeRect рисует контур прямоугольника. -FillAndStrokeRect рисует контур и закрашивает внутриности. +FillAndStrokeRect рисует контур и закрашивает внутренности. #### Прямоугольник с закругленными углами -Аналогично прямоуголику есть три функции рисования +Аналогично прямоугольнику есть три функции рисования FillRoundedRect(x, y, width, height, r float64) StrokeRoundedRect(x, y, width, height, r float64) @@ -3997,7 +3997,7 @@ FillAndStrokeRect рисует контур и закрашивает внутр FillAndStrokeEllipse(x, y, radiusX, radiusY, rotation float64) где x, y - центр эллипса, radiusX, radiusY - радиусы эллипса по оси X и Y, -rotation - угол поворота элилпса относительно центра в радианах +rotation - угол поворота эллипса относительно центра в радианах #### Path @@ -4134,7 +4134,7 @@ clockwise - если true, рисует эллипс по часовой стр ImageReady (1), если при загрузке произошла ошибка, то данная функция будет возвращать ImageLoadingError (2). Текстовое описание ошибки возвращает функция LoadingError() -В отличие от ImageView призагрузке Image не учитывается плотность пикселей. Вы должны сами определить какое изображение +В отличие от ImageView при загрузке Image не учитывается плотность пикселей. Вы должны сами определить какое изображение загружать. Это можно сделать так: var url string @@ -4174,7 +4174,7 @@ width, height - ширина и высота результата ## AudioPlayer, VideoPlayer, MediaPlayer AudioPlayer и VideoPlayer это элементы которые предназначены для воспроизведения аудио и видео. -Оба элемента реализуют интефейс MediaPlayer. Большинство свойств и все события AudioPlayer и VideoPlayer +Оба элемента реализуют интерфейс MediaPlayer. Большинство Свойств и все события AudioPlayer и VideoPlayer являются общими и реализуются через MediaPlayer. ### Свойство "src" @@ -4204,7 +4204,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ Свойство "controls" (константа Controls) типа bool указывает, должны ли отображаться элементы пользовательского интерфейса для управления воспроизведения медиа ресурса. Значение по умолчанию false. -Если свойство "controls" равно false для AudioPlayer, то он будет невидим и не будет занимаеть место на экране. +Если Свойство "controls" равно false для AudioPlayer, то он будет невидим и не будет занимать место на экране. ### Свойство "loop" @@ -4232,7 +4232,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ Свойство "poster" (константа Poster) типа string используется только для VideoPlayer. Оно задает url картинки которая будет показываться пока видео не загрузится. -Если данное свойство не задано, то будет сначала показываться черный экран, а затем первый кадр (как только он загрузится). +Если данное Свойство не задано, то будет сначала показываться черный экран, а затем первый кадр (как только он загрузится). ### Свойства "video-width" и "video-height" @@ -4240,7 +4240,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ Оно определяет ширину и высоту выводимого видео в пикселях. Если "video-width" и "video-height" не заданы, то используются реальные размеры видео, при этом размеры контейнера в -который помещено видео игнорируются и видео может перекрывать другие элементы интерфейса. Поэтому рекоментуется задавать +который помещено видео игнорируются и видео может перекрывать другие элементы интерфейса. Поэтому рекомендуется задавать эти величины, например, так rui.Set(view, "videoPlayerContainer", rui.ResizeEvent, func(frame rui.Frame) { @@ -4248,7 +4248,7 @@ AudioPlayer и VideoPlayer это элементы которые предназ rui.Set(view, "videoPlayer", rui.VideoHeight, frame.Height) }) -Если задано только одно из свойств "video-width" или "video-height", то второе вычисляется на основе пропорций видео +Если задано только одно из Свойств "video-width" или "video-height", то второе вычисляется на основе пропорций видео ### События @@ -4278,7 +4278,7 @@ MediaPlayer имеет две группы событий: * "loaded-metadata-event" (константа LoadedMetadataEvent) - Запускается, когда метаданные были загружены. -* "loadstart-event" (константа LoadstartEvent) - Запускается, когда браузер начал загружать ресурс. +* "loadstart-event" (константа LoadStartEvent) - Запускается, когда браузер начал загружать ресурс. * "pause-event" (константа PauseEvent) - Вызывается, когда обрабатывается запрос на приостановку воспроизведения, и действие переходит в состояние паузы, чаще всего это происходит, когда вызывается метод Pause(). @@ -4289,7 +4289,7 @@ MediaPlayer имеет две группы событий: * "playing-event" (константа PlayingEvent) - Запускается, когда воспроизведение готово начать после приостановки или задержки из-за отсутствия данных. -* "progress-event" (константа ProgressPvent) - Периодически запускается, когда браузер загружает ресурс. +* "progress-event" (константа ProgressEvent) - Периодически запускается, когда браузер загружает ресурс. * "seeked-event" (константа SeekedEvent) - Запускается, когда скорость воспроизведения изменилась. @@ -4303,7 +4303,7 @@ MediaPlayer имеет две группы событий: * "waiting-event" (константа WaitingEvent) - Срабатывает, когда воспроизведение остановлено из-за временной нехватки данных 2) имеет обработчик вида func(MediaPlayer, float64) (также можно использовать func(float64), func(MediaPlayer) и func()). -В эту группу входят события связанные с измененим парамеров плеера. В качестве второго аргумента передается +В эту группу входят события связанные с изменением парамеров плеера. В качестве второго аргумента передается новое значение измененного параметра. * "duration-changed-event" (константа DurationChangedEvent) - запускается, когда атрибут продолжительности был обновлён. @@ -4325,7 +4325,7 @@ func(int, string), func(MediaPlayer) и func()). Где аргумент "messag | 0 | PlayerErrorUnknown | Неизвестная ошибка | | 1 | PlayerErrorAborted | Извлечение связанного ресурса было прервано запросом пользователя. | | 2 | PlayerErrorNetwork | Произошла какая-то сетевая ошибка, которая помешала успешному извлечению носителя, несмотря на то, что он был ранее доступен. | -| 3 | PlayerErrorDecode | Несмотря на то, что ранее ресурс был определён, как используемый, при попытке декодировать медиаресурс произошла ошибка. | +| 3 | PlayerErrorDecode | Несмотря на то, что ранее ресурс был определён, как используемый, при попытке декодировать медиа ресурс произошла ошибка. | | 4 | PlayerErrorSourceNotSupported | Связанный объект ресурса или поставщик мультимедиа был признан неподходящим. | ### Методы @@ -4346,7 +4346,7 @@ MediaPlayer имеет ряд методов для управления пар * PlaybackRate() float64 - возвращает текущую скорость воспроизведения; -* SetVolume(volume float64) - устанавливает скорост громкость в диапазоне от 0 (тишина) до 1 (максимальная громкость); +* SetVolume(volume float64) - устанавливает скорость громкость в диапазоне от 0 (тишина) до 1 (максимальная громкость); * Volume() float64 - возвращает текущую громкость; @@ -4378,11 +4378,11 @@ Popup это интерфейс позволяющий отобразить пр NewPopup(view View, param Params) Popup где view - View содержимого всплывающего окна (не может быть nil); -params - параметры всплавающего окна (может быть nil). В качестве параметров всплавающего окна, могут -использоваться как любые свойства View, так и ряд дополнительных свойств (они будут описаны ниже) +params - параметры всплывающего окна (может быть nil). В качестве параметров всплывающего окна, могут +использоваться как любые Свойства View, так и ряд дополнительных Свойств (они будут описаны ниже) После создания Popup его необходимо отобразить. Для этого используется метод Show() интерфейса Popup. -Для упрощения кода можно использовать функцию ShowPopup, которая опредена как +Для упрощения кода можно использовать функцию ShowPopup, которая определена как func ShowPopup(view View, param Params) Popup { popup := NewPopup(view, param) @@ -4392,9 +4392,9 @@ params - параметры всплавающего окна (может быт return popup } -Для закрытия всплавающего окна используется метод Dismiss() интерфейса Popup. +Для закрытия всплывающего окна используется метод Dismiss() интерфейса Popup. -Помимо медодов Show() и Dismiss() интерфейс Popup имеет следующие методы: +Помимо методов Show() и Dismiss() интерфейс Popup имеет следующие методы: * Session() Session - возвращает текущую сессию; * View() View - возвращает содержимое всплывающего окна. @@ -4402,22 +4402,22 @@ 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). -Cвойства "arrow" может принимать следующие значения +Всплывающее окно может иметь у одной из сторон стрелку. Стрелка задается с помощью Свойства "arrow" (константа Arrow). +Свойство "arrow" может принимать следующие значения | Значение | Константа | Расположение стрелки | |:--------:|-------------|---------------------------------------------| @@ -4427,24 +4427,24 @@ Cвойства "arrow" может принимать следующие зна | 3 | BottomArrow | Стрелка у нижней стороны всплывающего окна | | 4 | LeftArrow | Стрелка у левой стороны всплывающего окна | -Размеры стрелки задаются с помощью свойств "arrow-size" (константа ArrowSize) и "arrow-width" (константа ArrowWidth) типа SizeUnit. -Они задают длину ("arrow-size") и ширину ("arrow-width") стрелки. Если данные свойтсва не заданы то используются константы +Размеры стрелки задаются с помощью Свойств "arrow-size" (константа ArrowSize) и "arrow-width" (константа ArrowWidth) типа SizeUnit. +Они задают длину ("arrow-size") и ширину ("arrow-width") стрелки. Если данные свойства не заданы то используются константы "@ruiArrowSize" (значение по умолчанию 16px) и "@ruiArrowWidth" (значение по умолчанию 16px). -Выравнивание стрелки относительно всплывающего окна задается с помощью свойства "arrow-align" (константа ArrowAlign). -Cвойства "arrow-align" может принимать следующие значения +Выравнивание стрелки относительно всплывающего окна задается с помощью Свойства "arrow-align" (константа ArrowAlign). +Свойство "arrow-align" может принимать следующие значения | Значение | Константы | Выравнивание | |:--------:|--------------------------|------------------------------------------------| -| 0 | TopAlign / LeftAlign | Выравнивание по верхнему / левому краю строны | -| 1 | BottomAlign / RightAlign | Выравнивание по нижнему / правому краю строны | +| 0 | TopAlign / LeftAlign | Выравнивание по верхнему / левому краю стороны | +| 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. @@ -4452,26 +4452,26 @@ Cвойства "arrow-align" может принимать следующие ### Закрытие Popup -Как было сказано выше, для закрытия всплавающего окна используется метод Dismiss() интерфейса Popup. +Как было сказано выше, для закрытия всплывающего окна используется метод Dismiss() интерфейса Popup. Если к заголовку окна добавлена кнопка закрытия, то нажатие на нее автоматически вызывает метод Dismiss(). Переопределить поведение кнопки закрытия окна нельзя. Если все же необходимо переопределить поведение этой кнопки, то это можно сделать создав кастомный заголовок и создав в нем свою кнопку закрытия. -Существует еще один способ автоматического вызова метода Dismiss(). Это свойство "outside-close" (константа OutsideClose) типа bool. -Если это свойство установлено в "true", то клик мышью вне пределов всплывающего окна автоматически вызывает метод Dismiss(). +Существует еще один способ автоматического вызова метода Dismiss(). Это Свойство "outside-close" (константа OutsideClose) типа bool. +Если это Свойство установлено в "true", то клик мышью вне пределов всплывающего окна автоматически вызывает метод Dismiss(). Для отслеживания закрытия всплывающего окна используются событие "dismiss-event" (константа DismissEvent). Оно возникает после того как Popup исчезнет с экрана. -Основной слушатель этого событя имеет следующий формат: +Основной слушатель этого события имеет следующий формат: func(Popup) ### Область кнопок Часто во всплывающее окно необходимо добавить кнопки, такие как "OK", "Cancel" и т.п. -С помощью свойства "buttons" (константа Buttons) вы можете добавлять кнопки, которые будут располагаться внизу окна. +С помощью Свойства "buttons" (константа Buttons) вы можете добавлять кнопки, которые будут располагаться внизу окна. Свойству "buttons" можно присваивать следующие типы данных: * PopupButton @@ -4487,7 +4487,7 @@ Cвойства "arrow-align" может принимать следующие где Title - текст кнопки, OnClick - функция вызываемая при нажатии на кнопку По умолчанию кнопки выравниваются по правому краю окна. Однако это поведение можно переопределить. -Для этого используется свойство "buttons-align" (константа ButtonsAlign) типа int, которое может принимать следующие значения: +Для этого используется Свойство "buttons-align" (константа ButtonsAlign) типа int, которое может принимать следующие значения: | Значение | Константа | Имя | Выравнивание | |:--------:|--------------|-----------|------------------------------| @@ -4500,7 +4500,7 @@ Cвойства "arrow-align" может принимать следующие ### Выравнивание Popup -По умолчанию всплывающее окно располагается по центру окна браузера. Изменить это поведение можно с помощью свойств +По умолчанию всплывающее окно располагается по центру окна браузера. Изменить это поведение можно с помощью Свойств "vertical-align" (константа VerticalAlign) и "horizontal-align" (константа HorizontalAlign) типа int. Свойство "vertical-align" может принимать следующие значения: @@ -4521,9 +4521,9 @@ Cвойства "arrow-align" может принимать следующие | 2 | CenterAlign | "center" | Выравнивание по центру | | 3 | StretchAlign | "stretch" | Выравнивание по ширине | -Для сдвига окна может использоваться свойство "margin". +Для сдвига окна может использоваться Свойство "margin". -Например, организовать выподающее окно привязанное к кнопке можно так +Например, организовать выпадающее окно привязанное к кнопке можно так rui.ShowPopup(myPopupView, rui.Params{ rui.HorizontalAlign: rui.LeftAlign, @@ -4534,7 +4534,7 @@ Cвойства "arrow-align" может принимать следующие ### Стандартные Popup -В библеотеке rui уже реализованы некотороые стандартные всплывающие окна. +В библиотеке rui уже реализованы некоторые стандартные всплывающие окна. Для их отображения используются следующие функции func ShowMessage(title, text string, session Session) @@ -4550,14 +4550,14 @@ Cвойства "arrow-align" может принимать следующие func ShowCancellableQuestion(title, text string, session Session, onYes func(), onNo func(), onCancel func()) Данная функция выводит на экран сообщение с заданным заголовком и текстом и тремя кнопками "Yes", "No" и "Cancel". -При нажатии кнопки "Yes", "No" или "Cancel" сообщение закрывается и вызывается, соотвественно, функция onYes, +При нажатии кнопки "Yes", "No" или "Cancel" сообщение закрывается и вызывается, соответственно, функция onYes, 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) @@ -4576,8 +4576,8 @@ onNo или onCancel (если она не nil). Библиотека поддерживает два вида анимации: -* Анимированое изменения значения свойства (далее "анимация перехода") -* Сценарий анимированного изменения одного или нескольких свойств (далее просто "сценарий анимации") +* Анимированное изменения значения Свойства (далее "анимация перехода") +* Сценарий анимированного изменения одного или нескольких Свойств (далее просто "сценарий анимации") ### Интерфейс Animation @@ -4586,10 +4586,10 @@ onNo или onCancel (если она не nil). func NewAnimation(params Params) Animation -Часть свойств интерфейса Animation используется в обоих типах анимации, остальные используются +Часть Свойств интерфейса Animation используется в обоих типах анимации, остальные используются только в сценариях анимации. -Общими свойствами являются +Общими Свойствами являются | Свойство | Константа | Тип | По умолчанию | Описание | |-------------------|----------------|---------|--------------|-------------------------------------------------| @@ -4640,14 +4640,14 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете ### Анимация перехода -Анимация перехода может применяться к свойствам типа: SizeUnit, Color, AngleUnit, float64 и составным свойсвам +Анимация перехода может применяться к Свойствам типа: SizeUnit, Color, AngleUnit, float64 и составным свойствам в составе которых имеются элементы перечисленных типов (например "shadow", "border" и т.д.). -При попытке применить анимацию к свойствам других типов (например, bool, string) ошибки не произойдет, +При попытке применить анимацию к Свойствам других типов (например, bool, string) ошибки не произойдет, просто анимации не будет. Анимация перехода бывает двух видов: -* аднократная; +* однократная; * постоянная; Однократная анимация запускается с помощью функции SetAnimated интерфейса View. Данная функция имеет следующее @@ -4655,7 +4655,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете SetAnimated(tag string, value any, animation Animation) bool -Она присваивает свойству новое значение, при этом изменение происходит с использованием заданной анимации. +Она присваивает Свойству новое значение, при этом изменение происходит с использованием заданной анимации. Например, view.SetAnimated(rui.Width, rui.Px(400), rui.NewAnimation(rui.Params{ @@ -4663,13 +4663,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{ @@ -4684,7 +4684,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете }, }) -Вызов функции SetAnimated не меняет значение свойства "transition". +Вызов функции SetAnimated не меняет значение Свойства "transition". Для получения текущего списка постоянных анимаций перехода используется функция @@ -4715,7 +4715,7 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете func(View, string) -где второй аргумент это имя свойства. +где второй аргумент это имя Свойства. Можно также использовать слушателя следующего формата: @@ -4730,15 +4730,15 @@ x1 и x2 должны быть в диапазоне [0, 1]. Вы можете func GetTransitionEndListeners(view View, subviewID ...string) []func(View, string) func GetTransitionCancelListeners(view View, subviewID ...string) []func(View, string) -### Cценарий анимации +### Сценарий анимации -Cценарий анимации описывает более сложную анимацию, по сравнению с анимацией перехода. Для этого -в Animation добавляются дополнительные свойства: +Сценарий анимации описывает более сложную анимацию, по сравнению с анимацией перехода. Для этого +в Animation добавляются дополнительные Свойства: #### Свойство "property" -Свойство "property" (константа PropertyTag) описывает изменения свойств. В качестве значения ему присваивается -[]AnimatedProperty. Структура AnimatedProperty описывает изменение одного свойства. Она описана как +Свойство "property" (константа PropertyTag) описывает изменения Свойств. В качестве значения ему присваивается +[]AnimatedProperty. Структура AnimatedProperty описывает изменение одного Свойства. Она описана как type AnimatedProperty struct { Tag string @@ -4746,14 +4746,14 @@ Cценарий анимации описывает более сложную а 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, @@ -4764,17 +4764,17 @@ KeyFrames - промежуточные значения свойства (клю } } -В данном примере свойство "width" 90% времени будет увеличиваться со 100px до 220px. В оставшиеся +В данном примере Свойство "width" 90% времени будет увеличиваться со 100px до 220px. В оставшиеся 10% времени - будет уменьшаться с 220px до 200px. -Свойству "property" присваивается []AnimatedProperty, а значит можно анимировать сразу несколько свойств. +Свойству "property" присваивается []AnimatedProperty, а значит можно анимировать сразу несколько Свойств. Вы должны задать хотя бы один элемент "property", иначе анимация будет игнорироваться. #### Свойство "id" Свойство "id" (константа ID) типа string задает идентификатор анимации. Передается в качестве параметра слушателю -события анимации. Если вы не планируете использовать слушателей событий для анимации, то данное свойство +события анимации. Если вы не планируете использовать слушателей событий для анимации, то данное Свойство можно не задавать. #### Свойство "iteration-count" @@ -4797,7 +4797,7 @@ KeyFrames - промежуточные значения свойства (клю #### Запуск анимации -Для запуска сценария анимации необходимо созданный Animation интерфейс присвоить свойству "animation" +Для запуска сценария анимации необходимо созданный Animation интерфейс присвоить Свойству "animation" (константа AnimationTag). Если View уже отображается на экране, то анимация запускается сразу (с учетом заданной задержки), в противоположном случае анимация запускается как только View отобразится на экране. @@ -4824,10 +4824,10 @@ KeyFrames - промежуточные значения свойства (клю #### Свойство "animation-paused" Свойство "animation-paused" (константа AnimationPaused) типа bool позволяет приостановить анимацию. -Для того чтобы поставить анимацию на паузу необходимо данному свойству присвоить значение true, а +Для того чтобы поставить анимацию на паузу необходимо данному Свойству присвоить значение true, а для возобновления - false. -Внимание. В момент присваивания значения свойству "animation" cвойство "animation-paused" сбрасывается в false. +Внимание. В момент присваивания значения Свойству "animation" Свойство "animation-paused" сбрасывается в false. #### События анимации @@ -4868,7 +4868,7 @@ Safari и Firefox. Этот интерфейс используется для взаимодействия с клиентом. Получить текущий интерфейс Session можно вызвав метод Session() интерфейса View. -При создани сессии она получает пользовательскую реализацию интерфейса SessionContent. +При создании сессии она получает пользовательскую реализацию интерфейса SessionContent. type SessionContent interface { CreateRootView(session rui.Session) rui.View @@ -4890,7 +4890,7 @@ Safari и Firefox. Сразу после создания сессии вызывается функция CreateRootView. После создания корневого View вызывается функцию OnStart (если она реализована) -Функция OnFinish (если она реализована) вызывается когда пользователь закрывет страницу приложения в браузере +Функция OnFinish (если она реализована) вызывается когда пользователь закрывает страницу приложения в браузере Функция OnPause вызывается когда страница приложения в браузере клиента становится неактивной. Это происходит если пользователь переключается на другую вкладку/окно браузера, сворачивает браузер @@ -4912,13 +4912,13 @@ Safari и Firefox. * PixelRatio() float64 - возвращает размер логического пикселя, т.е. сколько физических пикселей образуют логический. Например, для iPhone это значение будет 2 или 3 -* TextDirection() int - возвращает напрвление письма: LeftToRightDirection (1) или RightToLeftDirection (2) +* TextDirection() int - возвращает направление письма: LeftToRightDirection (1) или RightToLeftDirection (2) * Constant(tag string) (string, bool) - возвращает значение константы * Color(tag string) (Color, bool) - возвращает значение константы цвета -* SetCustomTheme(name string) bool - устанавливает тему заданым именем в качестве текущей. Возвращает false если тема с таким именем не найдена. Темы с именем "" это тема по умолчанию. +* SetCustomTheme(name string) bool - устанавливает тему заданным именем в качестве текущей. Возвращает false если тема с таким именем не найдена. Темы с именем "" это тема по умолчанию. * Language() string - возвращает текущий язык интерфейса, например: "en", "ru", "ptBr" @@ -4935,11 +4935,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) @@ -4964,7 +4964,7 @@ Safari и Firefox. '`', '/' и любые пробелы, то имя объекта необходимо брать в кавычки. Если эти символы не используются, то кавычки не обязательны. -Можно использовать три вида ковычек: +Можно использовать три вида кавычек: * "…" - эквивалентна такой же строке в языке go, т.е. внутри можно использовать escape последовательности: \n, \r, \\, \", \', \0, \t, \x00, \u0000 @@ -4974,7 +4974,7 @@ Safari и Firefox. * `…` - эквивалентна такой же строке в языке go, т.е. текст внутри этой строки остается как есть. Внутри нельзя использовать символ `. -Данные объяекта представляют собой множество пар <ключ> = <значение> разделенные запятой. +Данные объекта представляют собой множество пар <ключ> = <значение> разделенные запятой. Ключ это строка текста. Правила оформления такие же как и у имени объекта. @@ -5052,12 +5052,12 @@ Safari и Firefox. Для получения простого значения используется метод Text. Для получения объекта используется метод Object. -Для получения элементов массива используюся методы ArraySize, ArrayElement и ArrayElements +Для получения элементов массива используются методы ArraySize, ArrayElement и ArrayElements ## Ресурсы Ресурсы (картинки, темы, переводы и т.д.) с которыми работает приложение должны размещаться по -поддиректориям внутри одного директория ресурсов. Ресурсы должны располагаться в следующих поддерикториях: +поддиректориям внутри одного директория ресурсов. Ресурсы должны располагаться в следующих поддиректориях: * images - в данную поддиректорию помещаются все изображения. Здесь можно делать вложенные поддиректории. В этом случае их надо включать в имя файла. Например, "subdir/image1.png" @@ -5117,22 +5117,22 @@ Safari и Firefox. ## Темы -Тема включает в сябя три вида данных: +Тема включает в себя три вида данных: * константы * константы цвета * Стили View Темы оформляются в виде rui файла и помещаются в папку themes. -Корневым объектом темы является объект с именем 'theme'. Данный объект может содержать следующие свойства: +Корневым объектом темы является объект с именем 'theme'. Данный объект может содержать следующие Свойства: -* name - текстовое свойство задающее имя темы. Если данное свойство не задано или оно равно пустой строке, +* name - текстовое Свойство задающее имя темы. Если данное Свойство не задано или оно равно пустой строке, то это тема по умолчанию. -* constants - свойство-объект определяющий константы. Имя объекта может быть любым. Рекомендуется использовать "_". -Объект может иметь любое количиство текстовых свойств задающих пару "имя константы" = "значение". +* constants - Свойство-объект определяющий константы. Имя объекта может быть любым. Рекомендуется использовать "_". +Объект может иметь любое количество текстовых Свойств задающих пару "имя константы" = "значение". В данном разделе помещаются константы типа SizeUnit, AngleUnit, текстовые и числовые. Для того чтобы -присвоить константу какому либо свойству View надо свойству присвоить имя константы добавив вначале символ '@'. +присвоить константу какому либо Свойству View надо Свойству присвоить имя константы добавив вначале символ '@'. Например theme { @@ -5145,7 +5145,7 @@ Safari и Firefox. rui.Set(view, "subView", rui.Padding, "@defaultPadding") -* constants:touch - свойство-объект определяющий константы используемые только для touch screen. +* constants:touch - Свойство-объект определяющий константы используемые только для touch screen. Например, как сделать отступы больше на touch screen: theme { @@ -5157,8 +5157,8 @@ Safari и Firefox. }, } -* colors - свойство-объект определяющий цветовые константы для светлой темы оформления (тема по умолчанию). -Объект может иметь любое количиство текстовых свойств задающих пару "имя цвета" = "цвет". Аналогично +* colors - Свойство-объект определяющий цветовые константы для светлой темы оформления (тема по умолчанию). +Объект может иметь любое количество текстовых Свойств задающих пару "имя цвета" = "цвет". Аналогично константам, при присваивании необходимо вначале имени цвета добавить '@'. Например theme { @@ -5183,9 +5183,9 @@ 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 - массив общих стилей. Каждый элемент массива должен быть объектом. Имя объекта является ивляется +* styles - массив общих стилей. Каждый элемент массива должен быть объектом. Имя объекта является именем стиля. Например, theme { @@ -5203,11 +5203,11 @@ Safari и Firefox. ] } -Для использования стилей у View есть два текстовых свойства "style" (константа Style) и "style-disabled" -(константа StyleDisabled). Свойству "style" присваивается имя свойства которое применяется ко View при -значении свойства "disabled" равного false. Свойству "style-disabled" присваивается имя свойства -которое применяется ко View при значении свойства "disabled" равного true. Если "style-disabled" -не определен, то всойство "style" используется в обоих режимах. +Для использования стилей у View есть два текстовых Свойства "style" (константа Style) и "style-disabled" +(константа StyleDisabled). Свойству "style" присваивается имя Свойства которое применяется ко View при +значении Свойства "disabled" равного false. Свойству "style-disabled" присваивается имя Свойства +которое применяется ко View при значении Свойства "disabled" равного true. Если "style-disabled" +не определен, то свойство "style" используется в обоих режимах. Внимание! Символ '@' к имени стиля добавлять НЕ НАДО. Если вы добавите символ '@' к имени, то имя стиля будет извлекаться из одноименной константы. Например @@ -5233,10 +5233,10 @@ Safari и Firefox. rui.Set(view, "subView", rui.Style, "demoPanel") // style == demoPanel rui.Set(view, "subView", rui.Style, "@demoPanel") // style == demoPage -Помимо общих стилей можно затать стили для отдельных режимов работы. Для этого к имени "styles" добавляются +Помимо общих стилей можно задать стили для отдельных режимов работы. Для этого к имени "styles" добавляются следующие модификаторы: -* ":portrait" или ":landscape" - соответственно стили для портретного или ладшафтного режима программы. +* ":portrait" или ":landscape" - соответственно стили для портретного или ландшафтного режима программы. Внимание имеется ввиду соотношение сторон окна программы, а не экрана. * ":width<размер>" - стили для экрана ширина которого не превышает заданный размер в логических пикселях. @@ -5269,7 +5269,7 @@ Safari и Firefox. } ], styles:portrait:width320 = [ - sapmplePage { + samplePage { width = 100%, height = 50%, }, @@ -5286,32 +5286,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 не владеет фокусом | @@ -5348,7 +5348,7 @@ Safari и Firefox. |------------------------------|-----------------------------------------------| | ruiButtonHorizontalPadding | Горизонтальный отступ внутри кнопки | | ruiButtonVerticalPadding | Вертикальный отступ внутри кнопки | -| ruiButtonMargin | Внешний тоступ кнопки | +| ruiButtonMargin | Внешний отступ кнопки | | ruiButtonRadius | Радиус скругления углов кнопки | | ruiButtonHighlightDilation | Ширина внешней рамки активной кнопки | | ruiButtonHighlightBlur | Размытие рамки активной кнопки | @@ -5425,5 +5425,5 @@ Safari и Firefox. Если перевода данной строки нет, то метод вернет исходную строку и false в качестве второго параметра. Получить текущий язык можно с помощью метода Language() интерфейса Session. Текущий язык определяется настройками -браузера пользователя. Поменять язык сессии можно спомощью метода SetLanguage(lang string) интерфейса Session. +браузера пользователя. Поменять язык сессии можно с помощью метода SetLanguage(lang string) интерфейса Session. diff --git a/README.md b/README.md index 3803ee2..67d1de1 100644 --- a/README.md +++ b/README.md @@ -631,7 +631,7 @@ which implements the Properties interface (see above). BoundsProperty has 4 Size | "top" | rui.Top | Top padding | | "right" | rui.Right | Right padding | | "bottom" | rui.Bottom | Bottom padding | -| "left" | rui.Left | Дуае padding | +| "left" | rui.Left | Left padding | The NewBoundsProperty function is used to create the BoundsProperty interface. Example @@ -1255,7 +1255,7 @@ The textual description of the polygonal cropping area is in the following forma polygon{ points = ", , , ,…" } -### "оpacity" property +### "opacity" property The "opacity" property (constant Opacity) of the float64 type sets the transparency of the View. Valid values are from 0 to 1. Where 1 - View is fully opaque, 0 - fully transparent. @@ -1311,7 +1311,7 @@ The argument lists the effects to apply. The following effects are possible: | "invert" | Invert | float64 0…100% | Invert colors | | "opacity" | Opacity | float64 0…100% | Changing transparency | | "saturate" | Saturate | float64 0…10000% | Saturation change | -| "sepia" | Sepia | float64 0…100% | Conversion to serpia | +| "sepia" | Sepia | float64 0…100% | Conversion to sepia | Example @@ -1871,7 +1871,7 @@ Several kinds of mouse events can be generated for the View | "mouse-up" | MouseUp | The mouse button has been released. | | "mouse-move" | MouseMove | Mouse cursor moved | | "mouse-out" | MouseOut | The mouse cursor has moved outside the View, or entered the child View | -| "mouse-over" | MouseOver | The mouse cursor has moved within the arrea of View | +| "mouse-over" | MouseOver | The mouse cursor has moved within the area of View | | "click-event" | ClickEvent | There was a mouse click | | "double-click-event" | DoubleClickEvent | There was a double mouse click | | "context-menu-event" | ContextMenuEvent | The key for calling the context menu (right mouse button) is pressed | @@ -2130,7 +2130,7 @@ In addition to all View properties, this element has only one additional propert ### "content" property -The "content" property (constant Сontent) defines an array of child Views. Interface Get function +The "content" property (constant Content) defines an array of child Views. Interface Get function always returns []View for the given property. The following 5 data types can be passed as the value of the "content" property: @@ -2298,7 +2298,7 @@ The "grid-auto-flow" property can take the following values: * RowAutoFlow (0) (text name "row") - Views are placed by filling each row in turn, adding new columns as necessary; -* ColumnAutoFlow (1) (text name "colunm") - Views are placed by filling each column in turn, adding new columns as necessary; +* ColumnAutoFlow (1) (text name "column") - Views are placed by filling each column in turn, adding new columns as necessary; * RowDenseAutoFlow (2) (text name "row-dense") - Views are placed by filling each row, adding new rows as necessary. "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later. @@ -3765,7 +3765,7 @@ A custom View is created based on another, which is named Super View. To simplify the task, there is already a basic CustomView implementation in the form of a CustomViewData structure. -Let's consider creating a custom View using the built-in Buttom element as an example: +Let's consider creating a custom View using the built-in Button element as an example: 1) declare the Button interface as extending CustomView, and the buttonData structure as extending CustomViewData @@ -4237,7 +4237,7 @@ without having to stop to further buffer the content. * "loaded-metadata-event" (LoadedMetadataEvent constant) is fired when the metadata has been loaded. -* "loadstart-event" (LoadstartEvent constant) is fired when the browser starts loading the resource. +* "loadstart-event" (LoadStartEvent constant) is fired when the browser starts loading the resource. * "pause-event" (PauseEvent constant) is fired when a pause request is processed and the action pauses, most often when the Pause () method is called. @@ -4387,7 +4387,7 @@ The "arrow" property can take the following values | 0 | NoneArrow | No arrow (default value) | | 1 | Top Arrow | Arrow at the top side of the pop-up window | | 2 | RightArrow | Arrow on the right side of the pop-up window | -| 3 | bottomarrow | Arrow at the bottom of the pop-up window | +| 3 | BottomArrow | Arrow at the bottom of the pop-up window | | 4 | LeftArrow | Arrow on the left side of the pop-up window | The size of the arrow is specified using the "arrow-size" (ArrowSize constant) and "arrow-width" (ArrowWidth constant) SizeUnit properties. @@ -5224,7 +5224,7 @@ For example } ], styles:portrait:width320 = [ - sapmplePage { + samplePage { width = 100%, height = 50%, }, diff --git a/appWasm.go b/appWasm.go index b52fa3f..8feefbd 100644 --- a/appWasm.go +++ b/appWasm.go @@ -90,6 +90,7 @@ func (app *wasmApp) init(params AppParams) { head.Call("appendChild", meta) if params.Icon != "" { + url := params.Icon if image, ok := resources.images[params.Icon]; ok && image.fs != nil { dataType := map[string]string{ ".svg": "data:image/svg+xml", @@ -101,15 +102,17 @@ func (app *wasmApp) init(params AppParams) { ext := strings.ToLower(filepath.Ext(params.Icon)) if prefix, ok := dataType[ext]; ok { if data, err := image.fs.ReadFile(image.path); err == nil { - meta = document.Call("createElement", "link") - meta.Set("rel", "icon") - meta.Set("href", prefix+";base64,"+base64.StdEncoding.EncodeToString(data)) - head.Call("appendChild", meta) + url = prefix + ";base64," + base64.StdEncoding.EncodeToString(data) } else { DebugLog(err.Error()) } } } + + meta = document.Call("createElement", "link") + meta.Set("rel", "icon") + meta.Set("href", url) + head.Call("appendChild", meta) } script := document.Call("createElement", "script") diff --git a/imageView.go b/imageView.go index db3b3a2..05b3901 100644 --- a/imageView.go +++ b/imageView.go @@ -84,6 +84,9 @@ func (imageView *imageViewData) normalizeTag(tag string) string { case "source": tag = Source + case "src-set", "source-set": + tag = SrcSet + case VerticalAlign: tag = ImageVerticalAlign @@ -130,7 +133,7 @@ func (imageView *imageViewData) set(tag string, value any) bool { switch tag { case Source: if text, ok := value.(string); ok { - imageView.properties[Source] = text + imageView.properties[tag] = text if imageView.created { src, srcset := imageView.src(text) imageView.session.updateProperty(imageView.htmlID(), "src", src) @@ -146,6 +149,26 @@ func (imageView *imageViewData) set(tag string, value any) bool { } notCompatibleType(Source, value) + case SrcSet: + if text, ok := value.(string); ok { + if text == "" { + delete(imageView.properties, tag) + } else { + imageView.properties[tag] = text + } + if imageView.created { + _, srcset := imageView.src(text) + if srcset != "" { + imageView.session.updateProperty(imageView.htmlID(), "srcset", srcset) + } else { + imageView.session.removeProperty(imageView.htmlID(), "srcset") + } + } + imageView.propertyChangedEvent(Source) + return true + } + notCompatibleType(Source, value) + case AltText: if text, ok := value.(string); ok { imageView.properties[AltText] = text @@ -196,6 +219,30 @@ func (imageView *imageViewData) imageListeners(tag string) []func(ImageView) { } func (imageView *imageViewData) srcSet(path string) string { + if value := imageView.getRaw(SrcSet); value != nil { + if text, ok := value.(string); ok { + srcset := strings.Split(text, ",") + buffer := allocStringBuilder() + defer freeStringBuilder(buffer) + for i, src := range srcset { + if i > 0 { + buffer.WriteString(", ") + } + src = strings.Trim(src, " \t\n") + buffer.WriteString(src) + if index := strings.LastIndex(src, "@"); index > 0 { + if ext := strings.LastIndex(src, "."); ext > index { + buffer.WriteRune(' ') + buffer.WriteString(src[index+1 : ext]) + } + } else { + buffer.WriteString(" 1x") + } + } + return buffer.String() + } + } + if srcset, ok := resources.imageSrcSets[path]; ok { buffer := allocStringBuilder() defer freeStringBuilder(buffer) diff --git a/propertyNames.go b/propertyNames.go index b3c4abe..7649cf9 100644 --- a/propertyNames.go +++ b/propertyNames.go @@ -483,8 +483,15 @@ const ( GridColumnGap = "grid-column-gap" // Source is the constant for the "src" property tag. + // The "src" property specifies the image to display in the ImageView. Source = "src" + // SrcSet is the constant for the "srcset" property tag. + // The "srcset" property is a string which identifies one or more image candidate strings, separated using commas (,) + // each specifying image resources to use under given screen density. + // This property is only used if you are building an application for js/wasm platform + SrcSet = "srcset" + // Fit is the constant for the "fit" property tag. Fit = "fit" backgroundFit = "background-fit"