Пользовательские виджеты - сервер
Описание модели объекта атрибутов
Для создания пользовательского виджета вы должны создать модель объекта атрибутов. Это обеспечивает типобезопасность при исполь зовании виджета при создании макетов.
Используйте ValueReferenceHolder, если хотите, чтобы атрибуты вашего пользовательского виджета могли быть размечены для использования в составе компонентов.
Используйте AnimatedPropertyOwner, если хотите поддерживать Duit-анимацию в вашем пользовательском виджете.
type SvgAttributes struct {
ValueReferenceHolder
animations.AnimatedPropertyOwner
Width float32 `json:"width,omitempty"`
Height float32 `json:"height,omitempty"`
Content string `json:"content,omitempty"`
}
Создание функции-конструктора
Функции-конструкторы в стиле DSL Duit помогают сохранить общую семантику верстки макетов и использовать пользовательские виджеты единообразно с базовыми виджетами.
func Svg(attributes *SvgAttributes, id string, controlled bool) *duit_core.DuitElementModel {
return new(duit_core.DuitElementModel).CreateElement(
duit_core.Custom, //type = Custom
id, // widget id
"SvgCustomWidget", //unique tag for this type of widgets
attributes, //attributes object
nil, //related action
controlled, //controlled or uncontrolled
0, //may have child elements or not, where 0 means no
nil, //data for conponents (nil at this case)
nil, //custom widget subviews (children), if it has
)
}
Пользовательские виджеты обязательно должны иметь уникальный тег.
После этого можно использовать новые функции для создани я макетов так же, как и для стандартных виджетов, поддерживаемых Duit.