// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 import { Button, HorizontalBox, Switch, Palette, ComboBox } from "std-widgets.slint"; import { BodyText } from "../components/body-text.slint"; import { HeaderText } from "../components/header-text.slint"; import { Api, ComponentItem } from "../api.slint"; import { EditorSpaceSettings, Icons, ConsoleStyles } from "../components/styling.slint"; export component HeaderView { in-out property edit-mode <=> interaction-switch.checked; in-out property current-style <=> style-combobox.current-value; in property <[string]> known-styles <=> style-combobox.model; in-out property library-widget <=> shortcut-library.checked; in-out property properties-widget <=> shortcut-properties.checked; in-out property outline-widget <=> shortcut-outline.checked; in-out property data-widget <=> shortcut-simulator-data.checked; callback style-selected(); callback edit-mode-toggled(); callback library-toggled(bool); callback properties-toggled(bool); callback outline-toggled(bool); callback simulator-toggled(bool); background-layer := Rectangle { background: Palette.alternate-background; content-layer := HorizontalBox { horizontal-stretch: 1; HorizontalLayout { alignment: start; horizontal-stretch: 0; spacing: EditorSpaceSettings.default-spacing / 2; Button { icon: Icons.sync; colorize-icon: true; clicked => { Api.reload-preview(); } } label := Text { horizontal-alignment: left; vertical-alignment: center; color: ConsoleStyles.text-color; font-family: "Inter"; font-size: 12px; text: @tr("Preview"); } } HorizontalLayout { alignment: center; spacing: EditorSpaceSettings.default-spacing; HorizontalLayout { visible: false; spacing: EditorSpaceSettings.default-spacing / 2; horizontal-stretch: 1; BodyText { text: @tr("Interact"); } interaction-switch := Switch { checked: true; toggled => { root.edit-mode-toggled(); } } BodyText { text: @tr("Edit"); } } @children HorizontalLayout { spacing: EditorSpaceSettings.default-spacing / 2; shortcut-library := Button { horizontal-stretch: 0; checkable: true; icon: Icons.library; colorize-icon: !self.checked; primary: self.checked; clicked => { root.library-toggled(self.checked); library-widget = self.checked; } } shortcut-properties := Button { horizontal-stretch: 0; checkable: true; icon: Icons.properties; colorize-icon: !self.checked; primary: self.checked; clicked => { root.properties-toggled(self.checked); properties-widget = self.checked; } } shortcut-outline := Button { horizontal-stretch: 0; checkable: true; icon: Icons.outline; colorize-icon: !self.checked; primary: self.checked; clicked => { root.outline-toggled(self.checked); outline-widget = self.checked; } } shortcut-simulator-data := Button { horizontal-stretch: 0; checkable: true; icon: Icons.simulator; colorize-icon: !self.checked; primary: self.checked; clicked => { root.simulator-toggled(self.checked); data-widget = self.checked; } } } } HorizontalLayout { alignment: end; spacing: 4px; BodyText { horizontal-stretch: 0; visible: Api.uses-widgets; horizontal-alignment: right; text: @tr("Style"); } style-combobox := ComboBox { horizontal-stretch: 0; visible: Api.uses-widgets; selected => { root.style-selected(); } } } } Rectangle { y: parent.height - self.height; height: 1px; background: Palette.border; } } }