slint/tools/lsp/ui/components/widgets/enum-widget.slint
Tobias Hunger 647b4650a3 live-preview: Fix widgets in the edit window of the table sticking out on the side
The classic: Layouts distribute 100% of the pixels to their elements
and only then apply padding and spacing... when you use `width: 100%;`.
2025-04-15 18:56:27 +02:00

56 lines
1.6 KiB
Text

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
import { ChildIndicator, NameLabel } from "./basics.slint";
import { PropertyValue, PropertyValueKind } from "../../api.slint";
import { EditorSpaceSettings } from "../../components/styling.slint";
import { ComboBox } from "std-widgets.slint";
export component EnumWidget inherits GridLayout {
in property <bool> enabled;
in property <string> property-name;
in property <PropertyValue> property-value;
changed property-value => {
if self.property-value.kind == PropertyValueKind.enum {
cb.current-index = root.property-value.value-int;
}
}
callback update-display-string(value: string);
callback set-enum-binding(text: string);
spacing-vertical: EditorSpaceSettings.default-spacing;
Row {
NameLabel {
col: 1;
property-name: root.property-name;
property-value: root.property-value;
}
}
Row {
childIndicator := ChildIndicator {
horizontal-stretch: 0;
visible: false;
}
HorizontalLayout {
cb := ComboBox {
enabled: root.enabled;
current-index: root.property-value.value-int;
model: root.property-value.visual-items;
selected(value) => {
root.update-display-string(property-value.value-string + "." + value);
root.set-enum-binding(property-value.value-string + "." + value);
}
}
}
}
}