selenite/ActionButton.slint

51 lines
1.1 KiB
Text
Raw Normal View History

2024-10-16 11:40:45 +02:00
import { Palette } from "Palette.slint";
import { VText } from "Text.slint";
export component VActionButton inherits Rectangle {
in property<image> icon-source;
in property<brush> icon-colorize: Palette.foreground;
in property<length> icon-size: 1rem;
in property<string> icon-svg;
in property<length> icon-svg-stroke-width: 2px;
in property enabled <=> ta.enabled;
callback clicked;
private property<bool> active: false;
background: enabled ? Palette.control-background : Palette.control-background.darker(0.2);
border-radius: 4px;
ta := TouchArea {
mouse-cursor: pointer;
clicked => {
active = !active;
root.clicked();
}
}
HorizontalLayout {
alignment: center;
spacing: 8px;
padding: 8px;
if root.icon-svg != "" : VerticalLayout {
alignment: center;
Path {
padding: 8px;
commands: root.icon-svg;
stroke: icon-colorize;
stroke-width: icon-svg-stroke-width;
width: icon-size;
height: icon-size;
fill: icon-colorize;
}
}
if root.icon-source.width != 0 : Image {
padding: 8px;
source: icon-source;
colorize: icon-colorize;
width: icon-size;
}
}
}