Loading files
import { ToolBarWidget, ToolBarSelectorButton } from "toolbar.slint";
import { IpcDensityLevel } from "../api.slint";
export component IpcDensityLevelSelector inherits ToolBarWidget {
in-out property <IpcDensityLevel> value;
out property <image> icon: {
if value == IpcDensityLevel.a {
a-btn.icon
} else if value == IpcDensityLevel.b {
b-btn.icon
} else if value == IpcDensityLevel.c {
c-btn.icon
} else {
@image-url("")
}
};
out property <string> text: {
if value == IpcDensityLevel.a {
@tr("IPC Density Level A (max protrusion)")
} else if value == IpcDensityLevel.b {
@tr("IPC Density Level B (medium protrusion)")
} else if value == IpcDensityLevel.c {
@tr("IPC Density Level C (min protrusion)")
} else {
@tr("No density level preference")
}
};
spacing: 5px;
callback value-clicked(IpcDensityLevel);
value-clicked(v) => {
value = v;
}
a-btn := ToolBarSelectorButton {
icon: @image-url("../../../font-awesome/svgs/regular/circle.svg");
checked: value == IpcDensityLevel.a;
enabled: root.enabled;
accessible-label: "IPC density level A";
clicked => {
root.focus();
value-clicked(self.checked ? IpcDensityLevel.none : IpcDensityLevel.a);
}
}
b-btn := ToolBarSelectorButton {
icon: @image-url("../../../font-awesome/svgs/solid/circle-half-stroke.svg");
checked: value == IpcDensityLevel.b;
enabled: root.enabled;
accessible-label: "IPC density level B";
clicked => {
root.focus();
value-clicked(self.checked ? IpcDensityLevel.none : IpcDensityLevel.b);
}
}
c-btn := ToolBarSelectorButton {
icon: @image-url("../../../font-awesome/svgs/solid/circle.svg");
icon-rotation: 90deg;
checked: value == IpcDensityLevel.c;
enabled: root.enabled;
accessible-label: "IPC density level C";
clicked => {
root.focus();
value-clicked(self.checked ? IpcDensityLevel.none : IpcDensityLevel.c);
}
}
key-pressed(event) => {
if event.text == Key.LeftArrow {
if value == IpcDensityLevel.c {
value-clicked(IpcDensityLevel.b);
} else {
value-clicked(IpcDensityLevel.a);
}
return accept;
} else if event.text == Key.RightArrow {
if value == IpcDensityLevel.a {
value-clicked(IpcDensityLevel.b);
} else {
value-clicked(IpcDensityLevel.c);
}
return accept;
} else if event.text == Key.Space {
value-clicked(IpcDensityLevel.none);
return accept;
}
reject
}
}
bae9c0e4eThis file is pinned to the selected release. Download the original to open it in your design tool.