Copy disabled (too large)
Download .txt
Showing preview only (17,148K chars total). Download the full file to get everything.
Repository: slint-ui/slint
Branch: master
Commit: 7b2b2eb3de2c
Files: 3030
Total size: 18.0 MB
Directory structure:
gitextract_o08rqpvx/
├── .cargo/
│ └── config.toml
├── .clang-format
├── .clippy.toml
├── .dockerignore
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug-report.yaml
│ │ ├── 2-feature-request.yaml
│ │ ├── 3-tracking-issue.md
│ │ ├── 4-blank.md
│ │ └── config.yml
│ ├── actions/
│ │ ├── codesign/
│ │ │ └── action.yaml
│ │ ├── install-linux-dependencies/
│ │ │ └── action.yaml
│ │ ├── install-skia-dependencies/
│ │ │ └── action.yaml
│ │ └── setup-rust/
│ │ └── action.yaml
│ ├── ci_path_filters.yaml
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── autofix.yaml
│ ├── bevy_examples.yaml
│ ├── build_and_test_reusable.yaml
│ ├── build_docs.yaml
│ ├── ci.yaml
│ ├── cpp_package.yaml
│ ├── crater.yaml
│ ├── embedded_build.yaml
│ ├── issue_triage.yaml
│ ├── material.yaml
│ ├── material_gallery.yaml
│ ├── material_wasm_gallery.yaml
│ ├── nightly_snapshot.yaml
│ ├── nightly_tests.yaml
│ ├── node_test_reusable.yaml
│ ├── publish_npm_package.yaml
│ ├── python_test_reusable.yaml
│ ├── schedule_nightly_snapshot.yaml
│ ├── servo_example.yaml
│ ├── slint_tool_binary.yaml
│ ├── spellcheck.yaml
│ ├── torizon_demos.yaml
│ ├── translations.yaml
│ ├── tree_sitter.yaml
│ ├── upgrade_version.yaml
│ ├── upload_esp_idf_component.yaml
│ ├── upload_pypi.yaml
│ ├── upload_pypi_briefcase.yaml
│ ├── upload_pypi_slint_compiler.yaml
│ ├── wasm_demos.yaml
│ └── wasm_editor_and_interpreter.yaml
├── .gitignore
├── .mailmap
├── .mise/
│ ├── config.toml
│ ├── tasks/
│ │ ├── fix/
│ │ │ └── text/
│ │ │ └── trailing_spaces
│ │ └── lint/
│ │ └── legal/
│ │ └── reuse
│ └── tasks.toml
├── .npmrc
├── .taplo.toml
├── .vscode/
│ ├── .gitignore
│ └── extensions.json
├── AGENTS.md
├── CHANGELOG.md
├── CMakeLists.txt
├── CMakePresets.json
├── CONTRIBUTING.md
├── Cargo.toml
├── Cross.toml
├── FAQ.md
├── LICENSE.md
├── LICENSES/
│ ├── Apache-2.0.txt
│ ├── CC-BY-2.0.txt
│ ├── CC-BY-4.0.txt
│ ├── CC-BY-ND-4.0.txt
│ ├── CC-BY-SA-3.0.txt
│ ├── CC-BY-SA-4.0.txt
│ ├── CC-PDDC.txt
│ ├── GPL-3.0-only.txt
│ ├── LicenseRef-DejaVu-Font.txt
│ ├── LicenseRef-Slint-Royalty-free-2.0.md
│ ├── LicenseRef-Slint-Software-3.0.md
│ ├── LicenseRef-qskinny.txt
│ ├── MIT.txt
│ ├── OFL-1.1-RFN.txt
│ ├── OFL-1.1.txt
│ └── Unlicense.txt
├── README.md
├── REUSE.toml
├── SECURITY.md
├── about.toml
├── api/
│ ├── cpp/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── cbindgen.rs
│ │ ├── cmake/
│ │ │ ├── SlintConfig.cmake.in
│ │ │ └── SlintMacro.cmake
│ │ ├── docs/
│ │ │ ├── _static/
│ │ │ │ └── theme_tweak.css
│ │ │ ├── _templates/
│ │ │ │ └── base.html
│ │ │ ├── cmake.md
│ │ │ ├── cmake_reference.md
│ │ │ ├── conf.py
│ │ │ ├── generated_code.md
│ │ │ ├── genindex.rst
│ │ │ ├── getting_started.md
│ │ │ ├── index.rst
│ │ │ ├── live_preview.md
│ │ │ ├── mcu/
│ │ │ │ ├── esp-idf/
│ │ │ │ │ └── troubleshoot.md
│ │ │ │ ├── esp_idf.md
│ │ │ │ ├── generic.md
│ │ │ │ ├── intro.md
│ │ │ │ ├── stm32/
│ │ │ │ │ └── generic.md
│ │ │ │ └── stm32.md
│ │ │ ├── overview.md
│ │ │ ├── pyproject.toml
│ │ │ ├── thirdparty.hbs
│ │ │ └── types.md
│ │ ├── esp-idf/
│ │ │ └── slint/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── cmake/
│ │ │ │ └── FindSlint.cmake
│ │ │ ├── esp-println.x
│ │ │ ├── idf_component.yml
│ │ │ ├── include/
│ │ │ │ └── slint-esp.h
│ │ │ └── src/
│ │ │ └── slint-esp.cpp
│ │ ├── include/
│ │ │ ├── slint-interpreter.h
│ │ │ ├── slint-platform.h
│ │ │ ├── slint-stm32.h
│ │ │ ├── slint-testing.h
│ │ │ ├── slint.h
│ │ │ ├── slint_brush.h
│ │ │ ├── slint_callbacks.h
│ │ │ ├── slint_color.h
│ │ │ ├── slint_config.h
│ │ │ ├── slint_image.h
│ │ │ ├── slint_interpreter.h
│ │ │ ├── slint_item_tree.h
│ │ │ ├── slint_live_preview.h
│ │ │ ├── slint_models.h
│ │ │ ├── slint_pathdata.h
│ │ │ ├── slint_point.h
│ │ │ ├── slint_properties.h
│ │ │ ├── slint_sharedvector.h
│ │ │ ├── slint_size.h
│ │ │ ├── slint_string.h
│ │ │ ├── slint_tests_helpers.h
│ │ │ ├── slint_timer.h
│ │ │ ├── slint_window.h
│ │ │ └── vtable.h
│ │ ├── lib.rs
│ │ ├── platform.rs
│ │ └── tests/
│ │ ├── CMakeLists.txt
│ │ ├── datastructures.cpp
│ │ ├── eventloop.cpp
│ │ ├── interpreter.cpp
│ │ ├── libraries/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ └── main.cpp
│ │ ├── models.cpp
│ │ ├── multiple-includes/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── another-window.slint
│ │ │ ├── app-window.slint
│ │ │ ├── logic.cpp
│ │ │ ├── logic.h
│ │ │ └── main.cpp
│ │ ├── platform_eventloop.cpp
│ │ ├── properties.cpp
│ │ ├── test.slint
│ │ ├── testing.cpp
│ │ ├── translator.cpp
│ │ └── window.cpp
│ ├── node/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .yarnrc.yml
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── __test__/
│ │ │ ├── api.spec.mts
│ │ │ ├── compiler.spec.mts
│ │ │ ├── eventloop.spec.mts
│ │ │ ├── globals.spec.mts
│ │ │ ├── helpers/
│ │ │ │ └── utils.ts
│ │ │ ├── js_value_conversion.spec.mts
│ │ │ ├── models.spec.mts
│ │ │ ├── resources/
│ │ │ │ ├── error.slint
│ │ │ │ ├── test-constructor.slint
│ │ │ │ ├── test-enum.slint
│ │ │ │ ├── test-fileloader.slint
│ │ │ │ ├── test-struct.slint
│ │ │ │ └── test.slint
│ │ │ ├── tsconfig.json
│ │ │ ├── types.spec.mts
│ │ │ └── window.spec.mts
│ │ ├── binaries.json
│ │ ├── biome.json
│ │ ├── build-on-demand.mjs
│ │ ├── build.rs
│ │ ├── cover.md
│ │ ├── package.json
│ │ ├── rust/
│ │ │ ├── interpreter/
│ │ │ │ ├── component_compiler.rs
│ │ │ │ ├── component_definition.rs
│ │ │ │ ├── component_instance.rs
│ │ │ │ ├── diagnostic.rs
│ │ │ │ ├── value.rs
│ │ │ │ └── window.rs
│ │ │ ├── interpreter.rs
│ │ │ ├── lib.rs
│ │ │ ├── types/
│ │ │ │ ├── brush.rs
│ │ │ │ ├── image_data.rs
│ │ │ │ ├── model.rs
│ │ │ │ ├── point.rs
│ │ │ │ └── size.rs
│ │ │ └── types.rs
│ │ ├── thirdparty.hbs
│ │ ├── tsconfig.json
│ │ ├── typescript/
│ │ │ ├── index.ts
│ │ │ └── models.ts
│ │ └── vitest.config.ts
│ ├── python/
│ │ ├── briefcase/
│ │ │ ├── README.md
│ │ │ ├── pyproject.toml
│ │ │ └── src/
│ │ │ └── briefcasex_slint/
│ │ │ └── __init__.py
│ │ └── slint/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── api_match.rs
│ │ ├── async_adapter.rs
│ │ ├── brush.rs
│ │ ├── build.rs
│ │ ├── build_docs.py
│ │ ├── errors.rs
│ │ ├── image.rs
│ │ ├── interpreter.rs
│ │ ├── language.rs
│ │ ├── lib.rs
│ │ ├── models.rs
│ │ ├── pyproject.toml
│ │ ├── slint/
│ │ │ ├── __init__.py
│ │ │ ├── language.py
│ │ │ ├── loop.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ └── slint.pyi
│ │ ├── stub-gen/
│ │ │ └── main.rs
│ │ ├── tests/
│ │ │ ├── api-match.slint
│ │ │ ├── test-file-error.slint
│ │ │ ├── test-load-file.slint
│ │ │ ├── test_api_match.py
│ │ │ ├── test_async.py
│ │ │ ├── test_brush.py
│ │ │ ├── test_callback_decorators.py
│ │ │ ├── test_compiler.py
│ │ │ ├── test_enums.py
│ │ │ ├── test_gc.py
│ │ │ ├── test_image.py
│ │ │ ├── test_instance.py
│ │ │ ├── test_invoke_from_event_loop.py
│ │ │ ├── test_load_file.py
│ │ │ ├── test_loader.py
│ │ │ ├── test_loop.py
│ │ │ ├── test_models.py
│ │ │ ├── test_named_tuples.py
│ │ │ ├── test_timers.py
│ │ │ └── test_translations.py
│ │ ├── thirdparty.hbs
│ │ ├── timer.rs
│ │ └── value.rs
│ ├── rs/
│ │ ├── build/
│ │ │ ├── Cargo.toml
│ │ │ └── lib.rs
│ │ ├── macros/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── lib.rs
│ │ └── slint/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── android.rs
│ │ ├── compile_fail_tests.rs
│ │ ├── docs.rs
│ │ ├── lib.rs
│ │ ├── mcu.md
│ │ ├── private_unstable_api.rs
│ │ ├── tests/
│ │ │ ├── invalid_rust_attr.slint
│ │ │ ├── partial_renderer.rs
│ │ │ ├── popups.rs
│ │ │ ├── show_strongref.rs
│ │ │ ├── simple_macro.rs
│ │ │ ├── spawn_local.rs
│ │ │ ├── text_layout_cache.rs
│ │ │ ├── tokio.rs
│ │ │ └── tokio_block_in_place.rs
│ │ └── type-mappings.md
│ └── wasm-interpreter/
│ ├── Cargo.toml
│ └── src/
│ └── lib.rs
├── biome.json
├── cmake/
│ ├── FindOpenGLES2.cmake
│ └── FindOpenGLES3.cmake
├── cspell.json
├── demos/
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── energy-monitor/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── ios-project.yml
│ │ ├── src/
│ │ │ ├── controllers/
│ │ │ │ ├── header.rs
│ │ │ │ └── weather.rs
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── big_main.slint
│ │ ├── blocks/
│ │ │ ├── blocks.slint
│ │ │ ├── header.slint
│ │ │ ├── kiosk_overlay.slint
│ │ │ └── mobile_header.slint
│ │ ├── components/
│ │ │ ├── menu_background.slint
│ │ │ └── state_layer.slint
│ │ ├── desktop_window.slint
│ │ ├── images.slint
│ │ ├── mcu_window.slint
│ │ ├── mid_main.slint
│ │ ├── mobile_main.slint
│ │ ├── pages/
│ │ │ ├── about.slint
│ │ │ ├── balance.slint
│ │ │ ├── dashboard.slint
│ │ │ ├── dashboard_mobile.slint
│ │ │ ├── menu_page/
│ │ │ │ ├── menu_overview.slint
│ │ │ │ ├── menu_page.slint
│ │ │ │ └── settings.slint
│ │ │ ├── overview.slint
│ │ │ ├── page.slint
│ │ │ ├── pages.slint
│ │ │ ├── usage.slint
│ │ │ └── weather.slint
│ │ ├── small_main.slint
│ │ ├── theme.slint
│ │ └── widgets/
│ │ ├── balance_chart.slint
│ │ ├── bar_chart.slint
│ │ ├── bar_tiles.slint
│ │ ├── chart_axis.slint
│ │ ├── chart_pattern.slint
│ │ ├── check_box.slint
│ │ ├── float_button.slint
│ │ ├── group_box.slint
│ │ ├── icon_button.slint
│ │ ├── item.slint
│ │ ├── list_view.slint
│ │ ├── menu.slint
│ │ ├── menu_button.slint
│ │ ├── navigation.slint
│ │ ├── page_scroll_view.slint
│ │ ├── pagination.slint
│ │ ├── radio_button.slint
│ │ ├── scroll_view.slint
│ │ ├── switch.slint
│ │ ├── tab_widget.slint
│ │ ├── tile.slint
│ │ ├── value_display.slint
│ │ └── widgets.slint
│ ├── home-automation/
│ │ ├── README.md
│ │ ├── node/
│ │ │ ├── biome.json
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── index.html
│ │ │ ├── ios-project.yml
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── api.slint
│ │ │ ├── appState.slint
│ │ │ ├── common.slint
│ │ │ ├── components/
│ │ │ │ ├── alarm.slint
│ │ │ │ ├── appliance.slint
│ │ │ │ ├── camera.slint
│ │ │ │ ├── control.slint
│ │ │ │ ├── dial/
│ │ │ │ │ ├── dial.slint
│ │ │ │ │ └── dialLights.slint
│ │ │ │ ├── dishwasher.slint
│ │ │ │ ├── general/
│ │ │ │ │ ├── doors.slint
│ │ │ │ │ ├── fancySlider.slint
│ │ │ │ │ ├── haText.slint
│ │ │ │ │ └── innerShadowRectangle.slint
│ │ │ │ ├── graph.slint
│ │ │ │ ├── hvac.slint
│ │ │ │ ├── info.slint
│ │ │ │ ├── lamp.slint
│ │ │ │ ├── mainView/
│ │ │ │ │ ├── fullScreenView.slint
│ │ │ │ │ ├── fullScreenWidgetLoader.slint
│ │ │ │ │ ├── fullScreenWidgetLoaderSW.slint
│ │ │ │ │ ├── mainScreen.slint
│ │ │ │ │ ├── sidebar.slint
│ │ │ │ │ ├── viewButton.slint
│ │ │ │ │ ├── widgetLoader.slint
│ │ │ │ │ └── widgetLoaderSoftwareRenderer.slint
│ │ │ │ ├── microwave.slint
│ │ │ │ ├── musicPlayer.slint
│ │ │ │ ├── overhead.slint
│ │ │ │ ├── powerInfo.slint
│ │ │ │ ├── timeInfo.slint
│ │ │ │ └── weatherInfo.slint
│ │ │ ├── demo-debug.slint
│ │ │ ├── demo-sw-renderer.slint
│ │ │ ├── demo.slint
│ │ │ └── fonts/
│ │ │ ├── Poppins-Bold.ttf.license
│ │ │ ├── Poppins-Light.ttf.license
│ │ │ ├── Poppins-Medium.ttf.license
│ │ │ ├── Poppins-Regular.ttf.license
│ │ │ └── Poppins-Thin.ttf.license
│ │ └── zephyr/
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── VERSION
│ │ └── main.cpp
│ ├── printerdemo/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── cpp_interpreted/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── lang/
│ │ │ └── fr/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── printerdemo.mo
│ │ │ └── printerdemo.po
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── printerdemo.pot
│ │ ├── python/
│ │ │ ├── README.md
│ │ │ ├── main.py
│ │ │ └── pyproject.toml
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── common.slint
│ │ │ ├── components/
│ │ │ │ ├── button.slint
│ │ │ │ ├── drop_down_menu.slint
│ │ │ │ ├── headers.slint
│ │ │ │ ├── icon_button.slint
│ │ │ │ ├── icon_text_button.slint
│ │ │ │ ├── popup_menu.slint
│ │ │ │ ├── sidebar.slint
│ │ │ │ ├── spinbox.slint
│ │ │ │ └── text_button.slint
│ │ │ ├── fonts/
│ │ │ │ ├── Inter-24pt-Medium.ttf.license
│ │ │ │ ├── Inter-24pt-Regular.ttf.license
│ │ │ │ └── convert.sh
│ │ │ ├── images/
│ │ │ │ ├── cat.jpg.license
│ │ │ │ ├── dog.jpg.license
│ │ │ │ ├── elephant.jpg.license
│ │ │ │ └── snake.jpg.license
│ │ │ ├── pages/
│ │ │ │ ├── copy_page.slint
│ │ │ │ ├── home_page.slint
│ │ │ │ ├── ink_page.slint
│ │ │ │ ├── page.slint
│ │ │ │ ├── pages.slint
│ │ │ │ ├── print_page.slint
│ │ │ │ ├── printer_queue.slint
│ │ │ │ ├── scan_page.slint
│ │ │ │ ├── settings_page.slint
│ │ │ │ └── usb_page.slint
│ │ │ └── printerdemo.slint
│ │ └── zephyr/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── README_NXP.md
│ │ ├── VERSION
│ │ └── main.cpp
│ ├── printerdemo_mcu/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── bench.rs
│ │ ├── build.rs
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── idf_component.yml
│ │ │ │ └── main.cpp
│ │ │ ├── partitions.csv
│ │ │ ├── rust-toolchain.toml
│ │ │ └── sdkconfig.defaults
│ │ ├── main.rs
│ │ └── ui/
│ │ ├── common.slint
│ │ ├── components/
│ │ │ ├── CheckBox.slint
│ │ │ ├── ComboBox.slint
│ │ │ ├── MiniPopup.slint
│ │ │ ├── Page.slint
│ │ │ ├── PushButton.slint
│ │ │ ├── ShadowBox.slint
│ │ │ ├── SideBar.slint
│ │ │ ├── SpinBox.slint
│ │ │ └── components.slint
│ │ ├── pages/
│ │ │ ├── copy_page.slint
│ │ │ ├── home_page.slint
│ │ │ ├── ink_page.slint
│ │ │ ├── pages.slint
│ │ │ ├── printer_queue.slint
│ │ │ ├── scan_page.slint
│ │ │ └── settings_page.slint
│ │ └── printerdemo.slint
│ ├── usecases/
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── idf_component.yml
│ │ │ │ └── main.cpp
│ │ │ ├── rust-toolchain.toml
│ │ │ └── sdkconfig.defaults
│ │ ├── lang/
│ │ │ └── de/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── usecases.mo
│ │ │ └── usecases.po
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── src/
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── app.slint
│ │ │ ├── assets.slint
│ │ │ ├── icons.slint
│ │ │ ├── views/
│ │ │ │ ├── dashboard_view.slint
│ │ │ │ ├── header_view.slint
│ │ │ │ ├── mail_view.slint
│ │ │ │ └── main_view.slint
│ │ │ ├── views.slint
│ │ │ ├── virtual_keyboard.slint
│ │ │ ├── widgets/
│ │ │ │ ├── bar_chart.slint
│ │ │ │ ├── card_list_view.slint
│ │ │ │ ├── container.slint
│ │ │ │ ├── dialog.slint
│ │ │ │ ├── extended_line_edit.slint
│ │ │ │ ├── icon.slint
│ │ │ │ ├── icon_button.slint
│ │ │ │ ├── navigation_list_view.slint
│ │ │ │ ├── segmented.slint
│ │ │ │ ├── styling.slint
│ │ │ │ ├── tile.slint
│ │ │ │ ├── title_text.slint
│ │ │ │ └── value_display.slint
│ │ │ └── widgets.slint
│ │ └── update_translations.sh
│ ├── weather-demo/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── src/
│ │ │ ├── app_main.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ └── weather/
│ │ │ ├── dummyweather.json
│ │ │ ├── dummyweathercontroller.rs
│ │ │ ├── mod.rs
│ │ │ ├── openweathercontroller.rs
│ │ │ ├── utils.rs
│ │ │ ├── weathercontroller.rs
│ │ │ └── weatherdisplaycontroller.rs
│ │ └── ui/
│ │ ├── about-box.slint
│ │ ├── city_weather.slint
│ │ ├── city_weather_tile.slint
│ │ ├── controls/
│ │ │ ├── busy-layer.slint
│ │ │ ├── generic.slint
│ │ │ ├── stackview.slint
│ │ │ └── weather.slint
│ │ ├── expanded_city_weather_tile.slint
│ │ ├── forecast_with_graph.slint
│ │ ├── location_datatypes.slint
│ │ ├── location_search.slint
│ │ ├── main.slint
│ │ ├── page-base.slint
│ │ ├── style/
│ │ │ └── styles.slint
│ │ ├── ui_utils.slint
│ │ └── weather_datatypes.slint
│ └── zephyr-common/
│ ├── boards/
│ │ ├── mimxrt1170_evk_mimxrt1176_cm7.conf
│ │ ├── native_sim_64.conf
│ │ └── native_sim_64.overlay
│ ├── prj.conf
│ ├── slint-zephyr.cpp
│ ├── slint-zephyr.h
│ └── west.yaml
├── docker/
│ ├── Dockerfile.aarch64-unknown-linux-gnu
│ ├── Dockerfile.armv7-unknown-linux-gnueabihf
│ ├── Dockerfile.cpp-image
│ ├── Dockerfile.riscv64gc-unknown-linux-gnu
│ ├── Dockerfile.torizon-demos
│ └── Dockerfile.x86_64-unknown-linux-gnu
├── docs/
│ ├── astro/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── astro.config.mjs
│ │ ├── biome.json
│ │ ├── ec.config.mjs
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ └── editor/
│ │ │ │ ├── codemirror.js
│ │ │ │ ├── language-facets.js
│ │ │ │ ├── package.json
│ │ │ │ └── rollup.config.js
│ │ │ ├── content/
│ │ │ │ ├── code/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── Cargo.toml
│ │ │ │ │ ├── app-window.slint
│ │ │ │ │ ├── main_game_logic.cpp
│ │ │ │ │ ├── main_game_logic.js
│ │ │ │ │ ├── main_game_logic.py
│ │ │ │ │ ├── main_game_logic_in_rust.rs
│ │ │ │ │ ├── main_initial.cpp
│ │ │ │ │ ├── main_initial.js
│ │ │ │ │ ├── main_initial.py
│ │ │ │ │ ├── main_initial.rs
│ │ │ │ │ ├── main_memory_tile.rs
│ │ │ │ │ ├── main_multiple_tiles.rs
│ │ │ │ │ ├── main_polishing_the_tile.rs
│ │ │ │ │ ├── main_tiles_from_cpp.cpp
│ │ │ │ │ ├── main_tiles_from_js.js
│ │ │ │ │ ├── main_tiles_from_python.py
│ │ │ │ │ ├── main_tiles_from_rust.rs
│ │ │ │ │ ├── memory.slint
│ │ │ │ │ ├── memory_game_logic.slint
│ │ │ │ │ ├── memory_tile.slint
│ │ │ │ │ ├── memory_tiles_from_cpp.slint
│ │ │ │ │ └── package.json
│ │ │ │ ├── collections/
│ │ │ │ │ └── std-widgets/
│ │ │ │ │ ├── Date.md
│ │ │ │ │ └── Time.md
│ │ │ │ └── docs/
│ │ │ │ ├── guide/
│ │ │ │ │ ├── backends-and-renderers/
│ │ │ │ │ │ ├── backend_linuxkms.md
│ │ │ │ │ │ ├── backend_qt.mdx
│ │ │ │ │ │ ├── backend_winit.md
│ │ │ │ │ │ └── backends_and_renderers.mdx
│ │ │ │ │ ├── development/
│ │ │ │ │ │ ├── best-practices.mdx
│ │ │ │ │ │ ├── custom-controls.mdx
│ │ │ │ │ │ ├── debugging_techniques.mdx
│ │ │ │ │ │ ├── focus.mdx
│ │ │ │ │ │ ├── fonts.md
│ │ │ │ │ │ ├── third-party-libraries.mdx
│ │ │ │ │ │ └── translations.mdx
│ │ │ │ │ ├── language/
│ │ │ │ │ │ ├── coding/
│ │ │ │ │ │ │ ├── animation.mdx
│ │ │ │ │ │ │ ├── expressions-and-statements.mdx
│ │ │ │ │ │ │ ├── file.mdx
│ │ │ │ │ │ │ ├── functions-and-callbacks.mdx
│ │ │ │ │ │ │ ├── globals.mdx
│ │ │ │ │ │ │ ├── name-resolution.mdx
│ │ │ │ │ │ │ ├── positioning-and-layouts.mdx
│ │ │ │ │ │ │ ├── properties.mdx
│ │ │ │ │ │ │ ├── repetition-and-data-models.mdx
│ │ │ │ │ │ │ ├── states.mdx
│ │ │ │ │ │ │ └── structs-and-enums.mdx
│ │ │ │ │ │ └── concepts/
│ │ │ │ │ │ ├── reactivity-vs-react.mdx
│ │ │ │ │ │ ├── reactivity.mdx
│ │ │ │ │ │ └── slint-language.mdx
│ │ │ │ │ ├── platforms/
│ │ │ │ │ │ ├── desktop.mdx
│ │ │ │ │ │ ├── embedded.mdx
│ │ │ │ │ │ ├── mobile/
│ │ │ │ │ │ │ ├── android.mdx
│ │ │ │ │ │ │ ├── general.mdx
│ │ │ │ │ │ │ └── ios.mdx
│ │ │ │ │ │ ├── other.mdx
│ │ │ │ │ │ └── web.mdx
│ │ │ │ │ └── tooling/
│ │ │ │ │ ├── figma-inspector.mdx
│ │ │ │ │ ├── helix.mdx
│ │ │ │ │ ├── jetbrains-ide.mdx
│ │ │ │ │ ├── kate.mdx
│ │ │ │ │ ├── manual-setup.mdx
│ │ │ │ │ ├── neo-vim.mdx
│ │ │ │ │ ├── qt-creator.mdx
│ │ │ │ │ ├── sublime-text.mdx
│ │ │ │ │ ├── vscode.mdx
│ │ │ │ │ └── zed.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── language-integrations/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── reference/
│ │ │ │ │ ├── colors-and-brushes.mdx
│ │ │ │ │ ├── common.mdx
│ │ │ │ │ ├── elements/
│ │ │ │ │ │ ├── image.mdx
│ │ │ │ │ │ ├── path.mdx
│ │ │ │ │ │ ├── rectangle.mdx
│ │ │ │ │ │ ├── styled-text.mdx
│ │ │ │ │ │ └── text.mdx
│ │ │ │ │ ├── gestures/
│ │ │ │ │ │ ├── flickable.mdx
│ │ │ │ │ │ ├── pinchgesturehandler.mdx
│ │ │ │ │ │ ├── swipegesturehandler.mdx
│ │ │ │ │ │ └── toucharea.mdx
│ │ │ │ │ ├── global-functions/
│ │ │ │ │ │ ├── builtinfunctions.mdx
│ │ │ │ │ │ └── math.mdx
│ │ │ │ │ ├── global-namespaces/
│ │ │ │ │ │ └── platform.mdx
│ │ │ │ │ ├── keyboard-input/
│ │ │ │ │ │ ├── focusscope.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ ├── textinput.mdx
│ │ │ │ │ │ └── textinputinterface.mdx
│ │ │ │ │ ├── layouts/
│ │ │ │ │ │ ├── flexboxlayout.mdx
│ │ │ │ │ │ ├── gridlayout.mdx
│ │ │ │ │ │ ├── horizontallayout.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ └── verticallayout.mdx
│ │ │ │ │ ├── overview.mdx
│ │ │ │ │ ├── primitive-types.mdx
│ │ │ │ │ ├── std-widgets/
│ │ │ │ │ │ ├── basic-widgets/
│ │ │ │ │ │ │ ├── button.mdx
│ │ │ │ │ │ │ ├── checkbox.mdx
│ │ │ │ │ │ │ ├── combobox.mdx
│ │ │ │ │ │ │ ├── progressindicator.mdx
│ │ │ │ │ │ │ ├── slider.mdx
│ │ │ │ │ │ │ ├── spinbox.mdx
│ │ │ │ │ │ │ ├── spinner.mdx
│ │ │ │ │ │ │ ├── standardbutton.mdx
│ │ │ │ │ │ │ └── switch.mdx
│ │ │ │ │ │ ├── globals/
│ │ │ │ │ │ │ ├── palette.mdx
│ │ │ │ │ │ │ └── stylemetrics.mdx
│ │ │ │ │ │ ├── layouts/
│ │ │ │ │ │ │ ├── gridbox.mdx
│ │ │ │ │ │ │ ├── groupbox.mdx
│ │ │ │ │ │ │ ├── horizontalbox.mdx
│ │ │ │ │ │ │ └── verticalbox.mdx
│ │ │ │ │ │ ├── misc/
│ │ │ │ │ │ │ ├── aboutslint.mdx
│ │ │ │ │ │ │ ├── datepicker.mdx
│ │ │ │ │ │ │ └── timepicker.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ ├── style.mdx
│ │ │ │ │ │ └── views/
│ │ │ │ │ │ ├── lineedit.mdx
│ │ │ │ │ │ ├── listview.mdx
│ │ │ │ │ │ ├── scrollview.mdx
│ │ │ │ │ │ ├── standardlistview.mdx
│ │ │ │ │ │ ├── standardtableview.mdx
│ │ │ │ │ │ ├── tabwidget.mdx
│ │ │ │ │ │ └── textedit.mdx
│ │ │ │ │ ├── timer.mdx
│ │ │ │ │ └── window/
│ │ │ │ │ ├── contextmenuarea.mdx
│ │ │ │ │ ├── dialog.mdx
│ │ │ │ │ ├── menubar.mdx
│ │ │ │ │ ├── popupwindow.mdx
│ │ │ │ │ └── window.mdx
│ │ │ │ └── tutorial/
│ │ │ │ ├── conclusion.md
│ │ │ │ ├── creating_the_tiles.mdx
│ │ │ │ ├── from_one_to_multiple_tiles.mdx
│ │ │ │ ├── game_logic.mdx
│ │ │ │ ├── getting_started.mdx
│ │ │ │ ├── ideas_for_the_reader.mdx
│ │ │ │ ├── memory_tile.mdx
│ │ │ │ ├── polishing_the_tile.mdx
│ │ │ │ ├── quickstart.mdx
│ │ │ │ └── running_in_a_browser.mdx
│ │ │ ├── content.config.ts
│ │ │ ├── styles/
│ │ │ │ ├── custom.css
│ │ │ │ └── theme.css
│ │ │ └── utils/
│ │ │ ├── slint-docs-highlight.html
│ │ │ └── slint-docs-preview.html
│ │ ├── tests/
│ │ │ ├── link-test.spec.ts
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.json
│ │ └── writing-style-guide.md
│ ├── building.md
│ ├── common/
│ │ ├── biome.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── Banner.astro
│ │ │ │ ├── CodeSnippetMD.astro
│ │ │ │ ├── Footer.astro
│ │ │ │ ├── FourCardGrid.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── IconLinkCard.astro
│ │ │ │ ├── LangRefLink.astro
│ │ │ │ ├── Link.astro
│ │ │ │ ├── ReleaseLink.astro
│ │ │ │ ├── SlintProperty.astro
│ │ │ │ ├── ThemeSelect.astro
│ │ │ │ ├── ThreeCardGrid.astro
│ │ │ │ ├── Type.astro
│ │ │ │ ├── VersionBanner.astro
│ │ │ │ └── VersionSelector.astro
│ │ │ └── utils/
│ │ │ ├── site-config.ts
│ │ │ ├── slint.tmLanguage.json
│ │ │ └── utils.ts
│ │ └── tsconfig.json
│ ├── development/
│ │ ├── animation-internals.md
│ │ ├── compiler-internals.md
│ │ ├── custom-renderer.md
│ │ ├── ffi-language-bindings.md
│ │ ├── input-event-system.md
│ │ ├── item-tree.md
│ │ ├── layout-system.md
│ │ ├── lsp-architecture.md
│ │ ├── model-repeater-system.md
│ │ ├── property-binding-deep-dive.md
│ │ ├── text-layout.md
│ │ ├── type-system.md
│ │ └── window-backend-integration.md
│ ├── development.md
│ ├── embedded-tutorials.md
│ ├── install_qt.md
│ ├── internal/
│ │ ├── processes.md
│ │ ├── release.md
│ │ └── triage.md
│ ├── nightly-release-notes.md
│ ├── readme.md
│ ├── release-artifacts.md
│ ├── release-notes.md
│ ├── site/
│ │ └── index.html
│ ├── testing.md
│ └── torizon.md
├── editors/
│ ├── README.md
│ ├── kate/
│ │ └── slint.ksyntaxhighlighter.xml
│ ├── sublime/
│ │ ├── LSP.sublime-settings
│ │ ├── Slint.sublime-syntax
│ │ └── Slint.tmPreferences
│ ├── tree-sitter-slint/
│ │ ├── .gitignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── corpus/
│ │ │ ├── empty.txt
│ │ │ └── lookup.txt
│ │ ├── grammar.js
│ │ ├── test-to-corpus.py
│ │ └── tree-sitter.json
│ ├── vscode/
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ ├── settings.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── biome.json
│ │ ├── esbuild.js
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── slint.injection.json
│ │ ├── slint.markdown-injection.json
│ │ ├── snippets/
│ │ │ └── slint.json
│ │ ├── src/
│ │ │ ├── browser-lsp-worker.ts
│ │ │ ├── browser.ts
│ │ │ ├── common.ts
│ │ │ ├── extension.ts
│ │ │ ├── lsp_commands.ts
│ │ │ ├── quick_picks.ts
│ │ │ ├── snippets.ts
│ │ │ ├── telemetry.ts
│ │ │ ├── tsconfig.json
│ │ │ └── wasm_preview.ts
│ │ ├── static/
│ │ │ └── walkthroughs/
│ │ │ └── welcome/
│ │ │ ├── create_slint_file.md
│ │ │ ├── get_help.md
│ │ │ └── show_preview.png.license
│ │ ├── telemetry.json
│ │ ├── tests/
│ │ │ └── grammar/
│ │ │ ├── basic.slint
│ │ │ ├── expressions.slint
│ │ │ ├── invalid.slint
│ │ │ ├── printerdemo.slint
│ │ │ ├── snippets.slint
│ │ │ ├── states.slint
│ │ │ └── strings.slint
│ │ ├── tsconfig.default.json
│ │ └── tsconfig.json
│ └── zed/
│ ├── Cargo.toml
│ ├── README.md
│ ├── extension.toml
│ ├── languages/
│ │ └── slint/
│ │ ├── brackets.scm
│ │ ├── config.toml
│ │ ├── folds.scm
│ │ ├── highlights.scm
│ │ ├── indents.scm
│ │ ├── injections.scm
│ │ └── locals.scm
│ └── src/
│ └── slint.rs
├── examples/
│ ├── 7guis/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── booker.rs
│ │ ├── booker.slint
│ │ ├── cells.rs
│ │ ├── cells.slint
│ │ ├── circledraw.rs
│ │ ├── circledraw.slint
│ │ ├── counter.slint
│ │ ├── crud.rs
│ │ ├── crud.slint
│ │ ├── tempconv.slint
│ │ └── timer.slint
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── async-io/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── main.py
│ │ ├── main.rs
│ │ ├── pyproject.toml
│ │ └── stockticker.slint
│ ├── bash/
│ │ ├── README.md
│ │ ├── laptop.svg.license
│ │ ├── simple_input.sh
│ │ ├── sysinfo.slint
│ │ ├── sysinfo_linux.sh
│ │ └── sysinfo_macos.sh
│ ├── bevy/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── bevy-hosts-slint/
│ │ │ ├── .gitignore
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── assets/
│ │ │ │ └── cow.gltf
│ │ │ └── main.rs
│ │ ├── bevy-hosts-slint-gpu/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── main.rs
│ │ └── slint-hosts-bevy/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── main.rs
│ │ ├── slint_bevy_adapter.rs
│ │ └── web_asset.rs
│ ├── carousel/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── main.cpp
│ │ │ ├── rust-toolchain.toml
│ │ │ └── s3-box/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── idf_component.yml
│ │ │ ├── partitions.csv
│ │ │ └── sdkconfig.defaults
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── card.slint
│ │ ├── carousel.slint
│ │ ├── carousel_demo.slint
│ │ ├── fonts/
│ │ │ ├── Roboto-Bold.ttf.license
│ │ │ └── Roboto-Regular.ttf.license
│ │ ├── label.slint
│ │ ├── svg/
│ │ │ ├── home_black.svg.license
│ │ │ ├── info_black.svg.license
│ │ │ └── settings_black.svg.license
│ │ ├── theme.slint
│ │ └── title_label.slint
│ ├── cpp/
│ │ ├── README.md
│ │ ├── platform_native/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ ├── appview.cpp
│ │ │ ├── appview.h
│ │ │ ├── main.cpp
│ │ │ └── windowadapter_win.h
│ │ ├── platform_qt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ └── main.cpp
│ │ └── qt_viewer/
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── interface.ui
│ │ └── qt_viewer.cpp
│ ├── dial/
│ │ ├── README.md
│ │ └── dial.slint
│ ├── fancy-switches/
│ │ ├── DarkModeSwitch.slint
│ │ ├── README.md
│ │ ├── SunMoonSwitch.slint
│ │ └── demo.slint
│ ├── fancy_demo/
│ │ ├── README.md
│ │ └── main.slint
│ ├── ffmpeg/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── lib.rs
│ │ ├── main.rs
│ │ ├── player/
│ │ │ ├── audio.rs
│ │ │ └── video.rs
│ │ ├── player.rs
│ │ └── scene.slint
│ ├── gallery/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── gallery.pot
│ │ ├── gallery.slint
│ │ ├── index.html
│ │ ├── lang/
│ │ │ ├── de/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── gallery.mo
│ │ │ │ └── gallery.po
│ │ │ ├── fr/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── gallery.mo
│ │ │ │ └── gallery.po
│ │ │ └── ja/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── gallery.mo
│ │ │ └── gallery.po
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ ├── thumbsup.png.license
│ │ ├── ui/
│ │ │ ├── gallery_settings.slint
│ │ │ ├── pages/
│ │ │ │ ├── about_page.slint
│ │ │ │ ├── controls_page.slint
│ │ │ │ ├── easings_page.slint
│ │ │ │ ├── list_view_page.slint
│ │ │ │ ├── page.slint
│ │ │ │ ├── pages.slint
│ │ │ │ ├── styled_text_page.slint
│ │ │ │ ├── table_view_page.slint
│ │ │ │ └── text_edit_page.slint
│ │ │ └── side_bar.slint
│ │ └── update_translations.sh
│ ├── gstreamer-player/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── main.rs
│ │ ├── scene.slint
│ │ └── slint_video_sink/
│ │ ├── egl_integration.rs
│ │ ├── mod.rs
│ │ └── software_rendering.rs
│ ├── imagefilter/
│ │ ├── README.md
│ │ ├── assets/
│ │ │ └── cat.jpg.license
│ │ ├── node/
│ │ │ ├── .gitignore
│ │ │ ├── README
│ │ │ ├── main.ts
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── main.slint
│ ├── iot-dashboard/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── dashboard.cpp
│ │ ├── dashboard.h
│ │ ├── iot-dashboard.slint
│ │ ├── main.cpp
│ │ └── main.slint
│ ├── layouts/
│ │ ├── flexbox-interactive.slint
│ │ ├── grid-with-model-in-rows.slint
│ │ ├── grid-with-nested-for.slint
│ │ ├── grid-with-repeated-rows.slint
│ │ ├── vector-as-grid.slint
│ │ └── vertical-layout-with-model.slint
│ ├── maps/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── main.rs
│ ├── mcu-board-support/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── embassy.rs
│ │ ├── esope_sld_c_w_s3/
│ │ │ ├── cargo-config.toml
│ │ │ └── esope_sld_c_w_s3.rs
│ │ ├── esp32_s3_box_3/
│ │ │ ├── cargo-config.toml
│ │ │ └── esp32_s3_box_3.rs
│ │ ├── esp32_s3_lcd_ev_board/
│ │ │ ├── cargo-config.toml
│ │ │ └── esp32_s3_lcd_ev_board.rs
│ │ ├── lib.rs
│ │ ├── m5stack_cores3/
│ │ │ ├── cargo-config.toml
│ │ │ └── m5stack_cores3.rs
│ │ ├── pico2_st7789/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ ├── pico2_st7789.rs
│ │ │ └── rp_pico2.rs
│ │ ├── pico2_touch_lcd_2_8/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── pico2_touch_lcd_2_8.rs
│ │ ├── pico_st7789/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── pico_st7789.rs
│ │ ├── profiler.rs
│ │ ├── stm32h735g/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── stm32h735g.rs
│ │ ├── stm32u5g9j_dk2/
│ │ │ ├── board_config.toml
│ │ │ ├── hspi.rs
│ │ │ ├── memory.x
│ │ │ └── stm32u5g9j_dk2.rs
│ │ └── waveshare_esp32_s3_touch_amoled_1_8/
│ │ ├── cargo-config.toml
│ │ └── waveshare_esp32_s3_touch_amoled_1_8.rs
│ ├── mcu-embassy/
│ │ ├── .cargo/
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── settings.json
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── slint_generated/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── src/
│ │ │ ├── bin/
│ │ │ │ ├── ui_mcu.rs
│ │ │ │ └── ui_simulator.rs
│ │ │ ├── controller.rs
│ │ │ ├── lib.rs
│ │ │ ├── mcu/
│ │ │ │ ├── double_buffer.rs
│ │ │ │ ├── hardware.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── rcc_setup.rs
│ │ │ ├── simulator/
│ │ │ │ ├── hardware.rs
│ │ │ │ └── mod.rs
│ │ │ └── slint_backend.rs
│ │ └── ui/
│ │ ├── common.slint
│ │ └── main.slint
│ ├── memory/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── icons/
│ │ │ └── README.md
│ │ ├── index.html
│ │ ├── main.js
│ │ ├── main.py
│ │ ├── main.rs
│ │ ├── memory.cpp
│ │ ├── memory.slint
│ │ ├── package.json
│ │ └── pyproject.toml
│ ├── native-gestures/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── native-gestures.slint
│ │ └── src/
│ │ ├── lib.rs
│ │ └── main.rs
│ ├── opengl_texture/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ └── scene.slint
│ ├── opengl_underlay/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ └── scene.slint
│ ├── orbit-animation/
│ │ ├── README.md
│ │ ├── demo.slint
│ │ └── orbiter.slint
│ ├── plotter/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── main.rs
│ │ ├── plotter.slint
│ │ └── wasm_backend.rs
│ ├── repeater/
│ │ ├── README.md
│ │ └── demo.slint
│ ├── safe-ui/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── core/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ ├── lib.rs
│ │ │ ├── pixels/
│ │ │ │ ├── bgra8888.rs
│ │ │ │ └── mod.rs
│ │ │ ├── platform.rs
│ │ │ └── slint-safeui-platform-interface.h
│ │ ├── simulator/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ ├── desktop_platform.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── app-window.slint
│ ├── servo/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ └── webview/
│ │ │ ├── adapter.rs
│ │ │ ├── delegate.rs
│ │ │ ├── events_utils/
│ │ │ │ ├── key_event_util.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── pointer_event_util.rs
│ │ │ │ └── url_event_util.rs
│ │ │ ├── mod.rs
│ │ │ ├── rendering_context/
│ │ │ │ ├── gpu_rendering_context.rs
│ │ │ │ ├── metal/
│ │ │ │ │ ├── metal.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── texture_importer.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── servo_rendering_adapter.rs
│ │ │ │ └── surfman_context.rs
│ │ │ ├── waker.rs
│ │ │ ├── webview.rs
│ │ │ ├── webview.slint
│ │ │ └── webview_events.rs
│ │ └── ui/
│ │ └── app.slint
│ ├── slide_puzzle/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── berlin.jpg.license
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── main.rs
│ │ ├── plaster-font/
│ │ │ └── Plaster-Regular.ttf.license
│ │ └── slide_puzzle.slint
│ ├── speedometer/
│ │ ├── 01 Digitall.ttf.license
│ │ ├── README.md
│ │ ├── demo.slint
│ │ └── rust/
│ │ ├── Cargo.toml
│ │ ├── index.html
│ │ ├── lib.rs
│ │ └── main.rs
│ ├── sprite-sheet/
│ │ ├── README.md
│ │ ├── SpriteSheet.slint
│ │ └── demo.slint
│ ├── todo/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── app.cpp
│ │ │ ├── app.h
│ │ │ ├── main.cpp
│ │ │ └── tests/
│ │ │ └── test_todo_basic.cpp
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── todo.slint
│ ├── todo-mvc/
│ │ ├── README.md
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── src/
│ │ │ ├── callback.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── mvc/
│ │ │ │ ├── controllers/
│ │ │ │ │ ├── create_task_controller.rs
│ │ │ │ │ └── task_list_controller.rs
│ │ │ │ ├── controllers.rs
│ │ │ │ ├── models/
│ │ │ │ │ ├── date_model.rs
│ │ │ │ │ ├── task_model.rs
│ │ │ │ │ └── time_model.rs
│ │ │ │ ├── models.rs
│ │ │ │ ├── repositories/
│ │ │ │ │ ├── mock_date_time_repository.rs
│ │ │ │ │ ├── mock_task_repository.rs
│ │ │ │ │ ├── traits/
│ │ │ │ │ │ ├── date_time_repository.rs
│ │ │ │ │ │ └── task_repository.rs
│ │ │ │ │ └── traits.rs
│ │ │ │ └── repositories.rs
│ │ │ ├── mvc.rs
│ │ │ ├── ui/
│ │ │ │ ├── create_task_adapter.rs
│ │ │ │ ├── navigation_adapter.rs
│ │ │ │ └── task_list_adapter.rs
│ │ │ └── ui.rs
│ │ └── ui/
│ │ ├── index.slint
│ │ ├── views/
│ │ │ ├── create_task_view.slint
│ │ │ └── task_list_view.slint
│ │ └── widgets/
│ │ ├── action_button.slint
│ │ ├── focus_touch_area.slint
│ │ ├── icon_button.slint
│ │ ├── selection_list_view.slint
│ │ ├── state_layer.slint
│ │ ├── styling.slint
│ │ └── text_button.slint
│ ├── uefi-demo/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── demo.slint
│ │ └── main.rs
│ ├── virtual_keyboard/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── icons.slint
│ │ ├── main_window.slint
│ │ └── virtual_keyboard.slint
│ └── wgpu_texture/
│ ├── Cargo.toml
│ ├── README.md
│ ├── build.rs
│ ├── lib.rs
│ ├── main.rs
│ ├── scene.slint
│ └── shader.wgsl
├── flake.nix
├── helper_crates/
│ ├── const-field-offset/
│ │ ├── CHANGELOG.md
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── macro/
│ │ │ ├── Cargo.toml
│ │ │ └── macro.rs
│ │ ├── src/
│ │ │ └── lib.rs
│ │ └── tests/
│ │ └── test_field_offset.rs
│ └── vtable/
│ ├── CHANGELOG.md
│ ├── Cargo.toml
│ ├── README.md
│ ├── macro/
│ │ ├── Cargo.toml
│ │ └── macro.rs
│ ├── src/
│ │ ├── compile_fail_tests.rs
│ │ ├── lib.rs
│ │ └── vrc.rs
│ └── tests/
│ ├── test_vrc.rs
│ └── test_vtable.rs
├── internal/
│ ├── backends/
│ │ ├── android-activity/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── androidwindowadapter.rs
│ │ │ ├── build.rs
│ │ │ ├── java/
│ │ │ │ └── SlintAndroidJavaHelper.java
│ │ │ ├── javahelper.rs
│ │ │ └── lib.rs
│ │ ├── linuxkms/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── calloop_backend/
│ │ │ │ └── input.rs
│ │ │ ├── calloop_backend.rs
│ │ │ ├── display/
│ │ │ │ ├── gbmdisplay.rs
│ │ │ │ ├── swdisplay/
│ │ │ │ │ ├── dumbbuffer.rs
│ │ │ │ │ └── linuxfb.rs
│ │ │ │ ├── swdisplay.rs
│ │ │ │ └── vulkandisplay.rs
│ │ │ ├── display.rs
│ │ │ ├── drmoutput.rs
│ │ │ ├── fullscreenwindowadapter.rs
│ │ │ ├── lib.rs
│ │ │ ├── noop_backend.rs
│ │ │ └── renderer/
│ │ │ ├── femtovg.rs
│ │ │ ├── skia.rs
│ │ │ └── sw.rs
│ │ ├── qt/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── accessible_generated.rs
│ │ │ ├── build.rs
│ │ │ ├── key_generated.rs
│ │ │ ├── lib.rs
│ │ │ ├── qt_accessible.rs
│ │ │ ├── qt_widgets/
│ │ │ │ ├── button.rs
│ │ │ │ ├── checkbox.rs
│ │ │ │ ├── combobox.rs
│ │ │ │ ├── groupbox.rs
│ │ │ │ ├── lineedit.rs
│ │ │ │ ├── listviewitem.rs
│ │ │ │ ├── palette.rs
│ │ │ │ ├── progress_indicator.rs
│ │ │ │ ├── scrollview.rs
│ │ │ │ ├── slider.rs
│ │ │ │ ├── spinbox.rs
│ │ │ │ ├── stylemetrics.rs
│ │ │ │ ├── tableheadersection.rs
│ │ │ │ └── tabwidget.rs
│ │ │ ├── qt_widgets.rs
│ │ │ └── qt_window.rs
│ │ ├── selector/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── api.rs
│ │ │ ├── build.rs
│ │ │ └── lib.rs
│ │ ├── testing/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── build.rs
│ │ │ ├── ffi.rs
│ │ │ ├── internal_tests.rs
│ │ │ ├── lib.rs
│ │ │ ├── search_api.rs
│ │ │ ├── slint_systest.proto
│ │ │ ├── systest.rs
│ │ │ ├── testing_backend.rs
│ │ │ └── tests/
│ │ │ ├── click.rs
│ │ │ └── layout_kind.rs
│ │ └── winit/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── accesskit.rs
│ │ ├── build.rs
│ │ ├── clipboard.rs
│ │ ├── drag_resize_window.rs
│ │ ├── event_loop.rs
│ │ ├── frame_throttle.rs
│ │ ├── ios/
│ │ │ ├── keyboard_animator.rs
│ │ │ └── virtual_keyboard.rs
│ │ ├── ios.rs
│ │ ├── lib.rs
│ │ ├── muda.rs
│ │ ├── renderer/
│ │ │ ├── femtovg/
│ │ │ │ └── glcontext.rs
│ │ │ ├── femtovg.rs
│ │ │ ├── skia.rs
│ │ │ └── sw.rs
│ │ ├── tests/
│ │ │ └── menubar_borrow.rs
│ │ ├── wasm_input_helper.rs
│ │ ├── winitwindowadapter.rs
│ │ └── xdg_color_scheme.rs
│ ├── common/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── builtin_structs.rs
│ │ ├── color_parsing.rs
│ │ ├── enums.rs
│ │ ├── key_codes.rs
│ │ ├── lib.rs
│ │ ├── sharedfontique/
│ │ │ └── DejaVuSans.ttf.license
│ │ ├── sharedfontique.rs
│ │ └── styled_text.rs
│ ├── compiler/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── benches/
│ │ │ └── semantic_analysis.rs
│ │ ├── build.rs
│ │ ├── builtin_macros.rs
│ │ ├── builtins.slint
│ │ ├── diagnostics.rs
│ │ ├── embedded_resources.rs
│ │ ├── expression_tree.rs
│ │ ├── fileaccess.rs
│ │ ├── generator/
│ │ │ ├── cpp.rs
│ │ │ ├── cpp_live_preview.rs
│ │ │ ├── python/
│ │ │ │ └── diff.rs
│ │ │ ├── python.rs
│ │ │ ├── rust.rs
│ │ │ └── rust_live_preview.rs
│ │ ├── generator.rs
│ │ ├── langtype.rs
│ │ ├── layout.rs
│ │ ├── lexer.rs
│ │ ├── lib.rs
│ │ ├── literals.rs
│ │ ├── llr/
│ │ │ ├── expression.rs
│ │ │ ├── item_tree.rs
│ │ │ ├── lower_expression.rs
│ │ │ ├── lower_layout_expression.rs
│ │ │ ├── lower_to_item_tree.rs
│ │ │ ├── optim_passes/
│ │ │ │ ├── count_property_use.rs
│ │ │ │ ├── inline_expressions.rs
│ │ │ │ └── remove_unused.rs
│ │ │ └── pretty_print.rs
│ │ ├── llr.rs
│ │ ├── load_builtins.rs
│ │ ├── lookup.rs
│ │ ├── namedreference.rs
│ │ ├── object_tree/
│ │ │ └── interfaces.rs
│ │ ├── object_tree.rs
│ │ ├── parser/
│ │ │ ├── document.rs
│ │ │ ├── element.rs
│ │ │ ├── expressions.rs
│ │ │ ├── statements.rs
│ │ │ └── type.rs
│ │ ├── parser-test-macro/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── lib.rs
│ │ ├── parser.rs
│ │ ├── passes/
│ │ │ ├── apply_default_properties_from_style.rs
│ │ │ ├── binding_analysis.rs
│ │ │ ├── border_radius.rs
│ │ │ ├── check_expressions.rs
│ │ │ ├── check_public_api.rs
│ │ │ ├── clip.rs
│ │ │ ├── collect_custom_fonts.rs
│ │ │ ├── collect_globals.rs
│ │ │ ├── collect_init_code.rs
│ │ │ ├── collect_libraries.rs
│ │ │ ├── collect_structs_and_enums.rs
│ │ │ ├── collect_subcomponents.rs
│ │ │ ├── compile_paths.rs
│ │ │ ├── const_propagation.rs
│ │ │ ├── deduplicate_property_read.rs
│ │ │ ├── default_geometry.rs
│ │ │ ├── deprecated_rotation_origin.rs
│ │ │ ├── embed_glyphs.rs
│ │ │ ├── embed_images.rs
│ │ │ ├── flickable.rs
│ │ │ ├── focus_handling.rs
│ │ │ ├── generate_item_indices.rs
│ │ │ ├── infer_aliases_types.rs
│ │ │ ├── inject_debug_hooks.rs
│ │ │ ├── inlining.rs
│ │ │ ├── key_bindings.rs
│ │ │ ├── lower_absolute_coordinates.rs
│ │ │ ├── lower_accessibility.rs
│ │ │ ├── lower_component_container.rs
│ │ │ ├── lower_layout.rs
│ │ │ ├── lower_menus.rs
│ │ │ ├── lower_platform.rs
│ │ │ ├── lower_popups.rs
│ │ │ ├── lower_property_to_element.rs
│ │ │ ├── lower_repeated_rows.rs
│ │ │ ├── lower_shadows.rs
│ │ │ ├── lower_states.rs
│ │ │ ├── lower_tabwidget.rs
│ │ │ ├── lower_text_input_interface.rs
│ │ │ ├── lower_timers.rs
│ │ │ ├── materialize_fake_properties.rs
│ │ │ ├── move_declarations.rs
│ │ │ ├── optimize_useless_rectangles.rs
│ │ │ ├── purity_check.rs
│ │ │ ├── remove_aliases.rs
│ │ │ ├── remove_return.rs
│ │ │ ├── remove_unused_properties.rs
│ │ │ ├── repeater_component.rs
│ │ │ ├── resolve_native_classes.rs
│ │ │ ├── resolving/
│ │ │ │ └── remove_noop.rs
│ │ │ ├── resolving.rs
│ │ │ ├── unique_id.rs
│ │ │ ├── visible.rs
│ │ │ ├── windows.rs
│ │ │ └── z_order.rs
│ │ ├── passes.rs
│ │ ├── pathutils.rs
│ │ ├── tests/
│ │ │ ├── consistent_styles.rs
│ │ │ ├── syntax/
│ │ │ │ ├── accessibility/
│ │ │ │ │ └── accessible_properties.slint
│ │ │ │ ├── analysis/
│ │ │ │ │ ├── binding_loop1.slint
│ │ │ │ │ ├── binding_loop2.slint
│ │ │ │ │ ├── binding_loop_function.slint
│ │ │ │ │ ├── binding_loop_image.slint
│ │ │ │ │ ├── binding_loop_issue_772.slint
│ │ │ │ │ ├── binding_loop_layout.slint
│ │ │ │ │ ├── binding_loop_layout2.slint
│ │ │ │ │ ├── binding_loop_layout3.slint
│ │ │ │ │ ├── binding_loop_layout4.slint
│ │ │ │ │ ├── binding_loop_layout_if.slint
│ │ │ │ │ ├── binding_loop_mappointtowindow.slint
│ │ │ │ │ ├── binding_loop_popupwindow.slint
│ │ │ │ │ ├── binding_loop_self.slint
│ │ │ │ │ ├── binding_loop_text.slint
│ │ │ │ │ ├── binding_loop_window.slint
│ │ │ │ │ └── binding_loop_window2.slint
│ │ │ │ ├── basic/
│ │ │ │ │ ├── animate.slint
│ │ │ │ │ ├── array.slint
│ │ │ │ │ ├── assign.slint
│ │ │ │ │ ├── bom-simple.slint
│ │ │ │ │ ├── box_shadow.slint
│ │ │ │ │ ├── children_placeholder.slint
│ │ │ │ │ ├── clip.slint
│ │ │ │ │ ├── comments.slint
│ │ │ │ │ ├── conic-gradient.slint
│ │ │ │ │ ├── dialog.slint
│ │ │ │ │ ├── dialog2.slint
│ │ │ │ │ ├── double_binding.slint
│ │ │ │ │ ├── double_color.slint
│ │ │ │ │ ├── duplicated_id.slint
│ │ │ │ │ ├── easing.slint
│ │ │ │ │ ├── easing_not_called.slint
│ │ │ │ │ ├── empty.slint
│ │ │ │ │ ├── enums.slint
│ │ │ │ │ ├── for.slint
│ │ │ │ │ ├── for_range.slint
│ │ │ │ │ ├── gridlayout_binding_loop.slint
│ │ │ │ │ ├── gridlayout_no_mixing.slint
│ │ │ │ │ ├── image.slint
│ │ │ │ │ ├── inline_component.slint
│ │ │ │ │ ├── item_as_property.slint
│ │ │ │ │ ├── layout.slint
│ │ │ │ │ ├── let.slint
│ │ │ │ │ ├── linear-gradient.slint
│ │ │ │ │ ├── markdown.slint
│ │ │ │ │ ├── markdown_interpolation.slint
│ │ │ │ │ ├── object_in_binding.slint
│ │ │ │ │ ├── opacity.slint
│ │ │ │ │ ├── parse_error.slint
│ │ │ │ │ ├── path.slint
│ │ │ │ │ ├── path_commands.slint
│ │ │ │ │ ├── path_for.slint
│ │ │ │ │ ├── percent.slint
│ │ │ │ │ ├── popup.slint
│ │ │ │ │ ├── property_animation.slint
│ │ │ │ │ ├── property_declaration.slint
│ │ │ │ │ ├── property_declaration_in_component.slint
│ │ │ │ │ ├── radial-gradient.slint
│ │ │ │ │ ├── return.slint
│ │ │ │ │ ├── rotation-origin.slint
│ │ │ │ │ ├── rotation.slint
│ │ │ │ │ ├── rust-attr.slint
│ │ │ │ │ ├── self_assign.slint
│ │ │ │ │ ├── signal.slint
│ │ │ │ │ ├── states_transitions.slint
│ │ │ │ │ ├── states_transitions2.slint
│ │ │ │ │ ├── states_transitions3.slint
│ │ │ │ │ ├── states_two_way.slint
│ │ │ │ │ ├── sub_elements.slint
│ │ │ │ │ ├── supersimple.slint
│ │ │ │ │ ├── svg_path.slint
│ │ │ │ │ ├── tr.slint
│ │ │ │ │ ├── tr2.slint
│ │ │ │ │ ├── type_declaration.slint
│ │ │ │ │ └── unknown_item.slint
│ │ │ │ ├── callbacks/
│ │ │ │ │ ├── init.slint
│ │ │ │ │ └── property-changes.slint
│ │ │ │ ├── elements/
│ │ │ │ │ ├── component_container.slint
│ │ │ │ │ ├── contextmenu.slint
│ │ │ │ │ ├── contextmenu2.slint
│ │ │ │ │ ├── contextmenu3.slint
│ │ │ │ │ ├── key_binding_duplicate.slint
│ │ │ │ │ ├── key_binding_invalid.slint
│ │ │ │ │ ├── key_binding_valid.slint
│ │ │ │ │ ├── listview.slint
│ │ │ │ │ ├── menubar-lookup.slint
│ │ │ │ │ ├── menubar.slint
│ │ │ │ │ ├── menubar2.slint
│ │ │ │ │ ├── menubar3.slint
│ │ │ │ │ ├── menubar4.slint
│ │ │ │ │ ├── path.slint
│ │ │ │ │ ├── popup.slint
│ │ │ │ │ ├── popup2.slint
│ │ │ │ │ ├── popup3.slint
│ │ │ │ │ ├── sub-windows.slint
│ │ │ │ │ ├── tabwidget.slint
│ │ │ │ │ ├── tabwidget2.slint
│ │ │ │ │ ├── tabwidget3.slint
│ │ │ │ │ ├── text.slint
│ │ │ │ │ ├── timer.slint
│ │ │ │ │ └── timer2.slint
│ │ │ │ ├── exports/
│ │ │ │ │ ├── export_cross_source_duplicates.slint
│ │ │ │ │ ├── export_duplicates.slint
│ │ │ │ │ ├── export_empty.slint
│ │ │ │ │ ├── export_many_components.slint
│ │ │ │ │ ├── export_non_window.slint
│ │ │ │ │ ├── reexport2.slint
│ │ │ │ │ ├── reexport_duplicate.slint
│ │ │ │ │ ├── root_compo_export.slint
│ │ │ │ │ ├── root_compo_export2.slint
│ │ │ │ │ ├── root_compo_export3.slint
│ │ │ │ │ ├── single_global_missing_export.slint
│ │ │ │ │ └── unused_compo.slint
│ │ │ │ ├── expressions/
│ │ │ │ │ ├── arithmetic_op.slint
│ │ │ │ │ ├── at_keys_parser.slint
│ │ │ │ │ ├── at_keys_resolving.slint
│ │ │ │ │ ├── at_keys_valid.slint
│ │ │ │ │ ├── clamp.slint
│ │ │ │ │ ├── comparison_operator.slint
│ │ │ │ │ ├── comparison_operator2.slint
│ │ │ │ │ ├── condition_operator.slint
│ │ │ │ │ ├── image-url.slint
│ │ │ │ │ ├── image-url2.slint
│ │ │ │ │ ├── math-macro.slint
│ │ │ │ │ ├── minmax.slint
│ │ │ │ │ ├── noops.slint
│ │ │ │ │ ├── percent2.slint
│ │ │ │ │ ├── strings.slint
│ │ │ │ │ └── unary_op.slint
│ │ │ │ ├── focus/
│ │ │ │ │ ├── focus_invalid.slint
│ │ │ │ │ ├── focus_not_called.slint
│ │ │ │ │ ├── focus_wrong_args.slint
│ │ │ │ │ └── initial_focus_non_input.slint
│ │ │ │ ├── functions/
│ │ │ │ │ ├── function_double_qualified.slint
│ │ │ │ │ ├── functions.slint
│ │ │ │ │ ├── functions_call.slint
│ │ │ │ │ ├── functions_no_body.slint
│ │ │ │ │ ├── functions_purity.slint
│ │ │ │ │ └── functions_purity_recursive_5220.slint
│ │ │ │ ├── fuzzing/
│ │ │ │ │ ├── 6512.slint
│ │ │ │ │ ├── 6518.slint
│ │ │ │ │ ├── 6519.slint
│ │ │ │ │ ├── 6587.slint
│ │ │ │ │ ├── 6588.slint
│ │ │ │ │ ├── 6590.slint
│ │ │ │ │ ├── 6632.slint
│ │ │ │ │ ├── 6650.slint
│ │ │ │ │ ├── 6979.slint
│ │ │ │ │ └── 7095.slint
│ │ │ │ ├── imports/
│ │ │ │ │ ├── bug_2719.slint
│ │ │ │ │ ├── bug_3674_alias-from-broken-import.slint
│ │ │ │ │ ├── cyclic_import.slint
│ │ │ │ │ ├── error_in_import.slint
│ │ │ │ │ ├── error_in_import2.slint
│ │ │ │ │ ├── error_in_import3.slint
│ │ │ │ │ ├── font.slint
│ │ │ │ │ ├── import_builtin.slint
│ │ │ │ │ ├── import_error2.slint
│ │ │ │ │ ├── import_errors.slint
│ │ │ │ │ ├── import_parse_error1.slint
│ │ │ │ │ ├── import_parse_error2.slint
│ │ │ │ │ ├── import_parse_error3.slint
│ │ │ │ │ ├── import_parse_error4.slint
│ │ │ │ │ ├── import_parse_error5.slint
│ │ │ │ │ ├── import_parse_error6.slint
│ │ │ │ │ ├── import_parse_error7.slint
│ │ │ │ │ ├── import_style_base.slint
│ │ │ │ │ ├── invalid_export.slint
│ │ │ │ │ ├── just_import.slint
│ │ │ │ │ ├── library.slint
│ │ │ │ │ └── visibility_errors.slint
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── callbacks.slint
│ │ │ │ │ ├── global_interfaces.slint
│ │ │ │ │ ├── interface_export.slint
│ │ │ │ │ ├── interface_functions.slint
│ │ │ │ │ ├── interface_implements.slint
│ │ │ │ │ ├── interface_inheritance.slint
│ │ │ │ │ ├── interface_invalid_content.slint
│ │ │ │ │ ├── interface_properties.slint
│ │ │ │ │ ├── interface_uses1.slint
│ │ │ │ │ ├── interface_uses2.slint
│ │ │ │ │ ├── interface_uses3.slint
│ │ │ │ │ ├── interfaces.slint
│ │ │ │ │ ├── interfaces_colon_equal.slint
│ │ │ │ │ └── uses_errors.slint
│ │ │ │ ├── layout/
│ │ │ │ │ ├── flexbox_layout_properties.slint
│ │ │ │ │ ├── flexbox_stretch_warning.slint
│ │ │ │ │ ├── grid_layout_properties.slint
│ │ │ │ │ ├── if_in_grid_row.slint
│ │ │ │ │ ├── min_max_conflict.slint
│ │ │ │ │ ├── padding.slint
│ │ │ │ │ ├── repeated_in_repeated_row.slint
│ │ │ │ │ └── spacing.slint
│ │ │ │ ├── lookup/
│ │ │ │ │ ├── absolute-position.slint
│ │ │ │ │ ├── array_index.slint
│ │ │ │ │ ├── callback_alias.slint
│ │ │ │ │ ├── callback_alias2.slint
│ │ │ │ │ ├── callback_alias3.slint
│ │ │ │ │ ├── callback_alias_global.slint
│ │ │ │ │ ├── callback_alias_issue4938.slint
│ │ │ │ │ ├── callback_not_called.slint
│ │ │ │ │ ├── callback_return.slint
│ │ │ │ │ ├── color.slint
│ │ │ │ │ ├── conversion.slint
│ │ │ │ │ ├── dashes.slint
│ │ │ │ │ ├── deprecated_property.slint
│ │ │ │ │ ├── easing.slint
│ │ │ │ │ ├── enum.slint
│ │ │ │ │ ├── for_lookup.slint
│ │ │ │ │ ├── global.slint
│ │ │ │ │ ├── if.slint
│ │ │ │ │ ├── issue_1461.slint
│ │ │ │ │ ├── issue_5246_states_function.slint
│ │ │ │ │ ├── name_reuse.slint
│ │ │ │ │ ├── property.slint
│ │ │ │ │ ├── recover_id_lookup.slint
│ │ │ │ │ ├── signal_arg.slint
│ │ │ │ │ ├── two_way_binding.slint
│ │ │ │ │ ├── two_way_binding_infer.slint
│ │ │ │ │ └── two_way_binding_model.slint
│ │ │ │ ├── new_syntax/
│ │ │ │ │ ├── deprecated_syntax.slint
│ │ │ │ │ ├── input_output.slint
│ │ │ │ │ ├── input_output2.slint
│ │ │ │ │ ├── new_component.slint
│ │ │ │ │ ├── new_lookup.slint
│ │ │ │ │ └── two_way_input_output.slint
│ │ │ │ └── parse_error/
│ │ │ │ ├── children_placeholder0.slint
│ │ │ │ ├── export0.slint
│ │ │ │ ├── export1.slint
│ │ │ │ ├── for0.slint
│ │ │ │ ├── if0.slint
│ │ │ │ ├── if1.slint
│ │ │ │ ├── if2.slint
│ │ │ │ ├── if3.slint
│ │ │ │ ├── if4.slint
│ │ │ │ ├── non_ascii.slint
│ │ │ │ ├── property1.slint
│ │ │ │ ├── property2.slint
│ │ │ │ ├── state1.slint
│ │ │ │ ├── state2.slint
│ │ │ │ ├── state3.slint
│ │ │ │ ├── struct.slint
│ │ │ │ └── sub.slint
│ │ │ ├── syntax_tests.rs
│ │ │ └── typeloader/
│ │ │ ├── custom_style/
│ │ │ │ └── TestStyle/
│ │ │ │ └── std-widgets.slint
│ │ │ ├── dependency_local.slint
│ │ │ ├── dependency_test_main.slint
│ │ │ ├── incpath/
│ │ │ │ ├── bug_2719_import.slint
│ │ │ │ ├── bug_3674_alias_from_invalid_import.slint
│ │ │ │ ├── dependency_from_incpath.slint
│ │ │ │ ├── local_helper_type.slint
│ │ │ │ ├── should_fail.slint
│ │ │ │ ├── should_fail2.slint
│ │ │ │ ├── should_fail3.slint
│ │ │ │ └── should_fail4.slint
│ │ │ ├── library/
│ │ │ │ ├── dependency_from_library.slint
│ │ │ │ ├── lib.slint
│ │ │ │ └── library_helper_type.slint
│ │ │ ├── recursive_import1.slint
│ │ │ ├── recursive_import2.slint
│ │ │ └── some_rust_file.rs
│ │ ├── translations.rs
│ │ ├── typeloader.rs
│ │ ├── typeregister.rs
│ │ └── widgets/
│ │ ├── common/
│ │ │ ├── about-slint.slint
│ │ │ ├── combobox-base.slint
│ │ │ ├── datepicker_base.slint
│ │ │ ├── internal-components.slint
│ │ │ ├── layout.slint
│ │ │ ├── lineedit-base.slint
│ │ │ ├── listview.slint
│ │ │ ├── menu-base.slint
│ │ │ ├── menus.slint
│ │ │ ├── slider-base.slint
│ │ │ ├── spinbox-base.slint
│ │ │ ├── spinner-base.slint
│ │ │ ├── standardbutton.slint
│ │ │ ├── tabwidget-base.slint
│ │ │ ├── textedit-base.slint
│ │ │ └── time-picker-base.slint
│ │ ├── cosmic/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── cupertino/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── fluent/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── material/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ └── qt/
│ │ ├── button.slint
│ │ ├── checkbox.slint
│ │ ├── combobox.slint
│ │ ├── datepicker.slint
│ │ ├── groupbox.slint
│ │ ├── internal-scrollview.slint
│ │ ├── lineedit.slint
│ │ ├── menu.slint
│ │ ├── progressindicator.slint
│ │ ├── scrollview.slint
│ │ ├── slider.slint
│ │ ├── spinbox.slint
│ │ ├── spinner.slint
│ │ ├── std-widgets-impl.slint
│ │ ├── std-widgets.slint
│ │ ├── style-base.slint
│ │ ├── styling.slint
│ │ ├── switch.slint
│ │ ├── tableview.slint
│ │ ├── tabwidget.slint
│ │ ├── textedit.slint
│ │ └── time-picker.slint
│ ├── core/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── accessibility.rs
│ │ ├── animations/
│ │ │ └── physics_simulation.rs
│ │ ├── animations.rs
│ │ ├── api.rs
│ │ ├── callbacks.rs
│ │ ├── component_factory.rs
│ │ ├── context.rs
│ │ ├── date_time.rs
│ │ ├── future.rs
│ │ ├── gdb_pretty_printers.py
│ │ ├── graphics/
│ │ │ ├── bitmapfont.rs
│ │ │ ├── border_radius.rs
│ │ │ ├── boxshadowcache.rs
│ │ │ ├── brush.rs
│ │ │ ├── color.rs
│ │ │ ├── image/
│ │ │ │ ├── cache.rs
│ │ │ │ ├── htmlimage.rs
│ │ │ │ └── svg.rs
│ │ │ ├── image.rs
│ │ │ ├── path.rs
│ │ │ ├── rendering_metrics_collector.rs
│ │ │ ├── wgpu_27.rs
│ │ │ └── wgpu_28.rs
│ │ ├── graphics.rs
│ │ ├── input.rs
│ │ ├── item_focus.rs
│ │ ├── item_rendering.rs
│ │ ├── item_tree.rs
│ │ ├── items/
│ │ │ ├── component_container.rs
│ │ │ ├── drag_n_drop.rs
│ │ │ ├── flickable.rs
│ │ │ ├── image.rs
│ │ │ ├── input_items.rs
│ │ │ ├── path.rs
│ │ │ └── text.rs
│ │ ├── items.rs
│ │ ├── layout.rs
│ │ ├── lengths.rs
│ │ ├── lib.rs
│ │ ├── menus.rs
│ │ ├── model/
│ │ │ ├── adapters.rs
│ │ │ └── model_peer.rs
│ │ ├── model.rs
│ │ ├── partial_renderer.rs
│ │ ├── platform.rs
│ │ ├── properties/
│ │ │ ├── change_tracker.rs
│ │ │ ├── ffi.rs
│ │ │ └── properties_animations.rs
│ │ ├── properties.rs
│ │ ├── renderer.rs
│ │ ├── rtti.rs
│ │ ├── sharedvector.rs
│ │ ├── slice.rs
│ │ ├── string.rs
│ │ ├── styled_text.rs
│ │ ├── tests.rs
│ │ ├── textlayout/
│ │ │ ├── fragments.rs
│ │ │ ├── glyphclusters.rs
│ │ │ ├── linebreak_simple.rs
│ │ │ ├── linebreak_unicode.rs
│ │ │ ├── linebreaker.rs
│ │ │ ├── shaping.rs
│ │ │ └── sharedparley.rs
│ │ ├── textlayout.rs
│ │ ├── timers.rs
│ │ ├── translations.rs
│ │ ├── unsafe_single_threaded.rs
│ │ ├── window/
│ │ │ └── popup.rs
│ │ └── window.rs
│ ├── core-macros/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── lib.rs
│ │ ├── link-data.json
│ │ └── slint_doc.rs
│ ├── interpreter/
│ │ ├── Cargo.toml
│ │ ├── api.rs
│ │ ├── dynamic_item_tree.rs
│ │ ├── dynamic_type.rs
│ │ ├── eval.rs
│ │ ├── eval_layout.rs
│ │ ├── ffi.rs
│ │ ├── global_component.rs
│ │ ├── highlight.rs
│ │ ├── json.rs
│ │ ├── lib.rs
│ │ ├── live_preview.rs
│ │ ├── tests.rs
│ │ └── value_model.rs
│ └── renderers/
│ ├── femtovg/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── font_cache.rs
│ │ ├── images.rs
│ │ ├── itemrenderer.rs
│ │ ├── lib.rs
│ │ ├── opengl.rs
│ │ └── wgpu.rs
│ ├── skia/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── cached_image.rs
│ │ ├── d3d_surface.rs
│ │ ├── font_cache.rs
│ │ ├── itemrenderer.rs
│ │ ├── lib.rs
│ │ ├── metal_surface.rs
│ │ ├── opengl_surface.rs
│ │ ├── software_surface.rs
│ │ ├── vulkan_surface.rs
│ │ ├── wgpu_27_surface/
│ │ │ ├── dx12.rs
│ │ │ ├── metal.rs
│ │ │ └── vulkan.rs
│ │ ├── wgpu_27_surface.rs
│ │ ├── wgpu_28_surface/
│ │ │ ├── dx12.rs
│ │ │ ├── metal.rs
│ │ │ └── vulkan.rs
│ │ └── wgpu_28_surface.rs
│ └── software/
│ ├── Cargo.toml
│ ├── README.md
│ ├── draw_functions.rs
│ ├── fixed.rs
│ ├── fonts/
│ │ ├── pixelfont.rs
│ │ ├── systemfonts.rs
│ │ └── vectorfont.rs
│ ├── fonts.rs
│ ├── lib.rs
│ ├── minimal_software_window.rs
│ ├── path.rs
│ ├── scene.rs
│ └── target_pixel_buffer.rs
├── knip.json
├── logo/
│ ├── README.md
│ └── slint-logo.icns
├── package.json
├── pnpm-workspace.yaml
├── rustfmt.toml
├── scripts/
│ ├── build_for_ios_with_cargo.bash
│ ├── pre-commit-clippy.sh
│ ├── prepare_binary_package.sh
│ ├── prepare_vscode_nightly.sh
│ ├── publish.sh
│ └── run_clippy.sh
├── tests/
│ ├── cases/
│ │ ├── absolute_coords.slint
│ │ ├── absolute_coords2.slint
│ │ ├── accessibility/
│ │ │ ├── accessible_id.slint
│ │ │ ├── actions.slint
│ │ │ └── materialized.slint
│ │ ├── bindings/
│ │ │ ├── animated_default_geometry.slint
│ │ │ ├── change_sub_property.slint
│ │ │ ├── change_sub_property2.slint
│ │ │ ├── change_sub_property_indirection.slint
│ │ │ ├── change_sub_property_indirection_issue2185.slint
│ │ │ ├── issue_1026_opacity_alias.slint
│ │ │ ├── issue_10704_two_way_if.slint
│ │ │ ├── issue_345_opacity_animation.slint
│ │ │ ├── issue_385_default_geom.slint
│ │ │ ├── multiple_two_way.slint
│ │ │ ├── override.slint
│ │ │ ├── two_way_binding.slint
│ │ │ ├── two_way_binding2.slint
│ │ │ ├── two_way_binding_animation.slint
│ │ │ ├── two_way_binding_extra.slint
│ │ │ ├── two_way_binding_structs.slint
│ │ │ ├── two_way_binding_structs2.slint
│ │ │ ├── two_way_bug.slint
│ │ │ ├── two_way_deep.slint
│ │ │ ├── two_way_global.slint
│ │ │ ├── two_way_model.slint
│ │ │ ├── two_way_priority.slint
│ │ │ ├── two_way_priority_default.slint
│ │ │ └── two_way_simple.slint
│ │ ├── callbacks/
│ │ │ ├── callback_alias.slint
│ │ │ ├── callback_conn.slint
│ │ │ ├── callback_name_conflicts.slint
│ │ │ ├── functions.slint
│ │ │ ├── handler.slint
│ │ │ ├── handler_with_arg.slint
│ │ │ ├── init.slint
│ │ │ ├── init_access_base_compo.slint
│ │ │ ├── init_layout.slint
│ │ │ ├── init_listview.slint
│ │ │ ├── init_popup.slint
│ │ │ └── return_value.slint
│ │ ├── children/
│ │ │ ├── children_in_clip.slint
│ │ │ ├── children_in_row.slint
│ │ │ ├── children_placeholder.slint
│ │ │ ├── children_placeholder_5865.slint
│ │ │ ├── children_placeholder_three_levels.slint
│ │ │ ├── children_placeholder_two_levels.slint
│ │ │ ├── timer_next_to_children.slint
│ │ │ └── zorder.slint
│ │ ├── conditional/
│ │ │ ├── cast.slint
│ │ │ ├── expr.slint
│ │ │ ├── stm.slint
│ │ │ └── stm2.slint
│ │ ├── crashes/
│ │ │ ├── access_elided_prop.slint
│ │ │ ├── access_moved_propdecl.slint
│ │ │ ├── alias_in_if.slint
│ │ │ ├── empty_listview.slint
│ │ │ ├── issue1113_popup_in_repeater.slint
│ │ │ ├── issue1267_opacity_in_layout.slint
│ │ │ ├── issue1271_set_in_if.slint
│ │ │ ├── issue1327_inlined_state_property.slint
│ │ │ ├── issue1659_combobox_in_tab.slint
│ │ │ ├── issue173_uninitialized_globals.slint
│ │ │ ├── issue3589_layout_click_deletes_item.slint
│ │ │ ├── issue5259_popup_in_row.slint
│ │ │ ├── issue6721_struct_convert.slint
│ │ │ ├── issue9141_path_commands.slint
│ │ │ ├── issue_1009_const_alias.slint
│ │ │ ├── issue_10927_struct_field_in_for_if.slint
│ │ │ ├── issue_1233_listview_const_shadow.slint
│ │ │ ├── issue_2274_const_state_crash.slint
│ │ │ ├── issue_4002_width_alias.slint
│ │ │ ├── issue_422_enclosing_component.slint
│ │ │ ├── issue_6984_cross_global.slint
│ │ │ ├── issue_7316_changed_visibility.slint
│ │ │ ├── issue_983_listview_const_width.slint
│ │ │ ├── layout_deleted_item.slint
│ │ │ ├── layout_if_in_component.slint
│ │ │ ├── link_two_way_geometry_if.slint
│ │ │ ├── optimized_item_shadow.slint
│ │ │ ├── optimized_popup_parent.slint
│ │ │ ├── shadow_fixed_width.slint
│ │ │ ├── subsubcomponent.slint
│ │ │ ├── subsubcomponent2.slint
│ │ │ └── unused_callback_alias.slint
│ │ ├── elements/
│ │ │ ├── component_container.slint
│ │ │ ├── component_container_component.slint
│ │ │ ├── component_container_init.slint
│ │ │ ├── component_container_size.slint
│ │ │ ├── contextmenu_delete.slint
│ │ │ ├── contextmenu_for.slint
│ │ │ ├── contextmenu_in_repeater.slint
│ │ │ ├── deprecated_rotation-origin.slint
│ │ │ ├── dialog.slint
│ │ │ ├── dragarea_droparea.slint
│ │ │ ├── element_ref_on_root_compo.slint
│ │ │ ├── event_rotation.slint
│ │ │ ├── event_scaling.slint
│ │ │ ├── flickable.slint
│ │ │ ├── flickable2.slint
│ │ │ ├── flickable3.slint
│ │ │ ├── flickable_focus.slint
│ │ │ ├── flickable_in_flickable.slint
│ │ │ ├── flickable_stay_in_bounds.slint
│ │ │ ├── image.slint
│ │ │ ├── image_geometry.slint
│ │ │ ├── key_binding.slint
│ │ │ ├── listview-millions.slint
│ │ │ ├── listview.slint
│ │ │ ├── listview_click_open.slint
│ │ │ ├── listview_interactive_animation.slint
│ │ │ ├── listview_interactive_animation_xy_animation.slint
│ │ │ ├── menubar_condition.slint
│ │ │ ├── menubar_empty.slint
│ │ │ ├── menubar_for.slint
│ │ │ ├── path.slint
│ │ │ ├── path_fit.slint
│ │ │ ├── pinchgesturehandler.slint
│ │ │ ├── pinchgesturehandler_nested.slint
│ │ │ ├── popupwindow.slint
│ │ │ ├── popupwindow_close.slint
│ │ │ ├── popupwindow_close_policy.slint
│ │ │ ├── popupwindow_close_policy_inherited.slint
│ │ │ ├── popupwindow_context.slint
│ │ │ ├── popupwindow_cursor.slint
│ │ │ ├── popupwindow_inherits.slint
│ │ │ ├── popupwindow_nested.slint
│ │ │ ├── popupwindow_nested_close-on-click.slint
│ │ │ ├── popupwindow_open_twice.slint
│ │ │ ├── scaling2.slint
│ │ │ ├── styledtext.slint
│ │ │ ├── swipegesturehandler.slint
│ │ │ ├── swipegesturehandler2.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── timer.slint
│ │ │ ├── timer_start_stop_restart.slint
│ │ │ ├── togglebutton.slint
│ │ │ ├── toucharea.slint
│ │ │ └── toucharea_doubleclick.slint
│ │ ├── examples/
│ │ │ ├── box_shadow_use.slint
│ │ │ ├── color.slint
│ │ │ ├── colored_image.slint
│ │ │ ├── hello.slint
│ │ │ ├── image_fit.slint
│ │ │ ├── image_rendering.slint
│ │ │ ├── key_press.slint
│ │ │ ├── layer.slint
│ │ │ ├── opacity.slint
│ │ │ ├── path_fill_rule.slint
│ │ │ ├── path_line_join.slint
│ │ │ ├── path_viewbox.slint
│ │ │ ├── plusminus.slint
│ │ │ ├── rectangle_clip.slint
│ │ │ ├── rotate.slint
│ │ │ ├── sample_component.slint
│ │ │ └── window_default_font.slint
│ │ ├── exports/
│ │ │ ├── cpp_namespace.slint
│ │ │ ├── export_root.slint
│ │ │ ├── multiple_components.slint
│ │ │ └── named_exports.slint
│ │ ├── expr/
│ │ │ ├── abs.slint
│ │ │ ├── acos.slint
│ │ │ ├── animation_tick.slint
│ │ │ ├── arithmetic.slint
│ │ │ ├── asin.slint
│ │ │ ├── atan.slint
│ │ │ ├── atan2.slint
│ │ │ ├── ceil.slint
│ │ │ ├── clamp.slint
│ │ │ ├── comparison.slint
│ │ │ ├── cos.slint
│ │ │ ├── debug.slint
│ │ │ ├── exp.slint
│ │ │ ├── floor.slint
│ │ │ ├── let.slint
│ │ │ ├── ln.slint
│ │ │ ├── log.slint
│ │ │ ├── math.slint
│ │ │ ├── minmax.slint
│ │ │ ├── mod.slint
│ │ │ ├── pow.slint
│ │ │ ├── return.slint
│ │ │ ├── return2.slint
│ │ │ ├── return3.slint
│ │ │ ├── round.slint
│ │ │ ├── sign.slint
│ │ │ ├── sin.slint
│ │ │ ├── sqrt.slint
│ │ │ ├── string_concatenation.slint
│ │ │ ├── string_template.slint
│ │ │ ├── tan.slint
│ │ │ ├── to-fixed.slint
│ │ │ ├── to-precision.slint
│ │ │ ├── tr.slint
│ │ │ └── trigo.slint
│ │ ├── focus/
│ │ │ ├── 7058_scrolled_clip.slint
│ │ │ ├── clear_focus.slint
│ │ │ ├── event_propagation.slint
│ │ │ ├── event_propagation_2.slint
│ │ │ ├── event_propagation_3.slint
│ │ │ ├── focus_change.slint
│ │ │ ├── focus_change_event.slint
│ │ │ ├── focus_change_event_reason.slint
│ │ │ ├── focus_change_subcompo.slint
│ │ │ ├── focus_change_through_signal.slint
│ │ │ ├── focus_gained_and_lost.slint
│ │ │ ├── focus_policy.slint
│ │ │ ├── forward.slint
│ │ │ ├── hidden_programmatic.slint
│ │ │ ├── initial_focus.slint
│ │ │ ├── initial_focus_through_component.slint
│ │ │ ├── initial_focus_through_layout.slint
│ │ │ ├── keyboard_focus.slint
│ │ │ ├── keyboard_focus2.slint
│ │ │ ├── keyboard_focus_capture.slint
│ │ │ ├── listview-hidden.slint
│ │ │ ├── popupwindow_focus.slint
│ │ │ ├── text-input-focused-parent-deleted.slint
│ │ │ └── text-input-focused.slint
│ │ ├── globals/
│ │ │ ├── alias_to_global.slint
│ │ │ ├── global_accessor_api.slint
│ │ │ ├── global_alias.slint
│ │ │ ├── global_binding.slint
│ │ │ ├── global_binding_const.slint
│ │ │ ├── global_callback.slint
│ │ │ ├── global_depends_on_global.slint
│ │ │ └── issue_2064_two_way_default_value.slint
│ │ ├── imports/
│ │ │ ├── duplicated_name.slint
│ │ │ ├── exported_component.slint
│ │ │ ├── external_globals.slint
│ │ │ ├── external_globals_nameclash.slint
│ │ │ ├── external_interfaces.slint
│ │ │ ├── external_interfaces_as.slint
│ │ │ ├── external_structs.slint
│ │ │ ├── external_type.slint
│ │ │ ├── import_multi.slint
│ │ │ ├── just_import.slint
│ │ │ ├── library.slint
│ │ │ ├── reexport.slint
│ │ │ └── reexport2.slint
│ │ ├── input/
│ │ │ ├── clip_mouse.slint
│ │ │ ├── scroll-event.slint
│ │ │ └── visible_mouse.slint
│ │ ├── interfaces/
│ │ │ ├── callbacks.slint
│ │ │ ├── implements.slint
│ │ │ ├── implements_defaults.slint
│ │ │ ├── implements_inherits.slint
│ │ │ └── uses.slint
│ │ ├── issues/
│ │ │ ├── issue_10321_tab_focus_flickable.slint
│ │ │ ├── issue_10544_model_gaps.slint
│ │ │ ├── issue_10923_popupwindow-reshow.slint
│ │ │ ├── issue_1837_percent_comparison.slint
│ │ │ ├── issue_1846_visibility_in_for.slint
│ │ │ ├── issue_2483_access_spacing.slint
│ │ │ ├── issue_2598_listview_reuse_elem.slint
│ │ │ ├── issue_2608_canon_img_path.slint
│ │ │ ├── issue_2717_has-hover.slint
│ │ │ ├── issue_2780_listview_crash.slint
│ │ │ ├── issue_3107_if_optimized_rect.slint
│ │ │ ├── issue_3318_window_size.slint
│ │ │ ├── issue_3561_return_image.slint
│ │ │ ├── issue_4072_optimized_alias.slint
│ │ │ ├── issue_4163_flickable_parent_percent.slint
│ │ │ ├── issue_4241_alias-const.slint
│ │ │ ├── issue_4884_show_popup.slint
│ │ │ ├── issue_4942_no_else_value.slint
│ │ │ ├── issue_5146_init_animated.slint
│ │ │ ├── issue_5260_init_inlined.slint
│ │ │ ├── issue_5375_children_in_popup.slint
│ │ │ ├── issue_5500_panics_uninitialized_animation.slint
│ │ │ ├── issue_5883.slint
│ │ │ ├── issue_5887_struct_f64-f32.slint
│ │ │ ├── issue_6443_mouse-cursor.slint
│ │ │ ├── issue_6616_optimized_property_read.slint
│ │ │ ├── issue_6651_export_sort.slint
│ │ │ ├── issue_7811_inline_stack_overflow.slint
│ │ │ ├── issue_7848_timer_depends_model_data.slint
│ │ │ ├── issue_7864_condition_return_void.slint
│ │ │ ├── issue_8144_optimized-used.slint
│ │ │ ├── issue_8710_popup_show_from_changed.slint
│ │ │ ├── issue_9209_array_in_struct_conversion.slint
│ │ │ ├── issue_9546.slint
│ │ │ ├── issue_9722_popup_panic.slint
│ │ │ ├── issue_9765-two-way-binding-to-point.slint
│ │ │ ├── issue_9954_big-ifs.slint
│ │ │ ├── member_fun_from_parent.slint
│ │ │ └── name_conflicts.slint
│ │ ├── layout/
│ │ │ ├── box_alignment.slint
│ │ │ ├── box_percentages.slint
│ │ │ ├── box_preferred_size.slint
│ │ │ ├── default_fill.slint
│ │ │ ├── empty_layout.slint
│ │ │ ├── flexbox-inside-h-inside-v.slint
│ │ │ ├── flexbox-preferred-width.slint
│ │ │ ├── flexbox_align_content.slint
│ │ │ ├── flexbox_align_items.slint
│ │ │ ├── flexbox_alignment.slint
│ │ │ ├── flexbox_column_multiple_columns.slint
│ │ │ ├── flexbox_column_reverse.slint
│ │ │ ├── flexbox_column_spacing_and_padding.slint
│ │ │ ├── flexbox_column_varying_widths.slint
│ │ │ ├── flexbox_in_vertical_layout.slint
│ │ │ ├── flexbox_min_width.slint
│ │ │ ├── flexbox_multiple_rows.slint
│ │ │ ├── flexbox_oversized.slint
│ │ │ ├── flexbox_repeater.slint
│ │ │ ├── flexbox_repeater_column.slint
│ │ │ ├── flexbox_repeater_mixed.slint
│ │ │ ├── flexbox_row_reverse.slint
│ │ │ ├── flexbox_runtime_direction.slint
│ │ │ ├── flexbox_spacing_and_padding.slint
│ │ │ ├── flexbox_varying_heights.slint
│ │ │ ├── flickable_in_layout.slint
│ │ │ ├── geometry_center_by_default.slint
│ │ │ ├── grid2.slint
│ │ │ ├── grid_conditional_row_colspan.slint
│ │ │ ├── grid_empty_row.slint
│ │ │ ├── grid_fixed_size.slint
│ │ │ ├── grid_min_max.slint
│ │ │ ├── grid_nested_for_irregular.slint
│ │ │ ├── grid_padding.slint
│ │ │ ├── grid_preferred_size.slint
│ │ │ ├── grid_repeated_row_with_inner_if.slint
│ │ │ ├── grid_simple.slint
│ │ │ ├── grid_spacing.slint
│ │ │ ├── grid_span.slint
│ │ │ ├── grid_variable_row_col.slint
│ │ │ ├── grid_with_custom_row.slint
│ │ │ ├── grid_with_model_in_row.slint
│ │ │ ├── grid_with_nested_for_in_row.slint
│ │ │ ├── grid_with_repeated_rows.slint
│ │ │ ├── grid_with_x_y_model.slint
│ │ │ ├── grid_within_for.slint
│ │ │ ├── height_for_width.slint
│ │ │ ├── horizontal_for.slint
│ │ │ ├── horizontal_layout_percentages.slint
│ │ │ ├── horizontal_layout_percentages_multi_element.slint
│ │ │ ├── horizontal_sizes.slint
│ │ │ ├── issue6285_auto_explicit_restrictions.slint
│ │ │ ├── issue8091_overriden_padding.slint
│ │ │ ├── issue_1057_listview_subcomponent_height.slint
│ │ │ ├── issue_1072_opacity_geometry.slint
│ │ │ ├── issue_140.slint
│ │ │ ├── issue_147_for_explicit_size.slint
│ │ │ ├── issue_147_for_explicit_size_merge.slint
│ │ │ ├── issue_149_nested_for.slint
│ │ │ ├── issue_160_box_min_max.slint
│ │ │ ├── issue_167_if_relayout.slint
│ │ │ ├── issue_2537_visible_in_listview.slint
│ │ │ ├── issue_407_for_layout_in_flickable.slint
│ │ │ ├── issue_553_materialized_init.slint
│ │ │ ├── issue_7761_animated_pc_size.slint
│ │ │ ├── issue_783_constraint_from_children.slint
│ │ │ ├── materialized_minmax.slint
│ │ │ ├── nested_boxes.slint
│ │ │ ├── nested_grid_1.slint
│ │ │ ├── nested_grid_2.slint
│ │ │ ├── nested_grid_minmax.slint
│ │ │ ├── opacity_in_layout.slint
│ │ │ ├── override_from_parent.slint
│ │ │ ├── special_default_geometry.slint
│ │ │ ├── text_no_wrap.slint
│ │ │ ├── text_preferred_size.slint
│ │ │ ├── vertical_if.slint
│ │ │ ├── vertical_layout_percentages.slint
│ │ │ ├── vertical_layout_percentages_multi_element.slint
│ │ │ ├── window_fixed.slint
│ │ │ └── window_preferred.slint
│ │ ├── lookup/
│ │ │ ├── global_lookup.slint
│ │ │ ├── id_lookup.slint
│ │ │ ├── renamed_elements.slint
│ │ │ └── rust_names.slint
│ │ ├── models/
│ │ │ ├── array.slint
│ │ │ ├── assign_equal_model.slint
│ │ │ ├── delete_from_clicked.slint
│ │ │ ├── dirty_model.slint
│ │ │ ├── for.slint
│ │ │ ├── if.slint
│ │ │ ├── if_cond_property.slint
│ │ │ ├── if_dirty.slint
│ │ │ ├── if_lookup.slint
│ │ │ ├── indirect_model_changes.slint
│ │ │ ├── init_recursion.slint
│ │ │ ├── issue_4961_model_index_property.slint
│ │ │ ├── listview_model_change.slint
│ │ │ ├── model.slint
│ │ │ ├── model_in_struct.slint
│ │ │ ├── negative_intmodel.slint
│ │ │ ├── scrolled_model.slint
│ │ │ ├── write_to_model.slint
│ │ │ ├── write_to_model_listview.slint
│ │ │ └── write_to_model_sub_component.slint
│ │ ├── platform.slint
│ │ ├── properties/
│ │ │ ├── animation_bindings_reactive.slint
│ │ │ ├── animation_from_click.slint
│ │ │ ├── animation_from_click_in_repeated_4741.slint
│ │ │ ├── animation_merging.slint
│ │ │ ├── animation_props_depends.slint
│ │ │ ├── border_radius.slint
│ │ │ ├── changes.slint
│ │ │ ├── changes_alias.slint
│ │ │ ├── changes_loop.slint
│ │ │ ├── dashes.slint
│ │ │ ├── delayed_transitions.slint
│ │ │ ├── issue1237_states_visible.slint
│ │ │ ├── issue5038_state_in_base.slint
│ │ │ ├── property_animation.slint
│ │ │ ├── property_animation_restart.slint
│ │ │ ├── states.slint
│ │ │ ├── states_with_animation.slint
│ │ │ ├── transitions.slint
│ │ │ └── transitions2.slint
│ │ ├── simple.slint
│ │ ├── subcomponents/
│ │ │ ├── nested_repeater.slint
│ │ │ ├── no_children.slint
│ │ │ └── repeaters.slint
│ │ ├── test_infrastructure.slint
│ │ ├── testing/
│ │ │ ├── dynamic_components.slint
│ │ │ └── find_by_element_id_or_type.slint
│ │ ├── text/
│ │ │ ├── componentcontainer_font_size_propagation.slint
│ │ │ ├── control_keys_input.slint
│ │ │ ├── cursor_move.slint
│ │ │ ├── cursor_move_grapheme.slint
│ │ │ ├── custom_font.slint
│ │ │ ├── cut.slint
│ │ │ ├── default_color.slint
│ │ │ ├── font_size_propagation.slint
│ │ │ ├── input_type.slint
│ │ │ ├── input_type_decimal.slint
│ │ │ ├── input_type_number.slint
│ │ │ ├── key_repeat.slint
│ │ │ ├── keyboard_modifiers.slint
│ │ │ ├── metrics.slint
│ │ │ ├── select_all.slint
│ │ │ ├── select_double_click.slint
│ │ │ ├── select_dribble_click.slint
│ │ │ ├── surrogate_cursor.slint
│ │ │ ├── text_change.slint
│ │ │ ├── text_property_change.slint
│ │ │ ├── textinput_functions.slint
│ │ │ ├── textinput_keyevents.slint
│ │ │ └── undo_redo.slint
│ │ ├── translations/
│ │ │ ├── bundle.slint
│ │ │ ├── bundle_no_context.slint
│ │ │ ├── fr/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ └── bundle.po
│ │ │ └── up/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── bundle.po
│ │ │ └── bundle_no_context.po
│ │ ├── types/
│ │ │ ├── angles.slint
│ │ │ ├── array.slint
│ │ │ ├── array_of_array.slint
│ │ │ ├── bool.slint
│ │ │ ├── brush.slint
│ │ │ ├── color.slint
│ │ │ ├── conic_gradient.slint
│ │ │ ├── cubic-bezier.slint
│ │ │ ├── duration.slint
│ │ │ ├── easing.slint
│ │ │ ├── enum_compare.slint
│ │ │ ├── enums.slint
│ │ │ ├── functions.slint
│ │ │ ├── gradients.slint
│ │ │ ├── int_conversion.slint
│ │ │ ├── keys.slint
│ │ │ ├── length.slint
│ │ │ ├── nested_struct.slint
│ │ │ ├── object.slint
│ │ │ ├── percent.slint
│ │ │ ├── relative_lengths.slint
│ │ │ ├── rem.slint
│ │ │ ├── resource.slint
│ │ │ ├── string.slint
│ │ │ ├── string_character_count.slint
│ │ │ ├── string_to_float.slint
│ │ │ ├── string_to_lowercase.slint
│ │ │ ├── string_to_uppercase.slint
│ │ │ ├── structs.slint
│ │ │ ├── structs2.slint
│ │ │ ├── structs_keyword.slint
│ │ │ └── styled_text.slint
│ │ └── widgets/
│ │ ├── about.slint
│ │ ├── button.slint
│ │ ├── checkbox.slint
│ │ ├── combobox.slint
│ │ ├── contextmenu.slint
│ │ ├── datepicker.slint
│ │ ├── groupbox.slint
│ │ ├── lineedit.slint
│ │ ├── listview.slint
│ │ ├── menubar.slint
│ │ ├── scroll_event_propagation.slint
│ │ ├── scrollview.slint
│ │ ├── slider_basic.slint
│ │ ├── slider_default_value.slint
│ │ ├── spinbox_basic.slint
│ │ ├── spinbox_default_value.slint
│ │ ├── switch.slint
│ │ ├── tableview.slint
│ │ ├── tabwidget.slint
│ │ ├── textedit.slint
│ │ └── timepicker.slint
│ ├── doctests/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ └── main.rs
│ ├── driver/
│ │ ├── cpp/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── cppdriver.rs
│ │ │ └── main.rs
│ │ ├── driverlib/
│ │ │ ├── Cargo.toml
│ │ │ └── lib.rs
│ │ ├── interpreter/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── interpreter.rs
│ │ │ └── main.rs
│ │ ├── nodejs/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── main.rs
│ │ │ └── nodejs.rs
│ │ ├── python/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── main.rs
│ │ │ └── python.rs
│ │ └── rust/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── main.rs
│ │ ├── template.rs
│ │ └── tests/
│ │ ├── 7guis.rs
│ │ ├── accessibility.rs
│ │ ├── bindings.rs
│ │ ├── callbacks.rs
│ │ ├── children.rs
│ │ ├── conditional.rs
│ │ ├── crashes.rs
│ │ ├── elements.rs
│ │ ├── examples.rs
│ │ ├── exports.rs
│ │ ├── expr.rs
│ │ ├── focus.rs
│ │ ├── globals.rs
│ │ ├── imports.rs
│ │ ├── input.rs
│ │ ├── interfaces.rs
│ │ ├── issues.rs
│ │ ├── layout.rs
│ │ ├── lookup.rs
│ │ ├── models.rs
│ │ ├── properties.rs
│ │ ├── subcomponents.rs
│ │ ├── testing.rs
│ │ ├── text.rs
│ │ ├── translations.rs
│ │ ├── types.rs
│ │ ├── widgets-cosmic.rs
│ │ ├── widgets-cupertino.rs
│ │ ├── widgets-fluent.rs
│ │ ├── widgets-material.rs
│ │ └── widgets-qt.rs
│ ├── helper_components/
│ │ ├── export_globals.slint
│ │ ├── export_interfaces.slint
│ │ ├── export_structs.slint
│ │ ├── issue_6651_implicit_export.slint
│ │ ├── main_window.slint
│ │ ├── re_export.slint
│ │ ├── re_export2.slint
│ │ ├── re_export_all.slint
│ │ └── test_button.slint
│ ├── manual/
│ │ ├── font-metrics.slint
│ │ ├── module-builds/
│ │ │ ├── app/
│ │ │ │ ├── Cargo.toml
│ │ │ │ ├── build.rs
│ │ │ │ ├── src/
│ │ │ │ │ └── main.rs
│ │ │ │ └── ui/
│ │ │ │ └── app-window.slint
│ │ │ ├── blogica/
│ │ │ │ ├── Cargo.toml
│ │ │ │ ├── build.rs
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.rs
│ │ │ │ └── ui/
│ │ │ │ └── blogica.slint
│ │ │ └── blogicb/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── src/
│ │ │ │ └── lib.rs
│ │ │ └── ui/
│ │ │ └── blogicb.slint
│ │ ├── opacity_inheritance.slint
│ │ ├── partial-rendering-circus.slint
│ │ ├── path-stroke-cap.slint
│ │ └── windowattributes/
│ │ ├── Cargo.toml
│ │ └── main.rs
│ ├── run_tests.sh
│ └── screenshots/
│ ├── Cargo.toml
│ ├── build.rs
│ ├── cases/
│ │ ├── basic/
│ │ │ ├── border.slint
│ │ │ ├── conic-gradients.slint
│ │ │ ├── linear-gradients.slint
│ │ │ ├── nested-window-item.slint
│ │ │ ├── opacity-clip.slint
│ │ │ ├── radial-gradients.slint
│ │ │ ├── rgb.slint
│ │ │ ├── text_features.slint
│ │ │ └── translucent-background.slint
│ │ ├── image/
│ │ │ ├── border-image-repeat.slint
│ │ │ ├── border-image.slint
│ │ │ ├── border-image2.slint
│ │ │ ├── image-repeat.slint
│ │ │ ├── images-alignment.slint
│ │ │ ├── images-scale_factor.slint
│ │ │ └── images.slint
│ │ ├── path/
│ │ │ └── path.slint
│ │ └── text/
│ │ ├── set-selection-offsets.slint
│ │ ├── styled.slint
│ │ ├── text-clipped.slint
│ │ ├── text-elided.slint
│ │ ├── text-input-selection.slint
│ │ ├── text-input.slint
│ │ └── text.slint
│ ├── fonts/
│ │ ├── .gitignore
│ │ ├── NotoSans-Bold.ttf.license
│ │ ├── NotoSans-Italic.ttf.license
│ │ ├── NotoSans-Light.ttf.license
│ │ ├── NotoSans-Regular.ttf.license
│ │ └── convert.sh
│ ├── main.rs
│ ├── skia.rs
│ ├── software.rs
│ └── testing.rs
├── tools/
│ ├── compiler/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── main.rs
│ │ └── pyproject.toml
│ ├── docsnapper/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── headless.rs
│ │ └── main.rs
│ ├── figma-inspector/
│ │ ├── .gitignore
│ │ ├── PUBLISH.md
│ │ ├── README.md
│ │ ├── backend/
│ │ │ ├── code.ts
│ │ │ ├── tsconfig.json
│ │ │ └── utils/
│ │ │ ├── code-utils.ts
│ │ │ ├── export-variables.ts
│ │ │ └── property-parsing.ts
│ │ ├── biome.json
│ │ ├── figma.config.ts
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public-zip/
│ │ │ └── readme.txt
│ │ ├── shared/
│ │ │ └── universals.d.ts
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── DialogFrame.tsx
│ │ │ │ └── snippet/
│ │ │ │ ├── CodeSnippet.tsx
│ │ │ │ ├── dark-theme.json
│ │ │ │ └── light-theme.json
│ │ │ ├── globals.d.ts
│ │ │ ├── index-react.tsx
│ │ │ ├── main.css
│ │ │ ├── main.tsx
│ │ │ ├── utils/
│ │ │ │ ├── bolt-utils.ts
│ │ │ │ ├── store.ts
│ │ │ │ └── utils.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tests/
│ │ │ ├── export-variables.test.ts
│ │ │ ├── figma_output.json
│ │ │ └── property-parsing.test.ts
│ │ ├── tsconfig.json
│ │ ├── vite.config.code.ts
│ │ └── vite.config.ts
│ ├── figma_import/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── src/
│ │ ├── figmatypes.rs
│ │ ├── main.rs
│ │ └── rendered.rs
│ ├── lsp/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── common/
│ │ │ ├── component_catalog.rs
│ │ │ ├── document_cache.rs
│ │ │ ├── rename_component.rs
│ │ │ ├── rename_element_id.rs
│ │ │ ├── test.rs
│ │ │ ├── text_edit.rs
│ │ │ └── token_info.rs
│ │ ├── common.rs
│ │ ├── fmt/
│ │ │ ├── README.md
│ │ │ ├── fmt.rs
│ │ │ ├── tool.rs
│ │ │ └── writer.rs
│ │ ├── fmt.rs
│ │ ├── language/
│ │ │ ├── completion.rs
│ │ │ ├── formatting.rs
│ │ │ ├── goto.rs
│ │ │ ├── hover.rs
│ │ │ ├── semantic_tokens.rs
│ │ │ ├── signature_help.rs
│ │ │ └── test.rs
│ │ ├── language.rs
│ │ ├── main.rs
│ │ ├── preview/
│ │ │ ├── connector/
│ │ │ │ ├── native.rs
│ │ │ │ └── wasm.rs
│ │ │ ├── connector.rs
│ │ │ ├── debug.rs
│ │ │ ├── drop_location.rs
│ │ │ ├── element_selection.rs
│ │ │ ├── eval.rs
│ │ │ ├── ext.rs
│ │ │ ├── outline.rs
│ │ │ ├── preview_data.rs
│ │ │ ├── properties.rs
│ │ │ ├── ui/
│ │ │ │ ├── brushes.rs
│ │ │ │ ├── log_messages.rs
│ │ │ │ ├── palette.rs
│ │ │ │ ├── property_view.rs
│ │ │ │ ├── recent_colors.rs
│ │ │ │ └── search_model.rs
│ │ │ ├── ui.rs
│ │ │ └── undo_redo.rs
│ │ ├── preview.rs
│ │ ├── ui/
│ │ │ ├── api.slint
│ │ │ ├── assets/
│ │ │ │ ├── Inter-VariableFont.ttf.license
│ │ │ │ ├── SourceCodePro-Medium.ttf.license
│ │ │ │ └── dial.svg.license
│ │ │ ├── components/
│ │ │ │ ├── body-strong-text.slint
│ │ │ │ ├── body-text.slint
│ │ │ │ ├── console-panel.slint
│ │ │ │ ├── diagnostics-overlay.slint
│ │ │ │ ├── draggable-panel.slint
│ │ │ │ ├── expandable-group.slint
│ │ │ │ ├── expandable-listview.slint
│ │ │ │ ├── group.slint
│ │ │ │ ├── header-text.slint
│ │ │ │ ├── icon-button.slint
│ │ │ │ ├── layout-helpers.slint
│ │ │ │ ├── out-of-date-box.slint
│ │ │ │ ├── property-widgets.slint
│ │ │ │ ├── resizer.slint
│ │ │ │ ├── selection-popup.slint
│ │ │ │ ├── spreadsheet-dialog.slint
│ │ │ │ ├── spreadsheet.slint
│ │ │ │ ├── state-layer.slint
│ │ │ │ ├── status-line.slint
│ │ │ │ ├── styling.slint
│ │ │ │ └── widgets/
│ │ │ │ ├── basics.slint
│ │ │ │ ├── boolean-widget.slint
│ │ │ │ ├── brush-helpers.slint
│ │ │ │ ├── code-widget.slint
│ │ │ │ ├── color-basics.slint
│ │ │ │ ├── enum-widget.slint
│ │ │ │ ├── float-widget.slint
│ │ │ │ ├── floating-brush-picker-widget.slint
│ │ │ │ ├── floating-brush-sections/
│ │ │ │ │ ├── color-mode-and-apply.slint
│ │ │ │ │ ├── css-color-ui.slint
│ │ │ │ │ ├── gradient-ui.slint
│ │ │ │ │ └── palettes.slint
│ │ │ │ ├── gradient-basics.slint
│ │ │ │ ├── inline-brush-widget.slint
│ │ │ │ ├── integer-widget.slint
│ │ │ │ ├── json-widget.slint
│ │ │ │ ├── multi-value-widget.slint
│ │ │ │ ├── string-widget.slint
│ │ │ │ └── widget-helpers.slint
│ │ │ ├── main.slint
│ │ │ ├── views/
│ │ │ │ ├── header-view.slint
│ │ │ │ ├── library-view.slint
│ │ │ │ ├── outline-view.slint
│ │ │ │ ├── preview-data-view.slint
│ │ │ │ ├── preview-view.slint
│ │ │ │ └── property-view.slint
│ │ │ └── windowglobal.slint
│ │ ├── util.rs
│ │ └── wasm_main.rs
│ ├── slintpad/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── biome.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── preview.html
│ │ ├── src/
│ │ │ ├── dialogs.ts
│ │ │ ├── editor_widget.ts
│ │ │ ├── github.ts
│ │ │ ├── highlighting.ts
│ │ │ ├── index.ts
│ │ │ ├── lsp.ts
│ │ │ ├── preview.ts
│ │ │ ├── preview_widget.ts
│ │ │ ├── proxy.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── types.ts
│ │ │ └── worker/
│ │ │ ├── lsp_worker.ts
│ │ │ ├── monaco_worker.mjs
│ │ │ ├── tsconfig.json
│ │ │ └── types.ts
│ │ ├── styles/
│ │ │ ├── colors.css
│ │ │ ├── content.css
│ │ │ └── index.css
│ │ ├── tests/
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.default.json
│ │ ├── tsconfig.json
│ │ └── vite.config.mts
│ ├── tr-extractor/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── main.rs
│ ├── updater/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── experiments/
│ │ │ ├── geometry_changes.rs
│ │ │ ├── input_output_properties.rs
│ │ │ ├── lookup_changes.rs
│ │ │ ├── new_component_declaration.rs
│ │ │ ├── purity.rs
│ │ │ └── transitions.rs
│ │ ├── main.rs
│ │ └── transforms/
│ │ └── renames.rs
│ └── viewer/
│ ├── Cargo.toml
│ ├── README.md
│ └── main.rs
├── ui-libraries/
│ └── material/
│ ├── .gitignore
│ ├── docs/
│ │ ├── MIGRATION.md
│ │ ├── README.md
│ │ ├── astro.config.ts
│ │ ├── biome.json
│ │ ├── ec.config.mjs
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── public/
│ │ │ └── robots.txt
│ │ ├── src/
│ │ │ ├── assets/
│ │ │ │ └── styles/
│ │ │ │ ├── custom.css
│ │ │ │ ├── iconfont.css
│ │ │ │ ├── tailwind.css
│ │ │ │ └── theme.css
│ │ │ ├── components/
│ │ │ │ ├── CustomStyles.astro
│ │ │ │ ├── Favicons.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── Logo.astro
│ │ │ │ ├── common/
│ │ │ │ │ ├── ApplyColorMode.astro
│ │ │ │ │ ├── BasicScripts.astro
│ │ │ │ │ ├── CommonMeta.astro
│ │ │ │ │ ├── Image.astro
│ │ │ │ │ ├── Metadata.astro
│ │ │ │ │ ├── SiteVerification.astro
│ │ │ │ │ ├── ToggleMenu.astro
│ │ │ │ │ └── ToggleTheme.astro
│ │ │ │ ├── ui/
│ │ │ │ │ ├── Background.astro
│ │ │ │ │ ├── Button.astro
│ │ │ │ │ ├── Headline.astro
│ │ │ │ │ ├── ItemGrid.astro
│ │ │ │ │ ├── ItemGrid2.astro
│ │ │ │ │ └── WidgetWrapper.astro
│ │ │ │ └── widgets/
│ │ │ │ ├── Announcement.astro
│ │ │ │ ├── CallToAction.astro
│ │ │ │ ├── Features.astro
│ │ │ │ ├── Features2.astro
│ │ │ │ ├── Footer.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── Hero.astro
│ │ │ │ └── Hero2.astro
│ │ │ ├── config.yaml
│ │ │ ├── content/
│ │ │ │ ├── collections/
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ ├── CheckState.md
│ │ │ │ │ │ ├── FABStyle.md
│ │ │ │ │ │ ├── LayoutAlignment.md
│ │ │ │ │ │ └── ScrollBarPolicy.md
│ │ │ │ │ └── structs/
│ │ │ │ │ ├── IconButtonItem.md
│ │ │ │ │ ├── ListItem.md
│ │ │ │ │ ├── MenuItem.md
│ │ │ │ │ ├── NavigationGroup.md
│ │ │ │ │ ├── NavigationItem.md
│ │ │ │ │ ├── SegmentedItem.md
│ │ │ │ │ └── Time.md
│ │ │ │ ├── config.ts
│ │ │ │ └── docs/
│ │ │ │ ├── components/
│ │ │ │ │ ├── AppBars/
│ │ │ │ │ │ ├── app_bar.mdx
│ │ │ │ │ │ ├── bottom_app_bar.mdx
│ │ │ │ │ │ ├── large_app_bar.mdx
│ │ │ │ │ │ ├── medium_app_bar.mdx
│ │ │ │ │ │ ├── navigation_bar.mdx
│ │ │ │ │ │ ├── search_bar.mdx
│ │ │ │ │ │ ├── small_app_bar.mdx
│ │ │ │ │ │ └── tab_bar.mdx
│ │ │ │ │ ├── Badges/
│ │ │ │ │ │ └── badge.mdx
│ │ │ │ │ ├── Buttons/
│ │ │ │ │ │ ├── elevated_button.mdx
│ │ │ │ │ │ ├── filled_button.mdx
│ │ │ │ │ │ ├── filled_icon_button.mdx
│ │ │ │ │ │ ├── floating_action_button.mdx
│ │ │ │ │ │ ├── icon_button.mdx
│ │ │ │ │ │ ├── outline_button.mdx
│ │ │ │ │ │ ├── outline_icon_button.mdx
│ │ │ │ │ │ ├── segmented_button.mdx
│ │ │ │ │ │ ├── text_button.mdx
│ │ │ │ │ │ ├── tonal_button.mdx
│ │ │ │ │ │ └── tonal_icon_button.mdx
│ │ │ │ │ ├── Cards/
│ │ │ │ │ │ ├── elevated_card.mdx
│ │ │ │ │ │ ├── filled_card.mdx
│ │ │ │ │ │ └── outlined_card.mdx
│ │ │ │ │ ├── Checkboxes/
│ │ │ │ │ │ ├── check_box.mdx
│ │ │ │ │ │ └── check_box_tile.mdx
│ │ │ │ │ ├── Chips/
│ │ │ │ │ │ ├── action_chip.mdx
│ │ │ │ │ │ ├── filter_chip.mdx
│ │ │ │ │ │ └── input_chip.mdx
│ │ │ │ │ ├── Dialogs/
│ │ │ │ │ │ ├── dialog.mdx
│ │ │ │ │ │ └── fullscreen_dialog.mdx
│ │ │ │ │ ├── Layouts/
│ │ │ │ │ │ ├── grid.mdx
│ │ │ │ │ │ ├── horizontal.mdx
│ │ │ │ │ │ └── vertical.mdx
│ │ │ │ │ ├── Navigation/
│ │ │ │ │ │ ├── modal_navigation_drawer.mdx
│ │ │ │ │ │ ├── navigation_drawer.mdx
│ │ │ │ │ │ └── navigation_rail.mdx
│ │ │ │ │ ├── Progress/
│ │ │ │ │ │ ├── circular_progress_indicator.mdx
│ │ │ │ │ │ └── linear_progress_indicator.mdx
│ │ │ │ │ ├── RadioButton/
│ │ │ │ │ │ ├── radio_button.mdx
│ │ │ │ │ │ └── radio_button_tile.mdx
│ │ │ │ │ ├── Sheets/
│ │ │ │ │ │ └── modal_bottom_sheet.mdx
│ │ │ │ │ ├── avatar.mdx
│ │ │ │ │ ├── date_picker.mdx
│ │ │ │ │ ├── divider.mdx
│ │ │ │ │ ├── drop_down_menu.mdx
│ │ │ │ │ ├── list_tile.mdx
│ │ │ │ │ ├── material_window.mdx
│ │ │ │ │ ├── modal.mdx
│ │ │ │ │ ├── modal_drawer.mdx
│ │ │ │ │ ├── popup_menu.mdx
│ │ │ │ │ ├── scroll_view.mdx
│ │ │ │ │ ├── slider.mdx
│ │ │ │ │ ├── snack_bar.mdx
│ │ │ │ │ ├── switch.mdx
│ │ │ │ │ ├── text_field.mdx
│ │ │ │ │ ├── time_picker.mdx
│ │ │ │ │ └── tooltip.mdx
│ │ │ │ └── getting-started.mdx
│ │ │ ├── content.config.ts
│ │ │ ├── layouts/
│ │ │ │ ├── LandingLayout.astro
│ │ │ │ ├── Layout.astro
│ │ │ │ └── PageLayout.astro
│ │ │ ├── misc/
│ │ │ │ └── Slint-tmLanguage.json
│ │ │ ├── navigation.ts
│ │ │ ├── pages/
│ │ │ │ ├── index.astro
│ │ │ │ └── landing/
│ │ │ │ ├── click-through.astro
│ │ │ │ └── product.astro
│ │ │ └── utils/
│ │ │ ├── frontmatter.ts
│ │ │ ├── iconNames.ts
│ │ │ ├── images-optimization.ts
│ │ │ ├── images.ts
│ │ │ ├── link-data.json
│ │ │ ├── permalinks.ts
│ │ │ └── site-config.ts
│ │ ├── tailwind.config.js
│ │ ├── tests/
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.json
│ │ ├── vendor/
│ │ │ └── integration/
│ │ │ ├── index.ts
│ │ │ └── utils/
│ │ │ ├── configBuilder.ts
│ │ │ └── loadConfig.ts
│ │ ├── vscode.tailwind.json
│ │ └── wrangler.toml
│ ├── examples/
│ │ └── gallery/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── components/
│ │ │ ├── component_card.slint
│ │ │ ├── group.slint
│ │ │ └── text_icon_button.slint
│ │ ├── fonts/
│ │ │ └── Roboto-VariableFont.ttf.license
│ │ ├── icons.slint
│ │ ├── main.slint
│ │ ├── main_window_adapter.slint
│ │ ├── themes/
│ │ │ ├── material_green_theme.json
│ │ │ ├── material_purple_theme.json
│ │ │ ├── material_red_theme.json
│ │ │ └── material_slint_theme.json
│ │ └── views/
│ │ ├── actions_view.slint
│ │ ├── components_view.slint
│ │ ├── main_view.slint
│ │ └── navigation_view.slint
│ └── src/
│ ├── LICENSE.md
│ ├── README.md
│ ├── material.slint
│ └── ui/
│ ├── components/
│ │ ├── app_bar.slint
│ │ ├── badge.slint
│ │ ├── base_button.slint
│ │ ├── base_navigation.slint
│ │ ├── bottom_app_bar.slint
│ │ ├── bottom_sheet.slint
│ │ ├── card.slint
│ │ ├── check_box.slint
│ │ ├── chip.slint
│ │ ├── date_picker.slint
│ │ ├── dialog.slint
│ │ ├── divider.slint
│ │ ├── drawer.slint
│ │ ├── drop_down_menu.slint
│ │ ├── elevated_button.slint
│ │ ├── elevation.slint
│ │ ├── extended_touch_area.slint
│ │ ├── filled_button.slint
│ │ ├── filled_icon_button.slint
│ │ ├── floating_action_button.slint
│ │ ├── grid.slint
│ │ ├── horizontal.slint
│ │ ├── icon.slint
│ │ ├── icon_button.slint
│ │ ├── list.slint
│ │ ├── list_view.slint
│ │ ├── material_text.slint
│ │ ├── material_window.slint
│ │ ├── menu.slint
│ │ ├── modal.slint
│ │ ├── navigation_bar.slint
│ │ ├── navigation_drawer.slint
│ │ ├── navigation_rail.slint
│ │ ├── outline_button.slint
│ │ ├── outline_icon_button.slint
│ │ ├── progress_indicator.slint
│ │ ├── radio_button.slint
│ │ ├── scroll_view.slint
│ │ ├── search_bar.slint
│ │ ├── segmented_button.slint
│ │ ├── slider.slint
│ │ ├── snack_bar.slint
│ │ ├── state_layer.slint
│ │ ├── switch.slint
│ │ ├── tab_bar.slint
│ │ ├── text_button.slint
│ │ ├── text_field.slint
│ │ ├── time_picker.slint
│ │ ├── tonal_button.slint
│ │ ├── tonal_icon_button.slint
│ │ ├── tooltip.slint
│ │ └── vertical.slint
│ ├── icons/
│ │ └── icons.slint
│ ├── items/
│ │ ├── list_item.slint
│ │ ├── menu_item.slint
│ │ └── navigation_item.slint
│ └── styling/
│ ├── material_animations.slint
│ ├── material_palette.slint
│ ├── material_schemes.slint
│ ├── material_style_metrics.slint
│ └── material_typography.slint
└── xtask/
├── Cargo.toml
└── src/
├── cppdocs.rs
├── license_headers_check.rs
├── main.rs
├── nodepackage.rs
├── reuse_compliance_check.rs
└── slintdocs.rs
================================================
FILE CONTENTS
================================================
================================================
FILE: .cargo/config.toml
================================================
# 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
[alias]
xtask = "run --locked --package xtask --"
[target.xtensa-esp32s3-none-elf]
rustflags = [
"-C",
"link-arg=-nostartfiles",
# Without this flag, we get miscompilation of floating point operations that cause the clipping region to be totally wrong
"-C",
"target-feature=-fp",
]
[target.xtensa-esp32s2-none-elf]
rustflags = [
# Enable the atomic codegen option for Xtensa
"-C",
"target-feature=+s32c1i",
]
[target.x86_64-pc-windows-msvc]
# Increase default stack size to avoid running out of stack
# space in debug builds. The size matches Linux's default.
rustflags = ["-C", "link-arg=/STACK:8000000"]
[target.aarch64-pc-windows-msvc]
# Increase default stack size to avoid running out of stack
# space in debug builds. The size matches Linux's default.
rustflags = ["-C", "link-arg=/STACK:8000000"]
================================================
FILE: .clang-format
================================================
# 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
---
# Webkit style was loosely based on the Qt style
BasedOnStyle: WebKit
Standard: "c++20"
# Column width is limited to 100 in accordance with Qt Coding Style.
# https://wiki.qt.io/Qt_Coding_Style
# Note that this may be changed at some point in the future.
ColumnLimit: 100
# How much weight do extra characters after the line length limit have.
# PenaltyExcessCharacter: 4
# Disable reflow of qdoc comments: indentation rules are different.
# Translation comments and SDPX-License-Identifiers either.
CommentPragmas: "^(!|:|\\s*[S]PDX-License-Identifier: )"
# We want a space between the type and the star for pointer types.
PointerBindsToType: false
# We use template< without space.
SpaceAfterTemplateKeyword: false
# We want to break before the operators, but not before a '='.
BreakBeforeBinaryOperators: NonAssignment
# Braces are usually attached, but not after functions or class declarations.
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: Never
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
# When constructor initializers do not fit on one line, put them each on a new line.
ConstructorInitializerAllOnOneLineOrOnePerLine: true
# Indent initializers by 4 spaces
ConstructorInitializerIndentWidth: 4
# Indent width for line continuations.
ContinuationIndentWidth: 8
# No indentation for namespaces.
NamespaceIndentation: None
# Allow indentation for preprocessing directives (if/ifdef/endif). https://reviews.llvm.org/rL312125
IndentPPDirectives: AfterHash
# Horizontally align arguments after an open bracket.
# The coding style does not specify the following, but this is what gives
# results closest to the existing code.
AlignAfterOpenBracket: "Align"
AlwaysBreakTemplateDeclarations: "Yes"
# Ideally we should also allow less short function in a single line, but
# clang-format does not handle that.
AllowShortFunctionsOnASingleLine: Inline
# The coding style specifies some include order categories, but also tells to
# separate categories with an empty line. It does not specify the order within
# the categories. Since the SortInclude feature of clang-format does not
# re-order includes separated by empty lines, the feature is not used.
SortIncludes: "Never"
# macros for which the opening brace stays attached.
ForEachMacros:
[
foreach,
Q_FOREACH,
BOOST_FOREACH,
forever,
Q_FOREVER,
QBENCHMARK,
QBENCHMARK_ONCE,
]
# Break constructor initializers before the colon and after the commas.
BreakConstructorInitializers: BeforeColon
================================================
FILE: .clippy.toml
================================================
# 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
type-complexity-threshold = 2500
too-many-arguments-threshold = 10
================================================
FILE: .dockerignore
================================================
target
.git
================================================
FILE: .gitattributes
================================================
*.rs diff=rust
# These files are automatically checked by the build.rs
# With linguist-generated we can mark them as generated so they don't show up in the Github diff.
# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
tests/driver/rust/tests/*.rs linguist-generated
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug-report.yaml
================================================
# 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
name: 🐞 Bug Report
description: Report a bug or unexpected behavior in Slint
labels: ["need triaging"]
type: "Bug"
body:
- type: markdown
attributes:
value: |
Thank you for reporting a bug! 🐛
Please use this template to provide the information we need to investigate the issue.
Before submitting, please search the [issue tracker](https://github.com/slint-ui/slint/issues) to ensure your bug hasn’t already been reported.
If you have questions or need help with Slint, visit our ["Discussions" tab](https://github.com/slint-ui/slint/discussions).
- type: textarea
attributes:
label: Bug Description
description: |
Clearly describe the issue, including:
- What is the bug?
- What behavior did you expect, and what happened instead?
- Steps to reproduce the issue
- Any error messages or logs, if available.
validations:
required: true
- type: textarea
attributes:
label: Reproducible Code (if applicable)
description: |
If possible, include a minimal code snippet that reproduces the problem.
This helps us debug faster!
placeholder: |
export component TestCase inherits Window {
/* Your reproducible Slint code here */
}
render: slint
validations:
required: false
- type: textarea
attributes:
label: Environment Details
description: |
Provide information about your setup:
- Slint version (mention if this is a regression from a previous release).
- Operating system and its version (e.g., Windows 11, Ubuntu 22.04, Android, etc.).
If Linux, what Desktop Environment and whether you are using Wayland or X11.
- Programming language used (e.g., C++, Rust, JavaScript, Python, etc.).
- Backend/renderer being used (e.g., Qt, Skia, FemtoVG, Software, etc.).
value: |
- Slint Version:
- Platform/OS:
- Programming Language:
- Backend/Renderer:
validations:
required: true
- type: textarea
attributes:
label: Product Impact
description: |
Tell us about your project:
- What are you building with Slint?
- How critical is this issue for your product (e.g., blocker, inconvenience)?
This helps us prioritize the issue effectively.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/2-feature-request.yaml
================================================
# 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
name: ✨ Feature Request
description: Suggest a new feature or improvement for Slint
labels: ["need triaging"]
type: "Feature"
body:
- type: markdown
attributes:
value: |
Thank you for suggesting a feature or improvement! ✨
We value your ideas and feedback. However, before submitting a feature request here, please consider starting a discussion in the ["Discussions" tab](https://github.com/slint-ui/slint/discussions) to refine your idea and gather input from the community.
Before submitting, please search the [issue tracker](https://github.com/slint-ui/slint/issues) to ensure your issue hasn’t already been reported.
If you're confident about your suggestion and want to proceed, please fill out the form below.
- type: textarea
attributes:
label: Feature Description
description: |
Please describe the feature or improvement you would like to see in Slint.
Be as detailed as possible:
- What problem does this feature solve, or what use case does it address?
- How would this feature improve your workflow or product?
Feel free to add code sample. You can format it in markdown within ```` ```slint ```` tags.
validations:
required: true
- type: textarea
attributes:
label: Product Impact
description: |
Tell us about your project:
- What are you building with Slint?
- How would you make use of that feature?
- How critical is this feature for your product (e.g., nice-to-have, must-have)?
This helps us prioritize the issue effectively.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/3-tracking-issue.md
================================================
---
name: 🎯 Tracking Issue — ⚠️ Internal use only
about: Track progress on a long-term goal (Internal use only)
title: '🎯 Tracking: '
labels: 'roadmap'
assignees: ''
---
<!--
For team members: Use this to track long-running tasks (e.g. initiatives).
For external contributors: This template is for internal planning. Please use the regular "Feature Request" or "Bug Report" templates instead.
Please make sure to:
- [ ] Assign an owner to the issue
- [ ] Create appropriate sub-issues
This issue will be automatically added to the "Team Planning" project board.
-->
## Goal
[What are we trying to achieve?]
## See also
- Outline: [link] (if applicable)
<!-- link any related issues/Feature Requests -->
================================================
FILE: .github/ISSUE_TEMPLATE/4-blank.md
================================================
---
name: 🚧 Blank issue — ⚠️ Internal use only
about: Issue without labels. (Only for Slint developers)
title: ''
labels: ''
assignees: ''
---
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
# 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
blank_issues_enabled: false
contact_links:
- name: ❓ Ask a Question
url: https://github.com/slint-ui/slint/discussions
about: Have a question about Slint? Head over to the Discussions forum to ask questions, share knowledge, and connect with the community!
================================================
FILE: .github/actions/codesign/action.yaml
================================================
# 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
---
name: Apple Codesign Binary
description: Sign the given binary with the developer certificate
inputs:
binary:
description: "Path to binary"
required: true
default: ""
certificate:
description: "certificate secret"
required: true
certificate_password:
description: "certificate password"
required: true
keychain_password:
description: "keychain password to use"
required: true
developer_id:
description: "developer id to use"
required: true
runs:
using: composite
steps:
- name: Codesign binary
shell: bash
env:
CERT: ${{ inputs.certificate }}
CERT_PW: ${{ inputs.certificate_password }}
KEYCHAIN_PW: ${{ inputs.keychain_password }}
DEV_ID: ${{ inputs.developer_id }}
run: |
echo -n "$CERT" | base64 --decode -o certificate.p12
security create-keychain -p $KEYCHAIN_PW build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p $KEYCHAIN_PW build.keychain
security import certificate.p12 -k build.keychain -P $CERT_PW -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PW build.keychain
/usr/bin/codesign --force -s $DEV_ID "${{ inputs.binary }}" -v
================================================
FILE: .github/actions/install-linux-dependencies/action.yaml
================================================
# 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
# cSpell: ignore libxcb libxkbcommon xfixes
---
name: Install Linux dependencies
description: Set up Linux dependencies for Slint
inputs:
extra-packages:
description: "Extra packages to install"
required: false
default: ""
force-gcc-10:
description: 'Force GCC version 10 (default: "no")'
required: false
default: "no"
old-ubuntu:
description: "This is running on an older version of Ubuntu"
required: false
default: "no"
runs:
using: composite
steps:
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libxkbcommon-x11-dev libudev-dev libinput-dev libfontconfig-dev ${{ inputs.extra-packages }}
shell: bash
- name: Install Linux dependencies
if: ${{ runner.os == 'Linux' && (inputs.old-ubuntu != 'true')}}
run: |
sudo apt-get update
sudo apt-get install libseat-dev libsystemd-dev
shell: bash
- name: Install C++ compiler
if: ${{ (runner.os == 'Linux') && (inputs.force-gcc-10 == 'true') }}
run: |
sudo apt-get install gcc-10 g++-10
echo "CC=gcc-10" >> $GITHUB_ENV
echo "CXX=g++-10" >> $GITHUB_ENV
shell: bash
================================================
FILE: .github/actions/install-skia-dependencies/action.yaml
================================================
# 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
---
name: Install Skia dependencies
description: Set up dependencies needed to build Skia
runs:
using: composite
steps:
- name: Upgrade LLVM for Skia build on Windows
if: runner.os == 'Windows'
run: choco upgrade llvm --version "19.1.7" --allow-downgrade
shell: bash
# See https://github.com/ilammy/msvc-dev-cmd?tab=readme-ov-file#caveats
- name: Remove GNU link.exe from GH actions
if: runner.os == 'Windows'
run: rm /usr/bin/link
shell: bash
================================================
FILE: .github/actions/setup-rust/action.yaml
================================================
# 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
# cSpell: ignore debuginfo rustflags swatinem
---
name: Setup Rust support
description: Set up Slint development environment
inputs:
toolchain:
description: "Rust toolchain to use (default: stable)"
required: false
default: stable
target:
description: "Rust target to use"
required: false
default: ""
components:
description: "Rust components to install"
required: false
default: ""
key:
description: "Extra cache keying information"
required: false
default: ""
cache:
description: "Enable Rust caching (default: true)"
required: false
default: "true"
save_if:
description: "Condition to save the cache"
required: false
default: ${{ github.ref == 'refs/heads/master' }}
runs:
using: composite
steps:
- name: Disable debug info to avoid running out of disk space on Windows
if: runner.os == 'Windows'
run: |
echo "RUSTFLAGS=-C debuginfo=0" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
shell: powershell
# Skia source builds end up with long paths, exceeding the 260 character limit. Enable this git for windows
# option to use newer Windows API (https://github.com/git-for-windows/git/blob/bc3743def76f487b6dbc18b1b2645ab081c14980/Documentation/config/core.txt#L679)
- name: Enable long path support for git checkouts
if: runner.os == 'Windows'
run: |
git config --system core.longpaths true
shell: powershell
- name: Move cargo home close to the target/$profile directory, so that relative paths from build to cargo source are without drive letter
if: runner.os == 'Windows'
run: |
echo "CARGO_HOME=${{ runner.workspace }}\cargo" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
shell: powershell
- name: Set GETTEXT_DIR environment variable or it will still be compiled from source.
if: runner.os == 'macOS'
run: |
GETTEXT_PATH=$(brew --prefix gettext)
echo "GETTEXT_DIR=${GETTEXT_PATH}" >> $GITHUB_ENV
echo "Installed gettext at: ${GETTEXT_PATH}"
shell: bash
- name: Install Rust ${{ inputs.toolchain }}
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ inputs.toolchain }}
components: ${{ inputs.components }}
target: ${{ inputs.target }}
- uses: Swatinem/rust-cache@v2
if: inputs.cache == 'true'
with:
key: ${{ inputs.key }}-1
save-if: ${{ inputs.save_if }}
================================================
FILE: .github/ci_path_filters.yaml
================================================
# 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
ci_config: &ci_config
- '.github/**'
- '.mise/**'
# We count changes to Cargo.lock as a "CI config" level change, as we need to ensure that all CI jobs will work correctly with the updated lock file.
# Otherwise, later job runs may run into issues that have nothing to do with their changes.
- 'Cargo.lock'
files_in_root: &files_in_root
- '*!(/)' # changes in the root, such as cspell.json or pnpm-lock.yaml
- '.*'
js_config: &js_config
- 'package.json'
- 'package-lock.json'
- 'pnpm-workspace.yaml'
- '.npmrc'
- 'pnpm-lock.yaml'
slint:
- 'api/**'
- 'cmake/**'
- 'demos/**'
- 'docker/**'
- 'docs/**'
- 'editors/**'
- 'helper_crates/**'
- 'internal/**'
- 'logo/**'
- 'scripts/**'
- 'tests/**'
- 'tools/compiler/**'
- 'tools/docsnapper/**'
- 'tools/figma_import/**'
- 'tools/lsp/**'
- 'tools/slintpad/**'
- 'tools/tr-extractor/**'
- 'tools/updater/**'
- 'tools/viewer/**'
- 'xtask/**'
- *files_in_root
- *ci_config
figma_inspector:
- 'tools/figma-inspector/**'
- *js_config
- *ci_config
material_components:
- 'ui-libraries/material/**'
internal: &internal
# The API specific tests don't depends on renderer or backend, but they do depend on the Qt widgets and the testing backend
- 'internal/!({renderers,backends}/**)'
- 'internal/backends/qt/**'
- 'internal/backends/testing/**'
- 'helper_crates/**'
- 'Cargo.toml' # the root Cargo.toml
- '.cargo/**'
- *ci_config
api_cpp:
- 'api/cpp/**'
- 'tools/compiler/**'
- *ci_config
# The renderers are not part of the `internal` group, but are exposed in the C++ API
- 'internal/renderers/{skia,software}/**'
api_python:
- 'api/python/**'
- *ci_config
api_node:
- 'api/node/**'
- *js_config
- *ci_config
api_rs:
- 'api/rs/**'
- 'Cargo.toml'
- *ci_config
tests:
- 'tests/**'
examples:
# Some examples are tested separately and can be excluded from here
- 'examples/!({servo,bevy,*mcu*,uefi-demo,}/**)'
- 'demos/**'
examples_mcu:
- 'examples/*mcu*/**'
- 'internal/renderers/software/**'
vsce:
- *internal
- *js_config
- 'api/rs/**'
- 'editors/vscode/**'
- 'tools/lsp/**'
- 'docs/common/src/utils/slint.tmLanguage.json'
slintpad:
- *internal
- 'tools/slintpad/**'
- 'api/wasm-interpreter/**'
- 'tools/lsp/**'
- 'api/rs/**'
- 'docs/common/src/utils/slint.tmLanguage.json'
updater_test:
- *internal
- 'tests/cases/**'
- 'tools/updater/**'
servo_example:
- 'examples/servo/**'
- *ci_config
bevy_examples:
- 'examples/bevy/**'
- *ci_config
rust_files:
- '**/*.rs'
- '**/Cargo.toml'
- 'Cargo.lock'
- *ci_config
================================================
FILE: .github/dependabot.yml
================================================
# 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
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: github-actions
open-pull-requests-limit: 20
directory: /
schedule:
interval: weekly
time: "01:00"
groups:
github-actions:
patterns:
- "*" # Group all Actions updates into a single larger pull request
ignore:
- dependency-name: "lukka/run-cmake"
- package-ecosystem: "npm" # See documentation for possible values
open-pull-requests-limit: 20
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
time: "01:00"
ignore:
- dependency-name: "@types/node"
- dependency-name: "@types/vscode"
- dependency-name: "@codingame/monaco-vscode-configuration-service-override"
- dependency-name: "@codingame/monaco-vscode-files-service-override"
- dependency-name: "@codingame/monaco-vscode-keybindings-service-override"
- dependency-name: "@codingame/monaco-vscode-languages-service-override"
- dependency-name: "@codingame/monaco-vscode-model-service-override"
- dependency-name: "@codingame/monaco-vscode-storage-service-override"
- dependency-name: "@codingame/monaco-vscode-api"
- dependency-name: "@codingame/monaco-vscode-editor-api"
- dependency-name: "@napi-rs/cli"
- dependency-name: "monaco-editor-wrapper"
- dependency-name: "monaco-languageclient"
groups:
npm-major-updates:
update-types: ["major"]
npm-minor-updates:
update-types: ["minor"]
npm-patch-updates:
update-types: ["patch"]
================================================
FILE: .github/pull_request_template.md
================================================
<!--
- [ ] If the change modifies a visible behavior, it changes the documentation accordingly
- [ ] If possible, the change is auto-tested
- [ ] If the changes fixes or close an existing issue, the commit message reference the issue with `Fixes #xxx` or `Closes #xxx`
- [ ] If the change is noteworthy, the commit message should contain `ChangeLog: ...`
-->
================================================
FILE: .github/workflows/autofix.yaml
================================================
# 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
name: autofix.ci # needed to securely identify the workflow
on:
pull_request:
branches: [master, "feature/*", "pre-release/*"]
push:
branches: [master, "feature/*", "pre-release/*"]
workflow_dispatch:
merge_group:
permissions:
contents: read
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_INCREMENTAL: false
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
format_fix:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v4
with:
version: 2025.9.18
log_level: debug
- name: Install rust dependencies
run: rustup toolchain install stable-x86_64-unknown-linux-gnu --profile default
- name: Run fixes
run: mise run --force --jobs=1 'ci:autofix:fix'
- name: Suggest format changes
uses: autofix-ci/action@7a166d7532b277f34e16238930461bf77f9d7ed8
lint_typecheck:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v4
with:
version: 2025.9.18
log_level: debug
- name: Install rust dependencies
run: rustup toolchain install stable-x86_64-unknown-linux-gnu --profile default
- name: Run lints
run: mise run --force --jobs=1 'ci:autofix:lint'
ci:
needs: [format_fix, lint_typecheck]
permissions:
contents: read
deployments: write
pull-requests: read
uses: ./.github/workflows/ci.yaml
secrets:
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN_2: ${{ secrets.CLOUDFLARE_API_TOKEN_2 }}
CLOUDFLARE_ACCOUNT_ID_2: ${{ secrets.CLOUDFLARE_ACCOUNT_ID_2 }}
READ_WRITE_PRIVATE_KEY: ${{ secrets.READ_WRITE_PRIVATE_KEY }}
done:
needs: [ci]
name: done
runs-on: ubuntu-latest
steps:
- run: echo "All checks passed."
================================================
FILE: .github/workflows/bevy_examples.yaml
================================================
# 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
name: Bevy examples
on:
workflow_dispatch:
inputs:
update:
description: 'Whether to run cargo update before testing'
required: false
type: boolean
default: false
save_if:
description: 'Condition to save the cache'
required: false
type: boolean
default: true
workflow_call:
inputs:
update:
description: 'Whether to run cargo update before testing'
required: false
type: boolean
default: false
save_if:
description: 'Condition to save the cache'
required: false
type: boolean
default: true
jobs:
bevy_examples:
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
save_if: ${{ inputs.save_if }}
- uses: ./.github/actions/install-linux-dependencies
with:
extra-packages: libwayland-dev libasound2-dev
- uses: ./.github/actions/install-skia-dependencies
- uses: ilammy/msvc-dev-cmd@v1
- name: Cargo update
if: ${{ inputs.update }}
run: cargo update
working-directory: examples/bevy
- name: Build Bevy Examples
run: cargo build --locked
working-directory: examples/bevy
================================================
FILE: .github/workflows/build_and_test_reusable.yaml
================================================
# 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
name: Build and Test (Reusable)
on:
workflow_call:
inputs:
name:
description: 'Name of the job'
required: true
type: string
os:
description: 'Operating system to run on'
required: true
type: string
rust_version:
description: 'Rust version to use'
required: true
type: string
update:
description: 'Whether to run cargo update before testing'
required: false
type: boolean
default: false
extra_args:
description: 'Extra arguments to pass to cargo test'
required: false
type: string
default: ""
cache:
description: 'Use rust-cache'
required: false
type: boolean
default: true
save_if:
description: 'Condition to save the cache'
required: false
type: boolean
default: true
timeout_minutes:
description: 'Timeout in minutes'
required: false
type: number
default: 120
jobs:
build_and_test:
name: ${{ inputs.name }}
timeout-minutes: ${{ inputs.timeout_minutes }}
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
DYLD_FRAMEWORK_PATH: /Users/runner/work/slint/Qt/6.2.2/macos/lib
QT_QPA_PLATFORM: offscreen
RUSTFLAGS: -D warnings
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
SLINT_EMIT_DEBUG_INFO: 1
runs-on: ${{ inputs.os }}
steps:
- name: Maximize build space
if: runner.os == 'Linux'
run: |
df -h
[ -d /usr/local/lib/android ] && sudo rm -rf /usr/local/lib/android
[ -d /usr/share/dotnet ] && sudo rm -rf /usr/share/dotnet
# For now, comment out a few of these deletion commands to speed up the runner startup
# [ -d /opt/ghc ] && sudo rm -rf /opt/ghc
# [ -d /opt/hostedtoolcache/CodeQL ] && sudo rm -rf /opt/hostedtoolcache/CodeQL
# Pruning docker images could free up another 3GB
# sudo docker image prune --all --force
df -h
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/install-skia-dependencies
- uses: ilammy/msvc-dev-cmd@v1
- uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Qt
if: runner.os != 'Windows'
uses: jurplel/install-qt-action@v4
with:
version: "6.2.2"
setup-python: false
cache: true
- name: Install ffmpeg and alsa (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install clang libavcodec-dev libavformat-dev libavutil-dev libavfilter-dev libavdevice-dev libasound2-dev pkg-config
- name: Install gstreamer and libunwind (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good
- name: Setup headless display
if: runner.os != 'macOS'
uses: pyvista/setup-headless-display-action@v4
- uses: ./.github/actions/setup-rust
with:
toolchain: ${{ inputs.rust_version }}
key: x-v3
save_if: ${{ inputs.save_if }}
cache: ${{ inputs.cache }}
- name: Cargo update
if: inputs.update
# Ignore rust_version for stable/nightly to test with latest dependencies
run: cargo update ${{ (inputs.rust_version == 'stable' || inputs.rust_version == 'nightly') && '--ignore-rust-version' || '' }}
- name: Run tests
run: cargo test --locked --verbose --all-features --workspace --timings ${{ inputs.extra_args }} --exclude slint-node --exclude pyslint --exclude test-driver-node --exclude slint-node --exclude test-driver-nodejs --exclude test-driver-cpp --exclude test-driver-python --exclude mcu-board-support --exclude mcu-embassy --exclude printerdemo_mcu --exclude uefi-demo --exclude slint-cpp --exclude slint-python -- --skip=_qt::t
env:
SLINT_CREATE_SCREENSHOTS: 1
shell: bash
- name: Run tests (qt)
run: cargo test --locked --verbose --all-features --workspace ${{ inputs.extra_args }} --exclude slint-node --exclude pyslint --exclude test-driver-node --exclude slint-node --exclude test-driver-nodejs --exclude test-driver-cpp --exclude test-driver-python --exclude mcu-board-support --exclude mcu-embassy --exclude printerdemo_mcu --exclude uefi-demo --exclude slint-cpp --exclude slint-python _qt -- --test-threads=1
shell: bash
- name: live-preview for rust test
env:
SLINT_LIVE_PREVIEW: 1
run: cargo test --locked --verbose --all-features --features slint/live-preview -p test-driver-rust -- --skip=_qt::t
shell: bash
- name: Upload build timing report
if: always()
uses: actions/upload-artifact@v7
with:
name: cargo-timings-${{ inputs.os }}-${{ inputs.rust_version }}
path: target/cargo-timings/cargo-timing.html
if-no-files-found: ignore
- name: Archive screenshots after failed tests
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: screenshots-${{ inputs.os }}
path: |
tests/screenshots/references
- name: Print Disk Usage
if: always()
run: df -h
================================================
FILE: .github/workflows/build_docs.yaml
================================================
# 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
# Build various demo binaries, c++ packages and documentation and publish them on the website
# Job 1 (rust-cpp-docs): Build Rust and C++ documentation
# Job 2 (astro-docs-tests): Generate screenshots, build Astro docs and run tests
# Job 3 (node-python-docs): Build Node and Python documentation
# Job 4 (check-warnings): Validate docs for warnings
name: Build docs
on:
workflow_call:
secrets:
READ_WRITE_PRIVATE_KEY:
required: true
inputs:
release:
type: string
default: "false"
required: false
description: "Release? Enable options for building binaries for a release (i.e. apply a nightly tag, nightly version)"
app-id:
type: string
required: true
jobs:
# Job 1: Build Rust and C++ documentation
rust-cpp-docs:
runs-on: ubuntu-24.04
env:
# Allow deprecated warning because we are using nightly and some things might be deprecated in nightly
# for which the stable alternative is not yet available.
RUSTFLAGS: -D warnings -W deprecated --cfg slint_nightly_test
RUSTDOCFLAGS: --html-in-header=/home/runner/work/slint/slint/docs/astro/src/utils/slint-docs-highlight.html -D warnings -W deprecated --cfg docsrs -Zunstable-options --generate-link-to-definition
SLINT_NO_QT: 1
CARGO_INCREMENTAL: false
RELEASE_INPUT: ${{ inputs.release }}
steps:
- uses: actions/checkout@v6
- name: Set up crate rustdoc link
run: |
rgb_version=`grep 'rgb = ' internal/core/Cargo.toml | sed 's/^.*"\(.*\)"/\1/'`
echo "RUSTDOCFLAGS=$RUSTDOCFLAGS --extern-html-root-url rgb=https://docs.rs/rgb/$rgb_version/ --extern-html-root-url android_activity=https://docs.rs/android-activity/0.5/ --extern-html-root-url raw_window_handle=https://docs.rs/raw_window_handle/0.6 --extern-html-root-url winit=https://docs.rs/winit/0.30 --extern-html-root-url wgpu=https://docs.rs/wgpu/26 --extern-html-root-url input=https://docs.rs/input/0.9 --extern-html-root-url fontique=https://docs.rs/fontique/0.7" >> $GITHUB_ENV
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/setup-rust
with:
toolchain: nightly
target: aarch64-linux-android
- name: Install apt dependencies
run: sudo apt-get install doxygen
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Build Cpp docs
run: |
CPPDOCS_EXTRA_FLAGS=""
if [ "$RELEASE_INPUT" != "true" ]; then
CPPDOCS_EXTRA_FLAGS="--experimental"
fi
cargo xtask cppdocs --show-warnings $CPPDOCS_EXTRA_FLAGS
- name: "Rust docs"
run: cargo doc -p slint -p slint-build -p slint-interpreter --no-deps --all-features
- name: "Rust android-activity and i-slint-backend-winit"
run: |
cargo doc -p i-slint-backend-android-activity -p i-slint-backend-winit -p i-slint-backend-testing --no-deps --target aarch64-linux-android --features=i-slint-backend-android-activity/native-activity,i-slint-backend-android-activity/aa-06,i-slint-backend-winit/raw-window-handle-06,i-slint-backend-winit/renderer-femtovg
cp -r target/aarch64-linux-android/doc/i_slint_backend_android_activity/ target/doc/
cp -r target/aarch64-linux-android/doc/i_slint_backend_winit/ target/doc/
cp -r target/aarch64-linux-android/doc/i_slint_backend_testing/ target/doc/
- name: "Prepare Rust and C++ docs for website directory structure"
run: |
mkdir -p artifact/docs
mv target/doc artifact/docs/rust
mv target/cppdocs/html artifact/docs/cpp
- name: "Upload Rust/C++ Docs Artifacts"
uses: actions/upload-artifact@v7
with:
name: docs-rust-cpp
path: artifact
- name: "Check for docs warnings in internal crates"
run: cargo doc --workspace --no-deps --all-features --exclude slint-node --exclude pyslint --exclude mcu-board-support --exclude mcu-embassy --exclude printerdemo_mcu --exclude carousel --exclude test-* --exclude plotter --exclude uefi-demo --exclude ffmpeg --exclude gstreamer-player --exclude slint-cpp --exclude slint-python
# Job 2: Build Astro docs and run tests
astro-docs-tests:
runs-on: ubuntu-24.04
env:
RUSTFLAGS: -D warnings -W deprecated
RUSTDOCFLAGS: --html-in-header=/home/runner/work/slint/slint/docs/astro/src/utils/slint-docs-highlight.html -D warnings -W deprecated --cfg docsrs -Zunstable-options --generate-link-to-definition
SLINT_NO_QT: 1
CARGO_INCREMENTAL: false
RELEASE_INPUT: ${{ inputs.release }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
- uses: ./.github/actions/install-linux-dependencies
- name: Install MS fonts for comic sans needed by one of the screenshots in the docs
run: |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install ttf-mscorefonts-installer -y
- uses: ./.github/actions/setup-rust
with:
toolchain: stable
target: aarch64-linux-android
cache: false
- name: "Generate Screenshots for Example Snippets"
run: cargo run --release -p slint-docsnapper -- docs/astro/src/content --overwrite
- name: "Install Node dependencies"
run: pnpm i --frozen-lockfile
- name: Extract Version from Cargo.toml
id: version
run: |
version=$(awk '/^\[workspace.package\]/ {found=1} found && /^version = / {gsub(/version = |"/, "", $0); print $0; exit}' Cargo.toml)
if [[ -z "$version" ]]; then
echo "Version not found"
exit 1
fi
echo "VERSION=$version" >> $GITHUB_OUTPUT
- name: Update URL for sitemap in site-config.ts
run: |
version="${{ steps.version.outputs.VERSION }}"
if [ "$RELEASE_INPUT" != "true" ]; then
base_url="https://snapshots.slint.dev"
base_path="/master/docs/slint/"
slint_download_version=nightly
else
base_url="https://releases.slint.dev"
base_path="/$version/docs/slint/"
slint_download_version=v$version
fi
sed -i "s|BASE_URL = \".*\"|BASE_URL = \"$base_url\"|" docs/common/src/utils/site-config.ts
sed -i "s|BASE_PATH = \".*\"|BASE_PATH = \"$base_path\"|" docs/common/src/utils/site-config.ts
sed -i "s|SLINT_DOWNLOAD_VERSION = \".*\"| SLINT_DOWNLOAD_VERSION = \"$slint_download_version\"|" docs/common/src/utils/site-config.ts
- name: "Slint Language Documentation"
run: cargo xtask slintdocs
- name: Spellcheck
working-directory: docs/astro
run: pnpm spellcheck
- name: Install Playwright
working-directory: docs/astro
run: pnpm exec playwright install --with-deps
- name: Run Playwright tests
working-directory: docs/astro
run: pnpm exec playwright test
- name: Publish Test Summary Results
working-directory: docs/astro
run: npx github-actions-ctrf playwright-report/ctrf-report.json
- name: Upload test results
if: always()
uses: actions/upload-artifact@v7
with:
name: playwright-test-report
path: docs/astro/playwright-report/
retention-days: 30
- name: Debug - Verify dist exists before upload
run: |
echo "=== Checking docs/astro/dist ==="
ls -la docs/astro/ || echo "docs/astro/ does not exist"
ls -la docs/astro/dist/ || echo "docs/astro/dist/ does not exist"
echo "File count in dist: $(find docs/astro/dist -type f 2>/dev/null | wc -l)"
echo "First 10 files:"
find docs/astro/dist -type f 2>/dev/null | head -10
- name: "Prepare docs for website structure"
run: |
mkdir -p artifact/docs
mv docs/astro/dist artifact/docs/slint
- name: "Upload Astro Docs Artifacts"
uses: actions/upload-artifact@v7
with:
name: docs-astro
path: artifact
# Job 3: Build Node and Python documentation
node-python-docs:
runs-on: ubuntu-24.04
env:
RELEASE_INPUT: ${{ inputs.release }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/setup-rust
with:
toolchain: stable
target: aarch64-linux-android
cache: false
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: "Install Node dependencies"
run: pnpm i --frozen-lockfile
- name: "Node docs"
run: pnpm run docs
working-directory: api/node
- name: Setup headless display
uses: pyvista/setup-headless-display-action@v4
- name: "Python docs"
run: uv run build_docs.py
working-directory: api/python/slint
- name: "Prepare docs for website structure"
run: |
mkdir -p artifact/docs
mv api/node/docs artifact/docs/node
mv api/python/slint/docs artifact/docs/python
- name: "Upload Python/Node Docs Artifacts"
uses: actions/upload-artifact@v7
with:
name: docs-node-python
path: artifact
================================================
FILE: .github/workflows/ci.yaml
================================================
# 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
name: CI
on:
workflow_dispatch:
workflow_call:
secrets:
CLOUDFLARE_API_TOKEN:
required: true
CLOUDFLARE_ACCOUNT_ID:
required: true
CLOUDFLARE_API_TOKEN_2:
required: true
CLOUDFLARE_ACCOUNT_ID_2:
required: true
ANDROID_KEYSTORE_PASSWORD:
required: true
ANDROID_KEYSTORE_BASE64:
required: true
READ_WRITE_PRIVATE_KEY:
required: true
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
SLINT_COMPILER_DENY_WARNINGS: 1
jobs:
files-changed:
runs-on: ubuntu-latest
timeout-minutes: 1
permissions:
pull-requests: read
outputs:
slint: ${{ steps.filter.outputs.slint }}
figma_inspector : ${{ steps.filter.outputs.figma_inspector }}
material_components : ${{ steps.filter.outputs.material_components }}
internal : ${{ steps.filter.outputs.internal }}
api_cpp : ${{ steps.filter.outputs.api_cpp }}
api_python : ${{ steps.filter.outputs.api_python }}
api_node : ${{ steps.filter.outputs.api_node }}
api_rs : ${{ steps.filter.outputs.api_rs }}
tests : ${{ steps.filter.outputs.tests }}
examples : ${{ steps.filter.outputs.examples }}
examples_mcu : ${{ steps.filter.outputs.examples_mcu }}
vsce : ${{ steps.filter.outputs.vsce }}
slintpad : ${{ steps.filter.outputs.slintpad }}
updater_test : ${{ steps.filter.outputs.updater_test }}
servo_example : ${{ steps.filter.outputs.servo_example }}
bevy_examples : ${{ steps.filter.outputs.bevy_examples }}
rust_files : ${{ steps.filter.outputs.rust_files }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v4
id: filter
with:
token: ${{ github.token }}
filters: .github/ci_path_filters.yaml
build_and_test:
needs: files-changed
if: needs.files-changed.outputs.slint == 'true' || needs.files-changed.outputs.examples == 'true'
strategy:
matrix:
include:
- os: ubuntu-22.04
name: "Ubuntu 22.04 beta"
rust_version: "beta"
save_if: ${{ github.ref == 'refs/heads/master' }}
extra_args: "--exclude plotter"
- os: windows-2022
name: "Windows 2022 1.92"
rust_version: "1.92"
save_if: ${{ github.ref == 'refs/heads/master' }}
extra_args: "--exclude ffmpeg --exclude gstreamer-player"
- os: macos-14
name: "MacOS 14 stable"
rust_version: "stable"
save_if: ${{ github.ref == 'refs/heads/master' }}
extra_args: "--exclude ffmpeg --exclude gstreamer-player"
uses: ./.github/workflows/build_and_test_reusable.yaml
with:
os: ${{ matrix.os }}
name: build_and_test ${{ matrix.name }}
rust_version: ${{ matrix.rust_version }}
extra_args: ${{ matrix.extra_args }} --exclude material-gallery
save_if: ${{ matrix.save_if }}
# For changes to Slint internals, do a quick test on Linux for Node.js only.
node_test_linux:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_node == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/node_test_reusable.yaml
with:
name: "Node.js Linux"
os: "ubuntu-22.04"
node_test_macos:
needs: files-changed
if: needs.files-changed.outputs.api_node == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/node_test_reusable.yaml
with:
name: "Node.js macOS"
os: "macos-14"
node_test_windows:
needs: files-changed
if: needs.files-changed.outputs.api_node == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/node_test_reusable.yaml
with:
name: "Node.js Windows"
os: "windows-2022"
# For changes to Slint internals, do a quick test on Linux for Python only.
python_test_linux:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_python == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/python_test_reusable.yaml
with:
name: "Python Linux"
os: "ubuntu-22.04"
python_test_macos:
needs: files-changed
if: needs.files-changed.outputs.api_python == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/python_test_reusable.yaml
with:
name: "Python macOS"
os: "macos-14"
python_test_windows:
needs: files-changed
if: needs.files-changed.outputs.api_python == 'true' || needs.files-changed.outputs.tests == 'true'
uses: ./.github/workflows/python_test_reusable.yaml
with:
name: "Python Windows"
os: "windows-2022"
cpp_test_driver:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_cpp == 'true' || needs.files-changed.outputs.tests == 'true'
env:
DYLD_FRAMEWORK_PATH: /Users/runner/work/slint/Qt/5.15.2/clang_64/lib
QT_QPA_PLATFORM: offscreen
RUSTFLAGS: -D warnings
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
CARGO_PROFILE_DEV_DEBUG: 0
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
force-gcc-10: true
- name: Install Qt
if: runner.os == 'Linux'
uses: jurplel/install-qt-action@v4
with:
version: "5.15.2"
cache: true
- name: Set default style
if: runner.os != 'Windows'
run: echo "SLINT_STYLE=native" >> $GITHUB_ENV
- name: Set default style
if: runner.os == 'Windows'
run: |
echo "SLINT_STYLE=fluent" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "SLINT_NO_QT=1" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- uses: ./.github/actions/setup-rust
- name: Run tests
run: cargo test --verbose -p test-driver-cpp --features slint-cpp/backend-qt
cpp_cmake:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_cpp == 'true' || needs.files-changed.outputs.examples == 'true'
env:
DYLD_FRAMEWORK_PATH: /Users/runner/work/slint/Qt/6.5.1/clang_64/lib
QT_QPA_PLATFORM: offscreen
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
CARGO_PROFILE_DEV_DEBUG: 0
SLINT_EMIT_DEBUG_INFO: 1
strategy:
matrix:
include:
- os: macos-14
rust_version: "1.88"
- os: windows-2022
rust_version: "nightly"
- os: ubuntu-22.04
rust_version: "stable"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
force-gcc-10: true
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: 6.5.1
cache: true
- uses: ./.github/actions/setup-rust
- uses: ilammy/msvc-dev-cmd@v1
- name: Select MSVC (windows)
if: matrix.os == 'windows-2022'
run: |
echo "CC=cl.exe" >> $GITHUB_ENV
echo "CXX=cl.exe" >> $GITHUB_ENV
- name: Enable test coverage for resource embedding in C++ when building examples
if: matrix.os == 'ubuntu-22.04'
run: |
echo "SLINT_EMBED_RESOURCES=true" >> $GITHUB_ENV
- name: C++ Build
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: CMakeLists.txt
cmakeAppendedArgs: "-DSLINT_BUILD_TESTING=ON -DSLINT_BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Debug -DSLINT_FEATURE_RENDERER_SKIA=ON -DSLINT_FEATURE_BACKEND_QT=ON -DSLINT_FEATURE_EXPERIMENTAL=ON -DSLINT_FEATURE_TESTING=ON"
buildDirectory: ${{ runner.workspace }}/cppbuild
buildWithCMakeArgs: "--config Debug"
- name: ctest
working-directory: ${{ runner.workspace }}/cppbuild
run: ctest --verbose -C Debug
- name: cpack
working-directory: ${{ runner.workspace }}/cppbuild
run: cmake --build . --config Debug --target package
- name: "Create C++ packages artifact"
uses: actions/upload-artifact@v7
with:
name: cpp_bin-${{ matrix.os }}
path: ${{ runner.workspace }}/cppbuild/Slint-cpp-*
cpp_package_test:
needs: [cpp_cmake]
runs-on: ubuntu-22.04
env:
QT_QPA_PLATFORM: offscreen
CARGO_INCREMENTAL: false
CARGO_PROFILE_DEV_DEBUG: 0
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
force-gcc-10: true
- name: Install Qt (Ubuntu)
uses: jurplel/install-qt-action@v4
with:
version: 6.5.1
cache: true
- uses: actions/download-artifact@v8
with:
name: cpp_bin-ubuntu-22.04
path: cpp-package
- name: unpack package
run: |
mkdir package
tar xvf cpp-package/Slint-cpp-*.tar.gz -C package --strip-components=1
echo "CMAKE_PREFIX_PATH=`pwd`/package" >> $GITHUB_ENV
# Build the examples with a config different than the package (which is debug)
- name: Build examples
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: examples/CMakeLists.txt
cmakeAppendedArgs: "-DCMAKE_BUILD_TYPE=Release -DSLINT_FEATURE_INTERPRETER=1 -DSLINT_FEATURE_BACKEND_QT=1"
buildDirectory: ${{ runner.workspace }}/examples/build
buildWithCMakeArgs: "--config Release"
vsce_build_test:
needs: files-changed
if: needs.files-changed.outputs.vsce == 'true'
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: Swatinem/rust-cache@v2
with:
key: "vsce_1" # increment this to bust the cache if needed
- uses: ./.github/actions/install-linux-dependencies
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Fake slint-lsp build
run: |
mkdir -p target/debug
echo 1 > target/debug/slint-lsp
- name: Run pnpm install
working-directory: editors/vscode
run: pnpm install --frozen-lockfile
- name: vscode prebuild
working-directory: editors/vscode
run: pnpm vscode:prepublish
- name: Build VS Code extension
working-directory: editors/vscode
run: pnpm local-package
- name: Typescript syntax check # has to run after the build as it depends on the wasm
working-directory: editors/vscode
run: pnpm type-check
- name: Check tmGrammar
working-directory: editors/vscode
run: pnpm test_grammar
# test to compile the mcu backend for the arm target (no_std)
mcu:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.examples_mcu == 'true' || needs.files-changed.outputs.api_rs == 'true'
env:
SLINT_FONT_SIZES: 8,11,10,12,13,14,15,16,18,20,22,24,32
RUSTFLAGS: --cfg slint_int_coord -D warnings
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_PROFILE_RELEASE_OPT_LEVEL: s
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- feature: pico-st7789
target: thumbv6m-none-eabi
- feature: pico2-st7789
target: thumbv8m.main-none-eabihf
- feature: pico2-touch-lcd-2-8
target: thumbv8m.main-none-eabihf
- feature: stm32h735g
target: thumbv7em-none-eabihf
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: ${{matrix.target}}
- name: Check
run: cargo check --target=${{matrix.target}} -p printerdemo_mcu --no-default-features --features=mcu-board-support/${{matrix.feature}} --release
# test to compile the mcu backend for the arm target (no_std) using embassy
mcu-embassy:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.examples_mcu == 'true' || needs.files-changed.outputs.api_rs == 'true'
env:
SLINT_FONT_SIZES: 8,11,10,12,13,14,15,16,18,20,22,24,32
RUSTFLAGS: --cfg slint_int_coord -D warnings
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_PROFILE_RELEASE_OPT_LEVEL: s
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: thumbv8m.main-none-eabihf
- name: Check
working-directory: examples/mcu-embassy
run: cargo check --bin ui_mcu --target=thumbv8m.main-none-eabihf --no-default-features --features="mcu-embassy/mcu" --release
# mcu_esp:
# env:
# RUSTFLAGS: -D warnings
# runs-on: ubuntu-22.04
# steps:
# - uses: actions/checkout@v6
# - uses: dtolnay/rust-toolchain@stable
# - uses: esp-rs/xtensa-toolchain@v1.6
# with:
# default: true
# buildtargets: esp32
# ldproxy: false
# # version pinned until new version of esp-hal with https://github.com/esp-rs/esp-hal/pull/2615/
# version: 1.82.0
# - uses: Swatinem/rust-cache@v2
# - name: S3Box
# run: cargo +esp check -p printerdemo_mcu --target xtensa-esp32s3-none-elf --no-default-features --features=mcu-board-support/esp32-s3-box --config examples/mcu-board-support/esp32_s3_box/cargo-config.toml --release
ffi_32bit_build:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_cpp == 'true'
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: armv7-unknown-linux-gnueabihf
- uses: baptiste0928/cargo-install@v3
with:
crate: cross
- name: Check
run: cross check --target=armv7-unknown-linux-gnueabihf -p slint-cpp --no-default-features --features=testing,interpreter,std
docs:
needs: files-changed
if: needs.files-changed.outputs.slint == 'true'
uses: ./.github/workflows/build_docs.yaml
secrets:
READ_WRITE_PRIVATE_KEY: ${{ secrets.READ_WRITE_PRIVATE_KEY }}
with:
release: false
app-id: ${{ vars.READ_WRITE_APP_ID }}
slintpad:
needs: files-changed
if: needs.files-changed.outputs.slintpad == 'true'
uses: ./.github/workflows/wasm_editor_and_interpreter.yaml
wasm_demo:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.examples == 'true' || needs.files-changed.outputs.api_rs == 'true'
uses: ./.github/workflows/wasm_demos.yaml
with:
build_artifacts: false
tree-sitter:
needs: files-changed
if: needs.files-changed.outputs.slint == 'true'
uses: ./.github/workflows/tree_sitter.yaml
with:
latest: false
tag: "v0.26.5"
# Checkout a old version of the tests and example, then run the slint-updater on them
# and check that it worked with the interpreter test.
updater_test:
needs: files-changed
if: needs.files-changed.outputs.updater_test == 'true'
env:
SLINT_NO_QT: 1
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
CARGO_PROFILE_DEV_DEBUG: 0
strategy:
matrix:
from_version: ["0.3.0"]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/setup-rust
- name: Checkout old version
run: |
git checkout v${{ matrix.from_version }} --no-overlay -- examples
git checkout v${{ matrix.from_version }} --no-overlay -- tests/cases
git checkout v${{ matrix.from_version }} --no-overlay -- tests/helper_components
# Remove examples and demos from the workspace because they may no longer exist or their Cargo.toml might prevent the build of the updater
sed -i "/examples/d" Cargo.toml
sed -i "/demos/d" Cargo.toml
- name: "Commit old checkout"
run: |
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git config --global user.name "${GITHUB_ACTOR}"
git commit -a -m "REVERT TESTS TO v${{ matrix.from_version }}"
- name: run the updater
run: |
cargo run -p slint-updater -- -i examples/*/*.slint
cargo run -p slint-updater -- -i examples/*/*/*.slint
cargo run -p slint-updater -- -i tests/cases/*.slint
cargo run -p slint-updater -- -i tests/cases/*/*.slint
- name: Show the diff
run: git diff
- name: test
# Skip a few tests that rely on private renamed properties.
# Skip the tests which makes two way binding to output property (these are warning in previous version)
# Skip the test that use impure functions in property bindings (this is also warning in previous version)
# Skip the example that did not exist or that are broken
# Skip the path layout related tests as the element has been removed
# Skip the booker as it use api from the LineEdit that wasn"t meant to be used
run: |
cargo test -p test-driver-interpreter -- \
--skip test_interpreter_text_cursor_move \
--skip test_interpreter_text_cursor_move_grapheme \
--skip test_interpreter_text_cut \
--skip test_interpreter_text_select_all \
--skip test_interpreter_text_surrogate_cursor \
--skip test_interpreter_text_text_change \
--skip test_interpreter_crashes_layout_deleted_item \
--skip test_interpreter_focus_focus_change_subcompo \
--skip test_interpreter_focus_focus_change_through_signal \
--skip test_interpreter_globals_alias_to_global \
--skip test_interpreter_text_default_color \
--skip test_interpreter_crashes_issue1271_set_in_if \
--skip test_interpreter_models_assign_equal_model \
--skip example_carousel \
--skip example_fancy_demo \
--skip example_dial \
--skip example_fancy_switches \
--skip example_sprite_sheet \
--skip example_grid_model_rows \
--skip example_grid_with_repeated_rows \
--skip example_vector_as_grid \
--skip example_vlayout \
--skip example_flexbox_interactive \
--skip test_interpreter_elements_path_fit \
--skip test_interpreter_layout_path \
--skip test_interpreter_7guis_booker \
# Test that the formater don't introduce slint compilation error
fmt_test:
needs: files-changed
if: needs.files-changed.outputs.slintpad == 'true' || needs.files-changed.outputs.tests == 'true'
env:
SLINT_NO_QT: 1
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
CARGO_PROFILE_DEV_DEBUG: 0
RUSTFLAGS: -D warnings
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/setup-rust
- name: run the formatter
run: |
cargo run -p slint-lsp --no-default-features -- format -i tests/cases/**/*.slint
cargo run -p slint-lsp --no-default-features -- format -i examples/**/*.slint
- name: Show the diff
run: git diff
- name: Run the intepreter test to make sure that the test are passing after format
run: cargo test -p test-driver-interpreter
- name: "Commit changes"
run: |
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git config --global user.name "${GITHUB_ACTOR}"
git commit -a -m "Run slint-lsp format"
- name: Do another pass to check that it is idempotent
run: |
cargo run -p slint-lsp --no-default-features -- format -i tests/cases/**/*.slint
cargo run -p slint-lsp --no-default-features -- format -i examples/**/*.slint
git diff --exit-code
esp-idf-quick:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_cpp == 'true' || needs.files-changed.outputs.examples == 'true'
runs-on: ubuntu-22.04
container: espressif/idf:release-v5.2
steps:
- name: Fix up pydantic regression (https://github.com/espressif/idf-component-manager/issues/97#issuecomment-3380777944)
run: |
. ${IDF_PATH}/export.sh
cd $IDF_PYTHON_ENV_PATH
bin/pip install pydantic==2.11.10
- uses: actions/checkout@v6
- run: apt-get update && apt-get install -y libfontconfig1-dev
- uses: dtolnay/rust-toolchain@stable
- uses: esp-rs/xtensa-toolchain@v1.6
with:
default: true
buildtargets: esp32
ldproxy: false
- uses: Swatinem/rust-cache@v2
- name: Build and Test Printer demo
shell: bash
working-directory: demos/printerdemo_mcu/esp-idf
run: |
. ${IDF_PATH}/export.sh
idf.py build
android:
needs: files-changed
if: needs.files-changed.outputs.internal == 'true' || needs.files-changed.outputs.api_rs == 'true' || needs.files-changed.outputs.examples == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- name: Install Android API level 30
run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-30"
- name: Cache cargo-apk
id: cargo-apk-cache
uses: actions/cache@v5
with:
path: ~/.cargo/bin/cargo-apk
key: cargo-apk-cache
# Only build cargo-apk if not cached
- uses: dtolnay/rust-toolchain@stable
if: steps.cargo-apk-cache.outputs.cache-hit != 'true'
- name: Install cargo-apk
if: steps.cargo-apk-cache.outputs.cache-hit != 'true'
run: cargo install cargo-apk
- uses: ./.github/actions/setup-rust
with:
target: aarch64-linux-android
- name: Build todo demo
run: cargo apk build -p todo --target aarch64-linux-android --lib
- name: Build energy-monitor example
run: cargo apk build -p energy-monitor --target aarch64-linux-android --lib
- name: Build printerdemo example
run: cargo apk build -p printerdemo --target aarch64-linux-android --lib
- name: Build usecases demo
run: cargo apk build -p usecases --target aarch64-linux-android --lib
test-figma-inspector:
needs: files-changed
if: needs.files-changed.outputs.figma_inspector == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
id: node-install
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- name: Run pnpm install
working-directory: tools/figma-inspector
run: pnpm install --frozen-lockfile
- name: Run build
working-directory: tools/figma-inspector
run: pnpm build
- name: Run tests
working-directory: tools/figma-inspector
run: pnpm test
- name: Type Check
working-directory: tools/figma-inspector
run: pnpm type-check
- name: Build zip
working-directory: tools/figma-inspector
run: pnpm zip
- name: Archive zip
uses: actions/upload-artifact@v7
with:
name: figma-plugin
path: tools/figma-inspector/zip
material-components:
needs: files-changed
if: needs.files-changed.outputs.material_components == 'true'
permissions:
contents: read
deployments: write
uses: ./.github/workflows/material.yaml
secrets:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN_2: ${{ secrets.CLOUDFLARE_API_TOKEN_2 }}
CLOUDFLARE_ACCOUNT_ID_2: ${{ secrets.CLOUDFLARE_ACCOUNT_ID_2 }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
servo_example:
needs: files-changed
if: needs.files-changed.outputs.servo_example == 'true'
uses: ./.github/workflows/servo_example.yaml
bevy_examples:
needs: files-changed
if: needs.files-changed.outputs.bevy_examples == 'true'
uses: ./.github/workflows/bevy_examples.yaml
clippy:
needs: files-changed
if: needs.files-changed.outputs.rust_files == 'true'
env:
RUSTFLAGS: -D warnings
CARGO_INCREMENTAL: false
CARGO_PROFILE_DEV_DEBUG: 0
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- name: Install ffmpeg and alsa (Linux)
run: sudo apt-get install clang libavcodec-dev libavformat-dev libavutil-dev libavfilter-dev libavdevice-dev libasound2-dev pkg-config
- name: Install gstreamer and libunwind (Linux)
run: sudo apt-get install libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good
- uses: ./.github/actions/setup-rust
- name: Run Clippy
run: ./scripts/run_clippy.sh
================================================
FILE: .github/workflows/cpp_package.yaml
================================================
# 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
name: Build the C++ binary package
on:
workflow_dispatch:
workflow_call:
inputs:
extra_cmake_flags:
type: string
description: Extra CMake flags to pass to the build.
default: ""
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
# Keep in sync with features in nightly_snapshot.yaml, slint_tool_binary.yaml, api/node/Cargo.toml, and api/python/slint/Cargo.toml
SLINT_BINARY_FEATURES: "-DSLINT_FEATURE_BACKEND_LINUXKMS_NOSEAT=ON -DSLINT_FEATURE_BACKEND_WINIT=ON -DSLINT_FEATURE_RENDERER_FEMTOVG=ON -DSLINT_FEATURE_RENDERER_SKIA=ON -DSLINT_FEATURE_RENDERER_SOFTWARE=ON -DSLINT_FEATURE_LIVE_PREVIEW=ON"
SLINT_MCU_FEATURES: "-DSLINT_FEATURE_FREESTANDING=ON -DSLINT_FEATURE_RENDERER_SOFTWARE=ON"
# env variable used by espup https://github.com/esp-rs/espup?tab=readme-ov-file#github-api
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
cmake_package_desktop:
env:
DYLD_FRAMEWORK_PATH: /Users/runner/work/slint/Qt/6.2.2/clang_64/lib
QT_QPA_PLATFORM: offscreen
CARGO_INCREMENTAL: false
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
include:
- os: ubuntu-22.04
package_suffix: linux
- os: macos-14
package_suffix: macos-aarch64
- os: windows-2022
package_suffix: windows-x86_64
msvc_arch: x64
- os: windows-11-arm
package_suffix: windows-aarch64
msvc_arch: arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- name: Install Qt (Ubuntu)
uses: jurplel/install-qt-action@v4
if: matrix.os == 'ubuntu-22.04'
with:
version: 6.2.2
cache: true
- uses: ./.github/actions/setup-rust
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Prepare licenses
run: bash -x ../../scripts/prepare_binary_package.sh ${{ runner.workspace }}/cppbuild
working-directory: api/cpp/
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.msvc_arch }}
if: runner.os == 'Windows'
- name: Select MSVC (windows)
run: |
echo "CC=cl.exe" >> $GITHUB_ENV
echo "CXX=cl.exe" >> $GITHUB_ENV
if: runner.os == 'Windows'
- name: C++ Build
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: CMakeLists.txt
cmakeAppendedArgs: "-DCMAKE_BUILD_TYPE=RelWithDebInfo ${{ env.SLINT_BINARY_FEATURES }} ${{ inputs.extra_cmake_flags }} -DSLINT_FEATURE_SDF_FONTS=ON"
buildDirectory: ${{ runner.workspace }}/cppbuild
buildWithCMakeArgs: "--config Release"
- name: cpack
working-directory: ${{ runner.workspace }}/cppbuild
run: cmake --build . --config Release --target package
- name: "Upload C++ packages"
uses: actions/upload-artifact@v7
with:
name: cpp_bin-${{ matrix.package_suffix }}
path: ${{ runner.workspace }}/cppbuild/Slint-cpp-*
cmake_package_mcu_arm:
env:
CARGO_INCREMENTAL: false
strategy:
matrix:
target: [thumbv7em-none-eabihf]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.target }}
- name: Install GNU Arm Embedded Toolchain
run: sudo apt-get update && sudo apt-get install gcc-arm-none-eabi
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Prepare licenses
run: bash -x ../../scripts/prepare_binary_package.sh ${{ runner.workspace }}/cppbuild
working-directory: api/cpp/
- name: C++ Build
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: CMakeLists.txt
cmakeAppendedArgs: "-GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DRust_CARGO_TARGET=${{ matrix.target }} -DCMAKE_C_COMPILER=arm-none-eabi-gcc -DCMAKE_CXX_COMPILER=arm-none-eabi-g++ -DCMAKE_AR=arm-none-eabi-ar -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY -DSLINT_COMPILER=download ${{ env.SLINT_MCU_FEATURES }} ${{ inputs.extra_cmake_flags }}"
buildDirectory: ${{ runner.workspace }}/cppbuild
buildWithCMakeArgs: "--config Release"
- name: cpack
working-directory: ${{ runner.workspace }}/cppbuild
run: cpack -G TGZ
- name: "Upload C++ packages"
uses: actions/upload-artifact@v7
with:
name: cpp_mcu_bin-${{ matrix.target }}
path: ${{ runner.workspace }}/cppbuild/Slint-cpp-*
cmake_package_mcu_esp:
env:
CARGO_INCREMENTAL: false
strategy:
matrix:
idf_target: [esp32, esp32s2, esp32s3, esp32p4]
include:
- idf_target: esp32
rust_target: xtensa-esp32-none-elf
- idf_target: esp32s2
rust_target: xtensa-esp32s2-none-elf
- idf_target: esp32s3
rust_target: xtensa-esp32s3-none-elf
- idf_target: esp32p4
rust_target: riscv32imafc-esp-espidf
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- uses: dtolnay/rust-toolchain@stable
- uses: cargo-bins/cargo-binstall@main
- name: install espup
run: |
cargo binstall espup
espup install
rustup default esp
- name: add esp toolchains to PATH
if: runner.os != 'Windows'
run: |
source "$HOME/export-esp.sh"
echo "$PATH" >> "$GITHUB_PATH"
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Prepare licenses
run: bash -x ../../scripts/prepare_binary_package.sh ${{ runner.workspace }}/cppbuild
working-directory: api/cpp/
- name: C++ Build
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: CMakeLists.txt
# NOTE: xtensa-esp-elf-gcc as compiler for the RISC-V targets is wrong, but the compiler argument here is only
# used to ensure that SIZEOF_VOID_P is 4 in the generated cmake config file. Otherwise this build requires no
# C compiler.
cmakeAppendedArgs: "-GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DESP_PLATFORM=1 -DIDF_TARGET=${{ matrix.idf_target }} -DRust_CARGO_TARGET=${{ matrix.rust_target }} -DCMAKE_C_COMPILER=xtensa-esp-elf-gcc -DCMAKE_AR=xtensa-esp-elf-ar -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY -DSLINT_LIBRARY_CARGO_FLAGS='-Zbuild-std=core,alloc' -DSLINT_COMPILER=download ${{ env.SLINT_MCU_FEATURES }} ${{ inputs.extra_cmake_flags }}"
buildDirectory: ${{ runner.workspace }}/cppbuild
buildWithCMakeArgs: "--config Release"
- name: cpack
working-directory: ${{ runner.workspace }}/cppbuild
run: cpack -G TGZ
- name: "Upload C++ packages"
uses: actions/upload-artifact@v7
with:
name: cpp_mcu_bin-${{ matrix.idf_target }}
path: ${{ runner.workspace }}/cppbuild/Slint-cpp-*
cmake_package_arm_linux:
env:
CARGO_INCREMENTAL: false
strategy:
matrix:
gcc_target: [aarch64-linux-gnu, arm-linux-gnueabihf]
include:
- gcc_target: aarch64-linux-gnu
rust_target: aarch64-unknown-linux-gnu
cmake_system_processor: arm64
- gcc_target: arm-linux-gnueabihf
rust_target: armv7-unknown-linux-gnueabihf
cmake_system_processor: armhf
runs-on: ubuntu-22.04
container: ghcr.io/slint-ui/slint/${{ matrix.rust_target }}-cpp
steps:
- uses: actions/checkout@v6
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Prepare licenses
run: bash -x ../../scripts/prepare_binary_package.sh ../../build
working-directory: api/cpp/
- name: CMake configure
run: cmake -B build -S . -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.cmake_system_processor }} -DRust_CARGO_TARGET=${{ matrix.rust_target}} -DCMAKE_C_COMPILER=${{ matrix.gcc_target }}-gcc -DCMAKE_CXX_COMPILER=${{ matrix.gcc_target }}-g++ -DSLINT_COMPILER=download ${{ env.SLINT_BINARY_FEATURES }} ${{ inputs.extra_cmake_flags }}
- name: CMake build
run: cmake --build build --parallel
- name: CMake package
working-directory: build
run: cpack -G TGZ
- name: "Upload C++ packages"
uses: actions/upload-artifact@v7
with:
name: cpp_bin-${{ matrix.rust_target }}
path: build/Slint-cpp-*
cmake_slint_compiler:
env:
CARGO_INCREMENTAL: false
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
include:
- os: ubuntu-22.04
package_suffix: Linux-x86_64
cargo_target: x86_64-unknown-linux-gnu
- os: ubuntu-22.04-arm
package_suffix: Linux-aarch64
cargo_target: aarch64-unknown-linux-gnu
- os: macos-14
package_suffix: Darwin-arm64
cargo_target: aarch64-apple-darwin
- os: windows-2022
package_suffix: Windows-AMD64
msvc_arch: x64
cargo_target: x86_64-pc-windows-msvc
- os: windows-11-arm
package_suffix: Windows-ARM64
msvc_arch: arm64
cargo_target: aarch64-pc-windows-msvc
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- uses: ./.github/actions/setup-rust
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.msvc_arch }}
if: runner.os == 'Windows'
- name: Select MSVC (windows)
run: |
echo "CC=cl.exe" >> $GITHUB_ENV
echo "CXX=cl.exe" >> $GITHUB_ENV
if: runner.os == 'Windows'
# Build Slint-compiler with CMake so that CMakeLists.txt can configure C++ specific features
- name: Slint Compiler Build
uses: lukka/run-cmake@v3.4
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
cmakeListsTxtPath: CMakeLists.txt
cmakeAppendedArgs: "-GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSLINT_BUILD_RUNTIME=OFF ${{ inputs.extra_cmake_flags }} -DSLINT_FEATURE_SDF_FONTS=ON -DRust_CARGO_TARGET=${{ matrix.cargo_target }}"
buildDirectory: ${{ runner.workspace }}/cppbuild
buildWithCMakeArgs: "--config Release"
- name: cpack
working-directory: ${{ runner.workspace }}/cppbuild
run: cpack -G TGZ
- name: Extract Slint Compiler binary
working-directory: ${{ runner.workspace }}/cppbuild
shell: bash
run: cmake -E tar xvf Slint-cpp-*.tar.gz
- name: Repackage
working-directory: ${{ runner.workspace }}/cppbuild
shell: bash
run: |
cd Slint-cpp-*/bin
cmake -E tar czf ../../slint-compiler-${{ matrix.package_suffix }}.tar.gz slint-compiler*
- name: "Upload Slint compiler package"
uses: actions/upload-artifact@v7
with:
name: slint-compiler-bin-${{ matrix.package_suffix }}
path: ${{ runner.workspace }}/cppbuild/slint-compiler-*.tar.gz
================================================
FILE: .github/workflows/crater.yaml
================================================
# 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
# This workflow checks out and build a bunch of crates that uses Slint,
# with the current branch
name: Crater
on:
workflow_dispatch:
jobs:
crater:
env:
SLINT_NO_QT: 1
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
strategy:
fail-fast: false
matrix:
git_url:
# from madewithslint
- "https://github.com/slint-ui/cargo-ui"
- "https://github.com/GaspardCulis/slint-tetris"
#- "https://github.com/dngulin/gpcl" # depends on the winit backend
- "https://codeberg.org/flovansl/co_sl"
- "https://seed.radicle.garden/z3oxAZSLcyXgpa7fcvgtueF49jHpH.git" #vivi
#- "https://github.com/ElevenJune/mastermind_Rust" # Not upgraded to Slint 1.0
#- "https://github.com/Project-Trains/launcher" # Not upgraded to Slint 1.0
- "https://github.com/bjorn/raccoin"
- "https://gitlab.com/floers/ordinary" # Has `zip="*"` in its Cargo.toml
- "https://github.com/parchlinux/parch-welcome/"
#- "https://github.com/boclair/fractal-explorer" # RE-ENABLE WHEN https://github.com/arturoc/color-rs/pull/2 is released
- "https://github.com/arunpkio/tymoz"
- "https://github.com/Surrealism-All/surrealism-ui-template"
- https://github.com/raykavin/market-prices-rust
- https://github.com/pezfisk/OxideManager
- https://github.com/m4rz3r0/foruster
# from crates.io
- "https://codeberg.org/drendog/frametrix"
- "https://github.com/hzqd/mycalc"
- "https://github.com/zilongyang/rust_slint_todos"
- "https://github.com/gavinshox/chess-oxide"
- "https://github.com/Obscurely/falion"
#- "https://github.com/abhay-n-j/warp-gui-app" (wrong edition in Cargo.toml)
- "https://github.com/dimas-fw/dimas"
- "https://github.com/vova-max-png/slintcalc"
- "https://github.com/moistpyro/land-calc"
- "https://github.com/clay-6/baze64"
- "https://github.com/Siiir/k_means-interactive/"
- "https://codeberg.org/waydeer/layer-shika"
- "https://github.com/limitcool/xm"
#- "https://github.com/vexide/vexide-slint" # vexide somehow enable the error_in_core feature of snafu
- "https://github.com/ChenhuiZhang/envsensor-demo"
- "https://github.com/arunkumar-mourougappane/gjallarhorn-rs"
- "https://github.com/3axap4ehko/litra"
- "https://github.com/rezabani/modern-minesweeper"
- "https://github.com/guimath/phog"
- "https://github.com/mcbridejc/slint-evdev-input"
- "https://github.com/heathcliff26/turbo-clicker"
- "https://github.com/Decodetalkers/launchre"
- "https://github.com/Decodetalkers/haruhishot"
- "https://github.com/smalltext/trace-slint/"
# - "https://github.com/danrauch/thermocam" # error: failed to run custom build command for `v4l2-sys-mit v0.2.0`
- "https://github.com/saturn77/magnet"
# - "https://github.com/zzq0097/mmm_rs" # could not compile `netease-cloud-music-api` (lib)
- "https://github.com/CMahaff/lasim" # many stars
#- "https://github.com/spades9/image-tools" # compile error
- "https://github.com/studylessshape/calculator-by-rs"
- "https://github.com/gleb-skobinsky/system-metrics"
- "https://github.com/AccAutomaton/ECJTU-CAN-Helper"
- "https://github.com/Vadoola/pv-unlocker"
#- "https://github.com/zzoe/liando" # compile error in zstd-safe https://github.com/gyscos/zstd-rs/issues/270
- "https://github.com/Knowit-Objectnet/infoskjerm-trondheim"
- "https://github.com/CaleGlisson/Zelda_pattern_rust"
- "https://codeberg.org/dweiss96/rf2_league_mod_tool"
- "https://github.com/Badless/slint-editor"
- "https://github.com/IvanB101/hamming-huffman"
- "https://github.com/izuku0550/Custom-Note-Builder"
- "https://github.com/mrquantumoff/quadrant_lite"
- "https://github.com/jpnurmi/jpos-weather"
#- "https://github.com/osp-project/RizPackageTools" 404
- "https://github.com/xenein/CountMeDown-rs"
- "https://github.com/JeremiasMeister/rust-heightmap-generator"
- "https://github.com/joaofl/any-serve"
- "https://github.com/Heng30/rssbox"
- "https://github.com/Heng30/rssbox-android"
- "https://github.com/Heng30/uibox"
#- "https://github.com/Heng30/bitbox" #pinned slint-build version
#- "https://github.com/Heng30/solana-wallet-sollet" # error in dependency (pyth-sdk-solana)
- "https://github.com/nzhenev/vtbox"
#- "https://github.com/hambooooo/hamboo-rs" #uses nightly rust
# - "https://github.com/hambooooo/hamboo-embassy" #uses nightly rust
#- "https://github.com/Kllngii/Wetterstation" # can't check submodules
- "https://github.com/tredeneo/simple-inventary-management" #uses sqlx that needs database access
# - "https://github.com/xcodes2cn/Xviewer" #copies slint
- "https://github.com/olishmollie/radix"
- "https://github.com/zivit/watchlist"
- "https://github.com/FelgoSDK/RustyWeather"
- "https://github.com/ThilinaTLM/docker_ui"
- "https://github.com/PlanetTeamSpeakk/Thermostat"
- "https://github.com/develcooking/Reelix"
- "https://github.com/Albino-Client/AlbinoLauncher"
- "https://github.com/radev1924/profit-first-income-calculator-desktop"
- "https://github.com/JarrodDoyle/slint-fmeditor"
- "https://github.com/planet0104/slint-noframe-window"
#- "https://github.com/Dusk-Labs/kira" uses private API
# - "https://github.com/TuEmb/can-viewer" # depends on a deleted repo
# - "https://github.com/qhua948/anubis" # uses nightly rust
- "https://github.com/Surrealism-All/slimk"
- "https://github.com/BounceU/car_thang"
- "https://github.com/sloganking/codevis-gui"
- "https://github.com/CzNorbi/tic_tac_toe_ui"
- "https://github.com/remy2019/smtbr_gui"
- "https://github.com/mrandal/PDFer"
- "https://github.com/dhasoft-rs/7Seg-Slint-Widget"
# - "https://github.com/DraKraft/ozon-rs" # Error: the trait `ToSql` is not implemented for `usize`
# - "https://github.com/SUP2Ak/Lur-Slint" # repo gone?
# - "https://github.com/foxboxpdx/melonstt" # repo gone?
- "https://github.com/sanyexieai/me_chat"
#- "https://github.com/oreo3494/rockpaper.git" # error because of `rand`
- "https://github.com/padangpanda/password-generator-desktop"
- "https://github.com/RealAdarsh/slint-guess-game"
- "https://github.com/DASPRiD/vrc-osc-manager"
- "https://github.com/beac0n/ruroco"
- "https://github.com/SergioRibera/Simplemoji"
- "https://github.com/Ashintosh/NoPass"
# - "https://github.com/Gremious/stickerbox" depends on unstable-wgpu-24
- "https://github.com/aenriii/rimgv"
- "https://github.com/Brayan-724/amosd"
- "https://github.com/kevinquillen/sysinfo"
- "https://github.com/home-cooked-firmware/hcui"
- "https://github.com/EinsPhoenix/MineSweeper-Rust"
- "https://github.com/themkoi/Cosmic-Wanderer"
- "https://github.com/xcrong/slint_data_processer"
- "https://github.com/Newlifer/peditor"
- "https://github.com/spineda2019/tRust"
- "https://github.com/franckKyete/tools-desktop"
- "https://github.com/zys60233/secret-box"
- "https://github.com/xjy12345654/css_parser"
- "https://github.com/zuyzz/app_flock"
#- "https://github.com/interstellarfrog/OG3-Pack-Updater" #zip2.6 is yanked
- "https://github.com/balicz3k/FileGuard"
- "https://github.com/ravioni-encoder/ravioni"
- "https://github.com/konmenel/tzimpouki"
- "https://github.com/TAlgorhythmic/dystellar-launcher-rs"
- "https://github.com/trappitsch/calculon"
- "https://github.com/Jaysmito101/slint-nav"
- "https://github.com/mq1/TinyWiiBackupManager"
- "https://github.com/jacquetc/qleany"
- https://github.com/taichi765/Tsukuyomi
- https://github.com/Cheikh-Nakamoto/Generateur-d-architecture-
- https://github.com/Spencer-0003/aletheia
- https://github.com/engels74/EasyHDR
- https://github.com/reedrosenbluth/oscen
- https://github.com/futo-org/fcast
- https://github.com/BiliRumble/Cloubit
# Missing images
# - "https://github.com/rurishigeo/Probe-Downloader"
# - "https://github.com/Tricked-dev/stardew-mod-manager"
# - "https://github.com/Erik7354/slint_minesweeper"
# - "https://github.com/guimath/GeoQuiz"
# Use our private API (eg: backend winit)
# - "https://github.com/Davide255/LVIE"
# - "https://github.com/Vadoola/Tomotroid"
# - "https://github.com/Horbin-Magician/rotor-rs"
# - "https://github.com/ilmai/plugin-things"
# - "https://github.com/Hoverth/keyboardthing"
# - "https://codeberg.org/moire/moire" # Broken because of other dependencies.
# Needs extra dependencies
# - "https://github.com/nununoisy/gb-presenter-rs"
# - "https://github.com/nununoisy/nsf-presenter-rs"
# - "https://github.com/bombless/slint-tree"
# "https://github.com/AaronGulman/Rusty-CryptoMonitor" (lua54)
#- "https://github.com/link9c/media_backup" #(windows only (failed to resolve: use of undeclared crate or module `winres`))
#- "https://github.com/Vadoola/ignition_npp_tools" #windows only
#- "https://github.com/zloisupport/vanctrl" #windows only
#- "https://github.com/GRX005/McModManager-rs"
#- "https://github.com/un4ckn0wl3z/title-randomizer-rs"
# Not updated to Slint 1.0
#- "https://github.com/jannes/han-cihui"
#- "https://github.com/leofidus/ntfs-explorer"
#- "https://github.com/gsuyemoto/rust-bombfield"
#- "https://github.com/kizeevov/l5"
#- "https://github.com/SergioGasquez/espup-slint"
sub_path: ["."]
os: ["ubuntu-24.04"]
include:
- git_url: "https://github.com/jturcotte/chiptrack"
sub_path: "."
extra_packages: libasound2-dev libfreetype-dev libfontconfig-dev
- git_url: "https://github.com/Futsch1/image-sieve"
sub_path: "."
extra_packages: libgtk-3-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev llvm libheif-dev
- git_url: "https://github.com/griccardos/rusl"
sub_path: "slint"
#- git_url: "https://github.com/DanielMadmon/tasker" # needs "themis dep"
# sub_path: "bin/tasker_gui"
# - git_url: "https://github.com/Kllngii/Wetterstation" # can't check submodules
# sub_path: "wetterstation-ui"
- git_url: "https://github.com/plule/theremotion"
sub_path: "theremotion-ui"
- git_url: "https://github.com/matthiasbeyer/deskodon"
sub_path: "frontend"
- git_url: "https://github.com/malwaredb/malwaredb-rs"
extra_args: "--features=admin,admin-gui"
sub_path: "."
#- git_url: "https://github.com/Martoni/QRNote" # Pins slint version
# sub_path: "qr-note"
#- git_url: "https://github.com/planet0104/satellite_wallpaper"
# sub_path: "."
# os: windows-latest
#- git_url: "https://github.com/colelawrence/here-now" # Compile error
# sub_path: "hn-desktop-ui"
- git_url: "https://github.com/MunyaradziMagura/Pomodoro"
sub_path: "pomodoro"
- git_url: "https://github.com/flukejones/asusctl"
sub_path: "rog-control-center"
#- git_url: "https://github.com/ellenhp/openlmr" #doesn't compile
# sub_path: "openlmr-core"
#- git_url: "https://github.com/jenkinsmichpa/coconut_crab"
# sub_path: "coconut_crab_client"
# os: windows-latest
- git_url: "https://github.com/ivabus/lonelyradio"
sub_path: "monoclient-s"
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/ahqsoftwares/tauri-ahq-store"
sub_path: "src-setup"
- git_url: "https://github.com/qarmin/czkawka"
sub_path: krokiet
- git_url: "https://github.com/Vjze/Rust_demo" # this is using SurrealismUI
sub_path: Rust_Slint
#- git_url: "https://github.com/LeeeSe/MessAuto"
# os: macos-latest
# sub_path: "."
- git_url: "https://github.com/planet0104/USB-Screen/"
extra_args: "--no-default-features --features=editor"
sub_path: "."
- git_url: "https://github.com/newfla/daily-strip"
sub_path: "."
extra_args: "--no-default-features --features=slint_frontend"
- git_url: "https://github.com/niqt/matrust/"
sub_path: "."
- git_url: "https://github.com/obhq/obliteration"
sub_path: "gui"
- git_url: "https://github.com/jaymedavis/romboy"
sub_path: "romboy"
#- git_url: "https://github.com/somantics/retrodungeon" # compile error
# sub_path: "."
# extra_args: "--features=femtovg"
#- git_url: "https://github.com/jonfast565/runinator" # compile error (Used `MainWindow instead of `App` in rust)
# sub_path: "command-center"
# - git_url: "https://github.com/stars-labs/mpc-wallet" # uses properties that don't exist (AI hallucinations?)
# sub_path: "apps/native-node"
- git_url: "https://github.com/larus-breeze/sw_frontend_rs"
sub_path: "device/sim"
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
# - git_url: "https://github.com/gramistella/cornerstone" # depends indirectly on old versions of crates (deno_ast/swc) that do not compile
# sub_path: "frontend_slint"
- git_url: "https://github.com/dilo145/password_generator"
sub_path: "password_generator_gui"
- git_url: "https://github.com/DiD92/map-generator"
sub_path: "generator-ui"
- git_url: "https://github.com/Szybet/snake-slint"
sub_path: "snake_bin_std"
- git_url: "https://github.com/Heng30/flymoon"
sub_path: "flymoon"
- git_url: "https://github.com/gopher64/gopher64"
sub_path: "."
extra_packages: libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libfribidi-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev
- git_url: "https://github.com/PonasKovas/salix"
sub_path: "client-gui"
- git_url: "https://github.com/chrishengler/terraingen"
sub_path: "gui-slint"
- git_url: "https://github.com/Vinegret43/dispute"
sub_path: "."
extra_packages: libdbus-1-dev alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev
- git_url: "https://github.com/Heng30/chatbox"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libjack-jackd2-dev
- git_url: "https://github.com/Risuleia/Tranquilo"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libjack-jackd2-dev
- git_url: "https://github.com/R3alCl0ud/Rust4Diva"
sub_path: "."
extra_packages: libarchive-dev
- git_url: "https://github.com/Enn3Developer/n_music"
extra_packages: libasound2-dev libfontconfig-dev libfreetype-dev
sub_path: "n_player"
- git_url: "https://github.com/BiliRumble/Cloubit"
sub_path: "."
extra_packages: build-essential perl nasm libasound2-dev pkg-config
- git_url: "https://github.com/TsaoLun/always-blue"
sub_path: "."
extra_packages: libasound2-dev libfreetype-dev libfontconfig-dev
- git_url: "https://github.com/jturcotte/beskope"
sub_path: "."
extra_packages: libasound2-dev libfreetype-dev libfontconfig-dev libpipewire-0.3-dev
- git_url: "https://github.com/sloganking/quick-assistant"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/laycookie/record"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/Danila-Bain/wav-wav"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/mackler/Lodge-Musician"
sub_path: "."
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/game-exchange-token/gxt"
sub_path: "gxt-cli"
extra_args: "--features=ui"
- git_url: "https://github.com/paulusminus/lipl-display"
sub_path: "crates/lipl-display-slint"
- git_url: "https://github.com/vimyoung/spell"
sub_path: "spell-framework"
- git_url: "https://github.com/Farmadupe/vid_dup_finder_lib"
sub_path: vid_dup_finder_app
- git_url: "https://github.com/simmsb/inkview-rs"
sub_path: inkview-slint
- git_url: "https://codeberg.org/psylink/psylink"
- git_url: "https://github.com/shuntia/bestest"
extra_args: "--features=gui"
- git_url: https://github.com/Konstantin-Dudersky/rsiot
extra_args: "--features=cmp_slint"
- git_url: https://github.com/Szybet/snake-slint/
sub_path: "snake_bin_std"
- git_url: https://github.com/maplibre/maplibre-native-slint
sub_path: rust
- git_url: https://github.com/AgustinSRG/PersonalMediaVault
sub_path: launcher-gui
- git_url: https://github.com/MERCorg/merc
sub_path: tools/gui
- git_url: https://github.com/guycorbaz/rbibli
sub_path: frontend
- git_url: https://github.com/tadghh/transparent-windows
extra_args: "--features=tray-item/ksni"
- git_url: "https://codeberg.org/vivi-ui/lili"
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/bandipapa/rsaber"
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: "https://github.com/heng30/wayshot"
extra_packages: alsa-utils libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libasound2-dev
- git_url: https://github.com/heng30/tasklog
sub_path: tasklog
extra_args: "--features=desktop"
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
if: runner.os == 'Linux'
with:
extra-packages: libpango1.0-dev libgtk-3-dev libatk1.0-dev libjack-jackd2-dev autoconf libxcb-xrm0 libxcb-xrm-dev automake libxcb-keysyms1-dev libxcb-util0-dev libxcb-icccm4-dev libyajl-dev libstartup-notification0-dev libxcb-randr0-dev libev-dev libxcb-cursor-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libudev-dev clang pkg-config nasm libsoup2.4-dev libfuse3-dev libx11-xcb-dev ${{ matrix.extra_packages }}
# Don't use the cache because we don't run this job often, and it would cache the .cargo/config.toml with extra keys
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: setup patch
run: |
echo "" >> ~/.cargo/config.toml
echo [patch.crates-io] >> ~/.cargo/config.toml
echo slint = { path = \"$GITHUB_WORKSPACE/api/rs/slint\" } >> ~/.cargo/config.toml
echo slint-build = { path = \"$GITHUB_WORKSPACE/api/rs/build\" } >> ~/.cargo/config.toml
echo slint-interpreter = { path = \"$GITHUB_WORKSPACE/internal/interpreter\" } >> ~/.cargo/config.toml
echo i-slint-backend-winit = { path = \"$GITHUB_WORKSPACE/internal/backends/winit\" } >> ~/.cargo/config.toml
echo i-slint-core = { path = \"$GITHUB_WORKSPACE/internal/core\" } >> ~/.cargo/config.toml
- name: Checkout the repo
run: |
cd $HOME
git clone ${{ matrix.git_url }} the_repo --depth 1
cd the_repo
git submodule update --init --recursive
- name: build
run: |
cd $HOME/the_repo
rm -r rust-toolchain.toml .cargo/config.toml || true
cd ./${{ matrix.sub_path }}
sed -i "s/{{project-name}}/the-project/" Cargo.toml
cargo update
cargo check ${{ matrix.extra_args }}
# Slint only: how can we test them?
# https://github.com/Surrealism-All/SurrealismUI
# https://github.com/8yteDance/SlintSubMenu
# C++
# https://github.com/LeVietXuanKG/TodoApp_Slint
# https://github.com/NatnaelTaddese/slint_cpp_bilinear_interpolation
# https://github.com/vudinhkhoa0/DEMO_DOAN_CTDL-GT
# https://github.com/progzone122/micropad
================================================
FILE: .github/workflows/embedded_build.yaml
================================================
# 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
name: Embedded Build
on:
workflow_dispatch:
schedule:
- cron: "0 1 * * *"
jobs:
build_containers:
runs-on: ubuntu-22.04
strategy:
matrix:
target:
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
- riscv64gc-unknown-linux-gnu
- x86_64-unknown-linux-gnu
env:
SLINT_NO_QT: 1
SLINT_STYLE: fluent
steps:
- uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.CR_PAT }}
- name: Build and push
uses: docker/build-push-action@v7
with:
context: .
file: ./docker/Dockerfile.${{ matrix.target }}
push: true
tags: ghcr.io/slint-ui/slint/${{matrix.target}}:latest
- name: Build and push C++ image
uses: docker/build-push-action@v7
with:
context: .
file: ./docker/Dockerfile.cpp-image
push: true
tags: ghcr.io/slint-ui/slint/${{matrix.target}}-cpp:latest
build-args: |
arch=${{matrix.target}}
build_demos:
needs: [build_containers]
runs-on: ubuntu-22.04
strategy:
matrix:
target:
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
- x86_64-unknown-linux-gnu
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.target }}
- name: Enable Skia build
if: matrix.target != 'riscv64gc-unknown-linux-gnu'
run: |
echo "EXTRA_ARGS=--features slint/renderer-skia" >> $GITHUB_ENV
- uses: baptiste0928/cargo-install@v3
with:
crate: cross
- name: Build
run: cross build --release --target=${{ matrix.target }} ${{ env.EXTRA_ARGS }} --features slint/backend-linuxkms-noseat,slint/renderer-skia -p energy-monitor -p printerdemo -p todo -p slint-viewer -p gallery -p home-automation
- name: "Upload demo artifacts"
uses: actions/upload-artifact@v7
with:
name: slint-embedded-demos-${{ matrix.target }}
path: |
target/${{ matrix.target }}/release/printerdemo
target/${{ matrix.target }}/release/todo
target/${{ matrix.target }}/release/gallery
target/${{ matrix.target }}/release/viewer
target/${{ matrix.target }}/release/energy-monitor
target/${{ matrix.target }}/release/home-automation
================================================
FILE: .github/workflows/issue_triage.yaml
================================================
# 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
name: Auto-triage on Comment
on:
issue_comment:
types: [created]
permissions:
issues: write
pull-requests: write
jobs:
update_labels:
runs-on: ubuntu-latest
steps:
- name: Check whether we should update the tags
id: check
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
has_needs_info=$(echo '${{ toJson(github.event.issue.labels.*.name) }}' | jq 'contains(["needs info"])')
is_author="${{ github.event.comment.user.login == github.event.issue.user.login }}"
echo "has_needs_info=$has_needs_info" >> $GITHUB_OUTPUT
echo "is_author=$is_author" >> $GITHUB_OUTPUT
- name: Update labels
if: steps.check.outputs.has_needs_info == 'true' && steps.check.outputs.is_author == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api --method DELETE -H "Accept: application/vnd.github+json" /repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels/needs%20info
gh api --method POST -H "Accept: application/vnd.github+json" /repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels -f labels[]='need triaging'
================================================
FILE: .github/workflows/material.yaml
================================================
# 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
name: Material - Build, test and publish
on:
workflow_dispatch:
inputs:
deploy_production:
type: boolean
description: "Deploy to material.slint.dev \n Only tick this box if you want to deploy the current state of the master branch to material.slint.dev."
default: false
required: false
workflow_call:
secrets:
CLOUDFLARE_API_TOKEN:
required: true
CLOUDFLARE_API_TOKEN_2:
required: true
CLOUDFLARE_ACCOUNT_ID:
required: true
CLOUDFLARE_ACCOUNT_ID_2:
required: true
ANDROID_KEYSTORE_PASSWORD:
required: true
ANDROID_KEYSTORE_BASE64:
required: true
permissions:
contents: read
env:
MATERIAL_ZIP_VERSION: "1.0.1"
jobs:
material_wasm_demo:
uses: ./.github/workflows/material_wasm_gallery.yaml
material_apk_demo:
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
uses: ./.github/workflows/material_gallery.yaml
secrets:
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
material_tests:
env:
CARGO_PROFILE_RELEASE_OPT_LEVEL: s
CARGO_INCREMENTAL: false
runs-on: ubuntu-latest
defaults:
run:
working-directory: ui-libraries/material
steps:
- uses: actions/checkout@v6
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig-dev
shell: bash
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
key: tests
- name: Build & run tests
run: cargo test -p material-gallery
deploy:
runs-on: ubuntu-latest
needs: [material_wasm_demo, material_apk_demo]
permissions:
contents: read
deployments: write
name: Deploy to Cloudflare Pages
defaults:
run:
working-directory: ui-libraries/material/docs
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig-dev
shell: bash
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
- name: Take screenshots
run: cargo run -p slint-docsnapper -- -Lmaterial=$PWD/src/material.slint docs
working-directory: ui-libraries/material
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- uses: actions/download-artifact@v8
with:
name: material_wasm_gallery
path: ui-libraries/material/docs/dist/wasm
- uses: actions/download-artifact@v8
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
with:
name: material_gallery
path: ui-libraries/material/docs/dist/apk
- name: Normalize APK names
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
working-directory: ui-libraries/material
run: |
if [ -f docs/dist/apk/material-gallery.apk ]; then mv docs/dist/apk/material-gallery.apk docs/dist/apk/slint_material.apk; fi
if [ -f docs/dist/apk/material-gallery.aab ]; then mv docs/dist/apk/material-gallery.aab docs/dist/apk/slint_material.aab; fi
- name: Zip material library
working-directory: ui-libraries/material
run: |
cp -a src material-${MATERIAL_ZIP_VERSION}
mkdir -p docs/dist/zip
curl -fsSL -o docs/dist/zip/material-1.0.zip https://releases.slint.dev/material-1.0/material-1.0.zip
zip -r docs/dist/zip/material-${MATERIAL_ZIP_VERSION}.zip material-${MATERIAL_ZIP_VERSION}
rm -rf material-${MATERIAL_ZIP_VERSION}
- name: Deploy to materialui (Pages)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_production == 'true'
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy dist --project-name=materialui --branch=master
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
packageManager: pnpm
workingDirectory: ui-libraries/material/docs
- name: Deploy to material-staging (Workers production)
if: (github.event_name != 'workflow_dispatch' || github.event.inputs.deploy_production != 'true') && github.ref == 'refs/heads/master'
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_2 }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID_2 }}
command: deploy
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
packageManager: pnpm
workingDirectory: ui-libraries/material/docs
- name: Deploy preview to material-staging (Workers)
id: preview
if: (github.event_name != 'workflow_dispatch' || github.event.inputs.deploy_production != 'true') && github.ref != 'refs/heads/master'
run: |
OUTPUT=$(pnpm dlx wrangler@3 versions upload 2>&1)
echo "$OUTPUT"
PREVIEW_URL=$(echo "$OUTPUT" | grep -oE 'https://[^[:space:]]+\.workers\.dev' | head -1)
echo "url=$PREVIEW_URL" >> $GITHUB_OUTPUT
working-directory: ui-libraries/material/docs
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN_2 }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID_2 }}
- name: Create GitHub deployment for PR
if: steps.preview.outputs.url != '' && github.event_name == 'pull_request'
uses: actions/github-script@v8
env:
PREVIEW_URL: ${{ steps.preview.outputs.url }}
with:
script: |
const ref = context.payload.pull_request.head.sha;
const deployment = await github.rest.repos.createDeployment({
owner: context.repo.owner,
repo: context.repo.repo,
ref,
environment: 'preview',
auto_merge: false,
required_contexts: []
});
if (deployment.data.id) {
await github.rest.repos.createDeploymentStatus({
owner: context.repo.owner,
repo: context.repo.repo,
deployment_id: deployment.data.id,
state: 'success',
environment_url: process.env.PREVIEW_URL,
log_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`
});
}
================================================
FILE: .github/workflows/material_gallery.yaml
================================================
# 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
name: Build an APK and AAB for the gallery example
on:
workflow_dispatch:
workflow_call:
secrets:
ANDROID_KEYSTORE_PASSWORD:
required: true
ANDROID_KEYSTORE_BASE64:
required: true
jobs:
material_gallery_android:
env:
CARGO_PROFILE_RELEASE_OPT_LEVEL: s
CARGO_INCREMENTAL: false
CARGO_APK_RELEASE_KEYSTORE: /home/runner/.android/release.keystore
CARGO_APK_RELEASE_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
runs-on: ubuntu-latest
defaults:
run:
working-directory: ui-libraries/material
steps:
- uses: actions/checkout@v6
# 1. Check Artifact Caches
- name: Cache apk build
id: cache-apk
uses: actions/cache@v5
with:
path: |
target/x/release/android/material-gallery.apk
key: apk-build-${{ hashFiles('ui-libraries/material/examples/gallery/**', 'ui-libraries/material/ui/**', 'ui-libraries/material/Cargo.toml', 'ui-libraries/material/material.slint') }}
- name: Cache aab build
id: cache-aab
uses: actions/cache@v5
with:
path: |
target/x/release/android/material-gallery.aab
key: aab-build-${{ hashFiles('ui-libraries/material/examples/gallery/**', 'ui-libraries/material/ui/**', 'ui-libraries/material/Cargo.toml', 'ui-libraries/material/material.slint') }}
# 2. Install Dependencies (Run only if artifacts are missing)
- uses: ./.github/actions/install-linux-dependencies
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
- name: Install Rust
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
uses: dtolnay/rust-toolchain@stable
with:
target: aarch64-linux-android
- name: Install Android API level 30
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-30"
# 3. Setup Environment (Run only if artifacts are missing)
- name: Add NDK LLVM to PATH
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
run: echo "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
- name: Dump keystore
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
run: |
mkdir -p /home/runner/.android
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > $CARGO_APK_RELEASE_KEYSTORE
# 4. Tool Caching & Installation
- name: Cache xbuild
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
id: xbuild-cache
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/x
~/.cargo/bin/xbuild
key: xbuild-cache-v2
- uses: Swatinem/rust-cache@v2
if: steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true'
with:
key: android-build
- name: Install xbuild
if: (steps.cache-apk.outputs.cache-hit != 'true' || steps.cache-aab.outputs.cache-hit != 'true') && steps.xbuild-cache.outputs.cache-hit != 'true'
run: cargo install --git https://github.com/burhankhanzada/xbuild --rev 5eb203e9e0718bd992632b803d59bed80ae0bdc0 xbuild
# 5. Build
- name: Build apk
if: steps.cache-apk.outputs.cache-hit != 'true'
working-directory: ui-libraries/material/examples/gallery
run: x build --platform android --arch arm64 --release --format 'apk'
- name: Build aab
if: steps.cache-aab.outputs.cache-hit != 'true'
working-directory: ui-libraries/material/examples/gallery
run: x build --platform android --arch arm64 --release --format 'aab'
- name: Verify aab
if: steps.cache-aab.outputs.cache-hit != 'true'
working-directory: ui-libraries/material/examples/gallery
run: |
wget https://github.com/google/bundletool/releases/download/1.18.3/bundletool-all-1.18.3.jar
java -jar bundletool-all-1.18.3.jar validate --bundle $GITHUB_WORKSPACE/target/x/release/android/material-gallery.aab
# 6. Upload
- name: "Upload Artifacts"
uses: actions/upload-artifact@v7
with:
name: material_gallery
path: |
target/x/release/android/material-gallery.apk
target/x/release/android/material-gallery.aab
================================================
FILE: .github/workflows/material_wasm_gallery.yaml
================================================
# 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
name: Build a WASM version of the gallery example
on:
workflow_dispatch:
workflow_call:
jobs:
material_wasm_build:
env:
CARGO_PROFILE_RELEASE_OPT_LEVEL: s
CARGO_INCREMENTAL: false
runs-on: ubuntu-latest
defaults:
run:
working-directory: ui-libraries/material
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- name: Cache WASM build
id: cache-wasm
uses: actions/cache@v5
with:
path: |
ui-libraries/material/examples/gallery/pkg
ui-libraries/material/examples/gallery/index.html
ui-libraries/material/examples/gallery/frame-tablet.webp
key: wasm-build-${{ hashFiles('ui-libraries/material/examples/gallery/**', 'ui-libraries/material/ui/**', 'ui-libraries/material/Cargo.toml', 'ui-libraries/material/material.slint') }}
- name: Install Rust
if: steps.cache-wasm.outputs.cache-hit != 'true'
uses: dtolnay/rust-toolchain@stable
with:
target: wasm32-unknown-unknown
- name: Install wasm-pack
if: steps.cache-wasm.outputs.cache-hit != 'true'
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- uses: Swatinem/rust-cache@v2
if: steps.cache-wasm.outputs.cache-hit != 'true'
with:
key: wasm-build
- name: Build
if: steps.cache-wasm.outputs.cache-hit != 'true'
working-directory: ui-libraries/material/examples/gallery
run: wasm-pack build --target web
- name: "Upload Artifacts"
uses: actions/upload-artifact@v7
with:
name: material_wasm_gallery
path: |
ui-libraries/material/examples/gallery/index.html
ui-libraries/material/examples/gallery/frame-tablet.webp
ui-libraries/material/examples/gallery/pkg
================================================
FILE: .github/workflows/nightly_snapshot.yaml
================================================
# 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
# Build various demo binaries, c++ packages and documentation and publish them on the website
name: Nightly snapshot
on:
workflow_dispatch:
inputs:
private:
type: boolean
default: true
required: false
description: "Private build? True means artifacts are only built. False means the artefacts are published (docs, vscode extension) to the web/marketplace"
release:
type: boolean
default: false
required: false
description: "Release? Enable options for building binaries for a release (i.e. don't have a -nightly suffix for the extension)"
env:
# Keep in sync with features in slint_tool_binary.yaml, cpp_package.yaml, api/node/Cargo.toml, and api/python/slint/Cargo.toml
SLINT_BINARY_FEATURES: "backend-linuxkms-noseat,backend-winit,renderer-femtovg,renderer-skia,renderer-software"
MACOSX_DEPLOYMENT_TARGET: "11.0"
jobs:
slint-viewer-binary:
uses: ./.github/workflows/slint_tool_binary.yaml
with:
program: "viewer"
secrets:
certificate: ${{ secrets.APPLE_CERTIFICATE_P12 }}
certificate_password: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }}
keychain_password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
developer_id: ${{ secrets.APPLE_DEV_ID }}
slint-lsp-binary:
uses: ./.github/workflows/slint_tool_binary.yaml
with:
program: "lsp"
secrets:
certificate: ${{ secrets.APPLE_CERTIFICATE_P12 }}
certificate_password: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }}
keychain_password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
developer_id: ${{ secrets.APPLE_DEV_ID }}
docs:
uses: ./.github/workflows/build_docs.yaml
secrets: inherit
with:
release: ${{ github.event.inputs.release }}
app-id: ${{ vars.READ_WRITE_APP_ID }}
wasm_demo:
uses: ./.github/workflows/wasm_demos.yaml
with:
build_artifacts: true
wasm:
uses: ./.github/workflows/wasm_editor_and_interpreter.yaml
cpp_package:
uses: ./.github/workflows/cpp_package.yaml
with:
extra_cmake_flags: ${{ github.event.inputs.release != 'true' && '-DCPACK_PACKAGE_VERSION=nightly' || '' }}
check-for-secrets:
runs-on: ubuntu-latest
outputs:
has-vscode-marketplace-pat: ${{ steps.one.outputs.has-vscode-marketplace-pat }}
has-openvsx-pat: ${{ steps.one.outputs.has-openvsx-pat }}
steps:
- id: one
run: |
[ -n "${{ secrets.VSCODE_MARKETPLACE_PAT }}" ] && echo "has-vscode-marketplace-pat=yes" >> "$GITHUB_OUTPUT"
[ -n "${{ secrets.OPENVSX_PAT }}" ] && echo "has-openvsx-pat=yes" >> "$GITHUB_OUTPUT"
build_vscode_lsp_linux_windows:
env:
SLINT_NO_QT: 1
strategy:
matrix:
include:
- os: ubuntu-22.04
toolchain: x86_64-unknown-linux-gnu
binary_built: slint-lsp
artifact_name: slint-lsp-x86_64-unknown-linux-gnu
- os: windows-2022
toolchain: x86_64-pc-windows-msvc
binary_built: slint-lsp.exe
artifact_name: slint-lsp-x86_64-pc-windows-msvc.exe
- os: windows-11-arm
toolchain: aarch64-pc-windows-msvc
binary_built: slint-lsp.exe
artifact_name: slint-lsp-aarch64-pc-windows-msvc.exe
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.toolchain }}
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- name: Build LSP
run: cargo build --target ${{ matrix.toolchain }} --features ${{ env.SLINT_BINARY_FEATURES }} --release -p slint-lsp
- name: Create artifact directory
run: |
mkdir bin
cp target/${{ matrix.toolchain }}/release/${{ matrix.binary_built }} bin/${{ matrix.artifact_name }}
- name: "Upload LSP Artifact"
uses: actions/upload-artifact@v7
with:
name: vscode-lsp-binary-${{ matrix.toolchain }}
path: |
bin
build_vscode_lsp_macos_x86_64:
env:
SLINT_NO_QT: 1
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: x86_64-apple-darwin
- name: Install cargo-bundle
run: cargo install --version=0.6.0 cargo-bundle
- name: Build Main LSP Bundle
working-directory: tools/lsp
run: cargo bundle --release --features ${{ env.SLINT_BINARY_FEATURES }}
- name: Create artifact directory
run: |
mkdir bin
cp -a target/release/bundle/osx/Slint\ Live\ Preview.app bin
- name: "Upload LSP Artifact"
uses: actions/upload-artifact@v7
with:
name: vscode-lsp-binary-x86_64-apple-darwin
path: |
bin
build_vscode_lsp_macos_aarch64:
env:
SLINT_NO_QT: 1
runs-on: macos-26
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: aarch64-apple-darwin
- name: Build AArch64 LSP
run: cargo build --target aarch64-apple-darwin --features ${{ env.SLINT_BINARY_FEATURES }} --release -p slint-lsp
- name: Create artifact directory
run: |
mkdir bin
cp -a target/aarch64-apple-darwin/release/slint-lsp bin/slint-lsp-aarch64-apple-darwin
- name: "Upload LSP Artifact"
uses: actions/upload-artifact@v7
with:
name: vscode-lsp-binary-aarch64-apple-darwin
path: |
bin
build_vscode_lsp_macos_bundle:
needs: [build_vscode_lsp_macos_x86_64, build_vscode_lsp_macos_aarch64]
runs-on: macos-15
steps:
- uses: actions/checkout@v6
with:
path: "src"
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-x86_64-apple-darwin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-aarch64-apple-darwin
path: bin
- name: Add macOS AArch64 binary to bundle
run: |
lipo -create -output tmp Slint\ Live\ Preview.app/Contents/MacOS/slint-lsp bin/slint-lsp-aarch64-apple-darwin
mv tmp Slint\ Live\ Preview.app/Contents/MacOS/slint-lsp
rm -rf bin
- uses: ./src/.github/actions/codesign
with:
binary: "Slint Live Preview.app"
certificate: ${{ secrets.APPLE_CERTIFICATE_P12 }}
certificate_password: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }}
keychain_password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
developer_id: ${{ secrets.APPLE_DEV_ID }}
- name: "Remove temporary source checkout"
run: rm -rf src
- name: "Upload LSP macOS bundle Artifact"
uses: actions/upload-artifact@v7
with:
name: vscode-lsp-binary-darwin
path: .
build_vscode_cross_linux_lsp:
env:
SLINT_NO_QT: 1
strategy:
matrix:
target:
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.target }}
- uses: baptiste0928/cargo-install@v3
with:
crate: cross
- name: Build LSP
run: cross build --target ${{ matrix.target }} --features ${{ env.SLINT_BINARY_FEATURES }} --release -p slint-lsp
- name: Create artifact directory
run: |
mkdir bin
cp target/${{ matrix.target }}/release/slint-lsp bin/slint-lsp-${{ matrix.target }}
- name: "Upload LSP Artifact"
uses: actions/upload-artifact@v7
with:
name: vscode-lsp-binary-${{ matrix.target }}
path: |
bin
build_vscode_extension:
needs:
[
build_vscode_lsp_linux_windows,
build_vscode_lsp_macos_bundle,
build_vscode_cross_linux_lsp,
check-for-secrets,
]
runs-on: macos-14
if: ${{ needs.check-for-secrets.outputs.has-openvsx-pat == 'yes' && needs.check-for-secrets.outputs.has-vscode-marketplace-pat == 'yes' }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- name: Install GNU Sed
run: brew install gnu-sed
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-x86_64-unknown-linux-gnu
path: editors/vscode/bin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-x86_64-pc-windows-msvc
path: editors/vscode/bin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-aarch64-pc-windows-msvc
path: editors/vscode/bin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-darwin
path: editors/vscode/bin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-armv7-unknown-linux-gnueabihf
path: editors/vscode/bin
- uses: actions/download-artifact@v8
with:
name: vscode-lsp-binary-aarch64-unknown-linux-gnu
path: editors/vscode/bin
- name: Fix permissions
run: chmod 755 editors/vscode/bin/* editors/vscode/bin/*.app/Contents/MacOS/*
- name: "Prepare meta-data files for nightly package"
env:
RELEASE_INPUT: ${{ github.event.inputs.release }}
working-directory: editors/vscode
run: |
if grep -q 'lines below this marker are stripped from the release' README.md; then
gsed -i "/lines below this marker are stripped from the release/,\$d" README.md
else
echo "Missing strip marker in VS Code Extension README. Either add or fix this script."
exit 1
fi
if [ "$RELEASE_INPUT" != "true" ]; then
../../scripts/prepare_vscode_nightly.sh
fi
shell: bash
- name: "pnpm install"
working-directory: editors/vscode
run: pnpm install --frozen-lockfile
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Build package and optionally publish to Visual Studio Marketplace
id: publishToVSCM
uses: HaaLeo/publish-vscode-extension@v2
with:
pat: ${{ secrets.VSCODE_MARKETPLACE_PAT }}
registryUrl: https://marketplace.visualstudio.com
dryRun: ${{ github.event.inputs.private == 'true' || (github.ref != 'refs/heads/master' && github.event.inputs.release != 'true') }}
packagePath: editors/vscode
dependencies: false
- name: Publish to Open VSX Registry
continue-on-error: true
if: ${{ github.event.inputs.private != 'true' && (github.ref == 'refs/heads/master' || github.event.inputs.release == 'true') }}
uses: HaaLeo/publish-vscode-extension@v2
with:
pat: ${{ secrets.OPENVSX_PAT }}
extensionFile: ${{ steps.publishToVSCM.outputs.vsixPath }}
packagePath: ""
- name: "Upload extension artifact"
uses: actions/upload-artifact@v7
with:
name: slint-vscode.zip
path: |
${{ steps.publishToVSCM.outputs.vsixPath }}
build-figma-plugin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
id: node-install
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- name: Run pnpm install
working-directory: tools/figma-inspector
run: pnpm install --frozen-lockfile
- name: Add build timestamp to readme
working-directory: tools/figma-inspector/public-zip
run: echo "Built on $(date '+%d-%m-%Y %H:%M:%S %Z')" >> readme.txt
- name: Build zip
working-directory: tools/figma-inspector
run: pnpm zip
- name: Prepare Figma plugin artifact
run: mv *.zip figma-plugin.zip
working-directory: tools/figma-inspector/zip
- name: Archive zip
uses: actions/upload-artifact@v7
with:
name: figma-plugin
path: tools/figma-inspector/zip
# publish_tree_sitter:
# if: github.event.inputs.private != 'true'
# runs-on: ubuntu-22.04
# steps:
# - uses: actions/checkout@v6
# - name: Upload artifact
# uses: actions/upload-artifact@v7
# with:
# name: tree-sitter-slint
# path: editors/tree-sitter-slint
publish_artifacts:
if: ${{ github.event.inputs.private != 'true' }}
needs: [docs, wasm_demo, wasm, check-for-secrets, android]
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v8
with:
pattern: docs-*
merge-multiple: true
path: .
- name: Generate a token
id: app-token-website
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.READ_WRITE_APP_ID }}
private-key: ${{ secrets.READ_WRITE_PRIVATE_KEY }}
repositories: website
- name: Clone website directory
uses: actions/checkout@v6
with:
repository: slint-ui/website
ref: prod
path: website
token: ${{ steps.app-token-website.outputs.token }}
persist-credentials: false
- name: Generate release-docs.html and 404.html
run: |
mkdir -p website/output
cd website && go run generator/generator.go -skip-agreements
- name: Copy release-docs.html and 404.html
run: |
cp website/output/release-docs.html docs/index.html
cp website/output/404.html docs/404.html
rm -rf website
- uses: actions/download-artifact@v8
with:
name: slintpad
path: slintpad
- uses: actions/download-artifact@v8
with:
name: wasm
- uses: actions/download-artifact@v8
with:
name: wasm_demo
- uses: actions/download-artifact@v8
with:
name: android-demo
path: android
- uses: actions/checkout@v6
with:
path: "slint-src"
sparse-checkout: .
- name: Extract Version from Cargo.toml
id: version
run: |
version=$(awk '/^\[workspace.package\]/ {found=1} found && /^version = / {gsub(/version = |"/, "", $0); print $0; exit}' slint-src/Cargo.toml)
if [[ -z "$version" ]]; then
echo "Version not found"
exit 1
fi
echo "VERSION=$version" >> $GITHUB_OUTPUT
- name: Generate a token
id: app-token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.READ_WRITE_APP_ID }}
private-key: ${{ secrets.READ_WRITE_PRIVATE_KEY }}
repositories: www-releases
- name: Clone www-releases/releases and slintpad directory
uses: actions/checkout@v6
if: ${{ github.event.inputs.release == 'true' }}
with:
repository: slint-ui/www-releases
path: www-releases
token: ${{ steps.app-token.outputs.token }}
sparse-checkout: |
releases
slintpad
- name: Clone www-releases/snapshots directory
uses: actions/checkout@v6
if: ${{ github.event.inputs.release != 'true' }}
with:
repository: slint-ui/www-releases
path: www-releases
token: ${{ steps.app-token.outputs.token }}
sparse-checkout: |
snapshots
- name: Publish Docs and Demos
working-directory: ./www-releases
run: |
if [[ "${{ github.event.inputs.release }}" == "true" ]]; then
output_path="releases/${{ steps.version.outputs.VERSION }}"
else
output_path="snapshots/${GITHUB_REF##*/}"
fi
rm -rf $output_path/demos
mkdir -p $output_path/demos
for demo_subdir in examples,gallery, demos,printerdemo,rust examples,todo,rust examples,todo-mvc,rust examples,slide_puzzle, examples,speedometer,rust examples,memory, examples,imagefilter,rust examples,plotter, examples,opengl_underlay, examples,carousel,rust demos,energy-monitor, demos,weather-demo, demos,home-automation,rust demos,usecases,rust; do
IFS=',' read example_or_demo demo subdir <<< "${demo_subdir}"
mkdir -p $output_path/demos/$demo
cp -a ../$example_or_demo/$demo/$subdir/{pkg,index.html} $output_path/demos/$demo/
done
mkdir -p $output_path/demos/android
cp -a ../android/* $output_path/demos/android/
rm -rf $output_path/wasm-interpreter
mkdir -p $output_path/wasm-interpreter
cp -a ../api/wasm-interpreter/pkg/* ./$output_path/wasm-interpreter/
rm -rf $output_path/editor
mkdir -p $output_path/editor
cp -a ../slintpad/* $output_path/editor/
if [[ "${{ github.event.inputs.release }}" == "true" ]]; then
version="${{ steps.version.outputs.VERSION }}"
else
version="development snapshot"
fi
sed -i "s/VERSION/$version/g" ../docs/index.html
rm -rf $output_path/docs
mv ../docs $output_path
# Fix up link to Slint language documentation
sed -i "s!https://slint.dev/releases/.*/docs/!../../!" $output_path/docs/rust/slint/*.html
- name: Adjust redirections
if: github.event.inputs.release == 'true'
run: |
sed -i "/1.0.2/! s,[0-9]*\.[0-9]*\.[0-9]*/\(.*\),${{ steps.version.outputs.VERSION }}/\1," www-releases/releases/_redirects
- name: Adjust slintpad default tag
if: github.event.inputs.release == 'true'
run: sed -i "s,XXXX_DEFAULT_TAG_XXXX,v${{ steps.version.outputs.VERSION }}," www-releases/releases/${{ steps.version.outputs.VERSION }}/editor/assets/*.js
- name: Update versions.txt
if: github.event.inputs.release == 'true'
working-directory: www-releases/releases
run: ls -1d */ | cut -f1 -d'/' | sort --version-sort -r > versions.txt
- name: Print contents before update
if: github.event.inputs.release == 'true'
working-directory: www-releases/releases
run: cat versions.json
- name: Update version in versions.json
if: github.event.inputs.release == 'true'
working-directory: www-releases/releases
run: |
sed -i '/"name": "development snapshot"/,/"preferred": true,/c\
"name": "development snapshot",\
"url": "https://snapshots.slint.dev/master/docs/slint"\
},\
{\
"preferred": true,\
"version": "${{ steps.version.outputs.VERSION }}",\
"url": "https://releases.slint.dev/${{ steps.version.outputs.VERSION }}/docs/slint"\
},\
{' versions.json
- name: Print contents before update
if: github.event.inputs.release == 'true'
working-directory: www-releases/releases
run: cat versions.json
- name: Update SlintPad
if: github.event.inputs.release == 'true'
run: |
rm -rf www-releases/slintpad
cp -r www-releases/releases/${{ steps.version.outputs.VERSION }}/editor www-releases/slintpad
for f in 404.html script.js LICENSE.md package.json; do
cp www-releases/releases/$f www-releases/slintpad
done
echo "${{ steps.version.outputs.VERSION }}" > www-releases/slintpad/versions.txt
- name: Get GitHub App User ID
id: get-user-id
run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
- name: check for diff
id: www-releases
working-directory: ./www-releases
run: |
git add .
git add -u .
git diff-index --cached --quiet HEAD || echo "has-diff=yes" >> "$GITHUB_OUTPUT"
- name: commit and push
if: ${{ steps.www-releases.outputs.has-diff == 'yes' }}
working-directory: ./www-releases
run: |
git config user.name '${{ steps.app-token.outputs.app-slug }}[bot]'
git config user.email '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com>'
git commit --message "Update $NAME from $GITHUB_REPOSITORY" --message "Pull web demos and C++/Rust reference docs from commit $GITHUB_SHA ($GITHUB_REF)"
git push
prepare_release:
if: github.event.inputs.private != 'true'
needs: [cpp_package, slint-viewer-binary, slint-lsp-binary, build-figma-plugin]
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: cpp_bin-*
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: cpp_mcu_bin-*
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: slint-compiler-bin-*
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: slint-viewer-*
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: slint-lsp-*
merge-multiple: true
- uses: actions/download-artifact@v8
with:
name: figma-plugin
- name: Extract files
run: |
ls -l
mkdir artifacts
mv Slint-cpp-*-win64*.exe artifacts/
mv Slint-cpp-*.tar.gz artifacts/
mv slint-viewer-linux.tar.gz artifacts/
mv slint-viewer-armv7-unknown-linux-gnueabihf.tar.gz artifacts/
mv slint-viewer-aarch64-unknown-linux-gnu.tar.gz artifacts/
mv slint-viewer-macos.tar.gz artifacts/
mv slint-viewer-windows*.zip artifacts/
mv slint-lsp-linux.tar.gz artifacts/
mv slint-lsp-armv7-unknown-linux-gnueabihf.tar.gz artifacts/
mv slint-lsp-aarch64-unknown-linux-gnu.tar.gz artifacts/
mv slint-lsp-macos.tar.gz artifacts/
mv slint-lsp-windows*.zip artifacts/
mv slint-compiler-*.tar.gz artifacts/
mv figma-plugin.zip artifacts/
- uses: actions/checkout@v6
with:
path: "slint-src"
sparse-checkout: docs
- name: prepare release notes
id: version
env:
RELEASE_INPUT: ${{ github.event.inputs.release }}
run: |
if [ "$RELEASE_INPUT" != "true" ]; then
notes_file=slint-src/docs/nightly-release-notes.md
version=nightly
download_version=$version
else
version=$(echo artifacts/Slint-cpp-*-win64-MSVC-AMD64.exe | sed -nre 's/^.*-([0-9]+\.[0-9]+\.[0-9]+).*$/\1/p')
if [[ -z "$version" ]]; then
echo "Version not found"
exit 1
fi
major_version=`echo $version | sed -e "s,\([0-9]*\)\.[0-9]*\.[0-9]*,\1,"`
minor_version=`echo $version | sed -e "s,[0-9]*\.\([0-9]*\)\.[0-9]*,\1,"`
notes_file=slint-src/docs/release-notes.md
download_version=v$version
fi
echo "VERSION=$version" >> $GITHUB_OUTPUT
cat $notes_file slint-src/docs/release-artifacts.md > release-notes.md
branch="${GITHUB_REF#refs/heads/}"
feature="${GITHUB_REF##*/}"
sed -i -e "s,{branch},$branch,g" release-notes.md
sed -i -e "s,{feature},$feature,g" release-notes.md
sed -i -e "s,{version},$version,g" release-notes.md
sed -i -e "s,{download_version},$download_version,g" release-notes.md
sed -i -e "s,{major_version},$major_version,g" release-notes.md
sed -i -e "s,{minor_version},$minor_version,g" release-notes.md
cat release-notes.md
- name: generate STM32 template packages
env:
RELEASE_INPUT: ${{ github.event.inputs.release }}
run: |
git clone https://github.com/slint-ui/slint-cpp-templates-stm32 --depth 1
cd slint-cpp-templates-stm32
if [ "$RELEASE_INPUT" = "true" ]; then
find . -name "CMakeLists.txt" | xargs sed -i "s/find_package(Slint)/find_package(Slint ${{ steps.version.outputs.VERSION }})/g"
fi
for board in stm32h735g-dk stm32h747i-disco; do
mv $board slint-cpp-template-$board
zip -r ../artifacts/slint-cpp-template-$board.zip slint-cpp-template-$board/
done
- uses: ncipollo/release-action@v1
if: github.event.inputs.release == 'true'
with:
draft: true
artifacts: "artifacts/*"
bodyFile: release-notes.md
name: ${{ steps.version.outputs.VERSION }}
tag: v${{ steps.version.outputs.VERSION }}
commit: ${{ github.sha }}
- uses: ncipollo/release-action@v1
if: github.event.inputs.release != 'true' && github.ref == 'refs/heads/master'
with:
allowUpdates: true
prerelease: true
removeArtifacts: true
replacesArtifacts: true
artifacts: "artifacts/*"
bodyFile: release-notes.md
name: nightly
tag: nightly
commit: ${{ github.sha }}
- name: trigger stm32 build
if: github.ref == 'refs/heads/master'
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.STM32_CPP_TRIGGER }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/slint-ui/slint-cpp-templates-stm32/actions/workflows/ci.yaml/dispatches \
-d '{"ref":"main"}'
nightly-tests:
if: github.event.inputs.release != 'true'
needs: [prepare_release]
uses: ./.github/workflows/nightly_tests.yaml
nightly-build-and-test:
if: github.event.inputs.release != 'true'
strategy:
matrix:
include:
- os: ubuntu-22.04
name: "Ubuntu 22.04 1.92"
rust_version: "1.92"
extra_args: "--exclude plotter"
- os: windows-2022
name: "Windows 2022 nightly"
rust_version: "nightly"
extra_args: "--exclude ffmpeg --exclude gstreamer-player"
- os: macos-14
name: "MacOS 14 nightly"
rust_version: "nightly"
extra_args: "--exclude ffmpeg --exclude gstreamer-player"
uses: ./.github/workflows/build_and_test_reusable.yaml
with:
os: ${{ matrix.os }}
name: ${{ matrix.name }}
rust_version: ${{ matrix.rust_version }}
extra_args: ${{ matrix.extra_args }}
# In the nightly CI run, run cargo update to test if any downstream dependency broke our build
# Do not update the cache though, as that would trash the cache for the next runner, which uses the non-updated
# lockfile.
update: true
save_if: false
android:
env:
CARGO_APK_RELEASE_KEYSTORE: /home/runner/.android/release.keystore
CARGO_APK_RELEASE_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- name: Install Android API level 30
run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-30"
- name: Cache cargo-apk
id: cargo-apk-cache
uses: actions/cache@v5
with:
path: ~/.cargo/bin/cargo-apk
key: cargo-apk-cache
# Only build cargo-apk if not cached
- uses: dtolnay/rust-toolchain@stable
if: steps.cargo-apk-cache.outputs.cache-hit != 'true'
- name: Install cargo-apk
if: steps.cargo-apk-cache.outputs.cache-hit != 'true'
run: cargo install cargo-apk
- uses: ./.github/actions/setup-rust
with:
target: aarch64-linux-android
- name: dump keystore
run: |
mkdir -p /home/runner/.android
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > $CARGO_APK_RELEASE_KEYSTORE
- name: Build energy-monitor example
run: cargo apk build -p energy-monitor --target aarch64-linux-android --lib --release
- name: Build todo demo
run: cargo apk build -p todo --target aarch64-linux-android --lib --release
- name: Build weather-demo example
run: cargo apk build -p weather-demo --target aarch64-linux-android --lib --release
- name: Build usecases demo
run: cargo apk build -p usecases --target aarch64-linux-android --lib --release
- name: Build home automation demo
run: cargo apk build -p home-automation --target aarch64-linux-android --lib --release
- name: "upload APK artifact"
uses: actions/upload-artifact@v7
with:
name: android-demo
path: |
target/release/apk/energy-monitor.apk
target/release/apk/todo_lib.apk
target/release/apk/weather_demo.apk
target/release/apk/usecases_lib.apk
target/release/apk/usecases_lib.apk
target/release/apk/home_automation_lib.apk
================================================
FILE: .github/workflows/nightly_tests.yaml
================================================
# 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
# Run a bunch of slower tests once a day (or night)
name: Nightly tests
on:
workflow_dispatch:
workflow_call:
jobs:
qa-esp-idf:
strategy:
matrix:
esp-idf-target:
- release-v5.5
runs-on: ubuntu-22.04
container: espressif/idf:${{ matrix.esp-idf-target }}
steps:
- name: Fix up pydantic regression (https://github.com/espressif/idf-component-manager/issues/97#issuecomment-3380777944)
run: |
. ${IDF_PATH}/export.sh
cd $IDF_PYTHON_ENV_PATH
bin/pip install pydantic==2.11.10
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: esp-rs/xtensa-toolchain@v1.6
with:
default: true
buildtargets: esp32
ldproxy: false
- uses: Swatinem/rust-cache@v2
- name: Build and Test Printer demo
shell: bash
working-directory: demos/printerdemo_mcu/esp-idf
run: |
. ${IDF_PATH}/export.sh
idf.py -D SLINT_ESP_LOCAL_EXAMPLE=OFF build
- name: Build and Test Carousel example s3 box
shell: bash
working-directory: examples/carousel/esp-idf/s3-box
run: |
. ${IDF_PATH}/export.sh
idf.py -D SLINT_ESP_LOCAL_EXAMPLE=OFF build
qa-tree-sitter-latest:
uses: ./.github/workflows/tree_sitter.yaml
with:
latest: true
qa-yocto-build:
strategy:
matrix:
include:
- sdk_url: https://nextcloud.slint.dev/s/SCXYDmEmr45pkak/download/poky-glibc-x86_64-core-image-weston-cortexa57-qemuarm64-toolchain-4.0.9.sh
env_setup: environment-setup-cortexa57-poky-linux
target: aarch64-unknown-linux-gnu
- sdk_url: https://nextcloud.slint.dev/s/BTL5NtLACjgS7Pf/download/poky-glibc-x86_64-core-image-weston-cortexa15t2hf-neon-qemuarm-toolchain-4.0.9.sh
env_setup: environment-setup-cortexa15t2hf-neon-poky-linux-gnueabi
target: armv7-unknown-linux-gnueabihf
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- name: Downgrade cc and ring crate to work around https://github.com/slint-ui/slint/issues/6875
run: |
cargo update -p ring --precise 0.17.9
- name: Fetch Yocto SDK
run: |
# Fetch pre-built SDK built via populate_sdk for core-image-weston with setup from https://github.com/slint-ui/meta-slint/blob/main/.github/workflows/ci.yml
wget -O sdk.sh ${{ matrix.sdk_url }}
chmod +x sdk.sh
./sdk.sh -d ${{ runner.workspace }}/yocto-sdk -y
rm -f sdk.sh
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: ${{ matrix.target }}
- name: C++ Build
run: |
. ${{ runner.workspace }}/yocto-sdk/${{ matrix.env_setup }}
# Only needed for 32-bit arm builds where soft-fp/hard-fp affects header file lookup, hence the need to drag in these flags. See also commit
# f5c3908b7ec5131b7b19ff642b5975660c7484f8
export BINDGEN_EXTRA_CLANG_ARGS=$OECORE_TUNE_CCARGS
mkdir ${{ runner.workspace }}/cppbuild
cmake -GNinja -B ${{ runner.workspace }}/cppbuild -S . -DRust_CARGO_TARGET=${{ matrix.target }} -DSLINT_BUILD_TESTING=ON -DSLINT_BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Debug -DSLINT_FEATURE_RENDERER_SKIA=ON -DSLINT_FEATURE_BACKEND_QT=OFF -DSLINT_FEATURE_BACKEND_LINUXKMS=ON -DSLINT_FEATURE_INTERPRETER=ON
cmake --build ${{ runner.workspace }}/cppbuild
mcu_zephyr:
strategy:
matrix:
include:
- board: native_sim/native/64
toolchain: nightly
target: x86_64-unknown-linux-gnu
extra-cmake-args: ''
- board: mimxrt1170_evk@B/mimxrt1176/cm7
toolchain: stable
target: thumbv7em-none-eabihf
extra-cmake-args: -DSHIELD=rk055hdmipi4ma0
fail-fast: false
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
with:
path: slint
- name: Install linux dependencies, including Zephyr dependencies
uses: ./slint/.github/actions/install-linux-dependencies
with:
extra-packages: |
git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
- uses: ./slint/.github/actions/setup-rust
with:
toolchain: ${{matrix.toolchain}}
components: rust-src
target: ${{matrix.target}}
- name: Setup Zephyr project
uses: zephyrproject-rtos/action-zephyr-setup@v1.0.12
with:
app-path: slint
manifest-file-name: demos/zephyr-common/west.yaml
sdk-version: 0.16.8
- name: Export the Zephyr CMake package
run: west zephyr-export
- name: Build for ${{matrix.board}}
run: |
west build -b ${{matrix.board}} -p always slint/demos/printerdemo/zephyr -- -DCMAKE_BUILD_TYPE=Release ${{matrix.extra-cmake-args}}
uefi-demo:
env:
CARGO_PROFILE_DEV_DEBUG: 0
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
toolchain: stable
target: x86_64-unknown-uefi
- name: Check
run: cargo check --target=x86_64-unknown-uefi -p uefi-demo
ios:
strategy:
matrix:
demo:
- demos/home-automation/rust
- demos/energy-monitor
include:
- demo: demos/home-automation/rust
scheme: "Home Automation"
bundle_id: dev.slint.demos.HomeAutomation
device: iPad Pro 13-inch (M5)
- demo: demos/energy-monitor
scheme: "Energy Monitor"
bundle_id: dev.slint.demos.EnergyMonitor
device: iPhone 17
runs-on: macos-26
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
target: aarch64-apple-ios-sim
- run: brew install xcodegen
- run: xcodegen -s ios-project.yml
working-directory: ${{ matrix.demo }}
- name: "Find Simulator UDID from iOS 26.0 runtime"
run: |
echo "=== Finding device from iOS 26.0 runtime (default Xcode) ==="
# Find the device UDID from iOS 26.0 runtime to avoid ambiguity
# Multiple runtimes have devices with the same name, so we need the specific one
# Output format: " Device Name (UDID) (Shutdown)"
DEVICE_LINE=$(xcrun simctl list devices available | grep -A 50 "iOS 26.0" | grep "${{ matrix.device }}" | head -n 1)
if [ -z "$DEVICE_LINE" ]; then
echo "ERROR: Could not find ${{ matrix.device }} in iOS 26.0 runtime"
echo "Available iOS 26.0 devices:"
xcrun simctl list devices available | grep -A 30 "iOS 26.0"
exit 1
fi
# Extract UDID from the line (format: " Device Name (UDID) (Shutdown)")
DEVICE_UDID=$(echo "$DEVICE_LINE" | sed -n 's/.*(\([A-F0-9-]\{36\}\)).*/\1/p')
if [ -z "$DEVICE_UDID" ]; then
echo "ERROR: Could not extract UDID from line: $DEVICE_LINE"
exit 1
fi
echo "Device: ${{ matrix.device }}"
echo "UDID: $DEVICE_UDID"
# Export UDID for use in xcodebuild and boot steps
echo "SIMULATOR_UDID=$DEVICE_UDID" >> $GITHUB_ENV
- run: xcodebuild -scheme "${{ matrix.scheme }}" -destination "platform=iOS Simulator,id=${{ env.SIMULATOR_UDID }}" build
working-directory: ${{ matrix.demo }}
# This isn't working reliably. Sometimes the simulator doesn't boot, somethings launching fails, and sometimes screenshotting fails.
# - name: "Boot Simulator"
# timeout-minutes: 5
# run: |
# echo "=== Booting simulator by UDID ==="
# echo "Device: ${{ matrix.device }}"
# echo "UDID: ${{ env.SIMULATOR_UDID }}"
# echo "Start time: $(date '+%Y-%m-%d %H:%M:%S')"
#
# set -x # Enable command echoing
# xcrun simctl boot "${{ env.SIMULATOR_UDID }}"
# BOOT_RESULT=$?
# set +x # Disable command echoing
#
# echo "Boot command completed with exit code: $BOOT_RESULT"
# echo ""
#
# echo "=== Simulator state after boot command ==="
# SIMULATOR_STATUS=$(xcrun simctl list devices | grep "${{ env.SIMULATOR_UDID }}")
# echo "$SIMULATOR_STATUS"
#
# if echo "$SIMULATOR_STATUS" | grep -q "(Booted)"; then
# echo "Simulator is booted successfully at: $(date '+%Y-%m-%d %H:%M:%S')"
# else
# echo "ERROR: Simulator failed to boot properly"
# echo "Current status: $SIMULATOR_STATUS"
# exit 1
# fi
# - name: "Install"
# run: |
# APP_PATH=$(find ~/Library/Developer/Xcode/DerivedData -name "${{ matrix.scheme }}.app" | head -n 1)
# echo "Found app bundle at $APP_PATH"
# xcrun simctl install booted "$APP_PATH"
# echo "Verifying installation..."
# xcrun simctl listapps booted | grep -q "${{ matrix.bundle_id }}" && echo "App installed successfully" || echo "WARNING: App may not be installed"
# - name: "Launch"
# timeout-minutes: 5
# run: |
# echo "Attempting to launch ${{ matrix.bundle_id }}..."
# # Retry loop to wait for FrontBoard to register the app
# MAX_ATTEMPTS=10
# ATTEMPT=1
# while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
# echo "Launch attempt $ATTEMPT of $MAX_ATTEMPTS..."
# if xcrun simctl launch booted "${{ matrix.bundle_id }}" 2>&1 | tee launch_output.txt; then
# echo "App launched successfully on attempt $ATTEMPT"
# sleep 5
# exit 0
# fi
#
# if grep -q "unknown to FrontBoard" launch_output.txt; then
# echo "FrontBoard hasn't registered app yet, waiting 2 seconds..."
# sleep 2
# ATTEMPT=$((ATTEMPT + 1))
# else
# echo "Launch failed with a different error:"
# cat launch_output.txt
# echo "Checking simulator logs..."
# xcrun simctl spawn booted log show --last 30s --predicate 'processImagePath contains "${{ matrix.scheme }}"' || true
# exit 1
# fi
# done
#
# echo "Failed to launch after $MAX_ATTEMPTS attempts"
# exit 1
# - name: "Screenshot"
# run: xcrun simctl io booted screenshot "${{ matrix.scheme }}.png"
# - name: Upload Screenshot Artifact
# uses: actions/upload-artifact@v7
# with:
# name: ${{matrix.scheme}}-screenshot
# path: ${{ matrix.scheme }}.png
# - name: "Cleanup - Shutdown Simulator"
# if: always()
# run: |
# echo "Shutting down simulator to avoid orphan processes..."
# xcrun simctl shutdown "${{ env.SIMULATOR_UDID }}" || echo "Simulator already shutdown"
bevy_examples:
uses: ./.github/workflows/bevy_examples.yaml
with:
# In the nightly CI run, run cargo update to test if any downstream dependency broke our build
# Do not update the cache though, as that would trash the cache for the next runner, which uses the non-updated
# lockfile.
update: true
save_if: false
android_wgpu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install Android API level 30
run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-30"
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-apk
run: cargo install cargo-apk
- uses: ./.github/actions/setup-rust
with:
target: aarch64-linux-android
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/install-skia-dependencies
- name: Build wgpu_texture demo
run: cargo apk build -p wgpu_texture --target aarch64-linux-android --lib
python:
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
uses: ./.github/workflows/python_test_reusable.yaml
with:
name: "Python ${{ matrix.os }}"
os: ${{ matrix.os }}
node:
strategy:
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
uses: ./.github/workflows/node_test_reusable.yaml
with:
name: "Node.js ${{ matrix.os }}"
os: ${{ matrix.os }}
miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-rust
with:
toolchain: nightly
key: miri
components: miri
- name: Run Miri
run: cargo miri test -p vtable -p const-field-offset -p i-slint-common
================================================
FILE: .github/workflows/node_test_reusable.yaml
================================================
# 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
name: Node.js Test (Reusable)
on:
workflow_call:
inputs:
name:
description: 'Name of the job'
required: true
type: string
os:
description: 'Operating system to run on'
required: true
type: string
env:
RUSTFLAGS: -D warnings
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_INCREMENTAL: false
RUST_BACKTRACE: 1
jobs:
node_test:
name: ${{ inputs.name }}
runs-on: ${{ inputs.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/install-skia-dependencies
- name: Setup headless display
if: runner.os != 'macOS'
uses: pyvista/setup-headless-display-action@v4
- uses: actions/setup-node@v6
with:
node-version: 24
package-manager-cache: false
id: node-install
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: ./.github/actions/setup-rust
with:
key: x-napi-v2-${{ steps.node-install.outputs.node-version }} # the cache key consists of a manually bumpable version and the node version, as the cached rustc artifacts contain linking information where to find node.lib, which is in a versioned directory.
- name: Run pnpm install
working-directory: api/node
run: pnpm install --frozen-lockfile
- name: Build node plugin in debug
run: pnpm build:testing
working-directory: api/node
- name: Run node tests
working-directory: api/node
run: pnpm test
- name: Run test-driver-nodejs
# Release is only applied to the harness that drives the node.js invocations, but needed
# to avoid crashing on Windows with what looks like an out of stack exception.
run: cargo test --verbose --release --all-features -p test-driver-nodejs
- name: Check image-filter example
working-directory: examples/imagefilter/node
run: pnpm check
================================================
FILE: .github/workflows/publish_npm_package.yaml
================================================
# 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
name: Publish npm package to npm registry
on:
workflow_dispatch:
inputs:
private:
type: boolean
default: true
required: false
description: "Private build? True means artifacts are only built. False means the package will be published to the NPM registry"
release:
type: boolean
default: false
required: false
description: "Release? Enable options for building binaries for a release (i.e. apply a nightly tag, nightly version)"
schedule:
- cron: "0 5 * * *"
permissions:
id-token: write # Required for OIDC
contents: read
jobs:
determine_version:
runs-on: ubuntu-latest
outputs:
PKG_VERSION: ${{ steps.mkversion.outputs.PKG_VERSION }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- uses: actions/setup-node@v6
with:
package-manager-cache: false
- name: Determine version
id: mkversion
env:
RELEASE_INPUT: ${{ github.event.inputs.release }}
working-directory: api/node
run: |
version=`pnpm pkg get version | jq -r`
if [ "$RELEASE_INPUT" != "true" ]; then
nightly_version_suffix=`git log -1 --format=%cd --date="format:%Y%m%d%H"`
version="$version-nightly.$nightly_version_suffix"
fi
echo $version
echo "PKG_VERSION=$version" >> $GITHUB_OUTPUT
build_binaries:
env:
PKG_VERSION: ${{ needs.determine_version.outputs.PKG_VERSION }}
RELEASE_INPUT: ${{ github.event.inputs.release }}
MACOSX_DEPLOYMENT_TARGET: "11.0"
strategy:
matrix:
include:
- os: ubuntu-22.04
rust-target: x86_64-unknown-linux-gnu
napi-rs-target: linux-x64-gnu
- os: ubuntu-22.04-arm
rust-target: aarch64-unknown-linux-gnu
napi-rs-target: linux-arm64-gnu
- os: macos-14
rust-target: aarch64-apple-darwin
napi-rs-target: darwin-arm64
- os: windows-2022
rust-target: x86_64-pc-windows-msvc
napi-rs-target: win32-x64-msvc
msvc-arch: x64
- os: windows-11-arm
rust-target: aarch64-pc-windows-msvc
napi-rs-target: win32-arm64-msvc
msvc-arch: arm64
needs: determine_version
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- uses: ./.github/actions/install-skia-dependencies
- uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
with:
arch: ${{ matrix.msvc-arch }}
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.rust-target }}
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v6
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
package-manager-cache: false
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
- name: Set version
working-directory: api/node
shell: bash
run: |
if [ "$RELEASE_INPUT" != "true" ]; then
pnpm version $PKG_VERSION
fi
- uses: baptiste0928/cargo-install@v3
with:
crate: taplo-cli
- name: Prepare feature config for binaries
working-directory: api/node
shell: bash
run: |
cat Cargo.toml | taplo format --option column_width=100000 --stdin-filepath=Cargo.toml - | \
perl -p -e 's,^\s*default\s*=.*,,' | \
perl -p -e 's,# binaries:\s?,,' > Cargo.toml.new
cat Cargo.toml.new | taplo format --stdin-filepath=Cargo.toml - > Cargo.toml
rm Cargo.toml.new
taplo get -f Cargo.toml features.default
- name: Build binary
shell: bash
working-directory: api/node
run: |
pnpm install --ignore-scripts
pnpm run build --target ${{ matrix.rust-target }}
- name: Create package
shell: bash
working-directory: api/node
run: |
npx napi create-npm-dirs --npm-dir . -c ./binaries.json
mv slint-ui.${{ matrix.napi-rs-target }}.node ${{ matrix.napi-rs-target }}/
cd ${{ matrix.napi-rs-target }}/
pnpm pkg set repository.type=git
pnpm pkg set repository.url=https://github.com/slint-ui/slint
pnpm pack
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: binaries-${{ matrix.rust-target }}
path: "api/node/${{ matrix.napi-rs-target }}/*.tgz"
build_and_publish_npm_package:
runs-on: ubuntu-22.04
needs: [determine_version, build_binaries]
env:
PKG_VERSION: ${{ needs.determine_version.outputs.PKG_VERSION }}
RELEASE_INPUT: ${{ github.event.inputs.release }}
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-linux-dependencies
- uses: ./.github/actions/setup-rust
- uses: pnpm/action-setup@v4.4.0
with:
version: 10.29.3
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v6
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
package-manager-cache: false
- name: Update npm as Node 20.x might not have an new enough npm for trusted publishing
run: npm install -g npm@latest
- name: Set version
working-directory: api/node
run: |
if [ "$RELEASE_INPUT" != "true" ]; then
pnpm version $PKG_VERSION
fi
- name: Select git revision
if: github.event.inputs.release != 'true'
run: |
echo "PKG_EXTRA_ARGS=--sha1=$GITHUB_SHA" >> $GITHUB_ENV
echo "PUBLISH_TAG=--tag nightly" >> $GITHUB_ENV
- name: Compile index.js and index.d.ts
working-directory: api/node
run: |
pnpm install
pnpm run build
pnpm run compile
- name: Prepare binary packages
working-directory: api/node
run: |
npx napi create-npm-dirs --npm-dir . -c ./binaries.json
- name: Download artifacts
uses: actions/download-artifact@v8
with:
name: binaries-x86_64-unknown-linux-gnu
path: api/node/
- name: Download artifacts
uses: actions/download-artifact@v8
with:
name: binaries-aarch64-unknown-linux-gnu
path: api/node/
- name: Download artifacts
uses: actions/download-artifact@v8
with:
name: binaries-aarch64-apple-darwin
path: api/node/
- name: Download artifacts
uses: actions/download-artifact@v8
with:
name: binaries-x86_64-pc-windows-msvc
path: api/node/
- name: Download artifacts
uses: actions/download-artifact@v8
with:
name: binaries-aarch64-pc-windows-msvc
path: api/node/
- name: Add binary dependencies
working-directory: api/node
run: |
for package in @slint-ui/slint-ui-binary-linux-x64-gnu @slint-ui/slint-ui-binary-linux-arm64-gnu @slint-ui/slint-ui-binary-darwin-arm64 @slint-ui/slint-ui-binary-win32-x64-msvc @slint-ui/slint-ui-binary-win32-arm64-msvc; do
jq --arg pkg "$package" --arg version "$PKG_VERSION" '.optionalDependencies[$pkg]=$version' package.json > new.json
mv new.json package.json
done
- name: Build package
run: |
cargo xtask node_package $PKG_EXTRA_ARGS
- name: "Upload npm package Artifact"
uses: actions/upload-artifact@v7
with:
name: slint-ui-node-package
path: |
api/node/slint-ui-${{ env.PKG_VERSION }}.tgz
- name: Smoke test package to see if it builds at least
run: |
mkdir /tmp/nodetest
cd /tmp/nodetest
echo "neverBuiltDependencies: []" > pnpm-workspace.yaml
pnpm init
pnpm install --dangerously-allow-all-builds --verbose $GITHUB_WORKSPACE/api/node/slin
gitextract_o08rqpvx/
├── .cargo/
│ └── config.toml
├── .clang-format
├── .clippy.toml
├── .dockerignore
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug-report.yaml
│ │ ├── 2-feature-request.yaml
│ │ ├── 3-tracking-issue.md
│ │ ├── 4-blank.md
│ │ └── config.yml
│ ├── actions/
│ │ ├── codesign/
│ │ │ └── action.yaml
│ │ ├── install-linux-dependencies/
│ │ │ └── action.yaml
│ │ ├── install-skia-dependencies/
│ │ │ └── action.yaml
│ │ └── setup-rust/
│ │ └── action.yaml
│ ├── ci_path_filters.yaml
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── autofix.yaml
│ ├── bevy_examples.yaml
│ ├── build_and_test_reusable.yaml
│ ├── build_docs.yaml
│ ├── ci.yaml
│ ├── cpp_package.yaml
│ ├── crater.yaml
│ ├── embedded_build.yaml
│ ├── issue_triage.yaml
│ ├── material.yaml
│ ├── material_gallery.yaml
│ ├── material_wasm_gallery.yaml
│ ├── nightly_snapshot.yaml
│ ├── nightly_tests.yaml
│ ├── node_test_reusable.yaml
│ ├── publish_npm_package.yaml
│ ├── python_test_reusable.yaml
│ ├── schedule_nightly_snapshot.yaml
│ ├── servo_example.yaml
│ ├── slint_tool_binary.yaml
│ ├── spellcheck.yaml
│ ├── torizon_demos.yaml
│ ├── translations.yaml
│ ├── tree_sitter.yaml
│ ├── upgrade_version.yaml
│ ├── upload_esp_idf_component.yaml
│ ├── upload_pypi.yaml
│ ├── upload_pypi_briefcase.yaml
│ ├── upload_pypi_slint_compiler.yaml
│ ├── wasm_demos.yaml
│ └── wasm_editor_and_interpreter.yaml
├── .gitignore
├── .mailmap
├── .mise/
│ ├── config.toml
│ ├── tasks/
│ │ ├── fix/
│ │ │ └── text/
│ │ │ └── trailing_spaces
│ │ └── lint/
│ │ └── legal/
│ │ └── reuse
│ └── tasks.toml
├── .npmrc
├── .taplo.toml
├── .vscode/
│ ├── .gitignore
│ └── extensions.json
├── AGENTS.md
├── CHANGELOG.md
├── CMakeLists.txt
├── CMakePresets.json
├── CONTRIBUTING.md
├── Cargo.toml
├── Cross.toml
├── FAQ.md
├── LICENSE.md
├── LICENSES/
│ ├── Apache-2.0.txt
│ ├── CC-BY-2.0.txt
│ ├── CC-BY-4.0.txt
│ ├── CC-BY-ND-4.0.txt
│ ├── CC-BY-SA-3.0.txt
│ ├── CC-BY-SA-4.0.txt
│ ├── CC-PDDC.txt
│ ├── GPL-3.0-only.txt
│ ├── LicenseRef-DejaVu-Font.txt
│ ├── LicenseRef-Slint-Royalty-free-2.0.md
│ ├── LicenseRef-Slint-Software-3.0.md
│ ├── LicenseRef-qskinny.txt
│ ├── MIT.txt
│ ├── OFL-1.1-RFN.txt
│ ├── OFL-1.1.txt
│ └── Unlicense.txt
├── README.md
├── REUSE.toml
├── SECURITY.md
├── about.toml
├── api/
│ ├── cpp/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── cbindgen.rs
│ │ ├── cmake/
│ │ │ ├── SlintConfig.cmake.in
│ │ │ └── SlintMacro.cmake
│ │ ├── docs/
│ │ │ ├── _static/
│ │ │ │ └── theme_tweak.css
│ │ │ ├── _templates/
│ │ │ │ └── base.html
│ │ │ ├── cmake.md
│ │ │ ├── cmake_reference.md
│ │ │ ├── conf.py
│ │ │ ├── generated_code.md
│ │ │ ├── genindex.rst
│ │ │ ├── getting_started.md
│ │ │ ├── index.rst
│ │ │ ├── live_preview.md
│ │ │ ├── mcu/
│ │ │ │ ├── esp-idf/
│ │ │ │ │ └── troubleshoot.md
│ │ │ │ ├── esp_idf.md
│ │ │ │ ├── generic.md
│ │ │ │ ├── intro.md
│ │ │ │ ├── stm32/
│ │ │ │ │ └── generic.md
│ │ │ │ └── stm32.md
│ │ │ ├── overview.md
│ │ │ ├── pyproject.toml
│ │ │ ├── thirdparty.hbs
│ │ │ └── types.md
│ │ ├── esp-idf/
│ │ │ └── slint/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── cmake/
│ │ │ │ └── FindSlint.cmake
│ │ │ ├── esp-println.x
│ │ │ ├── idf_component.yml
│ │ │ ├── include/
│ │ │ │ └── slint-esp.h
│ │ │ └── src/
│ │ │ └── slint-esp.cpp
│ │ ├── include/
│ │ │ ├── slint-interpreter.h
│ │ │ ├── slint-platform.h
│ │ │ ├── slint-stm32.h
│ │ │ ├── slint-testing.h
│ │ │ ├── slint.h
│ │ │ ├── slint_brush.h
│ │ │ ├── slint_callbacks.h
│ │ │ ├── slint_color.h
│ │ │ ├── slint_config.h
│ │ │ ├── slint_image.h
│ │ │ ├── slint_interpreter.h
│ │ │ ├── slint_item_tree.h
│ │ │ ├── slint_live_preview.h
│ │ │ ├── slint_models.h
│ │ │ ├── slint_pathdata.h
│ │ │ ├── slint_point.h
│ │ │ ├── slint_properties.h
│ │ │ ├── slint_sharedvector.h
│ │ │ ├── slint_size.h
│ │ │ ├── slint_string.h
│ │ │ ├── slint_tests_helpers.h
│ │ │ ├── slint_timer.h
│ │ │ ├── slint_window.h
│ │ │ └── vtable.h
│ │ ├── lib.rs
│ │ ├── platform.rs
│ │ └── tests/
│ │ ├── CMakeLists.txt
│ │ ├── datastructures.cpp
│ │ ├── eventloop.cpp
│ │ ├── interpreter.cpp
│ │ ├── libraries/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ └── main.cpp
│ │ ├── models.cpp
│ │ ├── multiple-includes/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── another-window.slint
│ │ │ ├── app-window.slint
│ │ │ ├── logic.cpp
│ │ │ ├── logic.h
│ │ │ └── main.cpp
│ │ ├── platform_eventloop.cpp
│ │ ├── properties.cpp
│ │ ├── test.slint
│ │ ├── testing.cpp
│ │ ├── translator.cpp
│ │ └── window.cpp
│ ├── node/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .yarnrc.yml
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── __test__/
│ │ │ ├── api.spec.mts
│ │ │ ├── compiler.spec.mts
│ │ │ ├── eventloop.spec.mts
│ │ │ ├── globals.spec.mts
│ │ │ ├── helpers/
│ │ │ │ └── utils.ts
│ │ │ ├── js_value_conversion.spec.mts
│ │ │ ├── models.spec.mts
│ │ │ ├── resources/
│ │ │ │ ├── error.slint
│ │ │ │ ├── test-constructor.slint
│ │ │ │ ├── test-enum.slint
│ │ │ │ ├── test-fileloader.slint
│ │ │ │ ├── test-struct.slint
│ │ │ │ └── test.slint
│ │ │ ├── tsconfig.json
│ │ │ ├── types.spec.mts
│ │ │ └── window.spec.mts
│ │ ├── binaries.json
│ │ ├── biome.json
│ │ ├── build-on-demand.mjs
│ │ ├── build.rs
│ │ ├── cover.md
│ │ ├── package.json
│ │ ├── rust/
│ │ │ ├── interpreter/
│ │ │ │ ├── component_compiler.rs
│ │ │ │ ├── component_definition.rs
│ │ │ │ ├── component_instance.rs
│ │ │ │ ├── diagnostic.rs
│ │ │ │ ├── value.rs
│ │ │ │ └── window.rs
│ │ │ ├── interpreter.rs
│ │ │ ├── lib.rs
│ │ │ ├── types/
│ │ │ │ ├── brush.rs
│ │ │ │ ├── image_data.rs
│ │ │ │ ├── model.rs
│ │ │ │ ├── point.rs
│ │ │ │ └── size.rs
│ │ │ └── types.rs
│ │ ├── thirdparty.hbs
│ │ ├── tsconfig.json
│ │ ├── typescript/
│ │ │ ├── index.ts
│ │ │ └── models.ts
│ │ └── vitest.config.ts
│ ├── python/
│ │ ├── briefcase/
│ │ │ ├── README.md
│ │ │ ├── pyproject.toml
│ │ │ └── src/
│ │ │ └── briefcasex_slint/
│ │ │ └── __init__.py
│ │ └── slint/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── api_match.rs
│ │ ├── async_adapter.rs
│ │ ├── brush.rs
│ │ ├── build.rs
│ │ ├── build_docs.py
│ │ ├── errors.rs
│ │ ├── image.rs
│ │ ├── interpreter.rs
│ │ ├── language.rs
│ │ ├── lib.rs
│ │ ├── models.rs
│ │ ├── pyproject.toml
│ │ ├── slint/
│ │ │ ├── __init__.py
│ │ │ ├── language.py
│ │ │ ├── loop.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ └── slint.pyi
│ │ ├── stub-gen/
│ │ │ └── main.rs
│ │ ├── tests/
│ │ │ ├── api-match.slint
│ │ │ ├── test-file-error.slint
│ │ │ ├── test-load-file.slint
│ │ │ ├── test_api_match.py
│ │ │ ├── test_async.py
│ │ │ ├── test_brush.py
│ │ │ ├── test_callback_decorators.py
│ │ │ ├── test_compiler.py
│ │ │ ├── test_enums.py
│ │ │ ├── test_gc.py
│ │ │ ├── test_image.py
│ │ │ ├── test_instance.py
│ │ │ ├── test_invoke_from_event_loop.py
│ │ │ ├── test_load_file.py
│ │ │ ├── test_loader.py
│ │ │ ├── test_loop.py
│ │ │ ├── test_models.py
│ │ │ ├── test_named_tuples.py
│ │ │ ├── test_timers.py
│ │ │ └── test_translations.py
│ │ ├── thirdparty.hbs
│ │ ├── timer.rs
│ │ └── value.rs
│ ├── rs/
│ │ ├── build/
│ │ │ ├── Cargo.toml
│ │ │ └── lib.rs
│ │ ├── macros/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── lib.rs
│ │ └── slint/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── android.rs
│ │ ├── compile_fail_tests.rs
│ │ ├── docs.rs
│ │ ├── lib.rs
│ │ ├── mcu.md
│ │ ├── private_unstable_api.rs
│ │ ├── tests/
│ │ │ ├── invalid_rust_attr.slint
│ │ │ ├── partial_renderer.rs
│ │ │ ├── popups.rs
│ │ │ ├── show_strongref.rs
│ │ │ ├── simple_macro.rs
│ │ │ ├── spawn_local.rs
│ │ │ ├── text_layout_cache.rs
│ │ │ ├── tokio.rs
│ │ │ └── tokio_block_in_place.rs
│ │ └── type-mappings.md
│ └── wasm-interpreter/
│ ├── Cargo.toml
│ └── src/
│ └── lib.rs
├── biome.json
├── cmake/
│ ├── FindOpenGLES2.cmake
│ └── FindOpenGLES3.cmake
├── cspell.json
├── demos/
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── energy-monitor/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── ios-project.yml
│ │ ├── src/
│ │ │ ├── controllers/
│ │ │ │ ├── header.rs
│ │ │ │ └── weather.rs
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── big_main.slint
│ │ ├── blocks/
│ │ │ ├── blocks.slint
│ │ │ ├── header.slint
│ │ │ ├── kiosk_overlay.slint
│ │ │ └── mobile_header.slint
│ │ ├── components/
│ │ │ ├── menu_background.slint
│ │ │ └── state_layer.slint
│ │ ├── desktop_window.slint
│ │ ├── images.slint
│ │ ├── mcu_window.slint
│ │ ├── mid_main.slint
│ │ ├── mobile_main.slint
│ │ ├── pages/
│ │ │ ├── about.slint
│ │ │ ├── balance.slint
│ │ │ ├── dashboard.slint
│ │ │ ├── dashboard_mobile.slint
│ │ │ ├── menu_page/
│ │ │ │ ├── menu_overview.slint
│ │ │ │ ├── menu_page.slint
│ │ │ │ └── settings.slint
│ │ │ ├── overview.slint
│ │ │ ├── page.slint
│ │ │ ├── pages.slint
│ │ │ ├── usage.slint
│ │ │ └── weather.slint
│ │ ├── small_main.slint
│ │ ├── theme.slint
│ │ └── widgets/
│ │ ├── balance_chart.slint
│ │ ├── bar_chart.slint
│ │ ├── bar_tiles.slint
│ │ ├── chart_axis.slint
│ │ ├── chart_pattern.slint
│ │ ├── check_box.slint
│ │ ├── float_button.slint
│ │ ├── group_box.slint
│ │ ├── icon_button.slint
│ │ ├── item.slint
│ │ ├── list_view.slint
│ │ ├── menu.slint
│ │ ├── menu_button.slint
│ │ ├── navigation.slint
│ │ ├── page_scroll_view.slint
│ │ ├── pagination.slint
│ │ ├── radio_button.slint
│ │ ├── scroll_view.slint
│ │ ├── switch.slint
│ │ ├── tab_widget.slint
│ │ ├── tile.slint
│ │ ├── value_display.slint
│ │ └── widgets.slint
│ ├── home-automation/
│ │ ├── README.md
│ │ ├── node/
│ │ │ ├── biome.json
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── index.html
│ │ │ ├── ios-project.yml
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── api.slint
│ │ │ ├── appState.slint
│ │ │ ├── common.slint
│ │ │ ├── components/
│ │ │ │ ├── alarm.slint
│ │ │ │ ├── appliance.slint
│ │ │ │ ├── camera.slint
│ │ │ │ ├── control.slint
│ │ │ │ ├── dial/
│ │ │ │ │ ├── dial.slint
│ │ │ │ │ └── dialLights.slint
│ │ │ │ ├── dishwasher.slint
│ │ │ │ ├── general/
│ │ │ │ │ ├── doors.slint
│ │ │ │ │ ├── fancySlider.slint
│ │ │ │ │ ├── haText.slint
│ │ │ │ │ └── innerShadowRectangle.slint
│ │ │ │ ├── graph.slint
│ │ │ │ ├── hvac.slint
│ │ │ │ ├── info.slint
│ │ │ │ ├── lamp.slint
│ │ │ │ ├── mainView/
│ │ │ │ │ ├── fullScreenView.slint
│ │ │ │ │ ├── fullScreenWidgetLoader.slint
│ │ │ │ │ ├── fullScreenWidgetLoaderSW.slint
│ │ │ │ │ ├── mainScreen.slint
│ │ │ │ │ ├── sidebar.slint
│ │ │ │ │ ├── viewButton.slint
│ │ │ │ │ ├── widgetLoader.slint
│ │ │ │ │ └── widgetLoaderSoftwareRenderer.slint
│ │ │ │ ├── microwave.slint
│ │ │ │ ├── musicPlayer.slint
│ │ │ │ ├── overhead.slint
│ │ │ │ ├── powerInfo.slint
│ │ │ │ ├── timeInfo.slint
│ │ │ │ └── weatherInfo.slint
│ │ │ ├── demo-debug.slint
│ │ │ ├── demo-sw-renderer.slint
│ │ │ ├── demo.slint
│ │ │ └── fonts/
│ │ │ ├── Poppins-Bold.ttf.license
│ │ │ ├── Poppins-Light.ttf.license
│ │ │ ├── Poppins-Medium.ttf.license
│ │ │ ├── Poppins-Regular.ttf.license
│ │ │ └── Poppins-Thin.ttf.license
│ │ └── zephyr/
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── VERSION
│ │ └── main.cpp
│ ├── printerdemo/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── cpp_interpreted/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── lang/
│ │ │ └── fr/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── printerdemo.mo
│ │ │ └── printerdemo.po
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── printerdemo.pot
│ │ ├── python/
│ │ │ ├── README.md
│ │ │ ├── main.py
│ │ │ └── pyproject.toml
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── common.slint
│ │ │ ├── components/
│ │ │ │ ├── button.slint
│ │ │ │ ├── drop_down_menu.slint
│ │ │ │ ├── headers.slint
│ │ │ │ ├── icon_button.slint
│ │ │ │ ├── icon_text_button.slint
│ │ │ │ ├── popup_menu.slint
│ │ │ │ ├── sidebar.slint
│ │ │ │ ├── spinbox.slint
│ │ │ │ └── text_button.slint
│ │ │ ├── fonts/
│ │ │ │ ├── Inter-24pt-Medium.ttf.license
│ │ │ │ ├── Inter-24pt-Regular.ttf.license
│ │ │ │ └── convert.sh
│ │ │ ├── images/
│ │ │ │ ├── cat.jpg.license
│ │ │ │ ├── dog.jpg.license
│ │ │ │ ├── elephant.jpg.license
│ │ │ │ └── snake.jpg.license
│ │ │ ├── pages/
│ │ │ │ ├── copy_page.slint
│ │ │ │ ├── home_page.slint
│ │ │ │ ├── ink_page.slint
│ │ │ │ ├── page.slint
│ │ │ │ ├── pages.slint
│ │ │ │ ├── print_page.slint
│ │ │ │ ├── printer_queue.slint
│ │ │ │ ├── scan_page.slint
│ │ │ │ ├── settings_page.slint
│ │ │ │ └── usb_page.slint
│ │ │ └── printerdemo.slint
│ │ └── zephyr/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── README_NXP.md
│ │ ├── VERSION
│ │ └── main.cpp
│ ├── printerdemo_mcu/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── bench.rs
│ │ ├── build.rs
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── idf_component.yml
│ │ │ │ └── main.cpp
│ │ │ ├── partitions.csv
│ │ │ ├── rust-toolchain.toml
│ │ │ └── sdkconfig.defaults
│ │ ├── main.rs
│ │ └── ui/
│ │ ├── common.slint
│ │ ├── components/
│ │ │ ├── CheckBox.slint
│ │ │ ├── ComboBox.slint
│ │ │ ├── MiniPopup.slint
│ │ │ ├── Page.slint
│ │ │ ├── PushButton.slint
│ │ │ ├── ShadowBox.slint
│ │ │ ├── SideBar.slint
│ │ │ ├── SpinBox.slint
│ │ │ └── components.slint
│ │ ├── pages/
│ │ │ ├── copy_page.slint
│ │ │ ├── home_page.slint
│ │ │ ├── ink_page.slint
│ │ │ ├── pages.slint
│ │ │ ├── printer_queue.slint
│ │ │ ├── scan_page.slint
│ │ │ └── settings_page.slint
│ │ └── printerdemo.slint
│ ├── usecases/
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── idf_component.yml
│ │ │ │ └── main.cpp
│ │ │ ├── rust-toolchain.toml
│ │ │ └── sdkconfig.defaults
│ │ ├── lang/
│ │ │ └── de/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── usecases.mo
│ │ │ └── usecases.po
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── src/
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ ├── ui/
│ │ │ ├── app.slint
│ │ │ ├── assets.slint
│ │ │ ├── icons.slint
│ │ │ ├── views/
│ │ │ │ ├── dashboard_view.slint
│ │ │ │ ├── header_view.slint
│ │ │ │ ├── mail_view.slint
│ │ │ │ └── main_view.slint
│ │ │ ├── views.slint
│ │ │ ├── virtual_keyboard.slint
│ │ │ ├── widgets/
│ │ │ │ ├── bar_chart.slint
│ │ │ │ ├── card_list_view.slint
│ │ │ │ ├── container.slint
│ │ │ │ ├── dialog.slint
│ │ │ │ ├── extended_line_edit.slint
│ │ │ │ ├── icon.slint
│ │ │ │ ├── icon_button.slint
│ │ │ │ ├── navigation_list_view.slint
│ │ │ │ ├── segmented.slint
│ │ │ │ ├── styling.slint
│ │ │ │ ├── tile.slint
│ │ │ │ ├── title_text.slint
│ │ │ │ └── value_display.slint
│ │ │ └── widgets.slint
│ │ └── update_translations.sh
│ ├── weather-demo/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── src/
│ │ │ ├── app_main.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ └── weather/
│ │ │ ├── dummyweather.json
│ │ │ ├── dummyweathercontroller.rs
│ │ │ ├── mod.rs
│ │ │ ├── openweathercontroller.rs
│ │ │ ├── utils.rs
│ │ │ ├── weathercontroller.rs
│ │ │ └── weatherdisplaycontroller.rs
│ │ └── ui/
│ │ ├── about-box.slint
│ │ ├── city_weather.slint
│ │ ├── city_weather_tile.slint
│ │ ├── controls/
│ │ │ ├── busy-layer.slint
│ │ │ ├── generic.slint
│ │ │ ├── stackview.slint
│ │ │ └── weather.slint
│ │ ├── expanded_city_weather_tile.slint
│ │ ├── forecast_with_graph.slint
│ │ ├── location_datatypes.slint
│ │ ├── location_search.slint
│ │ ├── main.slint
│ │ ├── page-base.slint
│ │ ├── style/
│ │ │ └── styles.slint
│ │ ├── ui_utils.slint
│ │ └── weather_datatypes.slint
│ └── zephyr-common/
│ ├── boards/
│ │ ├── mimxrt1170_evk_mimxrt1176_cm7.conf
│ │ ├── native_sim_64.conf
│ │ └── native_sim_64.overlay
│ ├── prj.conf
│ ├── slint-zephyr.cpp
│ ├── slint-zephyr.h
│ └── west.yaml
├── docker/
│ ├── Dockerfile.aarch64-unknown-linux-gnu
│ ├── Dockerfile.armv7-unknown-linux-gnueabihf
│ ├── Dockerfile.cpp-image
│ ├── Dockerfile.riscv64gc-unknown-linux-gnu
│ ├── Dockerfile.torizon-demos
│ └── Dockerfile.x86_64-unknown-linux-gnu
├── docs/
│ ├── astro/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── astro.config.mjs
│ │ ├── biome.json
│ │ ├── ec.config.mjs
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ └── editor/
│ │ │ │ ├── codemirror.js
│ │ │ │ ├── language-facets.js
│ │ │ │ ├── package.json
│ │ │ │ └── rollup.config.js
│ │ │ ├── content/
│ │ │ │ ├── code/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── Cargo.toml
│ │ │ │ │ ├── app-window.slint
│ │ │ │ │ ├── main_game_logic.cpp
│ │ │ │ │ ├── main_game_logic.js
│ │ │ │ │ ├── main_game_logic.py
│ │ │ │ │ ├── main_game_logic_in_rust.rs
│ │ │ │ │ ├── main_initial.cpp
│ │ │ │ │ ├── main_initial.js
│ │ │ │ │ ├── main_initial.py
│ │ │ │ │ ├── main_initial.rs
│ │ │ │ │ ├── main_memory_tile.rs
│ │ │ │ │ ├── main_multiple_tiles.rs
│ │ │ │ │ ├── main_polishing_the_tile.rs
│ │ │ │ │ ├── main_tiles_from_cpp.cpp
│ │ │ │ │ ├── main_tiles_from_js.js
│ │ │ │ │ ├── main_tiles_from_python.py
│ │ │ │ │ ├── main_tiles_from_rust.rs
│ │ │ │ │ ├── memory.slint
│ │ │ │ │ ├── memory_game_logic.slint
│ │ │ │ │ ├── memory_tile.slint
│ │ │ │ │ ├── memory_tiles_from_cpp.slint
│ │ │ │ │ └── package.json
│ │ │ │ ├── collections/
│ │ │ │ │ └── std-widgets/
│ │ │ │ │ ├── Date.md
│ │ │ │ │ └── Time.md
│ │ │ │ └── docs/
│ │ │ │ ├── guide/
│ │ │ │ │ ├── backends-and-renderers/
│ │ │ │ │ │ ├── backend_linuxkms.md
│ │ │ │ │ │ ├── backend_qt.mdx
│ │ │ │ │ │ ├── backend_winit.md
│ │ │ │ │ │ └── backends_and_renderers.mdx
│ │ │ │ │ ├── development/
│ │ │ │ │ │ ├── best-practices.mdx
│ │ │ │ │ │ ├── custom-controls.mdx
│ │ │ │ │ │ ├── debugging_techniques.mdx
│ │ │ │ │ │ ├── focus.mdx
│ │ │ │ │ │ ├── fonts.md
│ │ │ │ │ │ ├── third-party-libraries.mdx
│ │ │ │ │ │ └── translations.mdx
│ │ │ │ │ ├── language/
│ │ │ │ │ │ ├── coding/
│ │ │ │ │ │ │ ├── animation.mdx
│ │ │ │ │ │ │ ├── expressions-and-statements.mdx
│ │ │ │ │ │ │ ├── file.mdx
│ │ │ │ │ │ │ ├── functions-and-callbacks.mdx
│ │ │ │ │ │ │ ├── globals.mdx
│ │ │ │ │ │ │ ├── name-resolution.mdx
│ │ │ │ │ │ │ ├── positioning-and-layouts.mdx
│ │ │ │ │ │ │ ├── properties.mdx
│ │ │ │ │ │ │ ├── repetition-and-data-models.mdx
│ │ │ │ │ │ │ ├── states.mdx
│ │ │ │ │ │ │ └── structs-and-enums.mdx
│ │ │ │ │ │ └── concepts/
│ │ │ │ │ │ ├── reactivity-vs-react.mdx
│ │ │ │ │ │ ├── reactivity.mdx
│ │ │ │ │ │ └── slint-language.mdx
│ │ │ │ │ ├── platforms/
│ │ │ │ │ │ ├── desktop.mdx
│ │ │ │ │ │ ├── embedded.mdx
│ │ │ │ │ │ ├── mobile/
│ │ │ │ │ │ │ ├── android.mdx
│ │ │ │ │ │ │ ├── general.mdx
│ │ │ │ │ │ │ └── ios.mdx
│ │ │ │ │ │ ├── other.mdx
│ │ │ │ │ │ └── web.mdx
│ │ │ │ │ └── tooling/
│ │ │ │ │ ├── figma-inspector.mdx
│ │ │ │ │ ├── helix.mdx
│ │ │ │ │ ├── jetbrains-ide.mdx
│ │ │ │ │ ├── kate.mdx
│ │ │ │ │ ├── manual-setup.mdx
│ │ │ │ │ ├── neo-vim.mdx
│ │ │ │ │ ├── qt-creator.mdx
│ │ │ │ │ ├── sublime-text.mdx
│ │ │ │ │ ├── vscode.mdx
│ │ │ │ │ └── zed.mdx
│ │ │ │ ├── index.mdx
│ │ │ │ ├── language-integrations/
│ │ │ │ │ └── index.mdx
│ │ │ │ ├── reference/
│ │ │ │ │ ├── colors-and-brushes.mdx
│ │ │ │ │ ├── common.mdx
│ │ │ │ │ ├── elements/
│ │ │ │ │ │ ├── image.mdx
│ │ │ │ │ │ ├── path.mdx
│ │ │ │ │ │ ├── rectangle.mdx
│ │ │ │ │ │ ├── styled-text.mdx
│ │ │ │ │ │ └── text.mdx
│ │ │ │ │ ├── gestures/
│ │ │ │ │ │ ├── flickable.mdx
│ │ │ │ │ │ ├── pinchgesturehandler.mdx
│ │ │ │ │ │ ├── swipegesturehandler.mdx
│ │ │ │ │ │ └── toucharea.mdx
│ │ │ │ │ ├── global-functions/
│ │ │ │ │ │ ├── builtinfunctions.mdx
│ │ │ │ │ │ └── math.mdx
│ │ │ │ │ ├── global-namespaces/
│ │ │ │ │ │ └── platform.mdx
│ │ │ │ │ ├── keyboard-input/
│ │ │ │ │ │ ├── focusscope.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ ├── textinput.mdx
│ │ │ │ │ │ └── textinputinterface.mdx
│ │ │ │ │ ├── layouts/
│ │ │ │ │ │ ├── flexboxlayout.mdx
│ │ │ │ │ │ ├── gridlayout.mdx
│ │ │ │ │ │ ├── horizontallayout.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ └── verticallayout.mdx
│ │ │ │ │ ├── overview.mdx
│ │ │ │ │ ├── primitive-types.mdx
│ │ │ │ │ ├── std-widgets/
│ │ │ │ │ │ ├── basic-widgets/
│ │ │ │ │ │ │ ├── button.mdx
│ │ │ │ │ │ │ ├── checkbox.mdx
│ │ │ │ │ │ │ ├── combobox.mdx
│ │ │ │ │ │ │ ├── progressindicator.mdx
│ │ │ │ │ │ │ ├── slider.mdx
│ │ │ │ │ │ │ ├── spinbox.mdx
│ │ │ │ │ │ │ ├── spinner.mdx
│ │ │ │ │ │ │ ├── standardbutton.mdx
│ │ │ │ │ │ │ └── switch.mdx
│ │ │ │ │ │ ├── globals/
│ │ │ │ │ │ │ ├── palette.mdx
│ │ │ │ │ │ │ └── stylemetrics.mdx
│ │ │ │ │ │ ├── layouts/
│ │ │ │ │ │ │ ├── gridbox.mdx
│ │ │ │ │ │ │ ├── groupbox.mdx
│ │ │ │ │ │ │ ├── horizontalbox.mdx
│ │ │ │ │ │ │ └── verticalbox.mdx
│ │ │ │ │ │ ├── misc/
│ │ │ │ │ │ │ ├── aboutslint.mdx
│ │ │ │ │ │ │ ├── datepicker.mdx
│ │ │ │ │ │ │ └── timepicker.mdx
│ │ │ │ │ │ ├── overview.mdx
│ │ │ │ │ │ ├── style.mdx
│ │ │ │ │ │ └── views/
│ │ │ │ │ │ ├── lineedit.mdx
│ │ │ │ │ │ ├── listview.mdx
│ │ │ │ │ │ ├── scrollview.mdx
│ │ │ │ │ │ ├── standardlistview.mdx
│ │ │ │ │ │ ├── standardtableview.mdx
│ │ │ │ │ │ ├── tabwidget.mdx
│ │ │ │ │ │ └── textedit.mdx
│ │ │ │ │ ├── timer.mdx
│ │ │ │ │ └── window/
│ │ │ │ │ ├── contextmenuarea.mdx
│ │ │ │ │ ├── dialog.mdx
│ │ │ │ │ ├── menubar.mdx
│ │ │ │ │ ├── popupwindow.mdx
│ │ │ │ │ └── window.mdx
│ │ │ │ └── tutorial/
│ │ │ │ ├── conclusion.md
│ │ │ │ ├── creating_the_tiles.mdx
│ │ │ │ ├── from_one_to_multiple_tiles.mdx
│ │ │ │ ├── game_logic.mdx
│ │ │ │ ├── getting_started.mdx
│ │ │ │ ├── ideas_for_the_reader.mdx
│ │ │ │ ├── memory_tile.mdx
│ │ │ │ ├── polishing_the_tile.mdx
│ │ │ │ ├── quickstart.mdx
│ │ │ │ └── running_in_a_browser.mdx
│ │ │ ├── content.config.ts
│ │ │ ├── styles/
│ │ │ │ ├── custom.css
│ │ │ │ └── theme.css
│ │ │ └── utils/
│ │ │ ├── slint-docs-highlight.html
│ │ │ └── slint-docs-preview.html
│ │ ├── tests/
│ │ │ ├── link-test.spec.ts
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.json
│ │ └── writing-style-guide.md
│ ├── building.md
│ ├── common/
│ │ ├── biome.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── Banner.astro
│ │ │ │ ├── CodeSnippetMD.astro
│ │ │ │ ├── Footer.astro
│ │ │ │ ├── FourCardGrid.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── IconLinkCard.astro
│ │ │ │ ├── LangRefLink.astro
│ │ │ │ ├── Link.astro
│ │ │ │ ├── ReleaseLink.astro
│ │ │ │ ├── SlintProperty.astro
│ │ │ │ ├── ThemeSelect.astro
│ │ │ │ ├── ThreeCardGrid.astro
│ │ │ │ ├── Type.astro
│ │ │ │ ├── VersionBanner.astro
│ │ │ │ └── VersionSelector.astro
│ │ │ └── utils/
│ │ │ ├── site-config.ts
│ │ │ ├── slint.tmLanguage.json
│ │ │ └── utils.ts
│ │ └── tsconfig.json
│ ├── development/
│ │ ├── animation-internals.md
│ │ ├── compiler-internals.md
│ │ ├── custom-renderer.md
│ │ ├── ffi-language-bindings.md
│ │ ├── input-event-system.md
│ │ ├── item-tree.md
│ │ ├── layout-system.md
│ │ ├── lsp-architecture.md
│ │ ├── model-repeater-system.md
│ │ ├── property-binding-deep-dive.md
│ │ ├── text-layout.md
│ │ ├── type-system.md
│ │ └── window-backend-integration.md
│ ├── development.md
│ ├── embedded-tutorials.md
│ ├── install_qt.md
│ ├── internal/
│ │ ├── processes.md
│ │ ├── release.md
│ │ └── triage.md
│ ├── nightly-release-notes.md
│ ├── readme.md
│ ├── release-artifacts.md
│ ├── release-notes.md
│ ├── site/
│ │ └── index.html
│ ├── testing.md
│ └── torizon.md
├── editors/
│ ├── README.md
│ ├── kate/
│ │ └── slint.ksyntaxhighlighter.xml
│ ├── sublime/
│ │ ├── LSP.sublime-settings
│ │ ├── Slint.sublime-syntax
│ │ └── Slint.tmPreferences
│ ├── tree-sitter-slint/
│ │ ├── .gitignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── corpus/
│ │ │ ├── empty.txt
│ │ │ └── lookup.txt
│ │ ├── grammar.js
│ │ ├── test-to-corpus.py
│ │ └── tree-sitter.json
│ ├── vscode/
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ ├── settings.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── biome.json
│ │ ├── esbuild.js
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── slint.injection.json
│ │ ├── slint.markdown-injection.json
│ │ ├── snippets/
│ │ │ └── slint.json
│ │ ├── src/
│ │ │ ├── browser-lsp-worker.ts
│ │ │ ├── browser.ts
│ │ │ ├── common.ts
│ │ │ ├── extension.ts
│ │ │ ├── lsp_commands.ts
│ │ │ ├── quick_picks.ts
│ │ │ ├── snippets.ts
│ │ │ ├── telemetry.ts
│ │ │ ├── tsconfig.json
│ │ │ └── wasm_preview.ts
│ │ ├── static/
│ │ │ └── walkthroughs/
│ │ │ └── welcome/
│ │ │ ├── create_slint_file.md
│ │ │ ├── get_help.md
│ │ │ └── show_preview.png.license
│ │ ├── telemetry.json
│ │ ├── tests/
│ │ │ └── grammar/
│ │ │ ├── basic.slint
│ │ │ ├── expressions.slint
│ │ │ ├── invalid.slint
│ │ │ ├── printerdemo.slint
│ │ │ ├── snippets.slint
│ │ │ ├── states.slint
│ │ │ └── strings.slint
│ │ ├── tsconfig.default.json
│ │ └── tsconfig.json
│ └── zed/
│ ├── Cargo.toml
│ ├── README.md
│ ├── extension.toml
│ ├── languages/
│ │ └── slint/
│ │ ├── brackets.scm
│ │ ├── config.toml
│ │ ├── folds.scm
│ │ ├── highlights.scm
│ │ ├── indents.scm
│ │ ├── injections.scm
│ │ └── locals.scm
│ └── src/
│ └── slint.rs
├── examples/
│ ├── 7guis/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── booker.rs
│ │ ├── booker.slint
│ │ ├── cells.rs
│ │ ├── cells.slint
│ │ ├── circledraw.rs
│ │ ├── circledraw.slint
│ │ ├── counter.slint
│ │ ├── crud.rs
│ │ ├── crud.slint
│ │ ├── tempconv.slint
│ │ └── timer.slint
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── async-io/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── main.py
│ │ ├── main.rs
│ │ ├── pyproject.toml
│ │ └── stockticker.slint
│ ├── bash/
│ │ ├── README.md
│ │ ├── laptop.svg.license
│ │ ├── simple_input.sh
│ │ ├── sysinfo.slint
│ │ ├── sysinfo_linux.sh
│ │ └── sysinfo_macos.sh
│ ├── bevy/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── bevy-hosts-slint/
│ │ │ ├── .gitignore
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── assets/
│ │ │ │ └── cow.gltf
│ │ │ └── main.rs
│ │ ├── bevy-hosts-slint-gpu/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── main.rs
│ │ └── slint-hosts-bevy/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── main.rs
│ │ ├── slint_bevy_adapter.rs
│ │ └── web_asset.rs
│ ├── carousel/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── esp-idf/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── main.cpp
│ │ │ ├── rust-toolchain.toml
│ │ │ └── s3-box/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── idf_component.yml
│ │ │ ├── partitions.csv
│ │ │ └── sdkconfig.defaults
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── card.slint
│ │ ├── carousel.slint
│ │ ├── carousel_demo.slint
│ │ ├── fonts/
│ │ │ ├── Roboto-Bold.ttf.license
│ │ │ └── Roboto-Regular.ttf.license
│ │ ├── label.slint
│ │ ├── svg/
│ │ │ ├── home_black.svg.license
│ │ │ ├── info_black.svg.license
│ │ │ └── settings_black.svg.license
│ │ ├── theme.slint
│ │ └── title_label.slint
│ ├── cpp/
│ │ ├── README.md
│ │ ├── platform_native/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ ├── appview.cpp
│ │ │ ├── appview.h
│ │ │ ├── main.cpp
│ │ │ └── windowadapter_win.h
│ │ ├── platform_qt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── app-window.slint
│ │ │ └── main.cpp
│ │ └── qt_viewer/
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── interface.ui
│ │ └── qt_viewer.cpp
│ ├── dial/
│ │ ├── README.md
│ │ └── dial.slint
│ ├── fancy-switches/
│ │ ├── DarkModeSwitch.slint
│ │ ├── README.md
│ │ ├── SunMoonSwitch.slint
│ │ └── demo.slint
│ ├── fancy_demo/
│ │ ├── README.md
│ │ └── main.slint
│ ├── ffmpeg/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── lib.rs
│ │ ├── main.rs
│ │ ├── player/
│ │ │ ├── audio.rs
│ │ │ └── video.rs
│ │ ├── player.rs
│ │ └── scene.slint
│ ├── gallery/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── gallery.pot
│ │ ├── gallery.slint
│ │ ├── index.html
│ │ ├── lang/
│ │ │ ├── de/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── gallery.mo
│ │ │ │ └── gallery.po
│ │ │ ├── fr/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── gallery.mo
│ │ │ │ └── gallery.po
│ │ │ └── ja/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── gallery.mo
│ │ │ └── gallery.po
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ ├── thumbsup.png.license
│ │ ├── ui/
│ │ │ ├── gallery_settings.slint
│ │ │ ├── pages/
│ │ │ │ ├── about_page.slint
│ │ │ │ ├── controls_page.slint
│ │ │ │ ├── easings_page.slint
│ │ │ │ ├── list_view_page.slint
│ │ │ │ ├── page.slint
│ │ │ │ ├── pages.slint
│ │ │ │ ├── styled_text_page.slint
│ │ │ │ ├── table_view_page.slint
│ │ │ │ └── text_edit_page.slint
│ │ │ └── side_bar.slint
│ │ └── update_translations.sh
│ ├── gstreamer-player/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── main.rs
│ │ ├── scene.slint
│ │ └── slint_video_sink/
│ │ ├── egl_integration.rs
│ │ ├── mod.rs
│ │ └── software_rendering.rs
│ ├── imagefilter/
│ │ ├── README.md
│ │ ├── assets/
│ │ │ └── cat.jpg.license
│ │ ├── node/
│ │ │ ├── .gitignore
│ │ │ ├── README
│ │ │ ├── main.ts
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── main.slint
│ ├── iot-dashboard/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── dashboard.cpp
│ │ ├── dashboard.h
│ │ ├── iot-dashboard.slint
│ │ ├── main.cpp
│ │ └── main.slint
│ ├── layouts/
│ │ ├── flexbox-interactive.slint
│ │ ├── grid-with-model-in-rows.slint
│ │ ├── grid-with-nested-for.slint
│ │ ├── grid-with-repeated-rows.slint
│ │ ├── vector-as-grid.slint
│ │ └── vertical-layout-with-model.slint
│ ├── maps/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── main.rs
│ ├── mcu-board-support/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── embassy.rs
│ │ ├── esope_sld_c_w_s3/
│ │ │ ├── cargo-config.toml
│ │ │ └── esope_sld_c_w_s3.rs
│ │ ├── esp32_s3_box_3/
│ │ │ ├── cargo-config.toml
│ │ │ └── esp32_s3_box_3.rs
│ │ ├── esp32_s3_lcd_ev_board/
│ │ │ ├── cargo-config.toml
│ │ │ └── esp32_s3_lcd_ev_board.rs
│ │ ├── lib.rs
│ │ ├── m5stack_cores3/
│ │ │ ├── cargo-config.toml
│ │ │ └── m5stack_cores3.rs
│ │ ├── pico2_st7789/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ ├── pico2_st7789.rs
│ │ │ └── rp_pico2.rs
│ │ ├── pico2_touch_lcd_2_8/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── pico2_touch_lcd_2_8.rs
│ │ ├── pico_st7789/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── pico_st7789.rs
│ │ ├── profiler.rs
│ │ ├── stm32h735g/
│ │ │ ├── board_config.toml
│ │ │ ├── memory.x
│ │ │ └── stm32h735g.rs
│ │ ├── stm32u5g9j_dk2/
│ │ │ ├── board_config.toml
│ │ │ ├── hspi.rs
│ │ │ ├── memory.x
│ │ │ └── stm32u5g9j_dk2.rs
│ │ └── waveshare_esp32_s3_touch_amoled_1_8/
│ │ ├── cargo-config.toml
│ │ └── waveshare_esp32_s3_touch_amoled_1_8.rs
│ ├── mcu-embassy/
│ │ ├── .cargo/
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── settings.json
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── slint_generated/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── src/
│ │ │ ├── bin/
│ │ │ │ ├── ui_mcu.rs
│ │ │ │ └── ui_simulator.rs
│ │ │ ├── controller.rs
│ │ │ ├── lib.rs
│ │ │ ├── mcu/
│ │ │ │ ├── double_buffer.rs
│ │ │ │ ├── hardware.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── rcc_setup.rs
│ │ │ ├── simulator/
│ │ │ │ ├── hardware.rs
│ │ │ │ └── mod.rs
│ │ │ └── slint_backend.rs
│ │ └── ui/
│ │ ├── common.slint
│ │ └── main.slint
│ ├── memory/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── icons/
│ │ │ └── README.md
│ │ ├── index.html
│ │ ├── main.js
│ │ ├── main.py
│ │ ├── main.rs
│ │ ├── memory.cpp
│ │ ├── memory.slint
│ │ ├── package.json
│ │ └── pyproject.toml
│ ├── native-gestures/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── native-gestures.slint
│ │ └── src/
│ │ ├── lib.rs
│ │ └── main.rs
│ ├── opengl_texture/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ └── scene.slint
│ ├── opengl_underlay/
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── main.cpp
│ │ ├── main.rs
│ │ └── scene.slint
│ ├── orbit-animation/
│ │ ├── README.md
│ │ ├── demo.slint
│ │ └── orbiter.slint
│ ├── plotter/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── main.rs
│ │ ├── plotter.slint
│ │ └── wasm_backend.rs
│ ├── repeater/
│ │ ├── README.md
│ │ └── demo.slint
│ ├── safe-ui/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── core/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ ├── lib.rs
│ │ │ ├── pixels/
│ │ │ │ ├── bgra8888.rs
│ │ │ │ └── mod.rs
│ │ │ ├── platform.rs
│ │ │ └── slint-safeui-platform-interface.h
│ │ ├── simulator/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── src/
│ │ │ ├── desktop_platform.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── app-window.slint
│ ├── servo/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ └── webview/
│ │ │ ├── adapter.rs
│ │ │ ├── delegate.rs
│ │ │ ├── events_utils/
│ │ │ │ ├── key_event_util.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── pointer_event_util.rs
│ │ │ │ └── url_event_util.rs
│ │ │ ├── mod.rs
│ │ │ ├── rendering_context/
│ │ │ │ ├── gpu_rendering_context.rs
│ │ │ │ ├── metal/
│ │ │ │ │ ├── metal.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── texture_importer.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── servo_rendering_adapter.rs
│ │ │ │ └── surfman_context.rs
│ │ │ ├── waker.rs
│ │ │ ├── webview.rs
│ │ │ ├── webview.slint
│ │ │ └── webview_events.rs
│ │ └── ui/
│ │ └── app.slint
│ ├── slide_puzzle/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── berlin.jpg.license
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── main.rs
│ │ ├── plaster-font/
│ │ │ └── Plaster-Regular.ttf.license
│ │ └── slide_puzzle.slint
│ ├── speedometer/
│ │ ├── 01 Digitall.ttf.license
│ │ ├── README.md
│ │ ├── demo.slint
│ │ └── rust/
│ │ ├── Cargo.toml
│ │ ├── index.html
│ │ ├── lib.rs
│ │ └── main.rs
│ ├── sprite-sheet/
│ │ ├── README.md
│ │ ├── SpriteSheet.slint
│ │ └── demo.slint
│ ├── todo/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── app.cpp
│ │ │ ├── app.h
│ │ │ ├── main.cpp
│ │ │ └── tests/
│ │ │ └── test_todo_basic.cpp
│ │ ├── node/
│ │ │ ├── README
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ └── todo.slint
│ ├── todo-mvc/
│ │ ├── README.md
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── index.html
│ │ │ └── src/
│ │ │ ├── callback.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── mvc/
│ │ │ │ ├── controllers/
│ │ │ │ │ ├── create_task_controller.rs
│ │ │ │ │ └── task_list_controller.rs
│ │ │ │ ├── controllers.rs
│ │ │ │ ├── models/
│ │ │ │ │ ├── date_model.rs
│ │ │ │ │ ├── task_model.rs
│ │ │ │ │ └── time_model.rs
│ │ │ │ ├── models.rs
│ │ │ │ ├── repositories/
│ │ │ │ │ ├── mock_date_time_repository.rs
│ │ │ │ │ ├── mock_task_repository.rs
│ │ │ │ │ ├── traits/
│ │ │ │ │ │ ├── date_time_repository.rs
│ │ │ │ │ │ └── task_repository.rs
│ │ │ │ │ └── traits.rs
│ │ │ │ └── repositories.rs
│ │ │ ├── mvc.rs
│ │ │ ├── ui/
│ │ │ │ ├── create_task_adapter.rs
│ │ │ │ ├── navigation_adapter.rs
│ │ │ │ └── task_list_adapter.rs
│ │ │ └── ui.rs
│ │ └── ui/
│ │ ├── index.slint
│ │ ├── views/
│ │ │ ├── create_task_view.slint
│ │ │ └── task_list_view.slint
│ │ └── widgets/
│ │ ├── action_button.slint
│ │ ├── focus_touch_area.slint
│ │ ├── icon_button.slint
│ │ ├── selection_list_view.slint
│ │ ├── state_layer.slint
│ │ ├── styling.slint
│ │ └── text_button.slint
│ ├── uefi-demo/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── demo.slint
│ │ └── main.rs
│ ├── virtual_keyboard/
│ │ ├── README.md
│ │ ├── cpp/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── icons.slint
│ │ ├── main_window.slint
│ │ └── virtual_keyboard.slint
│ └── wgpu_texture/
│ ├── Cargo.toml
│ ├── README.md
│ ├── build.rs
│ ├── lib.rs
│ ├── main.rs
│ ├── scene.slint
│ └── shader.wgsl
├── flake.nix
├── helper_crates/
│ ├── const-field-offset/
│ │ ├── CHANGELOG.md
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── macro/
│ │ │ ├── Cargo.toml
│ │ │ └── macro.rs
│ │ ├── src/
│ │ │ └── lib.rs
│ │ └── tests/
│ │ └── test_field_offset.rs
│ └── vtable/
│ ├── CHANGELOG.md
│ ├── Cargo.toml
│ ├── README.md
│ ├── macro/
│ │ ├── Cargo.toml
│ │ └── macro.rs
│ ├── src/
│ │ ├── compile_fail_tests.rs
│ │ ├── lib.rs
│ │ └── vrc.rs
│ └── tests/
│ ├── test_vrc.rs
│ └── test_vtable.rs
├── internal/
│ ├── backends/
│ │ ├── android-activity/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── androidwindowadapter.rs
│ │ │ ├── build.rs
│ │ │ ├── java/
│ │ │ │ └── SlintAndroidJavaHelper.java
│ │ │ ├── javahelper.rs
│ │ │ └── lib.rs
│ │ ├── linuxkms/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── calloop_backend/
│ │ │ │ └── input.rs
│ │ │ ├── calloop_backend.rs
│ │ │ ├── display/
│ │ │ │ ├── gbmdisplay.rs
│ │ │ │ ├── swdisplay/
│ │ │ │ │ ├── dumbbuffer.rs
│ │ │ │ │ └── linuxfb.rs
│ │ │ │ ├── swdisplay.rs
│ │ │ │ └── vulkandisplay.rs
│ │ │ ├── display.rs
│ │ │ ├── drmoutput.rs
│ │ │ ├── fullscreenwindowadapter.rs
│ │ │ ├── lib.rs
│ │ │ ├── noop_backend.rs
│ │ │ └── renderer/
│ │ │ ├── femtovg.rs
│ │ │ ├── skia.rs
│ │ │ └── sw.rs
│ │ ├── qt/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── accessible_generated.rs
│ │ │ ├── build.rs
│ │ │ ├── key_generated.rs
│ │ │ ├── lib.rs
│ │ │ ├── qt_accessible.rs
│ │ │ ├── qt_widgets/
│ │ │ │ ├── button.rs
│ │ │ │ ├── checkbox.rs
│ │ │ │ ├── combobox.rs
│ │ │ │ ├── groupbox.rs
│ │ │ │ ├── lineedit.rs
│ │ │ │ ├── listviewitem.rs
│ │ │ │ ├── palette.rs
│ │ │ │ ├── progress_indicator.rs
│ │ │ │ ├── scrollview.rs
│ │ │ │ ├── slider.rs
│ │ │ │ ├── spinbox.rs
│ │ │ │ ├── stylemetrics.rs
│ │ │ │ ├── tableheadersection.rs
│ │ │ │ └── tabwidget.rs
│ │ │ ├── qt_widgets.rs
│ │ │ └── qt_window.rs
│ │ ├── selector/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── api.rs
│ │ │ ├── build.rs
│ │ │ └── lib.rs
│ │ ├── testing/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ ├── build.rs
│ │ │ ├── ffi.rs
│ │ │ ├── internal_tests.rs
│ │ │ ├── lib.rs
│ │ │ ├── search_api.rs
│ │ │ ├── slint_systest.proto
│ │ │ ├── systest.rs
│ │ │ ├── testing_backend.rs
│ │ │ └── tests/
│ │ │ ├── click.rs
│ │ │ └── layout_kind.rs
│ │ └── winit/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── accesskit.rs
│ │ ├── build.rs
│ │ ├── clipboard.rs
│ │ ├── drag_resize_window.rs
│ │ ├── event_loop.rs
│ │ ├── frame_throttle.rs
│ │ ├── ios/
│ │ │ ├── keyboard_animator.rs
│ │ │ └── virtual_keyboard.rs
│ │ ├── ios.rs
│ │ ├── lib.rs
│ │ ├── muda.rs
│ │ ├── renderer/
│ │ │ ├── femtovg/
│ │ │ │ └── glcontext.rs
│ │ │ ├── femtovg.rs
│ │ │ ├── skia.rs
│ │ │ └── sw.rs
│ │ ├── tests/
│ │ │ └── menubar_borrow.rs
│ │ ├── wasm_input_helper.rs
│ │ ├── winitwindowadapter.rs
│ │ └── xdg_color_scheme.rs
│ ├── common/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── builtin_structs.rs
│ │ ├── color_parsing.rs
│ │ ├── enums.rs
│ │ ├── key_codes.rs
│ │ ├── lib.rs
│ │ ├── sharedfontique/
│ │ │ └── DejaVuSans.ttf.license
│ │ ├── sharedfontique.rs
│ │ └── styled_text.rs
│ ├── compiler/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── benches/
│ │ │ └── semantic_analysis.rs
│ │ ├── build.rs
│ │ ├── builtin_macros.rs
│ │ ├── builtins.slint
│ │ ├── diagnostics.rs
│ │ ├── embedded_resources.rs
│ │ ├── expression_tree.rs
│ │ ├── fileaccess.rs
│ │ ├── generator/
│ │ │ ├── cpp.rs
│ │ │ ├── cpp_live_preview.rs
│ │ │ ├── python/
│ │ │ │ └── diff.rs
│ │ │ ├── python.rs
│ │ │ ├── rust.rs
│ │ │ └── rust_live_preview.rs
│ │ ├── generator.rs
│ │ ├── langtype.rs
│ │ ├── layout.rs
│ │ ├── lexer.rs
│ │ ├── lib.rs
│ │ ├── literals.rs
│ │ ├── llr/
│ │ │ ├── expression.rs
│ │ │ ├── item_tree.rs
│ │ │ ├── lower_expression.rs
│ │ │ ├── lower_layout_expression.rs
│ │ │ ├── lower_to_item_tree.rs
│ │ │ ├── optim_passes/
│ │ │ │ ├── count_property_use.rs
│ │ │ │ ├── inline_expressions.rs
│ │ │ │ └── remove_unused.rs
│ │ │ └── pretty_print.rs
│ │ ├── llr.rs
│ │ ├── load_builtins.rs
│ │ ├── lookup.rs
│ │ ├── namedreference.rs
│ │ ├── object_tree/
│ │ │ └── interfaces.rs
│ │ ├── object_tree.rs
│ │ ├── parser/
│ │ │ ├── document.rs
│ │ │ ├── element.rs
│ │ │ ├── expressions.rs
│ │ │ ├── statements.rs
│ │ │ └── type.rs
│ │ ├── parser-test-macro/
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── lib.rs
│ │ ├── parser.rs
│ │ ├── passes/
│ │ │ ├── apply_default_properties_from_style.rs
│ │ │ ├── binding_analysis.rs
│ │ │ ├── border_radius.rs
│ │ │ ├── check_expressions.rs
│ │ │ ├── check_public_api.rs
│ │ │ ├── clip.rs
│ │ │ ├── collect_custom_fonts.rs
│ │ │ ├── collect_globals.rs
│ │ │ ├── collect_init_code.rs
│ │ │ ├── collect_libraries.rs
│ │ │ ├── collect_structs_and_enums.rs
│ │ │ ├── collect_subcomponents.rs
│ │ │ ├── compile_paths.rs
│ │ │ ├── const_propagation.rs
│ │ │ ├── deduplicate_property_read.rs
│ │ │ ├── default_geometry.rs
│ │ │ ├── deprecated_rotation_origin.rs
│ │ │ ├── embed_glyphs.rs
│ │ │ ├── embed_images.rs
│ │ │ ├── flickable.rs
│ │ │ ├── focus_handling.rs
│ │ │ ├── generate_item_indices.rs
│ │ │ ├── infer_aliases_types.rs
│ │ │ ├── inject_debug_hooks.rs
│ │ │ ├── inlining.rs
│ │ │ ├── key_bindings.rs
│ │ │ ├── lower_absolute_coordinates.rs
│ │ │ ├── lower_accessibility.rs
│ │ │ ├── lower_component_container.rs
│ │ │ ├── lower_layout.rs
│ │ │ ├── lower_menus.rs
│ │ │ ├── lower_platform.rs
│ │ │ ├── lower_popups.rs
│ │ │ ├── lower_property_to_element.rs
│ │ │ ├── lower_repeated_rows.rs
│ │ │ ├── lower_shadows.rs
│ │ │ ├── lower_states.rs
│ │ │ ├── lower_tabwidget.rs
│ │ │ ├── lower_text_input_interface.rs
│ │ │ ├── lower_timers.rs
│ │ │ ├── materialize_fake_properties.rs
│ │ │ ├── move_declarations.rs
│ │ │ ├── optimize_useless_rectangles.rs
│ │ │ ├── purity_check.rs
│ │ │ ├── remove_aliases.rs
│ │ │ ├── remove_return.rs
│ │ │ ├── remove_unused_properties.rs
│ │ │ ├── repeater_component.rs
│ │ │ ├── resolve_native_classes.rs
│ │ │ ├── resolving/
│ │ │ │ └── remove_noop.rs
│ │ │ ├── resolving.rs
│ │ │ ├── unique_id.rs
│ │ │ ├── visible.rs
│ │ │ ├── windows.rs
│ │ │ └── z_order.rs
│ │ ├── passes.rs
│ │ ├── pathutils.rs
│ │ ├── tests/
│ │ │ ├── consistent_styles.rs
│ │ │ ├── syntax/
│ │ │ │ ├── accessibility/
│ │ │ │ │ └── accessible_properties.slint
│ │ │ │ ├── analysis/
│ │ │ │ │ ├── binding_loop1.slint
│ │ │ │ │ ├── binding_loop2.slint
│ │ │ │ │ ├── binding_loop_function.slint
│ │ │ │ │ ├── binding_loop_image.slint
│ │ │ │ │ ├── binding_loop_issue_772.slint
│ │ │ │ │ ├── binding_loop_layout.slint
│ │ │ │ │ ├── binding_loop_layout2.slint
│ │ │ │ │ ├── binding_loop_layout3.slint
│ │ │ │ │ ├── binding_loop_layout4.slint
│ │ │ │ │ ├── binding_loop_layout_if.slint
│ │ │ │ │ ├── binding_loop_mappointtowindow.slint
│ │ │ │ │ ├── binding_loop_popupwindow.slint
│ │ │ │ │ ├── binding_loop_self.slint
│ │ │ │ │ ├── binding_loop_text.slint
│ │ │ │ │ ├── binding_loop_window.slint
│ │ │ │ │ └── binding_loop_window2.slint
│ │ │ │ ├── basic/
│ │ │ │ │ ├── animate.slint
│ │ │ │ │ ├── array.slint
│ │ │ │ │ ├── assign.slint
│ │ │ │ │ ├── bom-simple.slint
│ │ │ │ │ ├── box_shadow.slint
│ │ │ │ │ ├── children_placeholder.slint
│ │ │ │ │ ├── clip.slint
│ │ │ │ │ ├── comments.slint
│ │ │ │ │ ├── conic-gradient.slint
│ │ │ │ │ ├── dialog.slint
│ │ │ │ │ ├── dialog2.slint
│ │ │ │ │ ├── double_binding.slint
│ │ │ │ │ ├── double_color.slint
│ │ │ │ │ ├── duplicated_id.slint
│ │ │ │ │ ├── easing.slint
│ │ │ │ │ ├── easing_not_called.slint
│ │ │ │ │ ├── empty.slint
│ │ │ │ │ ├── enums.slint
│ │ │ │ │ ├── for.slint
│ │ │ │ │ ├── for_range.slint
│ │ │ │ │ ├── gridlayout_binding_loop.slint
│ │ │ │ │ ├── gridlayout_no_mixing.slint
│ │ │ │ │ ├── image.slint
│ │ │ │ │ ├── inline_component.slint
│ │ │ │ │ ├── item_as_property.slint
│ │ │ │ │ ├── layout.slint
│ │ │ │ │ ├── let.slint
│ │ │ │ │ ├── linear-gradient.slint
│ │ │ │ │ ├── markdown.slint
│ │ │ │ │ ├── markdown_interpolation.slint
│ │ │ │ │ ├── object_in_binding.slint
│ │ │ │ │ ├── opacity.slint
│ │ │ │ │ ├── parse_error.slint
│ │ │ │ │ ├── path.slint
│ │ │ │ │ ├── path_commands.slint
│ │ │ │ │ ├── path_for.slint
│ │ │ │ │ ├── percent.slint
│ │ │ │ │ ├── popup.slint
│ │ │ │ │ ├── property_animation.slint
│ │ │ │ │ ├── property_declaration.slint
│ │ │ │ │ ├── property_declaration_in_component.slint
│ │ │ │ │ ├── radial-gradient.slint
│ │ │ │ │ ├── return.slint
│ │ │ │ │ ├── rotation-origin.slint
│ │ │ │ │ ├── rotation.slint
│ │ │ │ │ ├── rust-attr.slint
│ │ │ │ │ ├── self_assign.slint
│ │ │ │ │ ├── signal.slint
│ │ │ │ │ ├── states_transitions.slint
│ │ │ │ │ ├── states_transitions2.slint
│ │ │ │ │ ├── states_transitions3.slint
│ │ │ │ │ ├── states_two_way.slint
│ │ │ │ │ ├── sub_elements.slint
│ │ │ │ │ ├── supersimple.slint
│ │ │ │ │ ├── svg_path.slint
│ │ │ │ │ ├── tr.slint
│ │ │ │ │ ├── tr2.slint
│ │ │ │ │ ├── type_declaration.slint
│ │ │ │ │ └── unknown_item.slint
│ │ │ │ ├── callbacks/
│ │ │ │ │ ├── init.slint
│ │ │ │ │ └── property-changes.slint
│ │ │ │ ├── elements/
│ │ │ │ │ ├── component_container.slint
│ │ │ │ │ ├── contextmenu.slint
│ │ │ │ │ ├── contextmenu2.slint
│ │ │ │ │ ├── contextmenu3.slint
│ │ │ │ │ ├── key_binding_duplicate.slint
│ │ │ │ │ ├── key_binding_invalid.slint
│ │ │ │ │ ├── key_binding_valid.slint
│ │ │ │ │ ├── listview.slint
│ │ │ │ │ ├── menubar-lookup.slint
│ │ │ │ │ ├── menubar.slint
│ │ │ │ │ ├── menubar2.slint
│ │ │ │ │ ├── menubar3.slint
│ │ │ │ │ ├── menubar4.slint
│ │ │ │ │ ├── path.slint
│ │ │ │ │ ├── popup.slint
│ │ │ │ │ ├── popup2.slint
│ │ │ │ │ ├── popup3.slint
│ │ │ │ │ ├── sub-windows.slint
│ │ │ │ │ ├── tabwidget.slint
│ │ │ │ │ ├── tabwidget2.slint
│ │ │ │ │ ├── tabwidget3.slint
│ │ │ │ │ ├── text.slint
│ │ │ │ │ ├── timer.slint
│ │ │ │ │ └── timer2.slint
│ │ │ │ ├── exports/
│ │ │ │ │ ├── export_cross_source_duplicates.slint
│ │ │ │ │ ├── export_duplicates.slint
│ │ │ │ │ ├── export_empty.slint
│ │ │ │ │ ├── export_many_components.slint
│ │ │ │ │ ├── export_non_window.slint
│ │ │ │ │ ├── reexport2.slint
│ │ │ │ │ ├── reexport_duplicate.slint
│ │ │ │ │ ├── root_compo_export.slint
│ │ │ │ │ ├── root_compo_export2.slint
│ │ │ │ │ ├── root_compo_export3.slint
│ │ │ │ │ ├── single_global_missing_export.slint
│ │ │ │ │ └── unused_compo.slint
│ │ │ │ ├── expressions/
│ │ │ │ │ ├── arithmetic_op.slint
│ │ │ │ │ ├── at_keys_parser.slint
│ │ │ │ │ ├── at_keys_resolving.slint
│ │ │ │ │ ├── at_keys_valid.slint
│ │ │ │ │ ├── clamp.slint
│ │ │ │ │ ├── comparison_operator.slint
│ │ │ │ │ ├── comparison_operator2.slint
│ │ │ │ │ ├── condition_operator.slint
│ │ │ │ │ ├── image-url.slint
│ │ │ │ │ ├── image-url2.slint
│ │ │ │ │ ├── math-macro.slint
│ │ │ │ │ ├── minmax.slint
│ │ │ │ │ ├── noops.slint
│ │ │ │ │ ├── percent2.slint
│ │ │ │ │ ├── strings.slint
│ │ │ │ │ └── unary_op.slint
│ │ │ │ ├── focus/
│ │ │ │ │ ├── focus_invalid.slint
│ │ │ │ │ ├── focus_not_called.slint
│ │ │ │ │ ├── focus_wrong_args.slint
│ │ │ │ │ └── initial_focus_non_input.slint
│ │ │ │ ├── functions/
│ │ │ │ │ ├── function_double_qualified.slint
│ │ │ │ │ ├── functions.slint
│ │ │ │ │ ├── functions_call.slint
│ │ │ │ │ ├── functions_no_body.slint
│ │ │ │ │ ├── functions_purity.slint
│ │ │ │ │ └── functions_purity_recursive_5220.slint
│ │ │ │ ├── fuzzing/
│ │ │ │ │ ├── 6512.slint
│ │ │ │ │ ├── 6518.slint
│ │ │ │ │ ├── 6519.slint
│ │ │ │ │ ├── 6587.slint
│ │ │ │ │ ├── 6588.slint
│ │ │ │ │ ├── 6590.slint
│ │ │ │ │ ├── 6632.slint
│ │ │ │ │ ├── 6650.slint
│ │ │ │ │ ├── 6979.slint
│ │ │ │ │ └── 7095.slint
│ │ │ │ ├── imports/
│ │ │ │ │ ├── bug_2719.slint
│ │ │ │ │ ├── bug_3674_alias-from-broken-import.slint
│ │ │ │ │ ├── cyclic_import.slint
│ │ │ │ │ ├── error_in_import.slint
│ │ │ │ │ ├── error_in_import2.slint
│ │ │ │ │ ├── error_in_import3.slint
│ │ │ │ │ ├── font.slint
│ │ │ │ │ ├── import_builtin.slint
│ │ │ │ │ ├── import_error2.slint
│ │ │ │ │ ├── import_errors.slint
│ │ │ │ │ ├── import_parse_error1.slint
│ │ │ │ │ ├── import_parse_error2.slint
│ │ │ │ │ ├── import_parse_error3.slint
│ │ │ │ │ ├── import_parse_error4.slint
│ │ │ │ │ ├── import_parse_error5.slint
│ │ │ │ │ ├── import_parse_error6.slint
│ │ │ │ │ ├── import_parse_error7.slint
│ │ │ │ │ ├── import_style_base.slint
│ │ │ │ │ ├── invalid_export.slint
│ │ │ │ │ ├── just_import.slint
│ │ │ │ │ ├── library.slint
│ │ │ │ │ └── visibility_errors.slint
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── callbacks.slint
│ │ │ │ │ ├── global_interfaces.slint
│ │ │ │ │ ├── interface_export.slint
│ │ │ │ │ ├── interface_functions.slint
│ │ │ │ │ ├── interface_implements.slint
│ │ │ │ │ ├── interface_inheritance.slint
│ │ │ │ │ ├── interface_invalid_content.slint
│ │ │ │ │ ├── interface_properties.slint
│ │ │ │ │ ├── interface_uses1.slint
│ │ │ │ │ ├── interface_uses2.slint
│ │ │ │ │ ├── interface_uses3.slint
│ │ │ │ │ ├── interfaces.slint
│ │ │ │ │ ├── interfaces_colon_equal.slint
│ │ │ │ │ └── uses_errors.slint
│ │ │ │ ├── layout/
│ │ │ │ │ ├── flexbox_layout_properties.slint
│ │ │ │ │ ├── flexbox_stretch_warning.slint
│ │ │ │ │ ├── grid_layout_properties.slint
│ │ │ │ │ ├── if_in_grid_row.slint
│ │ │ │ │ ├── min_max_conflict.slint
│ │ │ │ │ ├── padding.slint
│ │ │ │ │ ├── repeated_in_repeated_row.slint
│ │ │ │ │ └── spacing.slint
│ │ │ │ ├── lookup/
│ │ │ │ │ ├── absolute-position.slint
│ │ │ │ │ ├── array_index.slint
│ │ │ │ │ ├── callback_alias.slint
│ │ │ │ │ ├── callback_alias2.slint
│ │ │ │ │ ├── callback_alias3.slint
│ │ │ │ │ ├── callback_alias_global.slint
│ │ │ │ │ ├── callback_alias_issue4938.slint
│ │ │ │ │ ├── callback_not_called.slint
│ │ │ │ │ ├── callback_return.slint
│ │ │ │ │ ├── color.slint
│ │ │ │ │ ├── conversion.slint
│ │ │ │ │ ├── dashes.slint
│ │ │ │ │ ├── deprecated_property.slint
│ │ │ │ │ ├── easing.slint
│ │ │ │ │ ├── enum.slint
│ │ │ │ │ ├── for_lookup.slint
│ │ │ │ │ ├── global.slint
│ │ │ │ │ ├── if.slint
│ │ │ │ │ ├── issue_1461.slint
│ │ │ │ │ ├── issue_5246_states_function.slint
│ │ │ │ │ ├── name_reuse.slint
│ │ │ │ │ ├── property.slint
│ │ │ │ │ ├── recover_id_lookup.slint
│ │ │ │ │ ├── signal_arg.slint
│ │ │ │ │ ├── two_way_binding.slint
│ │ │ │ │ ├── two_way_binding_infer.slint
│ │ │ │ │ └── two_way_binding_model.slint
│ │ │ │ ├── new_syntax/
│ │ │ │ │ ├── deprecated_syntax.slint
│ │ │ │ │ ├── input_output.slint
│ │ │ │ │ ├── input_output2.slint
│ │ │ │ │ ├── new_component.slint
│ │ │ │ │ ├── new_lookup.slint
│ │ │ │ │ └── two_way_input_output.slint
│ │ │ │ └── parse_error/
│ │ │ │ ├── children_placeholder0.slint
│ │ │ │ ├── export0.slint
│ │ │ │ ├── export1.slint
│ │ │ │ ├── for0.slint
│ │ │ │ ├── if0.slint
│ │ │ │ ├── if1.slint
│ │ │ │ ├── if2.slint
│ │ │ │ ├── if3.slint
│ │ │ │ ├── if4.slint
│ │ │ │ ├── non_ascii.slint
│ │ │ │ ├── property1.slint
│ │ │ │ ├── property2.slint
│ │ │ │ ├── state1.slint
│ │ │ │ ├── state2.slint
│ │ │ │ ├── state3.slint
│ │ │ │ ├── struct.slint
│ │ │ │ └── sub.slint
│ │ │ ├── syntax_tests.rs
│ │ │ └── typeloader/
│ │ │ ├── custom_style/
│ │ │ │ └── TestStyle/
│ │ │ │ └── std-widgets.slint
│ │ │ ├── dependency_local.slint
│ │ │ ├── dependency_test_main.slint
│ │ │ ├── incpath/
│ │ │ │ ├── bug_2719_import.slint
│ │ │ │ ├── bug_3674_alias_from_invalid_import.slint
│ │ │ │ ├── dependency_from_incpath.slint
│ │ │ │ ├── local_helper_type.slint
│ │ │ │ ├── should_fail.slint
│ │ │ │ ├── should_fail2.slint
│ │ │ │ ├── should_fail3.slint
│ │ │ │ └── should_fail4.slint
│ │ │ ├── library/
│ │ │ │ ├── dependency_from_library.slint
│ │ │ │ ├── lib.slint
│ │ │ │ └── library_helper_type.slint
│ │ │ ├── recursive_import1.slint
│ │ │ ├── recursive_import2.slint
│ │ │ └── some_rust_file.rs
│ │ ├── translations.rs
│ │ ├── typeloader.rs
│ │ ├── typeregister.rs
│ │ └── widgets/
│ │ ├── common/
│ │ │ ├── about-slint.slint
│ │ │ ├── combobox-base.slint
│ │ │ ├── datepicker_base.slint
│ │ │ ├── internal-components.slint
│ │ │ ├── layout.slint
│ │ │ ├── lineedit-base.slint
│ │ │ ├── listview.slint
│ │ │ ├── menu-base.slint
│ │ │ ├── menus.slint
│ │ │ ├── slider-base.slint
│ │ │ ├── spinbox-base.slint
│ │ │ ├── spinner-base.slint
│ │ │ ├── standardbutton.slint
│ │ │ ├── tabwidget-base.slint
│ │ │ ├── textedit-base.slint
│ │ │ └── time-picker-base.slint
│ │ ├── cosmic/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── cupertino/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── fluent/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ ├── material/
│ │ │ ├── button.slint
│ │ │ ├── checkbox.slint
│ │ │ ├── color-scheme.slint
│ │ │ ├── combobox.slint
│ │ │ ├── components.slint
│ │ │ ├── datepicker.slint
│ │ │ ├── groupbox.slint
│ │ │ ├── lineedit.slint
│ │ │ ├── menu.slint
│ │ │ ├── progressindicator.slint
│ │ │ ├── scrollview.slint
│ │ │ ├── slider.slint
│ │ │ ├── spinbox.slint
│ │ │ ├── spinner.slint
│ │ │ ├── std-widgets-impl.slint
│ │ │ ├── std-widgets.slint
│ │ │ ├── style-base.slint
│ │ │ ├── styling.slint
│ │ │ ├── switch.slint
│ │ │ ├── tableview.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── textedit.slint
│ │ │ └── time-picker.slint
│ │ └── qt/
│ │ ├── button.slint
│ │ ├── checkbox.slint
│ │ ├── combobox.slint
│ │ ├── datepicker.slint
│ │ ├── groupbox.slint
│ │ ├── internal-scrollview.slint
│ │ ├── lineedit.slint
│ │ ├── menu.slint
│ │ ├── progressindicator.slint
│ │ ├── scrollview.slint
│ │ ├── slider.slint
│ │ ├── spinbox.slint
│ │ ├── spinner.slint
│ │ ├── std-widgets-impl.slint
│ │ ├── std-widgets.slint
│ │ ├── style-base.slint
│ │ ├── styling.slint
│ │ ├── switch.slint
│ │ ├── tableview.slint
│ │ ├── tabwidget.slint
│ │ ├── textedit.slint
│ │ └── time-picker.slint
│ ├── core/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── accessibility.rs
│ │ ├── animations/
│ │ │ └── physics_simulation.rs
│ │ ├── animations.rs
│ │ ├── api.rs
│ │ ├── callbacks.rs
│ │ ├── component_factory.rs
│ │ ├── context.rs
│ │ ├── date_time.rs
│ │ ├── future.rs
│ │ ├── gdb_pretty_printers.py
│ │ ├── graphics/
│ │ │ ├── bitmapfont.rs
│ │ │ ├── border_radius.rs
│ │ │ ├── boxshadowcache.rs
│ │ │ ├── brush.rs
│ │ │ ├── color.rs
│ │ │ ├── image/
│ │ │ │ ├── cache.rs
│ │ │ │ ├── htmlimage.rs
│ │ │ │ └── svg.rs
│ │ │ ├── image.rs
│ │ │ ├── path.rs
│ │ │ ├── rendering_metrics_collector.rs
│ │ │ ├── wgpu_27.rs
│ │ │ └── wgpu_28.rs
│ │ ├── graphics.rs
│ │ ├── input.rs
│ │ ├── item_focus.rs
│ │ ├── item_rendering.rs
│ │ ├── item_tree.rs
│ │ ├── items/
│ │ │ ├── component_container.rs
│ │ │ ├── drag_n_drop.rs
│ │ │ ├── flickable.rs
│ │ │ ├── image.rs
│ │ │ ├── input_items.rs
│ │ │ ├── path.rs
│ │ │ └── text.rs
│ │ ├── items.rs
│ │ ├── layout.rs
│ │ ├── lengths.rs
│ │ ├── lib.rs
│ │ ├── menus.rs
│ │ ├── model/
│ │ │ ├── adapters.rs
│ │ │ └── model_peer.rs
│ │ ├── model.rs
│ │ ├── partial_renderer.rs
│ │ ├── platform.rs
│ │ ├── properties/
│ │ │ ├── change_tracker.rs
│ │ │ ├── ffi.rs
│ │ │ └── properties_animations.rs
│ │ ├── properties.rs
│ │ ├── renderer.rs
│ │ ├── rtti.rs
│ │ ├── sharedvector.rs
│ │ ├── slice.rs
│ │ ├── string.rs
│ │ ├── styled_text.rs
│ │ ├── tests.rs
│ │ ├── textlayout/
│ │ │ ├── fragments.rs
│ │ │ ├── glyphclusters.rs
│ │ │ ├── linebreak_simple.rs
│ │ │ ├── linebreak_unicode.rs
│ │ │ ├── linebreaker.rs
│ │ │ ├── shaping.rs
│ │ │ └── sharedparley.rs
│ │ ├── textlayout.rs
│ │ ├── timers.rs
│ │ ├── translations.rs
│ │ ├── unsafe_single_threaded.rs
│ │ ├── window/
│ │ │ └── popup.rs
│ │ └── window.rs
│ ├── core-macros/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── lib.rs
│ │ ├── link-data.json
│ │ └── slint_doc.rs
│ ├── interpreter/
│ │ ├── Cargo.toml
│ │ ├── api.rs
│ │ ├── dynamic_item_tree.rs
│ │ ├── dynamic_type.rs
│ │ ├── eval.rs
│ │ ├── eval_layout.rs
│ │ ├── ffi.rs
│ │ ├── global_component.rs
│ │ ├── highlight.rs
│ │ ├── json.rs
│ │ ├── lib.rs
│ │ ├── live_preview.rs
│ │ ├── tests.rs
│ │ └── value_model.rs
│ └── renderers/
│ ├── femtovg/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── font_cache.rs
│ │ ├── images.rs
│ │ ├── itemrenderer.rs
│ │ ├── lib.rs
│ │ ├── opengl.rs
│ │ └── wgpu.rs
│ ├── skia/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── cached_image.rs
│ │ ├── d3d_surface.rs
│ │ ├── font_cache.rs
│ │ ├── itemrenderer.rs
│ │ ├── lib.rs
│ │ ├── metal_surface.rs
│ │ ├── opengl_surface.rs
│ │ ├── software_surface.rs
│ │ ├── vulkan_surface.rs
│ │ ├── wgpu_27_surface/
│ │ │ ├── dx12.rs
│ │ │ ├── metal.rs
│ │ │ └── vulkan.rs
│ │ ├── wgpu_27_surface.rs
│ │ ├── wgpu_28_surface/
│ │ │ ├── dx12.rs
│ │ │ ├── metal.rs
│ │ │ └── vulkan.rs
│ │ └── wgpu_28_surface.rs
│ └── software/
│ ├── Cargo.toml
│ ├── README.md
│ ├── draw_functions.rs
│ ├── fixed.rs
│ ├── fonts/
│ │ ├── pixelfont.rs
│ │ ├── systemfonts.rs
│ │ └── vectorfont.rs
│ ├── fonts.rs
│ ├── lib.rs
│ ├── minimal_software_window.rs
│ ├── path.rs
│ ├── scene.rs
│ └── target_pixel_buffer.rs
├── knip.json
├── logo/
│ ├── README.md
│ └── slint-logo.icns
├── package.json
├── pnpm-workspace.yaml
├── rustfmt.toml
├── scripts/
│ ├── build_for_ios_with_cargo.bash
│ ├── pre-commit-clippy.sh
│ ├── prepare_binary_package.sh
│ ├── prepare_vscode_nightly.sh
│ ├── publish.sh
│ └── run_clippy.sh
├── tests/
│ ├── cases/
│ │ ├── absolute_coords.slint
│ │ ├── absolute_coords2.slint
│ │ ├── accessibility/
│ │ │ ├── accessible_id.slint
│ │ │ ├── actions.slint
│ │ │ └── materialized.slint
│ │ ├── bindings/
│ │ │ ├── animated_default_geometry.slint
│ │ │ ├── change_sub_property.slint
│ │ │ ├── change_sub_property2.slint
│ │ │ ├── change_sub_property_indirection.slint
│ │ │ ├── change_sub_property_indirection_issue2185.slint
│ │ │ ├── issue_1026_opacity_alias.slint
│ │ │ ├── issue_10704_two_way_if.slint
│ │ │ ├── issue_345_opacity_animation.slint
│ │ │ ├── issue_385_default_geom.slint
│ │ │ ├── multiple_two_way.slint
│ │ │ ├── override.slint
│ │ │ ├── two_way_binding.slint
│ │ │ ├── two_way_binding2.slint
│ │ │ ├── two_way_binding_animation.slint
│ │ │ ├── two_way_binding_extra.slint
│ │ │ ├── two_way_binding_structs.slint
│ │ │ ├── two_way_binding_structs2.slint
│ │ │ ├── two_way_bug.slint
│ │ │ ├── two_way_deep.slint
│ │ │ ├── two_way_global.slint
│ │ │ ├── two_way_model.slint
│ │ │ ├── two_way_priority.slint
│ │ │ ├── two_way_priority_default.slint
│ │ │ └── two_way_simple.slint
│ │ ├── callbacks/
│ │ │ ├── callback_alias.slint
│ │ │ ├── callback_conn.slint
│ │ │ ├── callback_name_conflicts.slint
│ │ │ ├── functions.slint
│ │ │ ├── handler.slint
│ │ │ ├── handler_with_arg.slint
│ │ │ ├── init.slint
│ │ │ ├── init_access_base_compo.slint
│ │ │ ├── init_layout.slint
│ │ │ ├── init_listview.slint
│ │ │ ├── init_popup.slint
│ │ │ └── return_value.slint
│ │ ├── children/
│ │ │ ├── children_in_clip.slint
│ │ │ ├── children_in_row.slint
│ │ │ ├── children_placeholder.slint
│ │ │ ├── children_placeholder_5865.slint
│ │ │ ├── children_placeholder_three_levels.slint
│ │ │ ├── children_placeholder_two_levels.slint
│ │ │ ├── timer_next_to_children.slint
│ │ │ └── zorder.slint
│ │ ├── conditional/
│ │ │ ├── cast.slint
│ │ │ ├── expr.slint
│ │ │ ├── stm.slint
│ │ │ └── stm2.slint
│ │ ├── crashes/
│ │ │ ├── access_elided_prop.slint
│ │ │ ├── access_moved_propdecl.slint
│ │ │ ├── alias_in_if.slint
│ │ │ ├── empty_listview.slint
│ │ │ ├── issue1113_popup_in_repeater.slint
│ │ │ ├── issue1267_opacity_in_layout.slint
│ │ │ ├── issue1271_set_in_if.slint
│ │ │ ├── issue1327_inlined_state_property.slint
│ │ │ ├── issue1659_combobox_in_tab.slint
│ │ │ ├── issue173_uninitialized_globals.slint
│ │ │ ├── issue3589_layout_click_deletes_item.slint
│ │ │ ├── issue5259_popup_in_row.slint
│ │ │ ├── issue6721_struct_convert.slint
│ │ │ ├── issue9141_path_commands.slint
│ │ │ ├── issue_1009_const_alias.slint
│ │ │ ├── issue_10927_struct_field_in_for_if.slint
│ │ │ ├── issue_1233_listview_const_shadow.slint
│ │ │ ├── issue_2274_const_state_crash.slint
│ │ │ ├── issue_4002_width_alias.slint
│ │ │ ├── issue_422_enclosing_component.slint
│ │ │ ├── issue_6984_cross_global.slint
│ │ │ ├── issue_7316_changed_visibility.slint
│ │ │ ├── issue_983_listview_const_width.slint
│ │ │ ├── layout_deleted_item.slint
│ │ │ ├── layout_if_in_component.slint
│ │ │ ├── link_two_way_geometry_if.slint
│ │ │ ├── optimized_item_shadow.slint
│ │ │ ├── optimized_popup_parent.slint
│ │ │ ├── shadow_fixed_width.slint
│ │ │ ├── subsubcomponent.slint
│ │ │ ├── subsubcomponent2.slint
│ │ │ └── unused_callback_alias.slint
│ │ ├── elements/
│ │ │ ├── component_container.slint
│ │ │ ├── component_container_component.slint
│ │ │ ├── component_container_init.slint
│ │ │ ├── component_container_size.slint
│ │ │ ├── contextmenu_delete.slint
│ │ │ ├── contextmenu_for.slint
│ │ │ ├── contextmenu_in_repeater.slint
│ │ │ ├── deprecated_rotation-origin.slint
│ │ │ ├── dialog.slint
│ │ │ ├── dragarea_droparea.slint
│ │ │ ├── element_ref_on_root_compo.slint
│ │ │ ├── event_rotation.slint
│ │ │ ├── event_scaling.slint
│ │ │ ├── flickable.slint
│ │ │ ├── flickable2.slint
│ │ │ ├── flickable3.slint
│ │ │ ├── flickable_focus.slint
│ │ │ ├── flickable_in_flickable.slint
│ │ │ ├── flickable_stay_in_bounds.slint
│ │ │ ├── image.slint
│ │ │ ├── image_geometry.slint
│ │ │ ├── key_binding.slint
│ │ │ ├── listview-millions.slint
│ │ │ ├── listview.slint
│ │ │ ├── listview_click_open.slint
│ │ │ ├── listview_interactive_animation.slint
│ │ │ ├── listview_interactive_animation_xy_animation.slint
│ │ │ ├── menubar_condition.slint
│ │ │ ├── menubar_empty.slint
│ │ │ ├── menubar_for.slint
│ │ │ ├── path.slint
│ │ │ ├── path_fit.slint
│ │ │ ├── pinchgesturehandler.slint
│ │ │ ├── pinchgesturehandler_nested.slint
│ │ │ ├── popupwindow.slint
│ │ │ ├── popupwindow_close.slint
│ │ │ ├── popupwindow_close_policy.slint
│ │ │ ├── popupwindow_close_policy_inherited.slint
│ │ │ ├── popupwindow_context.slint
│ │ │ ├── popupwindow_cursor.slint
│ │ │ ├── popupwindow_inherits.slint
│ │ │ ├── popupwindow_nested.slint
│ │ │ ├── popupwindow_nested_close-on-click.slint
│ │ │ ├── popupwindow_open_twice.slint
│ │ │ ├── scaling2.slint
│ │ │ ├── styledtext.slint
│ │ │ ├── swipegesturehandler.slint
│ │ │ ├── swipegesturehandler2.slint
│ │ │ ├── tabwidget.slint
│ │ │ ├── timer.slint
│ │ │ ├── timer_start_stop_restart.slint
│ │ │ ├── togglebutton.slint
│ │ │ ├── toucharea.slint
│ │ │ └── toucharea_doubleclick.slint
│ │ ├── examples/
│ │ │ ├── box_shadow_use.slint
│ │ │ ├── color.slint
│ │ │ ├── colored_image.slint
│ │ │ ├── hello.slint
│ │ │ ├── image_fit.slint
│ │ │ ├── image_rendering.slint
│ │ │ ├── key_press.slint
│ │ │ ├── layer.slint
│ │ │ ├── opacity.slint
│ │ │ ├── path_fill_rule.slint
│ │ │ ├── path_line_join.slint
│ │ │ ├── path_viewbox.slint
│ │ │ ├── plusminus.slint
│ │ │ ├── rectangle_clip.slint
│ │ │ ├── rotate.slint
│ │ │ ├── sample_component.slint
│ │ │ └── window_default_font.slint
│ │ ├── exports/
│ │ │ ├── cpp_namespace.slint
│ │ │ ├── export_root.slint
│ │ │ ├── multiple_components.slint
│ │ │ └── named_exports.slint
│ │ ├── expr/
│ │ │ ├── abs.slint
│ │ │ ├── acos.slint
│ │ │ ├── animation_tick.slint
│ │ │ ├── arithmetic.slint
│ │ │ ├── asin.slint
│ │ │ ├── atan.slint
│ │ │ ├── atan2.slint
│ │ │ ├── ceil.slint
│ │ │ ├── clamp.slint
│ │ │ ├── comparison.slint
│ │ │ ├── cos.slint
│ │ │ ├── debug.slint
│ │ │ ├── exp.slint
│ │ │ ├── floor.slint
│ │ │ ├── let.slint
│ │ │ ├── ln.slint
│ │ │ ├── log.slint
│ │ │ ├── math.slint
│ │ │ ├── minmax.slint
│ │ │ ├── mod.slint
│ │ │ ├── pow.slint
│ │ │ ├── return.slint
│ │ │ ├── return2.slint
│ │ │ ├── return3.slint
│ │ │ ├── round.slint
│ │ │ ├── sign.slint
│ │ │ ├── sin.slint
│ │ │ ├── sqrt.slint
│ │ │ ├── string_concatenation.slint
│ │ │ ├── string_template.slint
│ │ │ ├── tan.slint
│ │ │ ├── to-fixed.slint
│ │ │ ├── to-precision.slint
│ │ │ ├── tr.slint
│ │ │ └── trigo.slint
│ │ ├── focus/
│ │ │ ├── 7058_scrolled_clip.slint
│ │ │ ├── clear_focus.slint
│ │ │ ├── event_propagation.slint
│ │ │ ├── event_propagation_2.slint
│ │ │ ├── event_propagation_3.slint
│ │ │ ├── focus_change.slint
│ │ │ ├── focus_change_event.slint
│ │ │ ├── focus_change_event_reason.slint
│ │ │ ├── focus_change_subcompo.slint
│ │ │ ├── focus_change_through_signal.slint
│ │ │ ├── focus_gained_and_lost.slint
│ │ │ ├── focus_policy.slint
│ │ │ ├── forward.slint
│ │ │ ├── hidden_programmatic.slint
│ │ │ ├── initial_focus.slint
│ │ │ ├── initial_focus_through_component.slint
│ │ │ ├── initial_focus_through_layout.slint
│ │ │ ├── keyboard_focus.slint
│ │ │ ├── keyboard_focus2.slint
│ │ │ ├── keyboard_focus_capture.slint
│ │ │ ├── listview-hidden.slint
│ │ │ ├── popupwindow_focus.slint
│ │ │ ├── text-input-focused-parent-deleted.slint
│ │ │ └── text-input-focused.slint
│ │ ├── globals/
│ │ │ ├── alias_to_global.slint
│ │ │ ├── global_accessor_api.slint
│ │ │ ├── global_alias.slint
│ │ │ ├── global_binding.slint
│ │ │ ├── global_binding_const.slint
│ │ │ ├── global_callback.slint
│ │ │ ├── global_depends_on_global.slint
│ │ │ └── issue_2064_two_way_default_value.slint
│ │ ├── imports/
│ │ │ ├── duplicated_name.slint
│ │ │ ├── exported_component.slint
│ │ │ ├── external_globals.slint
│ │ │ ├── external_globals_nameclash.slint
│ │ │ ├── external_interfaces.slint
│ │ │ ├── external_interfaces_as.slint
│ │ │ ├── external_structs.slint
│ │ │ ├── external_type.slint
│ │ │ ├── import_multi.slint
│ │ │ ├── just_import.slint
│ │ │ ├── library.slint
│ │ │ ├── reexport.slint
│ │ │ └── reexport2.slint
│ │ ├── input/
│ │ │ ├── clip_mouse.slint
│ │ │ ├── scroll-event.slint
│ │ │ └── visible_mouse.slint
│ │ ├── interfaces/
│ │ │ ├── callbacks.slint
│ │ │ ├── implements.slint
│ │ │ ├── implements_defaults.slint
│ │ │ ├── implements_inherits.slint
│ │ │ └── uses.slint
│ │ ├── issues/
│ │ │ ├── issue_10321_tab_focus_flickable.slint
│ │ │ ├── issue_10544_model_gaps.slint
│ │ │ ├── issue_10923_popupwindow-reshow.slint
│ │ │ ├── issue_1837_percent_comparison.slint
│ │ │ ├── issue_1846_visibility_in_for.slint
│ │ │ ├── issue_2483_access_spacing.slint
│ │ │ ├── issue_2598_listview_reuse_elem.slint
│ │ │ ├── issue_2608_canon_img_path.slint
│ │ │ ├── issue_2717_has-hover.slint
│ │ │ ├── issue_2780_listview_crash.slint
│ │ │ ├── issue_3107_if_optimized_rect.slint
│ │ │ ├── issue_3318_window_size.slint
│ │ │ ├── issue_3561_return_image.slint
│ │ │ ├── issue_4072_optimized_alias.slint
│ │ │ ├── issue_4163_flickable_parent_percent.slint
│ │ │ ├── issue_4241_alias-const.slint
│ │ │ ├── issue_4884_show_popup.slint
│ │ │ ├── issue_4942_no_else_value.slint
│ │ │ ├── issue_5146_init_animated.slint
│ │ │ ├── issue_5260_init_inlined.slint
│ │ │ ├── issue_5375_children_in_popup.slint
│ │ │ ├── issue_5500_panics_uninitialized_animation.slint
│ │ │ ├── issue_5883.slint
│ │ │ ├── issue_5887_struct_f64-f32.slint
│ │ │ ├── issue_6443_mouse-cursor.slint
│ │ │ ├── issue_6616_optimized_property_read.slint
│ │ │ ├── issue_6651_export_sort.slint
│ │ │ ├── issue_7811_inline_stack_overflow.slint
│ │ │ ├── issue_7848_timer_depends_model_data.slint
│ │ │ ├── issue_7864_condition_return_void.slint
│ │ │ ├── issue_8144_optimized-used.slint
│ │ │ ├── issue_8710_popup_show_from_changed.slint
│ │ │ ├── issue_9209_array_in_struct_conversion.slint
│ │ │ ├── issue_9546.slint
│ │ │ ├── issue_9722_popup_panic.slint
│ │ │ ├── issue_9765-two-way-binding-to-point.slint
│ │ │ ├── issue_9954_big-ifs.slint
│ │ │ ├── member_fun_from_parent.slint
│ │ │ └── name_conflicts.slint
│ │ ├── layout/
│ │ │ ├── box_alignment.slint
│ │ │ ├── box_percentages.slint
│ │ │ ├── box_preferred_size.slint
│ │ │ ├── default_fill.slint
│ │ │ ├── empty_layout.slint
│ │ │ ├── flexbox-inside-h-inside-v.slint
│ │ │ ├── flexbox-preferred-width.slint
│ │ │ ├── flexbox_align_content.slint
│ │ │ ├── flexbox_align_items.slint
│ │ │ ├── flexbox_alignment.slint
│ │ │ ├── flexbox_column_multiple_columns.slint
│ │ │ ├── flexbox_column_reverse.slint
│ │ │ ├── flexbox_column_spacing_and_padding.slint
│ │ │ ├── flexbox_column_varying_widths.slint
│ │ │ ├── flexbox_in_vertical_layout.slint
│ │ │ ├── flexbox_min_width.slint
│ │ │ ├── flexbox_multiple_rows.slint
│ │ │ ├── flexbox_oversized.slint
│ │ │ ├── flexbox_repeater.slint
│ │ │ ├── flexbox_repeater_column.slint
│ │ │ ├── flexbox_repeater_mixed.slint
│ │ │ ├── flexbox_row_reverse.slint
│ │ │ ├── flexbox_runtime_direction.slint
│ │ │ ├── flexbox_spacing_and_padding.slint
│ │ │ ├── flexbox_varying_heights.slint
│ │ │ ├── flickable_in_layout.slint
│ │ │ ├── geometry_center_by_default.slint
│ │ │ ├── grid2.slint
│ │ │ ├── grid_conditional_row_colspan.slint
│ │ │ ├── grid_empty_row.slint
│ │ │ ├── grid_fixed_size.slint
│ │ │ ├── grid_min_max.slint
│ │ │ ├── grid_nested_for_irregular.slint
│ │ │ ├── grid_padding.slint
│ │ │ ├── grid_preferred_size.slint
│ │ │ ├── grid_repeated_row_with_inner_if.slint
│ │ │ ├── grid_simple.slint
│ │ │ ├── grid_spacing.slint
│ │ │ ├── grid_span.slint
│ │ │ ├── grid_variable_row_col.slint
│ │ │ ├── grid_with_custom_row.slint
│ │ │ ├── grid_with_model_in_row.slint
│ │ │ ├── grid_with_nested_for_in_row.slint
│ │ │ ├── grid_with_repeated_rows.slint
│ │ │ ├── grid_with_x_y_model.slint
│ │ │ ├── grid_within_for.slint
│ │ │ ├── height_for_width.slint
│ │ │ ├── horizontal_for.slint
│ │ │ ├── horizontal_layout_percentages.slint
│ │ │ ├── horizontal_layout_percentages_multi_element.slint
│ │ │ ├── horizontal_sizes.slint
│ │ │ ├── issue6285_auto_explicit_restrictions.slint
│ │ │ ├── issue8091_overriden_padding.slint
│ │ │ ├── issue_1057_listview_subcomponent_height.slint
│ │ │ ├── issue_1072_opacity_geometry.slint
│ │ │ ├── issue_140.slint
│ │ │ ├── issue_147_for_explicit_size.slint
│ │ │ ├── issue_147_for_explicit_size_merge.slint
│ │ │ ├── issue_149_nested_for.slint
│ │ │ ├── issue_160_box_min_max.slint
│ │ │ ├── issue_167_if_relayout.slint
│ │ │ ├── issue_2537_visible_in_listview.slint
│ │ │ ├── issue_407_for_layout_in_flickable.slint
│ │ │ ├── issue_553_materialized_init.slint
│ │ │ ├── issue_7761_animated_pc_size.slint
│ │ │ ├── issue_783_constraint_from_children.slint
│ │ │ ├── materialized_minmax.slint
│ │ │ ├── nested_boxes.slint
│ │ │ ├── nested_grid_1.slint
│ │ │ ├── nested_grid_2.slint
│ │ │ ├── nested_grid_minmax.slint
│ │ │ ├── opacity_in_layout.slint
│ │ │ ├── override_from_parent.slint
│ │ │ ├── special_default_geometry.slint
│ │ │ ├── text_no_wrap.slint
│ │ │ ├── text_preferred_size.slint
│ │ │ ├── vertical_if.slint
│ │ │ ├── vertical_layout_percentages.slint
│ │ │ ├── vertical_layout_percentages_multi_element.slint
│ │ │ ├── window_fixed.slint
│ │ │ └── window_preferred.slint
│ │ ├── lookup/
│ │ │ ├── global_lookup.slint
│ │ │ ├── id_lookup.slint
│ │ │ ├── renamed_elements.slint
│ │ │ └── rust_names.slint
│ │ ├── models/
│ │ │ ├── array.slint
│ │ │ ├── assign_equal_model.slint
│ │ │ ├── delete_from_clicked.slint
│ │ │ ├── dirty_model.slint
│ │ │ ├── for.slint
│ │ │ ├── if.slint
│ │ │ ├── if_cond_property.slint
│ │ │ ├── if_dirty.slint
│ │ │ ├── if_lookup.slint
│ │ │ ├── indirect_model_changes.slint
│ │ │ ├── init_recursion.slint
│ │ │ ├── issue_4961_model_index_property.slint
│ │ │ ├── listview_model_change.slint
│ │ │ ├── model.slint
│ │ │ ├── model_in_struct.slint
│ │ │ ├── negative_intmodel.slint
│ │ │ ├── scrolled_model.slint
│ │ │ ├── write_to_model.slint
│ │ │ ├── write_to_model_listview.slint
│ │ │ └── write_to_model_sub_component.slint
│ │ ├── platform.slint
│ │ ├── properties/
│ │ │ ├── animation_bindings_reactive.slint
│ │ │ ├── animation_from_click.slint
│ │ │ ├── animation_from_click_in_repeated_4741.slint
│ │ │ ├── animation_merging.slint
│ │ │ ├── animation_props_depends.slint
│ │ │ ├── border_radius.slint
│ │ │ ├── changes.slint
│ │ │ ├── changes_alias.slint
│ │ │ ├── changes_loop.slint
│ │ │ ├── dashes.slint
│ │ │ ├── delayed_transitions.slint
│ │ │ ├── issue1237_states_visible.slint
│ │ │ ├── issue5038_state_in_base.slint
│ │ │ ├── property_animation.slint
│ │ │ ├── property_animation_restart.slint
│ │ │ ├── states.slint
│ │ │ ├── states_with_animation.slint
│ │ │ ├── transitions.slint
│ │ │ └── transitions2.slint
│ │ ├── simple.slint
│ │ ├── subcomponents/
│ │ │ ├── nested_repeater.slint
│ │ │ ├── no_children.slint
│ │ │ └── repeaters.slint
│ │ ├── test_infrastructure.slint
│ │ ├── testing/
│ │ │ ├── dynamic_components.slint
│ │ │ └── find_by_element_id_or_type.slint
│ │ ├── text/
│ │ │ ├── componentcontainer_font_size_propagation.slint
│ │ │ ├── control_keys_input.slint
│ │ │ ├── cursor_move.slint
│ │ │ ├── cursor_move_grapheme.slint
│ │ │ ├── custom_font.slint
│ │ │ ├── cut.slint
│ │ │ ├── default_color.slint
│ │ │ ├── font_size_propagation.slint
│ │ │ ├── input_type.slint
│ │ │ ├── input_type_decimal.slint
│ │ │ ├── input_type_number.slint
│ │ │ ├── key_repeat.slint
│ │ │ ├── keyboard_modifiers.slint
│ │ │ ├── metrics.slint
│ │ │ ├── select_all.slint
│ │ │ ├── select_double_click.slint
│ │ │ ├── select_dribble_click.slint
│ │ │ ├── surrogate_cursor.slint
│ │ │ ├── text_change.slint
│ │ │ ├── text_property_change.slint
│ │ │ ├── textinput_functions.slint
│ │ │ ├── textinput_keyevents.slint
│ │ │ └── undo_redo.slint
│ │ ├── translations/
│ │ │ ├── bundle.slint
│ │ │ ├── bundle_no_context.slint
│ │ │ ├── fr/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ └── bundle.po
│ │ │ └── up/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── bundle.po
│ │ │ └── bundle_no_context.po
│ │ ├── types/
│ │ │ ├── angles.slint
│ │ │ ├── array.slint
│ │ │ ├── array_of_array.slint
│ │ │ ├── bool.slint
│ │ │ ├── brush.slint
│ │ │ ├── color.slint
│ │ │ ├── conic_gradient.slint
│ │ │ ├── cubic-bezier.slint
│ │ │ ├── duration.slint
│ │ │ ├── easing.slint
│ │ │ ├── enum_compare.slint
│ │ │ ├── enums.slint
│ │ │ ├── functions.slint
│ │ │ ├── gradients.slint
│ │ │ ├── int_conversion.slint
│ │ │ ├── keys.slint
│ │ │ ├── length.slint
│ │ │ ├── nested_struct.slint
│ │ │ ├── object.slint
│ │ │ ├── percent.slint
│ │ │ ├── relative_lengths.slint
│ │ │ ├── rem.slint
│ │ │ ├── resource.slint
│ │ │ ├── string.slint
│ │ │ ├── string_character_count.slint
│ │ │ ├── string_to_float.slint
│ │ │ ├── string_to_lowercase.slint
│ │ │ ├── string_to_uppercase.slint
│ │ │ ├── structs.slint
│ │ │ ├── structs2.slint
│ │ │ ├── structs_keyword.slint
│ │ │ └── styled_text.slint
│ │ └── widgets/
│ │ ├── about.slint
│ │ ├── button.slint
│ │ ├── checkbox.slint
│ │ ├── combobox.slint
│ │ ├── contextmenu.slint
│ │ ├── datepicker.slint
│ │ ├── groupbox.slint
│ │ ├── lineedit.slint
│ │ ├── listview.slint
│ │ ├── menubar.slint
│ │ ├── scroll_event_propagation.slint
│ │ ├── scrollview.slint
│ │ ├── slider_basic.slint
│ │ ├── slider_default_value.slint
│ │ ├── spinbox_basic.slint
│ │ ├── spinbox_default_value.slint
│ │ ├── switch.slint
│ │ ├── tableview.slint
│ │ ├── tabwidget.slint
│ │ ├── textedit.slint
│ │ └── timepicker.slint
│ ├── doctests/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ └── main.rs
│ ├── driver/
│ │ ├── cpp/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── cppdriver.rs
│ │ │ └── main.rs
│ │ ├── driverlib/
│ │ │ ├── Cargo.toml
│ │ │ └── lib.rs
│ │ ├── interpreter/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── interpreter.rs
│ │ │ └── main.rs
│ │ ├── nodejs/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── main.rs
│ │ │ └── nodejs.rs
│ │ ├── python/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── main.rs
│ │ │ └── python.rs
│ │ └── rust/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── main.rs
│ │ ├── template.rs
│ │ └── tests/
│ │ ├── 7guis.rs
│ │ ├── accessibility.rs
│ │ ├── bindings.rs
│ │ ├── callbacks.rs
│ │ ├── children.rs
│ │ ├── conditional.rs
│ │ ├── crashes.rs
│ │ ├── elements.rs
│ │ ├── examples.rs
│ │ ├── exports.rs
│ │ ├── expr.rs
│ │ ├── focus.rs
│ │ ├── globals.rs
│ │ ├── imports.rs
│ │ ├── input.rs
│ │ ├── interfaces.rs
│ │ ├── issues.rs
│ │ ├── layout.rs
│ │ ├── lookup.rs
│ │ ├── models.rs
│ │ ├── properties.rs
│ │ ├── subcomponents.rs
│ │ ├── testing.rs
│ │ ├── text.rs
│ │ ├── translations.rs
│ │ ├── types.rs
│ │ ├── widgets-cosmic.rs
│ │ ├── widgets-cupertino.rs
│ │ ├── widgets-fluent.rs
│ │ ├── widgets-material.rs
│ │ └── widgets-qt.rs
│ ├── helper_components/
│ │ ├── export_globals.slint
│ │ ├── export_interfaces.slint
│ │ ├── export_structs.slint
│ │ ├── issue_6651_implicit_export.slint
│ │ ├── main_window.slint
│ │ ├── re_export.slint
│ │ ├── re_export2.slint
│ │ ├── re_export_all.slint
│ │ └── test_button.slint
│ ├── manual/
│ │ ├── font-metrics.slint
│ │ ├── module-builds/
│ │ │ ├── app/
│ │ │ │ ├── Cargo.toml
│ │ │ │ ├── build.rs
│ │ │ │ ├── src/
│ │ │ │ │ └── main.rs
│ │ │ │ └── ui/
│ │ │ │ └── app-window.slint
│ │ │ ├── blogica/
│ │ │ │ ├── Cargo.toml
│ │ │ │ ├── build.rs
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.rs
│ │ │ │ └── ui/
│ │ │ │ └── blogica.slint
│ │ │ └── blogicb/
│ │ │ ├── Cargo.toml
│ │ │ ├── build.rs
│ │ │ ├── src/
│ │ │ │ └── lib.rs
│ │ │ └── ui/
│ │ │ └── blogicb.slint
│ │ ├── opacity_inheritance.slint
│ │ ├── partial-rendering-circus.slint
│ │ ├── path-stroke-cap.slint
│ │ └── windowattributes/
│ │ ├── Cargo.toml
│ │ └── main.rs
│ ├── run_tests.sh
│ └── screenshots/
│ ├── Cargo.toml
│ ├── build.rs
│ ├── cases/
│ │ ├── basic/
│ │ │ ├── border.slint
│ │ │ ├── conic-gradients.slint
│ │ │ ├── linear-gradients.slint
│ │ │ ├── nested-window-item.slint
│ │ │ ├── opacity-clip.slint
│ │ │ ├── radial-gradients.slint
│ │ │ ├── rgb.slint
│ │ │ ├── text_features.slint
│ │ │ └── translucent-background.slint
│ │ ├── image/
│ │ │ ├── border-image-repeat.slint
│ │ │ ├── border-image.slint
│ │ │ ├── border-image2.slint
│ │ │ ├── image-repeat.slint
│ │ │ ├── images-alignment.slint
│ │ │ ├── images-scale_factor.slint
│ │ │ └── images.slint
│ │ ├── path/
│ │ │ └── path.slint
│ │ └── text/
│ │ ├── set-selection-offsets.slint
│ │ ├── styled.slint
│ │ ├── text-clipped.slint
│ │ ├── text-elided.slint
│ │ ├── text-input-selection.slint
│ │ ├── text-input.slint
│ │ └── text.slint
│ ├── fonts/
│ │ ├── .gitignore
│ │ ├── NotoSans-Bold.ttf.license
│ │ ├── NotoSans-Italic.ttf.license
│ │ ├── NotoSans-Light.ttf.license
│ │ ├── NotoSans-Regular.ttf.license
│ │ └── convert.sh
│ ├── main.rs
│ ├── skia.rs
│ ├── software.rs
│ └── testing.rs
├── tools/
│ ├── compiler/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── main.rs
│ │ └── pyproject.toml
│ ├── docsnapper/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── headless.rs
│ │ └── main.rs
│ ├── figma-inspector/
│ │ ├── .gitignore
│ │ ├── PUBLISH.md
│ │ ├── README.md
│ │ ├── backend/
│ │ │ ├── code.ts
│ │ │ ├── tsconfig.json
│ │ │ └── utils/
│ │ │ ├── code-utils.ts
│ │ │ ├── export-variables.ts
│ │ │ └── property-parsing.ts
│ │ ├── biome.json
│ │ ├── figma.config.ts
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public-zip/
│ │ │ └── readme.txt
│ │ ├── shared/
│ │ │ └── universals.d.ts
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── DialogFrame.tsx
│ │ │ │ └── snippet/
│ │ │ │ ├── CodeSnippet.tsx
│ │ │ │ ├── dark-theme.json
│ │ │ │ └── light-theme.json
│ │ │ ├── globals.d.ts
│ │ │ ├── index-react.tsx
│ │ │ ├── main.css
│ │ │ ├── main.tsx
│ │ │ ├── utils/
│ │ │ │ ├── bolt-utils.ts
│ │ │ │ ├── store.ts
│ │ │ │ └── utils.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tests/
│ │ │ ├── export-variables.test.ts
│ │ │ ├── figma_output.json
│ │ │ └── property-parsing.test.ts
│ │ ├── tsconfig.json
│ │ ├── vite.config.code.ts
│ │ └── vite.config.ts
│ ├── figma_import/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── src/
│ │ ├── figmatypes.rs
│ │ ├── main.rs
│ │ └── rendered.rs
│ ├── lsp/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── build.rs
│ │ ├── common/
│ │ │ ├── component_catalog.rs
│ │ │ ├── document_cache.rs
│ │ │ ├── rename_component.rs
│ │ │ ├── rename_element_id.rs
│ │ │ ├── test.rs
│ │ │ ├── text_edit.rs
│ │ │ └── token_info.rs
│ │ ├── common.rs
│ │ ├── fmt/
│ │ │ ├── README.md
│ │ │ ├── fmt.rs
│ │ │ ├── tool.rs
│ │ │ └── writer.rs
│ │ ├── fmt.rs
│ │ ├── language/
│ │ │ ├── completion.rs
│ │ │ ├── formatting.rs
│ │ │ ├── goto.rs
│ │ │ ├── hover.rs
│ │ │ ├── semantic_tokens.rs
│ │ │ ├── signature_help.rs
│ │ │ └── test.rs
│ │ ├── language.rs
│ │ ├── main.rs
│ │ ├── preview/
│ │ │ ├── connector/
│ │ │ │ ├── native.rs
│ │ │ │ └── wasm.rs
│ │ │ ├── connector.rs
│ │ │ ├── debug.rs
│ │ │ ├── drop_location.rs
│ │ │ ├── element_selection.rs
│ │ │ ├── eval.rs
│ │ │ ├── ext.rs
│ │ │ ├── outline.rs
│ │ │ ├── preview_data.rs
│ │ │ ├── properties.rs
│ │ │ ├── ui/
│ │ │ │ ├── brushes.rs
│ │ │ │ ├── log_messages.rs
│ │ │ │ ├── palette.rs
│ │ │ │ ├── property_view.rs
│ │ │ │ ├── recent_colors.rs
│ │ │ │ └── search_model.rs
│ │ │ ├── ui.rs
│ │ │ └── undo_redo.rs
│ │ ├── preview.rs
│ │ ├── ui/
│ │ │ ├── api.slint
│ │ │ ├── assets/
│ │ │ │ ├── Inter-VariableFont.ttf.license
│ │ │ │ ├── SourceCodePro-Medium.ttf.license
│ │ │ │ └── dial.svg.license
│ │ │ ├── components/
│ │ │ │ ├── body-strong-text.slint
│ │ │ │ ├── body-text.slint
│ │ │ │ ├── console-panel.slint
│ │ │ │ ├── diagnostics-overlay.slint
│ │ │ │ ├── draggable-panel.slint
│ │ │ │ ├── expandable-group.slint
│ │ │ │ ├── expandable-listview.slint
│ │ │ │ ├── group.slint
│ │ │ │ ├── header-text.slint
│ │ │ │ ├── icon-button.slint
│ │ │ │ ├── layout-helpers.slint
│ │ │ │ ├── out-of-date-box.slint
│ │ │ │ ├── property-widgets.slint
│ │ │ │ ├── resizer.slint
│ │ │ │ ├── selection-popup.slint
│ │ │ │ ├── spreadsheet-dialog.slint
│ │ │ │ ├── spreadsheet.slint
│ │ │ │ ├── state-layer.slint
│ │ │ │ ├── status-line.slint
│ │ │ │ ├── styling.slint
│ │ │ │ └── widgets/
│ │ │ │ ├── basics.slint
│ │ │ │ ├── boolean-widget.slint
│ │ │ │ ├── brush-helpers.slint
│ │ │ │ ├── code-widget.slint
│ │ │ │ ├── color-basics.slint
│ │ │ │ ├── enum-widget.slint
│ │ │ │ ├── float-widget.slint
│ │ │ │ ├── floating-brush-picker-widget.slint
│ │ │ │ ├── floating-brush-sections/
│ │ │ │ │ ├── color-mode-and-apply.slint
│ │ │ │ │ ├── css-color-ui.slint
│ │ │ │ │ ├── gradient-ui.slint
│ │ │ │ │ └── palettes.slint
│ │ │ │ ├── gradient-basics.slint
│ │ │ │ ├── inline-brush-widget.slint
│ │ │ │ ├── integer-widget.slint
│ │ │ │ ├── json-widget.slint
│ │ │ │ ├── multi-value-widget.slint
│ │ │ │ ├── string-widget.slint
│ │ │ │ └── widget-helpers.slint
│ │ │ ├── main.slint
│ │ │ ├── views/
│ │ │ │ ├── header-view.slint
│ │ │ │ ├── library-view.slint
│ │ │ │ ├── outline-view.slint
│ │ │ │ ├── preview-data-view.slint
│ │ │ │ ├── preview-view.slint
│ │ │ │ └── property-view.slint
│ │ │ └── windowglobal.slint
│ │ ├── util.rs
│ │ └── wasm_main.rs
│ ├── slintpad/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── biome.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── preview.html
│ │ ├── src/
│ │ │ ├── dialogs.ts
│ │ │ ├── editor_widget.ts
│ │ │ ├── github.ts
│ │ │ ├── highlighting.ts
│ │ │ ├── index.ts
│ │ │ ├── lsp.ts
│ │ │ ├── preview.ts
│ │ │ ├── preview_widget.ts
│ │ │ ├── proxy.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── types.ts
│ │ │ └── worker/
│ │ │ ├── lsp_worker.ts
│ │ │ ├── monaco_worker.mjs
│ │ │ ├── tsconfig.json
│ │ │ └── types.ts
│ │ ├── styles/
│ │ │ ├── colors.css
│ │ │ ├── content.css
│ │ │ └── index.css
│ │ ├── tests/
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.default.json
│ │ ├── tsconfig.json
│ │ └── vite.config.mts
│ ├── tr-extractor/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── main.rs
│ ├── updater/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── experiments/
│ │ │ ├── geometry_changes.rs
│ │ │ ├── input_output_properties.rs
│ │ │ ├── lookup_changes.rs
│ │ │ ├── new_component_declaration.rs
│ │ │ ├── purity.rs
│ │ │ └── transitions.rs
│ │ ├── main.rs
│ │ └── transforms/
│ │ └── renames.rs
│ └── viewer/
│ ├── Cargo.toml
│ ├── README.md
│ └── main.rs
├── ui-libraries/
│ └── material/
│ ├── .gitignore
│ ├── docs/
│ │ ├── MIGRATION.md
│ │ ├── README.md
│ │ ├── astro.config.ts
│ │ ├── biome.json
│ │ ├── ec.config.mjs
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── public/
│ │ │ └── robots.txt
│ │ ├── src/
│ │ │ ├── assets/
│ │ │ │ └── styles/
│ │ │ │ ├── custom.css
│ │ │ │ ├── iconfont.css
│ │ │ │ ├── tailwind.css
│ │ │ │ └── theme.css
│ │ │ ├── components/
│ │ │ │ ├── CustomStyles.astro
│ │ │ │ ├── Favicons.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── Logo.astro
│ │ │ │ ├── common/
│ │ │ │ │ ├── ApplyColorMode.astro
│ │ │ │ │ ├── BasicScripts.astro
│ │ │ │ │ ├── CommonMeta.astro
│ │ │ │ │ ├── Image.astro
│ │ │ │ │ ├── Metadata.astro
│ │ │ │ │ ├── SiteVerification.astro
│ │ │ │ │ ├── ToggleMenu.astro
│ │ │ │ │ └── ToggleTheme.astro
│ │ │ │ ├── ui/
│ │ │ │ │ ├── Background.astro
│ │ │ │ │ ├── Button.astro
│ │ │ │ │ ├── Headline.astro
│ │ │ │ │ ├── ItemGrid.astro
│ │ │ │ │ ├── ItemGrid2.astro
│ │ │ │ │ └── WidgetWrapper.astro
│ │ │ │ └── widgets/
│ │ │ │ ├── Announcement.astro
│ │ │ │ ├── CallToAction.astro
│ │ │ │ ├── Features.astro
│ │ │ │ ├── Features2.astro
│ │ │ │ ├── Footer.astro
│ │ │ │ ├── Header.astro
│ │ │ │ ├── Hero.astro
│ │ │ │ └── Hero2.astro
│ │ │ ├── config.yaml
│ │ │ ├── content/
│ │ │ │ ├── collections/
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ ├── CheckState.md
│ │ │ │ │ │ ├── FABStyle.md
│ │ │ │ │ │ ├── LayoutAlignment.md
│ │ │ │ │ │ └── ScrollBarPolicy.md
│ │ │ │ │ └── structs/
│ │ │ │ │ ├── IconButtonItem.md
│ │ │ │ │ ├── ListItem.md
│ │ │ │ │ ├── MenuItem.md
│ │ │ │ │ ├── NavigationGroup.md
│ │ │ │ │ ├── NavigationItem.md
│ │ │ │ │ ├── SegmentedItem.md
│ │ │ │ │ └── Time.md
│ │ │ │ ├── config.ts
│ │ │ │ └── docs/
│ │ │ │ ├── components/
│ │ │ │ │ ├── AppBars/
│ │ │ │ │ │ ├── app_bar.mdx
│ │ │ │ │ │ ├── bottom_app_bar.mdx
│ │ │ │ │ │ ├── large_app_bar.mdx
│ │ │ │ │ │ ├── medium_app_bar.mdx
│ │ │ │ │ │ ├── navigation_bar.mdx
│ │ │ │ │ │ ├── search_bar.mdx
│ │ │ │ │ │ ├── small_app_bar.mdx
│ │ │ │ │ │ └── tab_bar.mdx
│ │ │ │ │ ├── Badges/
│ │ │ │ │ │ └── badge.mdx
│ │ │ │ │ ├── Buttons/
│ │ │ │ │ │ ├── elevated_button.mdx
│ │ │ │ │ │ ├── filled_button.mdx
│ │ │ │ │ │ ├── filled_icon_button.mdx
│ │ │ │ │ │ ├── floating_action_button.mdx
│ │ │ │ │ │ ├── icon_button.mdx
│ │ │ │ │ │ ├── outline_button.mdx
│ │ │ │ │ │ ├── outline_icon_button.mdx
│ │ │ │ │ │ ├── segmented_button.mdx
│ │ │ │ │ │ ├── text_button.mdx
│ │ │ │ │ │ ├── tonal_button.mdx
│ │ │ │ │ │ └── tonal_icon_button.mdx
│ │ │ │ │ ├── Cards/
│ │ │ │ │ │ ├── elevated_card.mdx
│ │ │ │ │ │ ├── filled_card.mdx
│ │ │ │ │ │ └── outlined_card.mdx
│ │ │ │ │ ├── Checkboxes/
│ │ │ │ │ │ ├── check_box.mdx
│ │ │ │ │ │ └── check_box_tile.mdx
│ │ │ │ │ ├── Chips/
│ │ │ │ │ │ ├── action_chip.mdx
│ │ │ │ │ │ ├── filter_chip.mdx
│ │ │ │ │ │ └── input_chip.mdx
│ │ │ │ │ ├── Dialogs/
│ │ │ │ │ │ ├── dialog.mdx
│ │ │ │ │ │ └── fullscreen_dialog.mdx
│ │ │ │ │ ├── Layouts/
│ │ │ │ │ │ ├── grid.mdx
│ │ │ │ │ │ ├── horizontal.mdx
│ │ │ │ │ │ └── vertical.mdx
│ │ │ │ │ ├── Navigation/
│ │ │ │ │ │ ├── modal_navigation_drawer.mdx
│ │ │ │ │ │ ├── navigation_drawer.mdx
│ │ │ │ │ │ └── navigation_rail.mdx
│ │ │ │ │ ├── Progress/
│ │ │ │ │ │ ├── circular_progress_indicator.mdx
│ │ │ │ │ │ └── linear_progress_indicator.mdx
│ │ │ │ │ ├── RadioButton/
│ │ │ │ │ │ ├── radio_button.mdx
│ │ │ │ │ │ └── radio_button_tile.mdx
│ │ │ │ │ ├── Sheets/
│ │ │ │ │ │ └── modal_bottom_sheet.mdx
│ │ │ │ │ ├── avatar.mdx
│ │ │ │ │ ├── date_picker.mdx
│ │ │ │ │ ├── divider.mdx
│ │ │ │ │ ├── drop_down_menu.mdx
│ │ │ │ │ ├── list_tile.mdx
│ │ │ │ │ ├── material_window.mdx
│ │ │ │ │ ├── modal.mdx
│ │ │ │ │ ├── modal_drawer.mdx
│ │ │ │ │ ├── popup_menu.mdx
│ │ │ │ │ ├── scroll_view.mdx
│ │ │ │ │ ├── slider.mdx
│ │ │ │ │ ├── snack_bar.mdx
│ │ │ │ │ ├── switch.mdx
│ │ │ │ │ ├── text_field.mdx
│ │ │ │ │ ├── time_picker.mdx
│ │ │ │ │ └── tooltip.mdx
│ │ │ │ └── getting-started.mdx
│ │ │ ├── content.config.ts
│ │ │ ├── layouts/
│ │ │ │ ├── LandingLayout.astro
│ │ │ │ ├── Layout.astro
│ │ │ │ └── PageLayout.astro
│ │ │ ├── misc/
│ │ │ │ └── Slint-tmLanguage.json
│ │ │ ├── navigation.ts
│ │ │ ├── pages/
│ │ │ │ ├── index.astro
│ │ │ │ └── landing/
│ │ │ │ ├── click-through.astro
│ │ │ │ └── product.astro
│ │ │ └── utils/
│ │ │ ├── frontmatter.ts
│ │ │ ├── iconNames.ts
│ │ │ ├── images-optimization.ts
│ │ │ ├── images.ts
│ │ │ ├── link-data.json
│ │ │ ├── permalinks.ts
│ │ │ └── site-config.ts
│ │ ├── tailwind.config.js
│ │ ├── tests/
│ │ │ └── smoke-test.spec.ts
│ │ ├── tsconfig.json
│ │ ├── vendor/
│ │ │ └── integration/
│ │ │ ├── index.ts
│ │ │ └── utils/
│ │ │ ├── configBuilder.ts
│ │ │ └── loadConfig.ts
│ │ ├── vscode.tailwind.json
│ │ └── wrangler.toml
│ ├── examples/
│ │ └── gallery/
│ │ ├── Cargo.toml
│ │ ├── build.rs
│ │ ├── index.html
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ └── main.rs
│ │ └── ui/
│ │ ├── components/
│ │ │ ├── component_card.slint
│ │ │ ├── group.slint
│ │ │ └── text_icon_button.slint
│ │ ├── fonts/
│ │ │ └── Roboto-VariableFont.ttf.license
│ │ ├── icons.slint
│ │ ├── main.slint
│ │ ├── main_window_adapter.slint
│ │ ├── themes/
│ │ │ ├── material_green_theme.json
│ │ │ ├── material_purple_theme.json
│ │ │ ├── material_red_theme.json
│ │ │ └── material_slint_theme.json
│ │ └── views/
│ │ ├── actions_view.slint
│ │ ├── components_view.slint
│ │ ├── main_view.slint
│ │ └── navigation_view.slint
│ └── src/
│ ├── LICENSE.md
│ ├── README.md
│ ├── material.slint
│ └── ui/
│ ├── components/
│ │ ├── app_bar.slint
│ │ ├── badge.slint
│ │ ├── base_button.slint
│ │ ├── base_navigation.slint
│ │ ├── bottom_app_bar.slint
│ │ ├── bottom_sheet.slint
│ │ ├── card.slint
│ │ ├── check_box.slint
│ │ ├── chip.slint
│ │ ├── date_picker.slint
│ │ ├── dialog.slint
│ │ ├── divider.slint
│ │ ├── drawer.slint
│ │ ├── drop_down_menu.slint
│ │ ├── elevated_button.slint
│ │ ├── elevation.slint
│ │ ├── extended_touch_area.slint
│ │ ├── filled_button.slint
│ │ ├── filled_icon_button.slint
│ │ ├── floating_action_button.slint
│ │ ├── grid.slint
│ │ ├── horizontal.slint
│ │ ├── icon.slint
│ │ ├── icon_button.slint
│ │ ├── list.slint
│ │ ├── list_view.slint
│ │ ├── material_text.slint
│ │ ├── material_window.slint
│ │ ├── menu.slint
│ │ ├── modal.slint
│ │ ├── navigation_bar.slint
│ │ ├── navigation_drawer.slint
│ │ ├── navigation_rail.slint
│ │ ├── outline_button.slint
│ │ ├── outline_icon_button.slint
│ │ ├── progress_indicator.slint
│ │ ├── radio_button.slint
│ │ ├── scroll_view.slint
│ │ ├── search_bar.slint
│ │ ├── segmented_button.slint
│ │ ├── slider.slint
│ │ ├── snack_bar.slint
│ │ ├── state_layer.slint
│ │ ├── switch.slint
│ │ ├── tab_bar.slint
│ │ ├── text_button.slint
│ │ ├── text_field.slint
│ │ ├── time_picker.slint
│ │ ├── tonal_button.slint
│ │ ├── tonal_icon_button.slint
│ │ ├── tooltip.slint
│ │ └── vertical.slint
│ ├── icons/
│ │ └── icons.slint
│ ├── items/
│ │ ├── list_item.slint
│ │ ├── menu_item.slint
│ │ └── navigation_item.slint
│ └── styling/
│ ├── material_animations.slint
│ ├── material_palette.slint
│ ├── material_schemes.slint
│ ├── material_style_metrics.slint
│ └── material_typography.slint
└── xtask/
├── Cargo.toml
└── src/
├── cppdocs.rs
├── license_headers_check.rs
├── main.rs
├── nodepackage.rs
├── reuse_compliance_check.rs
└── slintdocs.rs
Showing preview only (921K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10815 symbols across 662 files)
FILE: api/cpp/build.rs
function main (line 8) | fn main() -> Result<(), anyhow::Error> {
FILE: api/cpp/cbindgen.rs
function enums (line 10) | fn enums(path: &Path) -> anyhow::Result<()> {
function builtin_structs (line 105) | fn builtin_structs(path: &Path) -> anyhow::Result<()> {
function ensure_cargo_rerun_for_crate (line 194) | fn ensure_cargo_rerun_for_crate(
function default_config (line 208) | fn default_config() -> cbindgen::Config {
function gen_item_declarations (line 263) | fn gen_item_declarations(items: &[&str]) -> String {
function gen_corelib (line 286) | fn gen_corelib(
function gen_backend_qt (line 793) | fn gen_backend_qt(
function gen_testing (line 866) | fn gen_testing(
function gen_platform (line 889) | fn gen_platform(
function gen_interpreter (line 924) | fn gen_interpreter(
function gen_all (line 1053) | pub fn gen_all(
FILE: api/cpp/docs/conf.py
function setup (line 153) | def setup(app):
FILE: api/cpp/esp-idf/slint/src/slint-esp.cpp
class EspWindowAdapter (line 21) | class EspWindowAdapter : public slint::platform::WindowAdapter
method EspWindowAdapter (line 28) | explicit EspWindowAdapter(RepaintBufferType buffer_type, slint::Physic...
method size (line 35) | slint::PhysicalSize size() override { return m_size; }
method request_redraw (line 37) | void request_redraw() override { needs_redraw = true; }
type EspPlatform (line 41) | struct EspPlatform : public slint::platform::Platform
method EspPlatform (line 43) | EspPlatform(const SlintPlatformConfiguration<PixelType> &config)
class EspWindowAdapter (line 70) | class EspWindowAdapter
function on_vsync_event (line 106) | bool on_vsync_event(esp_lcd_panel_handle_t panel,
function byte_swap_color (line 118) | void byte_swap_color(slint::platform::Rgb565Pixel *pixel)
function byte_swap_color (line 124) | void byte_swap_color(slint::Rgb8Pixel *pixel)
function slint_esp_init (line 337) | void slint_esp_init(slint::PhysicalSize size, esp_lcd_panel_handle_t panel,
function slint_esp_init (line 356) | void slint_esp_init(const SlintPlatformConfiguration<slint::platform::Rg...
function slint_esp_init (line 362) | void slint_esp_init(const SlintPlatformConfiguration<slint::Rgb8Pixel> &...
FILE: api/cpp/include/slint-interpreter.h
function namespace (line 20) | namespace slint::cbindgen_private {
function namespace (line 29) | namespace slint::private_api::live_preview {
function namespace (line 43) | namespace slint::interpreter {
function iterator (line 193) | iterator begin() const
function class (line 243) | class Value
function Value (line 409) | inline Value::Value(const slint::SharedVector<Value> &array)
function Value (line 428) | inline Value::Value(const std::shared_ptr<slint::Model<Value>> &model)
function get_notify (line 482) | auto get_notify =
function drop (line 486) | auto drop = [](vtable::VRefMut<ModelAdaptorVTable> self) {
function ModelAdaptorVTable (line 490) | static const ModelAdaptorVTable vt { row_count, row_data, set_row_data, ...
function Struct (line 495) | inline Struct::Struct(std::initializer_list<std::pair<std::string_view, ...
function std (line 500) | inline std::optional<Value> Struct::get_field(std::string_view name) const
function set_field (line 511) | inline void Struct::set_field(std::string_view name, const Value &value)
function next (line 517) | inline void Struct::iterator::next()
function Struct (line 534) | inline Struct::iterator::~iterator()
function class (line 552) | class ComponentInstance : vtable::Dyn
function set_global_property (line 723) | bool set_global_property(std::string_view global, std::string_view prop_...
function class (line 817) | class ComponentDefinition
function class (line 960) | class ComponentCompiler
function namespace (line 1070) | namespace slint::private_api::testing {
FILE: api/cpp/include/slint-platform.h
type xcb_connection_t (line 13) | struct xcb_connection_t
type wl_surface (line 14) | struct wl_surface
type wl_display (line 15) | struct wl_display
type NSView (line 22) | typedef struct objc_object NSView;
type NSWindow (line 23) | typedef struct objc_object NSWindow;
function namespace (line 27) | namespace slint {
function Clipboard (line 376) | enum class Clipboard {
function PhysicalRegion (line 498) | struct Rgb565Pixel
function RepaintBufferType (line 645) | enum class RepaintBufferType : uint32_t {
function else (line 817) | else if constexpr (std::is_same_v<PixelType, Rgb8Pixel>) {
function r (line 836) | auto r = cbindgen_private::slint_software_renderer_render_accel_rgb8(inn...
function NativeWindowHandle (line 937) | static NativeWindowHandle from_wayland(wl_surface *surface, wl_display *...
FILE: api/cpp/include/slint-stm32.h
type SlintPlatformConfiguration (line 29) | struct SlintPlatformConfiguration
FILE: api/cpp/include/slint-testing.h
function namespace (line 19) | namespace slint::testing {
function is_valid (line 144) | bool is_valid() const { return private_api::upgrade_item_weak(inner.item...
function LayoutKind (line 220) | LayoutKind kind {}
function set_accessible_value (line 411) | void set_accessible_value(SharedString value) const
FILE: api/cpp/include/slint.h
function namespace (line 32) | namespace slint {
function namespace (line 254) | namespace private_api {
function setup_popup_menu_from_menu_item_tree (line 278) | inline void setup_popup_menu_from_menu_item_tree(
function SharedString (line 302) | inline SharedString translate(const SharedString &original, const Shared...
function StyledText (line 312) | inline StyledText parse_markdown(const SharedString &format_string,
function StyledText (line 320) | inline StyledText string_to_styled_text(SharedString text)
function SharedString (line 327) | inline SharedString translate_from_bundle(std::span<const char8_t *const...
function SharedString (line 336) | inline SharedString
function SharedString (line 355) | inline SharedString keys_to_string(const cbindgen_private::Keys &keys)
type Translator (line 377) | struct Translator
function namespace (line 390) | namespace private_api {
function set_translator (line 458) | inline bool set_translator(std::unique_ptr<Translator> obj)
function update_all_translations (line 483) | inline void update_all_translations()
function select_bundled_translation (line 497) | inline bool select_bundled_translation(std::string_view language)
function namespace (line 543) | namespace private_api {
function EventLoopMode (line 553) | enum class EventLoopMode {
function quit_event_loop (line 580) | inline void quit_event_loop()
function set_xdg_app_id (line 709) | inline void set_xdg_app_id(std::string_view xdg_app_id)
FILE: api/cpp/include/slint_brush.h
function namespace (line 10) | namespace slint {
function class (line 158) | class Brush
function Color (line 223) | Color Brush::color() const
function Brush (line 249) | inline Brush Brush::brighter(float factor) const
function Brush (line 279) | inline Brush Brush::darker(float factor) const
function Brush (line 309) | inline Brush Brush::transparentize(float factor) const
function Brush (line 342) | inline Brush Brush::with_alpha(float alpha) const
function namespace (line 375) | namespace private_api {
FILE: api/cpp/include/slint_callbacks.h
function namespace (line 8) | namespace slint::private_api {
function Ret (line 46) | Ret call(const Arg &...arg) const
function call (line 88) | void call(const Arg &...arg) const
FILE: api/cpp/include/slint_color.h
function namespace (line 8) | namespace slint {
FILE: api/cpp/include/slint_image.h
function namespace (line 13) | namespace slint {
type Image (line 111) | struct Image
function explicit (line 273) | explicit Image(cbindgen_private::types::Image inner) : data(inner) { }
function namespace (line 281) | namespace private_api {
FILE: api/cpp/include/slint_item_tree.h
function ItemTreeNode (line 22) | constexpr inline ItemTreeNode make_item_node(uint32_t child_count, uint3...
function ItemTreeNode (line 31) | constexpr inline ItemTreeNode make_dyn_node(std::uint32_t offset, std::u...
function ItemRef (line 37) | inline ItemRef get_item_ref(ItemTreeRef item_tree,
function T (line 65) | const T *operator->() const
FILE: api/cpp/include/slint_live_preview.h
function namespace (line 15) | namespace slint::private_api::live_preview {
function set_property (line 168) | void set_property(std::string_view name, const interpreter::Value &value...
function Value (line 184) | Value invoke(std::string_view name, Args &...args) const
function slint (line 226) | static slint::interpreter::Value value_from_enum(std::string_view name, ...
function slint (line 231) | static slint::SharedString get_enum_value(const slint::interpreter::Valu...
function class (line 239) | class LiveReloadModelWrapperBase : public private_api::ModelChangeListener
function get_notify (line 282) | auto get_notify =
function drop (line 286) | auto drop = [](vtable::VRefMut<ModelAdaptorVTable> self) {
function ModelAdaptorVTable (line 290) | static const ModelAdaptorVTable vt { row_count, row_data, set_row_data, ...
function virtual (line 296) | virtual ~LiveReloadModelWrapperBase()
function virtual (line 301) | virtual int row_count() const = 0;
function override (line 337) | const override
function set_row_data (line 345) | void set_row_data(int i, const slint::interpreter::Value &value) override
function slint (line 350) | static slint::interpreter::Value wrap(std::shared_ptr<slint::Model<Model...
FILE: api/cpp/include/slint_models.h
function namespace (line 14) | namespace slint {
function namespace (line 887) | namespace private_api {
FILE: api/cpp/include/slint_pathdata.h
function namespace (line 9) | namespace slint::private_api {
FILE: api/cpp/include/slint_point.h
function namespace (line 8) | namespace slint {
type PhysicalPosition (line 40) | struct PhysicalPosition
function explicit (line 43) | explicit PhysicalPosition(const Point<int32_t> p) : Point<int32_t>(p) { }
FILE: api/cpp/include/slint_properties.h
function namespace (line 8) | namespace slint::cbindgen_private {
function namespace (line 19) | namespace slint::private_api {
function new (line 202) | new BindingMapper { t2_binding, self->map_to, self->map_from },
function explicit (line 219) | explicit Property(cbindgen_private::PropertyHandleOpaque inner, T value)
function mutable (line 230) | mutable T value {}
type TwoWayBinding (line 237) | struct TwoWayBinding
function call_fn (line 245) | static void call_fn(void *user_data, void *value)
function intercept_fn (line 250) | static bool intercept_fn(void *user_data, const void *value)
function intercept_binding_fn (line 256) | static bool intercept_binding_fn(void *user_data, void *value)
function set_animated_value (line 266) | int32_t>::set_animated_value(
function set_animated_value (line 275) | float>::set_animated_value(const float &new_value,
function set_animated_value (line 283) | inline void
function PropertyTracker (line 312) | struct PropertyTracker
function is_dirty (line 325) | bool is_dirty() const { return cbindgen_private::slint_property_tracker_...
function data_ptr (line 396) | auto data_ptr =
FILE: api/cpp/include/slint_sharedvector.h
function namespace (line 11) | namespace slint {
FILE: api/cpp/include/slint_size.h
function namespace (line 8) | namespace slint {
FILE: api/cpp/include/slint_string.h
function namespace (line 9) | namespace slint {
function operator (line 83) | operator std::string_view() const { return cbindgen_private::slint_share...
function starts_with (line 105) | bool starts_with(std::string_view prefix) const
function ends_with (line 111) | bool ends_with(std::string_view prefix) const
function clear (line 121) | void clear() { *this = std::string_view("", 0); }
function SharedString (line 132) | static SharedString from_number(double n) { return SharedString(n); }
function SharedString (line 141) | SharedString to_lowercase() const
function cbindgen_private (line 282) | inline cbindgen_private::Slice<uint8_t> string_to_slice(std::string_view...
function std (line 287) | inline std::string_view slice_to_string_view(cbindgen_private::Slice<uin...
FILE: api/cpp/include/slint_tests_helpers.h
function namespace (line 10) | namespace slint::private_api::testing {
FILE: api/cpp/include/slint_timer.h
function namespace (line 16) | namespace slint {
function stop (line 88) | void stop()
function restart (line 98) | void restart()
FILE: api/cpp/include/slint_window.h
type wl_surface (line 12) | struct wl_surface
type wl_display (line 13) | struct wl_display
type NSView (line 23) | typedef struct objc_object NSView;
type HINSTANCE__ (line 32) | typedef HINSTANCE__ *HINSTANCE;
type HWND__ (line 35) | typedef HWND__ *HWND;
function namespace (line 39) | namespace slint {
function dispatch_window_active_changed_event (line 626) | void dispatch_window_active_changed_event(bool active)
function dispatch_close_requested_event (line 642) | void dispatch_close_requested_event()
function wl_surface (line 679) | wl_surface *wayland_surface() const
function wl_display (line 689) | wl_display *wayland_display() const
function NSView (line 704) | NSView *appkit_view() const
FILE: api/cpp/include/vtable.h
type Layout (line 30) | struct Layout
function explicit (line 48) | explicit VBox(const T *vtable, void *instance) : vtable(vtable), instanc...
type AllowPin (line 60) | struct AllowPin
type Dyn (line 92) | struct Dyn
function inner (line 100) | inner(inner) { }
function inner (line 118) | VRc(const VRc &other) : inner(other.inner) { inner->strong_ref++; }
function inner (line 139) | auto inner = new (mem) VRcInner<VTable, X>;
function inner (line 175) | VWeak(const VWeak &other) : inner(other.inner) { inner && inner->weak_re...
function MappedType (line 221) | const MappedType *operator->() const { return object; }
FILE: api/cpp/lib.rs
function with_platform (line 26) | pub fn with_platform<R>(
function slint_windowrc_init (line 42) | pub unsafe extern "C" fn slint_windowrc_init(out: *mut WindowAdapterRcOp...
function slint_ensure_backend (line 54) | pub extern "C" fn slint_ensure_backend() {
function slint_run_event_loop (line 64) | pub extern "C" fn slint_run_event_loop(quit_on_last_window_closed: bool) {
function slint_post_event (line 77) | pub unsafe extern "C" fn slint_post_event(
function slint_quit_event_loop (line 104) | pub extern "C" fn slint_quit_event_loop() {
function slint_register_font_from_path (line 110) | pub unsafe extern "C" fn slint_register_font_from_path(
function slint_register_font_from_data (line 127) | pub unsafe extern "C" fn slint_register_font_from_data(
function slint_register_bitmap_font (line 140) | pub unsafe extern "C" fn slint_register_bitmap_font(
function slint_string_to_float (line 149) | pub extern "C" fn slint_string_to_float(string: &SharedString, value: &m...
function slint_string_character_count (line 160) | pub extern "C" fn slint_string_character_count(string: &SharedString) ->...
function slint_string_to_usize (line 165) | pub extern "C" fn slint_string_to_usize(string: &SharedString, value: &m...
function slint_debug (line 176) | pub extern "C" fn slint_debug(string: &SharedString) {
type CAlloc (line 185) | struct CAlloc;
method alloc (line 187) | unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
method dealloc (line 205) | unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
function panic (line 227) | fn panic(_info: &core::panic::PanicInfo) -> ! {
function slint_set_xdg_app_id (line 234) | pub extern "C" fn slint_set_xdg_app_id(_app_id: &SharedString) {
function slint_detect_operating_system (line 241) | pub extern "C" fn slint_detect_operating_system() -> OperatingSystemType {
function slint_parse_markdown (line 246) | pub extern "C" fn slint_parse_markdown(
function slint_string_to_styled_text (line 255) | pub extern "C" fn slint_string_to_styled_text(text: SharedString, out: &...
type DropCallback (line 272) | type DropCallback = extern "C" fn(obj: *const c_void);
type TranslateCallback (line 274) | type TranslateCallback = extern "C" fn(
type NTranslateCallback (line 281) | type NTranslateCallback = extern "C" fn(
type CppTranslator (line 290) | struct CppTranslator {
method drop (line 301) | fn drop(&mut self) {
method translate (line 307) | fn translate<'a>(&'a self, string: &'a str, context: Option<&'a str>) ->...
method ntranslate (line 318) | fn ntranslate<'a>(
function slint_translate_set_translator (line 339) | pub extern "C" fn slint_translate_set_translator(
FILE: api/cpp/platform.rs
type WindowAdapterUserData (line 18) | type WindowAdapterUserData = *mut c_void;
type RendererPtr (line 22) | pub struct RendererPtr {
type CppWindowAdapter (line 27) | pub struct CppWindowAdapter {
method drop (line 44) | fn drop(&mut self) {
method window (line 50) | fn window(&self) -> &Window {
method set_visible (line 54) | fn set_visible(&self, visible: bool) -> Result<(), PlatformError> {
method position (line 59) | fn position(&self) -> Option<PhysicalPosition> {
method set_position (line 68) | fn set_position(&self, position: WindowPosition) {
method set_size (line 75) | fn set_size(&self, size: WindowSize) {
method size (line 82) | fn size(&self) -> PhysicalSize {
method renderer (line 87) | fn renderer(&self) -> &dyn Renderer {
method request_redraw (line 91) | fn request_redraw(&self) {
method update_window_properties (line 95) | fn update_window_properties(&self, properties: WindowProperties<'_>) {
function slint_window_properties_get_title (line 101) | pub extern "C" fn slint_window_properties_get_title(wp: &WindowPropertie...
function slint_window_properties_get_background (line 106) | pub extern "C" fn slint_window_properties_get_background(wp: &WindowProp...
function slint_window_properties_get_fullscreen (line 111) | pub extern "C" fn slint_window_properties_get_fullscreen(wp: &WindowProp...
function slint_window_properties_get_minimized (line 116) | pub extern "C" fn slint_window_properties_get_minimized(wp: &WindowPrope...
function slint_window_properties_get_maximized (line 121) | pub extern "C" fn slint_window_properties_get_maximized(wp: &WindowPrope...
type LayoutConstraintsReprC (line 128) | pub struct LayoutConstraintsReprC {
function slint_window_properties_get_layout_constraints (line 137) | pub extern "C" fn slint_window_properties_get_layout_constraints(
function slint_window_adapter_new (line 154) | pub unsafe extern "C" fn slint_window_adapter_new(
type PlatformUserData (line 189) | type PlatformUserData = *mut c_void;
type CppPlatform (line 191) | struct CppPlatform {
method drop (line 208) | fn drop(&mut self) {
method create_window_adapter (line 214) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platfor...
method duration_since_start (line 226) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 230) | fn run_event_loop(&self) -> Result<(), PlatformError> {
method new_event_loop_proxy (line 235) | fn new_event_loop_proxy(&self) -> Option<Box<dyn i_slint_core::platform:...
method set_clipboard_text (line 243) | fn set_clipboard_text(&self, text: &str, clipboard: Clipboard) {
method clipboard_text (line 248) | fn clipboard_text(&self, clipboard: Clipboard) -> Option<String> {
method debug_log (line 255) | fn debug_log(&self, arguments: core::fmt::Arguments) {
type CppEventLoopProxy (line 260) | struct CppEventLoopProxy {
method quit_event_loop (line 267) | fn quit_event_loop(&self) -> Result<(), i_slint_core::api::EventLoopEr...
method invoke_from_event_loop (line 272) | fn invoke_from_event_loop(
function slint_platform_register (line 292) | pub unsafe extern "C" fn slint_platform_register(
function slint_windowrc_has_active_animations (line 319) | pub unsafe extern "C" fn slint_windowrc_has_active_animations(
function slint_platform_update_timers_and_animations (line 327) | pub extern "C" fn slint_platform_update_timers_and_animations() {
function slint_platform_duration_until_next_timer_update (line 333) | pub extern "C" fn slint_platform_duration_until_next_timer_update() -> u...
type PlatformTaskOpaque (line 339) | pub struct PlatformTaskOpaque(*const c_void, *const c_void);
function slint_platform_task_drop (line 342) | pub unsafe extern "C" fn slint_platform_task_drop(event: PlatformTaskOpa...
function slint_platform_task_run (line 349) | pub unsafe extern "C" fn slint_platform_task_run(event: PlatformTaskOpaq...
type SoftwareRendererOpaque (line 359) | type SoftwareRendererOpaque = *const c_void;
type CppTargetPixelBufferUserData (line 370) | type CppTargetPixelBufferUserData = *mut c_void;
type DrawTextureArgs (line 374) | pub struct DrawTextureArgs {
method from (line 402) | fn from(from: &i_slint_renderer_software::DrawTextureArgs) -> Self {
type DrawRectangleArgs (line 430) | pub struct DrawRectangleArgs {
method from (line 452) | fn from(from: &i_slint_renderer_software::DrawRectangleArgs) -> Self {
type CppTargetPixelBuffer (line 473) | pub struct CppTargetPixelBuffer<T> {
type TargetPixel (line 500) | type TargetPixel = TargetPixel;
method line_slice (line 502) | fn line_slice(&mut self, line_number: usize) -> &mut [Self::TargetPixel] {
method num_lines (line 511) | fn num_lines(&self) -> usize {
method fill_background (line 516) | fn fill_background(
method draw_rectangle (line 525) | fn draw_rectangle(
method draw_texture (line 534) | fn draw_texture(
function slint_software_renderer_new (line 545) | pub extern "C" fn slint_software_renderer_new(buffer_age: u32) -> Softwa...
function slint_software_renderer_drop (line 557) | pub unsafe extern "C" fn slint_software_renderer_drop(r: SoftwareRendere...
function slint_software_renderer_render_rgb8 (line 564) | pub unsafe extern "C" fn slint_software_renderer_render_rgb8(
function slint_software_renderer_render_accel_rgb8 (line 579) | pub unsafe extern "C" fn slint_software_renderer_render_accel_rgb8(
function slint_software_renderer_render_accel_rgb565 (line 589) | pub unsafe extern "C" fn slint_software_renderer_render_accel_rgb565(
function slint_software_renderer_render_rgb565 (line 598) | pub unsafe extern "C" fn slint_software_renderer_render_rgb565(
type LineByLineProcessor (line 611) | struct LineByLineProcessor<TargetPixel> {
type TargetPixel (line 626) | type TargetPixel = TargetPixel;
function process_line (line 627) | fn process_line(
function cpp_process_line (line 638) | fn cpp_process_line<RenderFn: FnOnce(&mut [TargetPixel])>(
function slint_software_renderer_render_by_line_rgb565 (line 673) | pub unsafe extern "C" fn slint_software_renderer_render_by_line_rgb565(
function slint_software_renderer_render_by_line_rgb8 (line 691) | pub unsafe extern "C" fn slint_software_renderer_render_by_line_rgb8(
function slint_software_renderer_set_rendering_rotation (line 709) | pub unsafe extern "C" fn slint_software_renderer_set_rendering_rotation(
function slint_software_renderer_handle (line 724) | pub unsafe extern "C" fn slint_software_renderer_handle(
function slint_software_renderer_region_to_rects (line 734) | pub extern "C" fn slint_software_renderer_region_to_rects(
type RawHandlePair (line 751) | struct RawHandlePair((RawWindowHandle, RawDisplayHandle));
method display_handle (line 754) | fn display_handle(
method window_handle (line 763) | fn window_handle(
type CppRawHandle (line 775) | struct CppRawHandle(Arc<RawHandlePair>);
method from (line 778) | fn from(pair: (RawWindowHandle, RawDisplayHandle)) -> Self {
type CppRawHandleOpaque (line 783) | type CppRawHandleOpaque = *const c_void;
function slint_new_raw_window_handle_win32 (line 786) | pub unsafe extern "C" fn slint_new_raw_window_handle_win32(
function slint_new_raw_window_handle_x11_xcb (line 800) | pub unsafe extern "C" fn slint_new_raw_window_handle_x11_xcb(
function slint_new_raw_window_handle_x11_xlib (line 826) | pub unsafe extern "C" fn slint_new_raw_window_handle_x11_xlib(
function slint_new_raw_window_handle_wayland (line 848) | pub unsafe extern "C" fn slint_new_raw_window_handle_wayland(
function slint_new_raw_window_handle_appkit (line 865) | pub unsafe extern "C" fn slint_new_raw_window_handle_appkit(
function slint_raw_window_handle_drop (line 880) | pub unsafe extern "C" fn slint_raw_window_handle_drop(handle: CppRawHand...
type SkiaRendererOpaque (line 884) | type SkiaRendererOpaque = *const c_void;
type SkiaRenderer (line 885) | type SkiaRenderer = i_slint_renderer_skia::SkiaRenderer;
function slint_skia_renderer_new (line 888) | pub unsafe extern "C" fn slint_skia_renderer_new(
function slint_skia_renderer_drop (line 907) | pub unsafe extern "C" fn slint_skia_renderer_drop(r: SkiaRendererOpaque) {
function slint_skia_renderer_render (line 912) | pub unsafe extern "C" fn slint_skia_renderer_render(r: SkiaRendererOpaqu...
function slint_skia_renderer_handle (line 918) | pub unsafe extern "C" fn slint_skia_renderer_handle(r: SkiaRendererOpaqu...
FILE: api/cpp/tests/interpreter.cpp
type M (line 114) | struct M : slint::VectorModel<Value>
method M (line 117) | explicit M(bool *destroyed) : destroyed(destroyed) { }
method play (line 118) | void play()
FILE: api/cpp/tests/libraries/main.cpp
function main (line 6) | int main(int argc, char **argv)
FILE: api/cpp/tests/models.cpp
type ModelObserver (line 11) | struct ModelObserver : public slint::private_api::ModelChangeListener
method row_added (line 13) | void row_added(size_t index, size_t count) override
method row_changed (line 17) | void row_changed(size_t index) override { changed_rows.push_back(index...
method row_removed (line 18) | void row_removed(size_t index, size_t count) override
method reset (line 22) | void reset() override { model_reset = true; }
method clear (line 24) | void clear()
type Range (line 32) | struct Range
class TestDeferredFilterModel (line 259) | class TestDeferredFilterModel : public slint::FilterModel<ModelData>
method TestDeferredFilterModel (line 262) | TestDeferredFilterModel(bool &initialized, bool &filtered,
class TestDeferredSortModel (line 522) | class TestDeferredSortModel : public slint::SortModel<ModelData>
method TestDeferredSortModel (line 525) | TestDeferredSortModel(bool &initialized, bool &sorted,
FILE: api/cpp/tests/multiple-includes/logic.cpp
function setup_logic (line 9) | void setup_logic(const Logic &logic)
FILE: api/cpp/tests/multiple-includes/logic.h
type Logic (line 6) | struct Logic
FILE: api/cpp/tests/multiple-includes/main.cpp
function main (line 8) | int main(int argc, char **argv)
FILE: api/cpp/tests/platform_eventloop.cpp
type TestPlatform (line 17) | struct TestPlatform : slint::platform::Platform
method create_window_adapter (line 26) | virtual std::unique_ptr<slint::platform::WindowAdapter> create_window_...
method run_event_loop (line 43) | virtual void run_event_loop() override
method quit_event_loop (line 74) | virtual void quit_event_loop() override
method run_in_event_loop (line 81) | virtual void run_in_event_loop(slint::platform::Platform::Task event) ...
method duration_since_start (line 89) | virtual std::chrono::milliseconds duration_since_start() override
FILE: api/cpp/tests/translator.cpp
type TestTranslator (line 13) | struct TestTranslator : public slint::Translator
method translate (line 17) | slint::SharedString translate(std::string_view string, std::string_vie...
method ntranslate (line 22) | slint::SharedString ntranslate(uint64_t n, std::string_view singular, ...
FILE: api/node/__test__/helpers/utils.ts
function captureAsyncStderr (line 6) | function captureAsyncStderr() {
FILE: api/node/build.rs
function main (line 4) | fn main() {
FILE: api/node/rust/interpreter/component_compiler.rs
type JsComponentCompiler (line 19) | pub struct JsComponentCompiler {
method new (line 29) | pub fn new() -> Self {
method set_include_paths (line 57) | pub fn set_include_paths(&mut self, include_paths: Vec<String>) {
method include_paths (line 62) | pub fn include_paths(&self) -> Vec<String> {
method set_library_paths (line 71) | pub fn set_library_paths(&mut self, paths: HashMap<String, String>) {
method library_paths (line 81) | pub fn library_paths(&self) -> HashMap<String, String> {
method set_style (line 92) | pub fn set_style(&mut self, style: String) {
method style (line 97) | pub fn style(&self) -> Option<String> {
method diagnostics (line 102) | pub fn diagnostics(&self) -> Vec<JsDiagnostic> {
method structs (line 107) | pub fn structs<'a>(&self, env: &'a Env) -> HashMap<String, Unknown<'a>> {
method enums (line 137) | pub fn enums<'a>(&self, env: &'a Env) -> HashMap<String, Unknown<'a>> {
method set_file_loader (line 161) | pub fn set_file_loader(
method build_from_path (line 220) | pub fn build_from_path(&mut self, path: String) -> HashMap<String, JsC...
method build_from_source (line 230) | pub fn build_from_source(
FILE: api/node/rust/interpreter/component_definition.rs
type JsComponentDefinition (line 10) | pub struct JsComponentDefinition {
method from (line 15) | fn from(definition: ComponentDefinition) -> Self {
method new (line 23) | pub fn new() -> napi::Result<Self> {
method properties (line 30) | pub fn properties(&self) -> Vec<JsProperty> {
method callbacks (line 38) | pub fn callbacks(&self) -> Vec<String> {
method functions (line 43) | pub fn functions(&self) -> Vec<String> {
method globals (line 48) | pub fn globals(&self) -> Vec<String> {
method global_properties (line 53) | pub fn global_properties(&self, global_name: String) -> Option<Vec<JsP...
method global_callbacks (line 61) | pub fn global_callbacks(&self, global_name: String) -> Option<Vec<Stri...
method global_functions (line 66) | pub fn global_functions(&self, global_name: String) -> Option<Vec<Stri...
method create (line 71) | pub fn create(&self) -> Result<JsComponentInstance> {
method name (line 76) | pub fn name(&self) -> String {
FILE: api/node/rust/interpreter/component_instance.rs
type JsComponentInstance (line 15) | pub struct JsComponentInstance {
method from (line 20) | fn from(instance: ComponentInstance) -> Self {
method new (line 28) | pub fn new() -> napi::Result<Self> {
method definition (line 35) | pub fn definition(&self) -> JsComponentDefinition {
method get_property (line 40) | pub fn get_property<'a>(&self, env: &'a Env, name: String) -> Result<U...
method set_property (line 49) | pub fn set_property(&self, env: &Env, prop_name: String, js_value: Unk...
method get_global_property (line 68) | pub fn get_global_property<'a>(
method set_global_property (line 85) | pub fn set_global_property(
method set_callback (line 117) | pub fn set_callback(
method set_global_callback (line 182) | pub fn set_global_callback(
method invoke_args (line 244) | fn invoke_args(
method invoke (line 271) | pub fn invoke<'a>(
method invoke_global (line 308) | pub fn invoke_global<'a>(
method send_mouse_click (line 353) | pub fn send_mouse_click(&self, x: f64, y: f64) {
method send_keyboard_string_sequence (line 358) | pub fn send_keyboard_string_sequence(&self, sequence: String) {
method window (line 363) | pub fn window(&self) -> Result<JsWindow> {
type RefCountedReference (line 370) | pub struct RefCountedReference {
method new (line 376) | pub fn new(env: &Env, value: &Object) -> Result<Self> {
method get_unknown (line 381) | pub fn get_unknown(&self) -> Result<Unknown<'_>> {
method drop (line 390) | fn drop(&mut self) {
type DynFunction (line 400) | pub type DynFunction<'a> = Function<'a, crate::DynArgs, Unknown<'static>>;
type StoredFunction (line 403) | pub struct StoredFunction {
method new (line 408) | pub fn new(func: &DynFunction<'_>) -> Result<Self> {
method call (line 413) | pub fn call(&self, env: &Env, args: Vec<napi::sys::napi_value>) -> Res...
FILE: api/node/rust/interpreter/diagnostic.rs
type JsDiagnosticLevel (line 8) | pub enum JsDiagnosticLevel {
method from (line 20) | fn from(diagnostic_level: DiagnosticLevel) -> Self {
type JsDiagnostic (line 35) | pub struct JsDiagnostic {
method from (line 53) | fn from(internal_diagnostic: Diagnostic) -> Self {
FILE: api/node/rust/interpreter/value.rs
type DynArgs (line 21) | pub struct DynArgs(pub Vec<napi::sys::napi_value>);
method into_vec (line 24) | fn into_vec(self, _env: napi::sys::napi_env) -> Result<Vec<napi::sys::na...
function expect_number (line 30) | fn expect_number(unknown: Unknown<'_>) -> Result<f64> {
function expect_string (line 41) | fn expect_string(unknown: Unknown<'_>) -> Result<String> {
function expect_bool (line 52) | fn expect_bool(unknown: Unknown<'_>) -> Result<bool> {
type JsValueType (line 63) | pub enum JsValueType {
method from (line 76) | fn from(value_type: slint_interpreter::ValueType) -> Self {
type JsProperty (line 92) | pub struct JsProperty {
function to_js_unknown (line 97) | pub fn to_js_unknown<'a>(env: &'a Env, value: &Value) -> Result<Unknown<...
function to_value (line 135) | pub fn to_value(env: &Env, unknown: Unknown<'_>, typ: &Type) -> Result<V...
function string_to_brush (line 337) | fn string_to_brush(js_string: napi::JsString<'_>) -> Result<Value> {
function brush_from_color (line 347) | fn brush_from_color(rgb_color: Object) -> Result<Value> {
FILE: api/node/rust/interpreter/window.rs
type JsWindow (line 12) | pub struct JsWindow {
method from (line 17) | fn from(instance: WindowAdapterRc) -> Self {
method new (line 26) | pub fn new() -> napi::Result<Self> {
method show (line 35) | pub fn show(&self) -> napi::Result<()> {
method hide (line 44) | pub fn hide(&self) -> napi::Result<()> {
method is_visible (line 54) | pub fn is_visible(&self) -> bool {
method get_logical_position (line 60) | pub fn get_logical_position(&self) -> SlintPoint {
method set_logical_position (line 67) | pub fn set_logical_position(&self, position: SlintPoint) {
method get_physical_position (line 75) | pub fn get_physical_position(&self) -> SlintPoint {
method set_physical_position (line 82) | pub fn set_physical_position(&self, position: SlintPoint) {
method get_logical_size (line 91) | pub fn get_logical_size(&self) -> SlintSize {
method set_logical_size (line 98) | pub fn set_logical_size(&self, size: SlintSize) {
method get_physical_size (line 107) | pub fn get_physical_size(&self) -> SlintSize {
method set_physical_size (line 114) | pub fn set_physical_size(&self, size: SlintSize) {
method request_redraw (line 123) | pub fn request_redraw(&self) {
method get_fullscreen (line 129) | pub fn get_fullscreen(&self) -> bool {
method set_fullscreen (line 135) | pub fn set_fullscreen(&self, enable: bool) {
method get_maximized (line 141) | pub fn get_maximized(&self) -> bool {
method set_maximized (line 147) | pub fn set_maximized(&self, maximized: bool) {
method get_minimized (line 153) | pub fn get_minimized(&self) -> bool {
method set_minimized (line 159) | pub fn set_minimized(&self, minimized: bool) {
FILE: api/node/rust/lib.rs
function mock_elapsed_time (line 19) | pub fn mock_elapsed_time(ms: f64) {
function get_mocked_time (line 24) | pub fn get_mocked_time() -> f64 {
type ProcessEventsResult (line 29) | pub enum ProcessEventsResult {
function process_events (line 35) | pub fn process_events() -> napi::Result<ProcessEventsResult> {
function invoke_from_event_loop (line 47) | pub fn invoke_from_event_loop(env: &Env, callback: DynFunction<'_>) -> n...
function set_quit_on_last_window_closed (line 67) | pub fn set_quit_on_last_window_closed(quit_on_last_window_closed: bool) ...
function init_testing (line 80) | pub fn init_testing() {
function init_translations (line 86) | pub fn init_translations(domain: String, dir_name: String) -> napi::Resu...
function set_xdg_app_id (line 92) | pub fn set_xdg_app_id(app_id: String) -> napi::Result<()> {
function print_to_console (line 97) | pub fn print_to_console(env: Env, function: &str, arguments: core::fmt::...
FILE: api/node/rust/types/brush.rs
type RgbaColor (line 9) | pub struct RgbaColor {
method red (line 31) | pub fn red(&self) -> f64 {
method green (line 35) | pub fn green(&self) -> f64 {
method blue (line 39) | pub fn blue(&self) -> f64 {
method alpha (line 43) | pub fn alpha(&self) -> f64 {
method from (line 61) | fn from(color: SlintRgbaColor) -> Self {
method default (line 24) | fn default() -> Self {
type SlintRgbaColor (line 50) | pub struct SlintRgbaColor {
method from (line 55) | fn from(color: Color) -> Self {
method new (line 75) | pub fn new() -> Self {
method from_rgb (line 82) | pub fn from_rgb(red: u8, green: u8, blue: u8) -> Self {
method from_argb (line 88) | pub fn from_argb(alpha: u8, red: u8, green: u8, blue: u8) -> Self {
method red (line 94) | pub fn red(&self) -> u8 {
method green (line 100) | pub fn green(&self) -> u8 {
method blue (line 106) | pub fn blue(&self) -> u8 {
method alpha (line 112) | pub fn alpha(&self) -> u8 {
method brighter (line 123) | pub fn brighter(&self, factor: f64) -> SlintRgbaColor {
method darker (line 133) | pub fn darker(&self, factor: f64) -> SlintRgbaColor {
method transparentize (line 141) | pub fn transparentize(&self, amount: f64) -> SlintRgbaColor {
method mix (line 149) | pub fn mix(&self, other: &SlintRgbaColor, factor: f64) -> SlintRgbaCol...
method with_alpha (line 155) | pub fn with_alpha(&self, alpha: f64) -> SlintRgbaColor {
method to_string (line 161) | pub fn to_string(&self) -> String {
type JsBrush (line 176) | pub struct JsBrush {
type SlintBrush (line 185) | pub struct SlintBrush {
method from (line 190) | fn from(brush: Brush) -> Self {
method from (line 196) | fn from(color: SlintRgbaColor) -> Self {
method new_with_color (line 204) | pub fn new_with_color(color: RgbaColor) -> Result<Self> {
method from_brush (line 220) | pub fn from_brush(brush: JsBrush) -> Result<Self> {
method from_slint_color (line 225) | pub fn from_slint_color(color: &SlintRgbaColor) -> Self {
method color (line 230) | pub fn color(&self) -> RgbaColor {
method slint_color (line 236) | pub fn slint_color(&self) -> SlintRgbaColor {
method is_transparent (line 242) | pub fn is_transparent(&self) -> bool {
method is_opaque (line 248) | pub fn is_opaque(&self) -> bool {
method brighter (line 256) | pub fn brighter(&self, factor: f64) -> SlintBrush {
method darker (line 264) | pub fn darker(&self, factor: f64) -> SlintBrush {
method transparentize (line 272) | pub fn transparentize(&self, amount: f64) -> SlintBrush {
method with_alpha (line 279) | pub fn with_alpha(&self, alpha: f64) -> SlintBrush {
method brush (line 285) | pub fn brush(&self) -> External<Brush> {
method to_string (line 292) | pub fn to_string(&self) -> String {
function gradient_stops_to_string (line 310) | fn gradient_stops_to_string<'a>(stops: impl Iterator<Item = &'a Gradient...
FILE: api/node/rust/types/image_data.rs
type ImageData (line 16) | pub type ImageData = Image;
type SlintImageData (line 20) | pub struct SlintImageData {
method from (line 25) | fn from(image: Image) -> Self {
method new (line 35) | pub fn new(width: u32, height: u32) -> Self {
method width (line 41) | pub fn width(&self) -> u32 {
method height (line 47) | pub fn height(&self) -> u32 {
method data (line 54) | pub fn data(&self) -> Buffer {
method path (line 78) | pub fn path<'a>(&self, env: &'a Env) -> napi::Result<Unknown<'a>> {
method image (line 87) | pub fn image(&self) -> External<ImageData> {
function rgb_to_rgba (line 92) | fn rgb_to_rgba(bytes: &[u8], size: usize) -> Vec<u8> {
FILE: api/node/rust/types/model.rs
type SharedModelNotify (line 15) | pub struct SharedModelNotify(Rc<ModelNotify>);
type Target (line 18) | type Target = Rc<ModelNotify>;
method deref (line 20) | fn deref(&self) -> &Self::Target {
function js_into_rust_model (line 25) | pub(crate) fn js_into_rust_model(
function rust_into_js_model (line 42) | pub(crate) fn rust_into_js_model<'a>(
type JsModel (line 52) | struct JsModel {
function js_model_notify_new (line 60) | pub fn js_model_notify_new() -> Result<External<SharedModelNotify>> {
function js_model_notify_row_data_changed (line 65) | pub fn js_model_notify_row_data_changed(notify: ExternalRef<SharedModelN...
function js_model_notify_row_added (line 70) | pub fn js_model_notify_row_added(notify: ExternalRef<SharedModelNotify>,...
function js_model_notify_row_removed (line 75) | pub fn js_model_notify_row_removed(notify: ExternalRef<SharedModelNotify...
function js_model_notify_reset (line 80) | pub fn js_model_notify_reset(notify: ExternalRef<SharedModelNotify>) {
type Data (line 85) | type Data = slint_interpreter::Value;
method row_count (line 87) | fn row_count(&self) -> usize {
method row_data (line 130) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method set_row_data (line 170) | fn set_row_data(&self, row: usize, data: Self::Data) {
method model_tracker (line 206) | fn model_tracker(&self) -> &dyn i_slint_core::model::ModelTracker {
method as_any (line 210) | fn as_any(&self) -> &dyn core::any::Any {
type ReadOnlyRustModel (line 216) | pub struct ReadOnlyRustModel(ModelRc<slint_interpreter::Value>);
method from (line 219) | fn from(model: ModelRc<slint_interpreter::Value>) -> Self {
method row_count (line 228) | pub fn row_count(&self) -> u32 {
method row_data (line 233) | pub fn row_data<'a>(&self, env: &'a Env, row: u32) -> Result<Unknown<'...
method set_row_data (line 241) | pub fn set_row_data(&self, _env: &Env, _row: u32, _data: Unknown<'_>) {
method into_js (line 247) | pub fn into_js<'a>(self, env: &'a Env) -> Result<Unknown<'a>> {
type ModelIterator (line 271) | pub struct ModelIterator {
method next (line 282) | pub fn next(&mut self) -> Result<Unknown<'_>> {
FILE: api/node/rust/types/point.rs
type SlintPoint (line 9) | pub struct SlintPoint {
method new (line 18) | pub fn new(x: f64, y: f64) -> Self {
method from_napi_value (line 24) | unsafe fn from_napi_value(
FILE: api/node/rust/types/size.rs
type SlintSize (line 9) | pub struct SlintSize {
method new (line 18) | pub fn new(width: f64, height: f64) -> napi::Result<Self> {
method from_napi_value (line 32) | unsafe fn from_napi_value(
FILE: api/node/typescript/index.ts
type Point (line 24) | interface Point {
type Size (line 39) | interface Size {
type Window (line 56) | interface Window {
type ImageData (line 102) | interface ImageData {
type ComponentHandle (line 130) | interface ComponentHandle {
class Component (line 160) | class Component implements ComponentHandle {
method constructor (line 166) | constructor(instance: napi.ComponentInstance) {
method window (line 170) | get window(): Window {
method component_instance (line 177) | get component_instance(): napi.ComponentInstance {
method run (line 181) | async run() {
method show (line 187) | show() {
method hide (line 191) | hide() {
class CompileError (line 199) | class CompileError extends Error {
method constructor (line 211) | constructor(message: string, diagnostics: napi.Diagnostic[]) {
type LoadFileOptions (line 232) | interface LoadFileOptions {
type LoadData (line 259) | type LoadData =
function translateName (line 276) | function translateName(key: string): string {
function loadSlint (line 280) | function loadSlint(loadData: LoadData): Object {
function loadFile (line 634) | function loadFile(
function loadSource (line 674) | function loadSource(
class EventLoop (line 685) | class EventLoop {
method start (line 690) | start(
method quit (line 731) | quit() {
function runEventLoop (line 758) | function runEventLoop(
function quitEventLoop (line 781) | function quitEventLoop() {
class MapModel (line 904) | class MapModel<T, U> extends Model<U> {
method constructor (line 915) | constructor(sourceModel: Model<T>, mapFunction: (data: T) => U) {
method rowCount (line 924) | rowCount(): number {
method rowData (line 933) | rowData(row: number): U | undefined {
function initTranslations (line 960) | function initTranslations(domain: string, path: string | URL) {
function setXdgAppId (line 969) | function setXdgAppId(app_id: string) {
function send_mouse_click (line 991) | function send_mouse_click(
function send_keyboard_string_sequence (line 999) | function send_keyboard_string_sequence(
FILE: api/node/typescript/models.ts
class ModelIterator (line 6) | class ModelIterator<T> implements Iterator<T> {
method constructor (line 10) | constructor(model: Model<T>) {
method next (line 15) | public next(): IteratorResult<T> {
method constructor (line 99) | constructor(modelNotify?: napi.ExternalObject<napi.SharedModelNotify>) {
method setRowData (line 132) | setRowData(_row: number, _data: T): void {
method [Symbol.iterator] (line 138) | [Symbol.iterator](): Iterator<T> {
method notifyRowDataChanged (line 146) | protected notifyRowDataChanged(row: number): void {
method notifyRowAdded (line 155) | protected notifyRowAdded(row: number, count: number): void {
method notifyRowRemoved (line 164) | protected notifyRowRemoved(row: number, count: number): void {
method notifyReset (line 171) | protected notifyReset(): void {
class ArrayModel (line 180) | class ArrayModel<T> extends Model<T> {
method constructor (line 191) | constructor(arr: Array<T>) {
method length (line 199) | get length(): number {
method rowCount (line 206) | rowCount() {
method rowData (line 215) | rowData(row: number) {
method setRowData (line 224) | setRowData(row: number, data: T) {
method push (line 234) | push(...values: T[]) {
method pop (line 245) | pop(): T | undefined {
method remove (line 260) | remove(index: number, size: number) {
method values (line 268) | values(): IterableIterator<T> {
method entries (line 275) | entries(): IterableIterator<[number, T]> {
FILE: api/python/briefcase/src/briefcasex_slint/__init__.py
class SlintGuiBootstrap (line 9) | class SlintGuiBootstrap(BaseGuiBootstrap):
method app_source (line 12) | def app_source(self):
method app_start_source (line 28) | def app_start_source(self):
method pyproject_table_briefcase_app_extra_content (line 36) | def pyproject_table_briefcase_app_extra_content(self):
method pyproject_table_macOS (line 47) | def pyproject_table_macOS(self):
method pyproject_table_linux (line 55) | def pyproject_table_linux(self):
method pyproject_table_windows (line 62) | def pyproject_table_windows(self):
method pyproject_table_iOS (line 69) | def pyproject_table_iOS(self):
method post_generate (line 76) | def post_generate(self, base_path: Path) -> None:
FILE: api/python/slint/api_match.rs
type PyGeneratedAPI (line 11) | pub struct PyGeneratedAPI {
method new (line 20) | fn new(path: PathBuf, json: &str) -> PyResult<Self> {
method compare_generated_vs_actual (line 27) | fn compare_generated_vs_actual(generated: &Self, actual: &Self) -> PyR...
FILE: api/python/slint/async_adapter.rs
type PyFdWrapper (line 10) | struct PyFdWrapper(std::os::fd::RawFd);
method as_fd (line 14) | fn as_fd(&self) -> std::os::fd::BorrowedFd<'_> {
method as_socket (line 24) | fn as_socket(&self) -> std::os::windows::io::BorrowedSocket<'_> {
type PyFdWrapper (line 20) | struct PyFdWrapper(#[cfg(windows)] std::os::windows::io::RawSocket);
method as_fd (line 14) | fn as_fd(&self) -> std::os::fd::BorrowedFd<'_> {
method as_socket (line 24) | fn as_socket(&self) -> std::os::windows::io::BorrowedSocket<'_> {
type AdapterInner (line 29) | struct AdapterInner {
type AsyncAdapter (line 37) | pub struct AsyncAdapter {
method py_new (line 46) | fn py_new(fd: i32) -> Self {
method wait_for_readable (line 59) | fn wait_for_readable(&mut self, callback: Py<PyAny>) {
method wait_for_writable (line 65) | fn wait_for_writable(&mut self, callback: Py<PyAny>) {
method restart_after_mut_inner_access (line 73) | fn restart_after_mut_inner_access(&mut self, callback: impl FnOnce(&mu...
FILE: api/python/slint/brush.rs
type RgbaColor (line 12) | struct RgbaColor {
type RgbColor (line 26) | struct RgbColor {
type PyColorInput (line 37) | enum PyColorInput {
type PyColor (line 69) | pub struct PyColor {
method py_new (line 78) | fn py_new(maybe_value: Option<PyColorInput>) -> PyResult<Self> {
method red (line 106) | fn red(&self) -> u8 {
method green (line 112) | fn green(&self) -> u8 {
method blue (line 118) | fn blue(&self) -> u8 {
method alpha (line 124) | fn alpha(&self) -> u8 {
method brighter (line 129) | fn brighter(&self, factor: f32) -> Self {
method darker (line 134) | fn darker(&self, factor: f32) -> Self {
method transparentize (line 141) | fn transparentize(&self, factor: f32) -> Self {
method mix (line 148) | fn mix(&self, other: &Self, factor: f32) -> Self {
method with_alpha (line 153) | fn with_alpha(&self, alpha: f32) -> Self {
method __str__ (line 157) | fn __str__(&self) -> String {
method __eq__ (line 161) | fn __eq__(&self, other: &Self) -> bool {
method from (line 167) | fn from(color: slint_interpreter::Color) -> Self {
type PyBrushInput (line 174) | enum PyBrushInput {
type PyBrush (line 188) | pub struct PyBrush {
method py_new (line 197) | fn py_new(maybe_value: Option<PyBrushInput>) -> PyResult<Self> {
method color (line 209) | fn color(&self) -> PyColor {
method is_transparent (line 214) | fn is_transparent(&self) -> bool {
method is_opaque (line 219) | fn is_opaque(&self) -> bool {
method brighter (line 226) | fn brighter(&self, factor: f32) -> Self {
method darker (line 233) | fn darker(&self, factor: f32) -> Self {
method transparentize (line 242) | fn transparentize(&self, amount: f32) -> Self {
method with_alpha (line 248) | fn with_alpha(&self, alpha: f32) -> Self {
method __eq__ (line 252) | fn __eq__(&self, other: &Self) -> bool {
method from (line 258) | fn from(brush: slint_interpreter::Brush) -> Self {
FILE: api/python/slint/build.rs
function map_type (line 7) | fn map_type(ty: &str) -> &str {
function map_default (line 17) | fn map_default(ty: &str) -> &str {
function main (line 100) | fn main() {
FILE: api/python/slint/build_docs.py
function add_modules (line 23) | def add_modules(m: pdoc.doc.Module):
FILE: api/python/slint/errors.rs
type PyGetPropertyError (line 6) | pub struct PyGetPropertyError(pub slint_interpreter::GetPropertyError);
method from (line 15) | fn from(err: slint_interpreter::GetPropertyError) -> Self {
method from (line 9) | fn from(err: PyGetPropertyError) -> Self {
type PySetPropertyError (line 20) | pub struct PySetPropertyError(pub slint_interpreter::SetPropertyError);
method from (line 29) | fn from(err: slint_interpreter::SetPropertyError) -> Self {
method from (line 23) | fn from(err: PySetPropertyError) -> Self {
type PyPlatformError (line 34) | pub struct PyPlatformError(pub slint_interpreter::PlatformError);
method from (line 43) | fn from(err: slint_interpreter::PlatformError) -> Self {
method from (line 37) | fn from(err: PyPlatformError) -> Self {
type PyEventLoopError (line 48) | pub struct PyEventLoopError(pub slint_interpreter::EventLoopError);
method from (line 57) | fn from(err: slint_interpreter::EventLoopError) -> Self {
method from (line 51) | fn from(err: PyEventLoopError) -> Self {
type PyInvokeError (line 62) | pub struct PyInvokeError(pub slint_interpreter::InvokeError);
method from (line 71) | fn from(err: slint_interpreter::InvokeError) -> Self {
method from (line 65) | fn from(err: PyInvokeError) -> Self {
type PySetCallbackError (line 76) | pub struct PySetCallbackError(pub slint_interpreter::SetCallbackError);
method from (line 85) | fn from(err: slint_interpreter::SetCallbackError) -> Self {
method from (line 79) | fn from(err: PySetCallbackError) -> Self {
type PyLoadImageError (line 90) | pub struct PyLoadImageError(pub slint_interpreter::LoadImageError);
method from (line 99) | fn from(err: slint_interpreter::LoadImageError) -> Self {
method from (line 93) | fn from(err: PyLoadImageError) -> Self {
type PyColorParseError (line 104) | pub struct PyColorParseError(pub css_color_parser2::ColorParseError);
method from (line 113) | fn from(err: css_color_parser2::ColorParseError) -> Self {
method from (line 107) | fn from(err: PyColorParseError) -> Self {
FILE: api/python/slint/image.rs
type PyImage (line 12) | pub struct PyImage {
method py_new (line 20) | fn py_new() -> PyResult<Self> {
method size (line 26) | fn size(&self) -> PyResult<(u32, u32)> {
method width (line 32) | fn width(&self) -> PyResult<u32> {
method height (line 38) | fn height(&self) -> PyResult<u32> {
method path (line 44) | fn path(&self) -> PyResult<Option<std::path::PathBuf>> {
method load_from_path (line 50) | fn load_from_path(path: std::path::PathBuf) -> Result<Self, crate::err...
method load_from_svg_data (line 57) | fn load_from_svg_data(data: Vec<u8>) -> Result<Self, crate::errors::Py...
method load_from_array (line 104) | fn load_from_array(array: &Bound<'_, PyAny>) -> PyResult<Self> {
method from (line 203) | fn from(image: slint_interpreter::Image) -> Self {
FILE: api/python/slint/interpreter.rs
type Compiler (line 31) | pub struct Compiler {
method py_new (line 39) | fn py_new() -> PyResult<Self> {
method get_include_paths (line 44) | fn get_include_paths(&self) -> PyResult<Vec<PathBuf>> {
method set_include_paths (line 49) | fn set_include_paths(&mut self, paths: Vec<PathBuf>) {
method get_style (line 54) | fn get_style(&self) -> PyResult<Option<String>> {
method set_style (line 59) | fn set_style(&mut self, style: String) {
method get_library_paths (line 64) | fn get_library_paths(&self) -> PyResult<HashMap<String, PathBuf>> {
method set_library_paths (line 69) | fn set_library_paths(&mut self, libraries: HashMap<String, PathBuf>) {
method set_translation_domain (line 74) | fn set_translation_domain(&mut self, domain: String) {
method build_from_path (line 78) | fn build_from_path(&mut self, py: Python<'_>, path: PathBuf) -> Compil...
method build_from_source (line 83) | fn build_from_source(
type PyDiagnostic (line 97) | pub struct PyDiagnostic(slint_interpreter::Diagnostic);
method level (line 103) | fn level(&self) -> PyDiagnosticLevel {
method message (line 113) | fn message(&self) -> &str {
method column_number (line 118) | fn column_number(&self) -> usize {
method line_number (line 123) | fn line_number(&self) -> usize {
method source_file (line 128) | fn source_file(&self) -> Option<PathBuf> {
method __str__ (line 132) | fn __str__(&self) -> String {
type PyDiagnosticLevel (line 140) | pub enum PyDiagnosticLevel {
type CompilationResult (line 148) | pub struct CompilationResult {
method new (line 155) | fn new(result: slint_interpreter::CompilationResult, path: PathBuf, py...
method component_names (line 165) | fn component_names(&self) -> Vec<String> {
method component (line 169) | fn component(&self, name: &str) -> Option<ComponentDefinition> {
method get_diagnostics (line 177) | fn get_diagnostics(&self) -> Vec<PyDiagnostic> {
method structs_and_enums (line 182) | fn structs_and_enums<'py>(
method named_exports (line 220) | fn named_exports(&self) -> Vec<(String, String)> {
method generated_api (line 225) | fn generated_api(&self) -> PyResult<PyGeneratedAPI> {
type ComponentDefinition (line 256) | pub struct ComponentDefinition {
method name (line 264) | fn name(&self) -> &str {
method properties (line 269) | fn properties(&self) -> IndexMap<String, PyValueType> {
method callbacks (line 277) | fn callbacks(&self) -> Vec<String> {
method functions (line 282) | fn functions(&self) -> Vec<String> {
method globals (line 287) | fn globals(&self) -> Vec<String> {
method global_properties (line 291) | fn global_properties(&self, name: &str) -> Option<IndexMap<String, PyV...
method global_callbacks (line 299) | fn global_callbacks(&self, name: &str) -> Option<Vec<String>> {
method global_functions (line 303) | fn global_functions(&self, name: &str) -> Option<Vec<String>> {
method callback_returns_void (line 307) | fn callback_returns_void(&self, callback_name: &str) -> Option<bool> {
method global_callback_returns_void (line 319) | fn global_callback_returns_void(&self, global_name: &str, callback_nam...
method create (line 334) | fn create(&self) -> Result<ComponentInstance, crate::errors::PyPlatfor...
type PyValueType (line 350) | pub enum PyValueType {
method from (line 363) | fn from(ty: i_slint_compiler::langtype::Type) -> Self {
type ComponentInstance (line 392) | pub struct ComponentInstance {
method definition (line 402) | fn definition(&self) -> ComponentDefinition {
method get_property (line 409) | fn get_property(&self, name: &str) -> Result<SlintToPyValue, PyGetProp...
method set_property (line 413) | fn set_property(&self, name: &str, value: Bound<'_, PyAny>) -> PyResul...
method get_global_property (line 419) | fn get_global_property(
method set_global_property (line 429) | fn set_global_property(
method invoke (line 444) | fn invoke(&self, callback_name: &str, args: Bound<'_, PyTuple>) -> PyR...
method invoke_global (line 457) | fn invoke_global(
method set_callback (line 476) | fn set_callback(&self, name: &str, callable: Py<PyAny>) -> Result<(), ...
method set_global_callback (line 481) | fn set_global_callback(
method show (line 498) | fn show(&self) -> Result<(), PyPlatformError> {
method hide (line 502) | fn hide(&self) -> Result<(), PyPlatformError> {
method __traverse__ (line 506) | fn __traverse__(&self, visit: PyVisit<'_>) -> Result<(), PyTraverseErr...
method __clear__ (line 519) | fn __clear__(&mut self) {
method properties_for_gc (line 530) | fn properties_for_gc(&self) -> Vec<slint_interpreter::Value> {
type GcVisibleCallbacks (line 559) | struct GcVisibleCallbacks {
method register (line 565) | fn register(&self, name: String, callable: Py<PyAny>) -> impl Fn(&[Val...
method __traverse__ (line 614) | fn __traverse__(&self, visit: &PyVisit<'_>) -> Result<(), PyTraverseEr...
method __clear__ (line 621) | fn __clear__(&mut self) {
FILE: api/python/slint/language.rs
function get_default_value (line 16) | fn get_default_value<'py>(py: Python<'py>, ty: &str) -> PyResult<Bound<'...
function register_named_tuple (line 28) | fn register_named_tuple(
FILE: api/python/slint/lib.rs
function handle_unraisable (line 24) | fn handle_unraisable(py: Python<'_>, context: String, err: PyErr) {
function run_event_loop (line 49) | fn run_event_loop(py: Python<'_>) -> Result<(), PyErr> {
function quit_event_loop (line 61) | fn quit_event_loop() -> Result<(), errors::PyEventLoopError> {
function set_xdg_app_id (line 67) | fn set_xdg_app_id(app_id: String) -> Result<(), errors::PyPlatformError> {
function invoke_from_event_loop (line 73) | fn invoke_from_event_loop(callable: Py<PyAny>) -> Result<(), errors::PyE...
function init_translations (line 86) | fn init_translations(_py: Python<'_>, translations: Bound<PyAny>) -> PyR...
type PyGettextTranslator (line 98) | struct PyGettextTranslator(
method translate (line 104) | fn translate<'a>(
method ntranslate (line 129) | fn ntranslate<'a>(
function slint (line 165) | fn slint(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
FILE: api/python/slint/models.rs
type PyModelShared (line 16) | pub struct PyModelShared {
method apply_type_collection (line 27) | pub fn apply_type_collection(&self, type_collection: &TypeCollection) {
method __traverse__ (line 33) | pub fn __traverse__(&self, visit: &PyVisit<'_>) -> Result<(), PyTraver...
method __clear__ (line 40) | pub fn __clear__(&self) {
type Data (line 96) | type Data = slint_interpreter::Value;
method row_count (line 98) | fn row_count(&self) -> usize {
method row_data (line 131) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method set_row_data (line 170) | fn set_row_data(&self, row: usize, data: Self::Data) {
method model_tracker (line 197) | fn model_tracker(&self) -> &dyn i_slint_core::model::ModelTracker {
method as_any (line 201) | fn as_any(&self) -> &dyn core::any::Any {
method rust_into_py_model (line 207) | pub fn rust_into_py_model<'py>(
type PyModelBase (line 47) | pub struct PyModelBase {
method as_model (line 52) | pub fn as_model(&self) -> ModelRc<slint_interpreter::Value> {
method new (line 60) | fn new() -> Self {
method init_self (line 70) | fn init_self(&self, self_ref: Py<PyAny>) {
method notify_row_added (line 74) | fn notify_row_added(&self, index: usize, count: usize) {
method notify_row_changed (line 78) | fn notify_row_changed(&self, index: usize) {
method notify_row_removed (line 82) | fn notify_row_removed(&self, index: usize, count: usize) {
method __traverse__ (line 86) | fn __traverse__(&self, visit: PyVisit<'_>) -> Result<(), PyTraverseErr...
method __clear__ (line 90) | fn __clear__(&mut self) {
type ReadOnlyRustModel (line 218) | pub struct ReadOnlyRustModel {
method row_count (line 225) | fn row_count(&self) -> usize {
method row_data (line 229) | fn row_data(&self, row: usize) -> Option<SlintToPyValue> {
method __len__ (line 233) | fn __len__(&self) -> usize {
method __iter__ (line 237) | fn __iter__(slf: PyRef<'_, Self>) -> ReadOnlyRustModelIterator {
method __getitem__ (line 245) | fn __getitem__(&self, index: usize) -> Option<SlintToPyValue> {
type ReadOnlyRustModelIterator (line 251) | struct ReadOnlyRustModelIterator {
method __iter__ (line 259) | fn __iter__(slf: PyRef<'_, Self>) -> PyRef<'_, Self> {
method __next__ (line 263) | fn __next__(&mut self) -> Option<SlintToPyValue> {
FILE: api/python/slint/slint/__init__.py
class CompileError (line 33) | class CompileError(Exception):
method __init__ (line 40) | def __init__(self, message: str, diagnostics: list[native.PyDiagnostic]):
class Component (line 49) | class Component:
method show (line 55) | def show(self) -> None:
method hide (line 60) | def hide(self) -> None:
method run (line 65) | def run(self) -> None:
function _normalize_prop (line 72) | def _normalize_prop(name: str) -> str:
function _build_global_class (line 76) | def _build_global_class(compdef: native.ComponentDefinition, global_name...
function _build_class (line 146) | def _build_class(
function _build_struct (line 272) | def _build_struct(name: str, struct_prototype: native.PyStruct) -> type:
function _load_file (line 288) | def _load_file(
function load_file (line 364) | def load_file(
function _load_file_checked (line 392) | def _load_file_checked(
class SlintAutoLoader (line 415) | class SlintAutoLoader:
method __init__ (line 416) | def __init__(self, base_dir: Path | None = None):
method __getattr__ (line 421) | def __getattr__(self, name: str) -> Any:
function _callback_decorator (line 467) | def _callback_decorator(
function callback (line 492) | def callback(
function set_xdg_app_id (line 534) | def set_xdg_app_id(app_id: str) -> None:
function run_event_loop (line 544) | def run_event_loop(
function quit_event_loop (line 596) | def quit_event_loop() -> None:
function init_translations (line 603) | def init_translations(translations: typing.Optional[gettext.GNUTranslati...
FILE: api/python/slint/slint/loop.py
class HasFileno (line 14) | class HasFileno(typing.Protocol):
method fileno (line 15) | def fileno(self) -> int: ...
function fd_for_fileobj (line 18) | def fd_for_fileobj(fileobj: int | HasFileno) -> int:
class _SlintSelectorMapping (line 24) | class _SlintSelectorMapping(Mapping[typing.Any, selectors.SelectorKey]):
method __init__ (line 25) | def __init__(self, slint_selector: "_SlintSelector") -> None:
method __len__ (line 28) | def __len__(self) -> int:
method get (line 31) | def get(self, fileobj, default=None):
method __getitem__ (line 35) | def __getitem__(self, fileobj: typing.Any) -> selectors.SelectorKey:
method __iter__ (line 39) | def __iter__(self):
class _SlintSelector (line 43) | class _SlintSelector(selectors.BaseSelector):
method __init__ (line 44) | def __init__(self) -> None:
method register (line 49) | def register(
method unregister (line 66) | def unregister(self, fileobj: typing.Any) -> selectors.SelectorKey:
method modify (line 77) | def modify(
method select (line 92) | def select(
method close (line 97) | def close(self) -> None:
method get_map (line 100) | def get_map(self) -> Mapping[int | HasFileno, selectors.SelectorKey]:
method read_notify (line 103) | def read_notify(self, fd: int) -> None:
method write_notify (line 108) | def write_notify(self, fd: int) -> None:
class SlintEventLoop (line 114) | class SlintEventLoop(asyncio.SelectorEventLoop):
method __init__ (line 115) | def __init__(self) -> None:
method run_forever (line 122) | def run_forever(self) -> None:
method run_until_complete (line 137) | def run_until_complete[T](self, future: typing.Awaitable[T]) -> T | None:
method _run_forever_setup (line 162) | def _run_forever_setup(self) -> None:
method _run_forever_cleanup (line 165) | def _run_forever_cleanup(self) -> None:
method stop (line 168) | def stop(self) -> None:
method is_running (line 171) | def is_running(self) -> bool:
method close (line 174) | def close(self) -> None:
method is_closed (line 177) | def is_closed(self) -> bool:
method call_later (line 180) | def call_later(self, delay, callback, *args, context=None) -> asyncio....
method call_at (line 208) | def call_at(self, when, callback, *args, context=None) -> asyncio.Time...
method call_soon (line 211) | def call_soon(self, callback, *args, context=None) -> asyncio.TimerHan...
method _flush_soon_tasks (line 221) | def _flush_soon_tasks(self) -> None:
method call_soon_threadsafe (line 228) | def call_soon_threadsafe(self, callback, *args, context=None) -> async...
method _write_to_self (line 243) | def _write_to_self(self) -> None:
FILE: api/python/slint/slint/models.py
class Model (line 11) | class Model[T](native.PyModelBase, Iterable[T]):
method __new__ (line 18) | def __new__(cls, *args: Any) -> "Model[T]":
method __init__ (line 21) | def __init__(self) -> None:
method __len__ (line 24) | def __len__(self) -> int:
method __getitem__ (line 27) | def __getitem__(self, index: int) -> typing.Optional[T]:
method __setitem__ (line 30) | def __setitem__(self, index: int, value: T) -> None:
method __iter__ (line 33) | def __iter__(self) -> Iterator[T]:
method set_row_data (line 36) | def set_row_data(self, row: int, value: T) -> None:
method row_data (line 43) | def row_data(self, row: int) -> typing.Optional[T]:
method notify_row_changed (line 48) | def notify_row_changed(self, row: int) -> None:
method notify_row_removed (line 52) | def notify_row_removed(self, row: int, count: int) -> None:
method notify_row_added (line 57) | def notify_row_added(self, row: int, count: int) -> None:
class ListModel (line 63) | class ListModel[T](Model[T]):
method __init__ (line 74) | def __init__(self, iterable: typing.Optional[Iterable[T]] = None):
method row_count (line 84) | def row_count(self) -> int:
method row_data (line 87) | def row_data(self, row: int) -> typing.Optional[T]:
method set_row_data (line 90) | def set_row_data(self, row: int, value: T) -> None:
method __delitem__ (line 94) | def __delitem__(self, key: int | slice) -> None:
method append (line 104) | def append(self, value: T) -> None:
class ModelIterator (line 111) | class ModelIterator[T](Iterator[T]):
method __init__ (line 112) | def __init__(self, model: Model[T]):
method __iter__ (line 116) | def __iter__(self) -> "ModelIterator[T]":
method __next__ (line 119) | def __next__(self) -> T:
FILE: api/python/slint/slint/slint.pyi
class RgbColor (line 17) | class RgbColor:
class RgbaColor (line 22) | class RgbaColor:
class Color (line 28) | class Color:
method __new__ (line 33) | def __new__(
method brighter (line 39) | def brighter(self, factor: float) -> "Color": ...
method darker (line 40) | def darker(self, factor: float) -> "Color": ...
method transparentize (line 41) | def transparentize(self, factor: float) -> "Color": ...
method mix (line 42) | def mix(self, other: "Image", factor: float) -> "Color": ...
method with_alpha (line 43) | def with_alpha(self, alpha: float) -> "Color": ...
method __str__ (line 44) | def __str__(self) -> str: ...
method __eq__ (line 45) | def __eq__(self, other: object) -> bool: ...
class Brush (line 47) | class Brush:
method __new__ (line 49) | def __new__(cls, maybe_value: typing.Optional[Color]) -> "Brush": ...
method is_transparent (line 50) | def is_transparent(self) -> bool: ...
method is_opaque (line 51) | def is_opaque(self) -> bool: ...
method brighter (line 52) | def brighter(self, factor: float) -> "Brush": ...
method darker (line 53) | def darker(self, factor: float) -> "Brush": ...
method transparentize (line 54) | def transparentize(self, amount: float) -> "Brush": ...
method with_alpha (line 55) | def with_alpha(self, alpha: float) -> "Brush": ...
method __eq__ (line 56) | def __eq__(self, other: object) -> bool: ...
class Image (line 58) | class Image:
method __new__ (line 68) | def __new__(
method load_from_path (line 72) | def load_from_path(path: str | os.PathLike[Any] | pathlib.Path) -> "Im...
method load_from_svg_data (line 79) | def load_from_svg_data(data: typing.Sequence[int]) -> "Image":
method load_from_array (line 86) | def load_from_array(array: Buffer) -> Image:
class TimerMode (line 128) | class TimerMode(Enum):
class Timer (line 132) | class Timer:
method __new__ (line 135) | def __new__(
method start (line 138) | def start(
method single_shot (line 142) | def single_shot(duration: datetime.timedelta, callback: typing.Any) ->...
method stop (line 143) | def stop(self) -> None: ...
method restart (line 144) | def restart(self) -> None: ...
function set_xdg_app_id (line 146) | def set_xdg_app_id(app_id: str) -> None: ...
function invoke_from_event_loop (line 147) | def invoke_from_event_loop(callable: typing.Callable[[], None]) -> None:...
function run_event_loop (line 148) | def run_event_loop() -> None: ...
function quit_event_loop (line 149) | def quit_event_loop() -> None: ...
function init_translations (line 150) | def init_translations(
class PyModelBase (line 154) | class PyModelBase:
method init_self (line 155) | def init_self(self, *args: Any) -> None: ...
method row_count (line 156) | def row_count(self) -> int: ...
method row_data (line 157) | def row_data(self, row: int) -> typing.Optional[Any]: ...
method set_row_data (line 158) | def set_row_data(self, row: int, value: Any) -> None: ...
method notify_row_changed (line 159) | def notify_row_changed(self, row: int) -> None: ...
method notify_row_removed (line 160) | def notify_row_removed(self, row: int, count: int) -> None: ...
method notify_row_added (line 161) | def notify_row_added(self, row: int, count: int) -> None: ...
class PyStruct (line 163) | class PyStruct(Any): ...
class ValueType (line 165) | class ValueType(Enum):
class DiagnosticLevel (line 175) | class DiagnosticLevel(Enum):
class PyDiagnostic (line 180) | class PyDiagnostic:
class ComponentInstance (line 187) | class ComponentInstance:
method show (line 188) | def show(self) -> None: ...
method hide (line 189) | def hide(self) -> None: ...
method invoke (line 190) | def invoke(self, callback_name: str, *args: Any) -> Any: ...
method invoke_global (line 191) | def invoke_global(
method set_property (line 194) | def set_property(self, property_name: str, value: Any) -> None: ...
method get_property (line 195) | def get_property(self, property_name: str) -> Any: ...
method set_callback (line 196) | def set_callback(
method set_global_callback (line 199) | def set_global_callback(
method set_global_property (line 202) | def set_global_property(
method get_global_property (line 205) | def get_global_property(self, global_name: str, property_name: str) ->...
class ComponentDefinition (line 207) | class ComponentDefinition:
method create (line 208) | def create(self) -> ComponentInstance: ...
method global_functions (line 214) | def global_functions(self, global_name: str) -> list[str]: ...
method global_callbacks (line 215) | def global_callbacks(self, global_name: str) -> list[str]: ...
method global_properties (line 216) | def global_properties(self, global_name: str) -> typing.Dict[str, Valu...
method callback_returns_void (line 217) | def callback_returns_void(self, callback_name: str) -> bool: ...
method global_callback_returns_void (line 218) | def global_callback_returns_void(
class CompilationResult (line 222) | class CompilationResult:
method component (line 228) | def component(self, name: str) -> ComponentDefinition: ...
class Compiler (line 230) | class Compiler:
method build_from_path (line 235) | def build_from_path(
method build_from_source (line 238) | def build_from_source(
class AsyncAdapter (line 242) | class AsyncAdapter:
method __new__ (line 243) | def __new__(
method wait_for_readable (line 247) | def wait_for_readable(self, callback: typing.Callable[[int], None]) ->...
method wait_for_writable (line 248) | def wait_for_writable(self, callback: typing.Callable[[int], None]) ->...
class GeneratedAPI (line 250) | class GeneratedAPI:
method __new__ (line 251) | def __new__(
method compare_generated_vs_actual (line 255) | def compare_generated_vs_actual(
FILE: api/python/slint/stub-gen/main.rs
function main (line 6) | fn main() -> Result<()> {
FILE: api/python/slint/tests/test_api_match.py
function base_dir (line 11) | def base_dir() -> Path:
function compress_and_encode (line 20) | def compress_and_encode(json: str) -> str:
function test_no_change (line 26) | def test_no_change() -> None:
function test_incompatible_changes (line 51) | def test_incompatible_changes() -> None:
FILE: api/python/slint/tests/test_async.py
function test_async_basic (line 18) | def test_async_basic() -> None:
function test_async_aiohttp (line 31) | def test_async_aiohttp() -> None:
function test_basic_socket (line 76) | def test_basic_socket() -> None:
function test_server_socket (line 116) | def test_server_socket() -> None:
function test_loop_close_while_main_future_runs (line 167) | def test_loop_close_while_main_future_runs() -> None:
function test_loop_continues_when_main_coro_finished (line 185) | def test_loop_continues_when_main_coro_finished() -> None:
function test_subprocess (line 203) | def test_subprocess() -> None:
function test_exception_thrown (line 230) | def test_exception_thrown() -> None:
FILE: api/python/slint/tests/test_brush.py
function test_col_default (line 7) | def test_col_default() -> None:
function test_col_from_str (line 15) | def test_col_from_str() -> None:
function test_col_from_rgb_dict (line 24) | def test_col_from_rgb_dict() -> None:
function test_col_from_rgba_dict (line 33) | def test_col_from_rgba_dict() -> None:
function test_from_col (line 42) | def test_from_col() -> None:
FILE: api/python/slint/tests/test_callback_decorators.py
function base_dir (line 11) | def base_dir() -> Path:
function test_callback_decorators (line 20) | def test_callback_decorators(caplog: pytest.LogCaptureFixture) -> None:
function test_callback_decorators_async (line 43) | def test_callback_decorators_async() -> None:
function test_callback_decorators_async_err (line 79) | def test_callback_decorators_async_err() -> None:
FILE: api/python/slint/tests/test_compiler.py
function test_basic_compiler (line 9) | def test_basic_compiler() -> None:
function test_compiler_build_from_path (line 81) | def test_compiler_build_from_path() -> None:
FILE: api/python/slint/tests/test_enums.py
function base_dir (line 9) | def base_dir() -> Path:
function test_enums (line 18) | def test_enums() -> None:
FILE: api/python/slint/tests/test_gc.py
function test_callback_gc (line 12) | def test_callback_gc() -> None:
function test_struct_gc (line 50) | def test_struct_gc() -> None:
function test_properties_gc (line 81) | def test_properties_gc() -> None:
FILE: api/python/slint/tests/test_image.py
function base_dir (line 10) | def base_dir() -> Path:
function test_image_loading (line 19) | def test_image_loading() -> None:
FILE: api/python/slint/tests/test_instance.py
function test_property_access (line 11) | def test_property_access() -> None:
function test_callbacks (line 139) | def test_callbacks() -> None:
FILE: api/python/slint/tests/test_invoke_from_event_loop.py
function test_threads (line 11) | def test_threads() -> None:
FILE: api/python/slint/tests/test_load_file.py
function base_dir (line 9) | def base_dir() -> Path:
function test_load_file (line 18) | def test_load_file(caplog: pytest.LogCaptureFixture) -> None:
function test_load_file_fail (line 50) | def test_load_file_fail() -> None:
function test_compile_error (line 55) | def test_compile_error() -> None:
function test_load_file_wrapper (line 74) | def test_load_file_wrapper() -> None:
function test_constructor_kwargs (line 97) | def test_constructor_kwargs() -> None:
FILE: api/python/slint/tests/test_loader.py
function test_magic_import (line 9) | def test_magic_import() -> None:
function test_magic_import_path (line 14) | def test_magic_import_path() -> None:
FILE: api/python/slint/tests/test_loop.py
function test_sysexit_exception (line 11) | def test_sysexit_exception() -> None:
FILE: api/python/slint/tests/test_models.py
function test_model_notify (line 10) | def test_model_notify() -> None:
function test_model_from_list (line 57) | def test_model_from_list() -> None:
function test_python_model_sequence (line 82) | def test_python_model_sequence() -> None:
function test_python_model_iterable (line 92) | def test_python_model_iterable() -> None:
function test_rust_model_sequence (line 105) | def test_rust_model_sequence() -> None:
function test_model_writeback (line 128) | def test_model_writeback() -> None:
FILE: api/python/slint/tests/test_named_tuples.py
function named_tuple_info (line 18) | def named_tuple_info(request):
function test_is_tuple_subclass (line 22) | def test_is_tuple_subclass(named_tuple_info):
function test_default_values (line 27) | def test_default_values(named_tuple_info):
function test_instance_is_tuple (line 34) | def test_instance_is_tuple(named_tuple_info):
function test_asdict (line 39) | def test_asdict(named_tuple_info):
function test_has_docstring (line 47) | def test_has_docstring(named_tuple_info):
function test_fields_attribute (line 53) | def test_fields_attribute(named_tuple_info):
function test_keyword_init (line 59) | def test_keyword_init(named_tuple_info):
function test_replace (line 66) | def test_replace(named_tuple_info):
function test_StandardListViewItem (line 74) | def test_StandardListViewItem() -> None:
function test_KeyboardModifiers (line 81) | def test_KeyboardModifiers() -> None:
FILE: api/python/slint/tests/test_timers.py
function test_timer (line 10) | def test_timer() -> None:
function test_single_shot (line 31) | def test_single_shot() -> None:
FILE: api/python/slint/tests/test_translations.py
function base_dir (line 10) | def base_dir() -> Path:
class DummyTranslation (line 19) | class DummyTranslation:
method gettext (line 20) | def gettext(self, message: str) -> str:
method pgettext (line 25) | def pgettext(self, context: str, message: str) -> str:
function test_load_file (line 29) | def test_load_file() -> None:
FILE: api/python/slint/timer.rs
type PyTimerMode (line 15) | pub enum PyTimerMode {
function from (line 23) | fn from(value: PyTimerMode) -> Self {
type PyTimer (line 59) | pub struct PyTimer {
method py_new (line 67) | fn py_new() -> Self {
method start (line 79) | fn start(
method single_shot (line 109) | fn single_shot(duration: chrono::Duration, callback: Py<PyAny>) -> PyR...
method stop (line 128) | fn stop(&self) {
method restart (line 137) | fn restart(&self) {
method running (line 143) | fn running(&self) -> bool {
method set_interval (line 153) | fn set_interval(&self, interval: chrono::Duration) -> PyResult<()> {
method interval (line 162) | fn interval(&self) -> core::time::Duration {
FILE: api/python/slint/value.rs
type SlintToPyValue (line 19) | pub struct SlintToPyValue {
type Target (line 25) | type Target = PyAny;
type Output (line 26) | type Output = Bound<'py, Self::Target>;
type Error (line 27) | type Error = PyErr;
method into_pyobject (line 29) | fn into_pyobject(self, py: Python<'py>) -> Result<Self::Output, Self::...
function traverse_value (line 61) | pub fn traverse_value(
function traverse_struct (line 79) | fn traverse_struct(
function clear_strongrefs_in_value (line 89) | pub fn clear_strongrefs_in_value(value: &slint_interpreter::Value) {
function clear_strongrefs_in_struct (line 102) | fn clear_strongrefs_in_struct(structval: &slint_interpreter::Struct) {
type PyStruct (line 111) | pub struct PyStruct {
method __getattr__ (line 118) | fn __getattr__(&self, key: &str) -> PyResult<SlintToPyValue> {
method __setattr__ (line 128) | fn __setattr__(&mut self, py: Python<'_>, key: String, value: Py<PyAny...
method __iter__ (line 135) | fn __iter__(slf: PyRef<'_, Self>) -> PyStructFieldIterator {
method __copy__ (line 147) | fn __copy__(&self) -> Self {
method __traverse__ (line 151) | fn __traverse__(&self, visit: PyVisit<'_>) -> Result<(), PyTraverseErr...
method __clear__ (line 155) | fn __clear__(&mut self) {
type PyStructFieldIterator (line 164) | struct PyStructFieldIterator {
method __iter__ (line 172) | fn __iter__(slf: PyRef<'_, Self>) -> PyRef<'_, Self> {
method __next__ (line 176) | fn __next__(mut slf: PyRefMut<'_, Self>) -> Option<(String, SlintToPyV...
function enum_class (line 185) | pub fn enum_class(py: Python) -> Py<PyAny> {
type TypeCollection (line 199) | pub struct TypeCollection {
method new (line 204) | pub fn new(result: &slint_interpreter::CompilationResult, py: Python<'...
method to_py_value (line 236) | pub fn to_py_value(&self, value: slint_interpreter::Value) -> SlintToP...
method struct_to_py (line 240) | pub fn struct_to_py(&self, s: slint_interpreter::Struct) -> PyStruct {
method enum_to_py (line 244) | pub fn enum_to_py(
method model_to_py (line 258) | pub fn model_to_py(
method enums (line 265) | pub fn enums(&self) -> impl Iterator<Item = (&String, &Py<PyAny>)> {
method slint_value_from_py_value (line 269) | pub fn slint_value_from_py_value(
method slint_value_from_py_value_bound (line 277) | pub fn slint_value_from_py_value_bound(
method apply (line 375) | fn apply(
FILE: api/rs/build/lib.rs
type CompilerConfiguration (line 68) | pub struct CompilerConfiguration {
method new (line 99) | pub fn new() -> Self {
method with_include_paths (line 106) | pub fn with_include_paths(self, include_paths: Vec<std::path::PathBuf>...
method with_library_paths (line 139) | pub fn with_library_paths(self, library_paths: HashMap<String, std::pa...
method with_style (line 147) | pub fn with_style(self, style: String) -> Self {
method embed_resources (line 157) | pub fn embed_resources(self, kind: EmbedResourcesKind) -> Self {
method with_scale_factor (line 180) | pub fn with_scale_factor(mut self, factor: f32) -> Self {
method with_bundled_translations (line 194) | pub fn with_bundled_translations(
method with_default_translation_context (line 209) | pub fn with_default_translation_context(
method with_debug_info (line 223) | pub fn with_debug_info(self, enable: bool) -> Self {
method as_library (line 237) | pub fn as_library(self, library_name: &str) -> Self {
method rust_module (line 248) | pub fn rust_module(self, rust_module: &str) -> Self {
method with_sdf_fonts (line 265) | pub fn with_sdf_fonts(self, enable: bool) -> Self {
method with_absolute_paths (line 273) | fn with_absolute_paths(self, manifest_dir: &std::path::Path) -> Self {
type EmbedResourcesKind (line 76) | pub enum EmbedResourcesKind {
method default (line 88) | fn default() -> Self {
type CompileError (line 297) | pub enum CompileError {
type CodeFormatter (line 311) | struct CodeFormatter<Sink> {
function new (line 323) | pub fn new(sink: Sink) -> Self {
method write (line 329) | fn write(&mut self, mut s: &[u8]) -> std::io::Result<usize> {
method flush (line 390) | fn flush(&mut self) -> std::io::Result<()> {
function formatter_test (line 396) | fn formatter_test() {
function compile (line 475) | pub fn compile(path: impl AsRef<std::path::Path>) -> Result<(), CompileE...
function compile_with_config (line 488) | pub fn compile_with_config(
function compile_with_output_path (line 551) | pub fn compile_with_output_path(
function print_rustc_flags (line 619) | pub fn print_rustc_flags() -> std::io::Result<()> {
function root_path_prefix (line 652) | fn root_path_prefix() -> std::path::PathBuf {
function with_absolute_library_paths_test (line 660) | fn with_absolute_library_paths_test() {
function with_absolute_include_paths_test (line 679) | fn with_absolute_include_paths_test() {
FILE: api/rs/macros/lib.rs
function are_token_touching (line 22) | fn are_token_touching(token1: proc_macro::Span, token2: proc_macro::Span...
function fill_token_vec (line 34) | fn fill_token_vec(stream: impl Iterator<Item = TokenTree>, vec: &mut Vec...
function extract_path (line 243) | fn extract_path(literal: proc_macro::Literal) -> std::path::PathBuf {
function extract_compiler_config (line 255) | fn extract_compiler_config(
function slint (line 342) | pub fn slint(stream: TokenStream) -> TokenStream {
FILE: api/rs/slint/android.rs
type AndroidApp (line 95) | pub struct AndroidApp;
type PollEvent (line 97) | pub struct PollEvent<'a>(&'a ());
function init (line 115) | pub fn init(app: android_activity::AndroidApp) -> Result<(), SetPlatform...
function init_with_event_listener (line 149) | pub fn init_with_event_listener(
FILE: api/rs/slint/compile_fail_tests.rs
constant basic (line 27) | const basic: u32 = 0;
constant INVALID_RUST_ATTR (line 51) | const INVALID_RUST_ATTR: () = ();
constant CHECK_README_EXAMPLES (line 55) | const CHECK_README_EXAMPLES: () = ();
FILE: api/rs/slint/docs.rs
type SampleComponent (line 40) | pub struct SampleComponent {
method new (line 45) | pub fn new() -> Result<Self, crate::PlatformError> {
method get_counter (line 52) | pub fn get_counter(&self) -> i32 {
method set_counter (line 58) | pub fn set_counter(&self, value: i32) {}
method get_user_name (line 60) | pub fn get_user_name(&self) -> crate::SharedString {
method set_user_name (line 64) | pub fn set_user_name(&self, value: crate::SharedString) {}
method invoke_hello (line 69) | pub fn invoke_hello(&self) {}
method on_hello (line 84) | pub fn on_hello(&self, f: impl Fn() + 'static) {}
method invoke_do_something (line 89) | pub fn invoke_do_something(&self, d: i32) -> bool {
type WeakInner (line 96) | type WeakInner = ();
method as_weak (line 99) | fn as_weak(&self) -> Weak<Self> {
method clone_strong (line 104) | fn clone_strong(&self) -> Self {
method upgrade_from_weak_inner (line 109) | fn upgrade_from_weak_inner(_: &Self::WeakInner) -> Option<Self> {
method show (line 117) | fn show(&self) -> Result<(), crate::PlatformError> {
method hide (line 124) | fn hide(&self) -> Result<(), crate::PlatformError> {
method window (line 131) | fn window(&self) -> &Window {
method run (line 137) | fn run(&self) -> Result<(), crate::PlatformError> {
method global (line 142) | fn global<'a, T: Global<'a, Self>>(&'a self) -> T {
FILE: api/rs/slint/lib.rs
function run_event_loop (line 239) | pub fn run_event_loop() -> Result<(), PlatformError> {
function run_event_loop_until_quit (line 249) | pub fn run_event_loop_until_quit() -> Result<(), PlatformError> {
function spawn_local (line 337) | pub fn spawn_local<F: core::future::Future + 'static>(
type VersionCheck_1_16_0 (line 478) | pub struct VersionCheck_1_16_0;
type WinitWindowEventResult (line 746) | pub type WinitWindowEventResult = EventResult;
function shared_collection (line 796) | pub fn shared_collection() -> fontique::Collection {
FILE: api/rs/slint/private_unstable_api.rs
type StrongItemTreeRef (line 17) | pub trait StrongItemTreeRef: Sized {
method to_weak (line 19) | fn to_weak(&self) -> Self::Weak;
method from_weak (line 20) | fn from_weak(weak: &Self::Weak) -> Option<Self>;
type Weak (line 24) | type Weak = VWeak<ItemTreeVTable, C>;
method to_weak (line 25) | fn to_weak(&self) -> Self::Weak {
method from_weak (line 28) | fn from_weak(weak: &Self::Weak) -> Option<Self> {
type Weak (line 34) | type Weak = VWeakMapped<ItemTreeVTable, C>;
method to_weak (line 35) | fn to_weak(&self) -> Self::Weak {
method from_weak (line 38) | fn from_weak(weak: &Self::Weak) -> Option<Self> {
type Weak (line 44) | type Weak = PinWeak<C>;
method to_weak (line 45) | fn to_weak(&self) -> Self::Weak {
method from_weak (line 48) | fn from_weak(weak: &Self::Weak) -> Option<Self> {
function set_property_binding (line 53) | pub fn set_property_binding<
function set_animated_property_binding (line 67) | pub fn set_animated_property_binding<
function set_property_state_binding (line 89) | pub fn set_property_state_binding<StrongRef: StrongItemTreeRef + 'static>(
function set_callback_handler (line 100) | pub fn set_callback_handler<
function debug (line 115) | pub fn debug(s: SharedString) {
function ensure_backend (line 122) | pub fn ensure_backend() -> Result<(), crate::PlatformError> {
function create_window_adapter (line 130) | pub fn create_window_adapter()
function translate (line 136) | pub fn translate(
function init_translations (line 148) | pub fn init_translations(domain: &str, dirname: impl Into<std::path::Pat...
function use_24_hour_format (line 152) | pub fn use_24_hour_format() -> bool {
FILE: api/rs/slint/tests/partial_renderer.rs
type TestPlatform (line 22) | struct TestPlatform;
method create_window_adapter (line 24) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platf...
type TestPixel (line 32) | struct TestPixel(bool);
method blend (line 35) | fn blend(&mut self, _color: PremultipliedRgbaColor) {
method from_rgb (line 39) | fn from_rgb(_red: u8, _green: u8, _blue: u8) -> Self {
function do_test_render_region (line 45) | fn do_test_render_region(renderer: &SoftwareRenderer, x: i32, y: i32, x2...
type SkiaTestWindow (line 68) | struct SkiaTestWindow {
method new (line 77) | fn new() -> Rc<Self> {
method draw_if_needed (line 94) | fn draw_if_needed(&self) -> bool {
method last_dirty_region_bounding_box_size (line 103) | fn last_dirty_region_bounding_box_size(&self) -> Option<slint::Logical...
method last_dirty_region_bounding_box_origin (line 109) | fn last_dirty_region_bounding_box_origin(&self) -> Option<slint::Logic...
method window (line 118) | fn window(&self) -> &slint::Window {
method size (line 122) | fn size(&self) -> PhysicalSize {
method renderer (line 126) | fn renderer(&self) -> &dyn slint::platform::Renderer {
method set_size (line 130) | fn set_size(&self, size: slint::WindowSize) {
method request_redraw (line 136) | fn request_redraw(&self) {
type SkiaTestSoftwareBuffer (line 142) | struct SkiaTestSoftwareBuffer {
method with_buffer (line 148) | fn with_buffer(
function simple (line 195) | fn simple() {
function visibility (line 246) | fn visibility() {
function if_condition (line 323) | fn if_condition() {
function list_view (line 361) | fn list_view() {
function scale_factor (line 431) | fn scale_factor() {
function rotated_image (line 449) | fn rotated_image() {
function window_background (line 513) | fn window_background() {
function touch_area_doesnt_cause_redraw (line 539) | fn touch_area_doesnt_cause_redraw() {
function shadow_redraw_beyond_geometry (line 604) | fn shadow_redraw_beyond_geometry() {
function text_alignment (line 665) | fn text_alignment() {
function nowrap_text_change_doesnt_change_height (line 716) | fn nowrap_text_change_doesnt_change_height() {
function create_item_tree_during_rendering (line 755) | fn create_item_tree_during_rendering() {
function issue_9882_borrow_mut (line 832) | fn issue_9882_borrow_mut() {
function position_tracking_without_partial_rendering (line 874) | fn position_tracking_without_partial_rendering() {
FILE: api/rs/slint/tests/popups.rs
type TestPlatform (line 20) | struct TestPlatform;
method create_window_adapter (line 22) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platf...
type SkiaTestWindow (line 29) | struct SkiaTestWindow {
method new (line 37) | fn new() -> Rc<Self> {
method draw_if_needed (line 53) | fn draw_if_needed(&self) -> bool {
method window (line 64) | fn window(&self) -> &slint::Window {
method size (line 68) | fn size(&self) -> PhysicalSize {
method renderer (line 72) | fn renderer(&self) -> &dyn slint::platform::Renderer {
method set_size (line 76) | fn set_size(&self, size: slint::WindowSize) {
method request_redraw (line 82) | fn request_redraw(&self) {
type SkiaTestSoftwareBuffer (line 88) | struct SkiaTestSoftwareBuffer {
method with_buffer (line 94) | fn with_buffer(
function interaction_with_dead_popup_impossible (line 141) | fn interaction_with_dead_popup_impossible() {
function interaction_with_dead_popup_panics (line 238) | fn interaction_with_dead_popup_panics() {
FILE: api/rs/slint/tests/show_strongref.rs
function show_maintains_strong_reference (line 7) | fn show_maintains_strong_reference() {
FILE: api/rs/slint/tests/simple_macro.rs
function simple_window (line 7) | fn simple_window() {
function empty_stuff (line 13) | fn empty_stuff() {
function test_serialize_deserialize_struct (line 20) | fn test_serialize_deserialize_struct() {
function test_multiple_rust_attrs (line 43) | fn test_multiple_rust_attrs() {
FILE: api/rs/slint/tests/spawn_local.rs
type ThreadWaker (line 12) | struct ThreadWaker(Thread);
method wake (line 15) | fn wake(self: Arc<Self>) {
function block_on (line 21) | pub fn block_on<T>(fut: impl Future<Output = T>) -> T {
function main (line 41) | fn main() {
function with_context (line 86) | fn with_context() {
FILE: api/rs/slint/tests/text_layout_cache.rs
type TestPlatform (line 16) | struct TestPlatform;
method create_window_adapter (line 18) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platf...
type TestPixel (line 25) | struct TestPixel(bool);
method blend (line 28) | fn blend(&mut self, _color: PremultipliedRgbaColor) {
method from_rgb (line 32) | fn from_rgb(_red: u8, _green: u8, _blue: u8) -> Self {
constant WIDTH (line 37) | const WIDTH: usize = 200;
constant HEIGHT (line 38) | const HEIGHT: usize = 100;
function setup (line 40) | fn setup() -> Rc<MinimalSoftwareWindow> {
function render_and_get_miss_count (line 47) | fn render_and_get_miss_count(renderer: &SoftwareRenderer) -> u64 {
function cache_hit_avoids_reshaping (line 55) | fn cache_hit_avoids_reshaping() {
function text_change_invalidates_cache (line 86) | fn text_change_invalidates_cache() {
function font_size_change_invalidates_cache (line 117) | fn font_size_change_invalidates_cache() {
function font_weight_change_invalidates_cache (line 149) | fn font_weight_change_invalidates_cache() {
function wrap_change_invalidates_cache (line 181) | fn wrap_change_invalidates_cache() {
function alignment_change_does_not_reshape (line 213) | fn alignment_change_does_not_reshape() {
function overflow_change_does_not_reshape (line 245) | fn overflow_change_does_not_reshape() {
function color_change_does_not_reshape (line 277) | fn color_change_does_not_reshape() {
FILE: api/rs/slint/tests/tokio.rs
function tokio_poll_with_compat (line 5) | fn tokio_poll_with_compat() {
FILE: api/rs/slint/tests/tokio_block_in_place.rs
function tokio_poll_with_block_in_place (line 5) | async fn tokio_poll_with_block_in_place() {
FILE: api/wasm-interpreter/src/lib.rs
type CompilationResult (line 16) | pub struct CompilationResult {
method component (line 25) | pub fn component(&self) -> Option<WrappedCompiledComp> {
method diagnostics (line 29) | pub fn diagnostics(&self) -> js_sys::Array {
method error_string (line 33) | pub fn error_string(&self) -> String {
constant CALLBACK_FUNCTION_SECTION (line 39) | const CALLBACK_FUNCTION_SECTION: &'static str = r#"
function compile_from_string (line 59) | pub async fn compile_from_string(
function compile_from_string_with_style (line 69) | pub async fn compile_from_string_with_style(
type WrappedCompiledComp (line 148) | pub struct WrappedCompiledComp(slint_interpreter::ComponentDefinition);
method run (line 156) | pub fn run(&self, canvas_id: String) {
method create (line 172) | pub fn create(&self, canvas_id: String) -> Result<InstancePromise, JsV...
method create_with_existing_window (line 203) | pub fn create_with_existing_window(
type WrappedInstance (line 234) | pub struct WrappedInstance(slint_interpreter::ComponentInstance);
method show (line 248) | pub fn show(&self) -> Result<js_sys::Promise, JsValue> {
method hide (line 255) | pub fn hide(&self) -> Result<js_sys::Promise, JsValue> {
method invoke_from_event_loop_wrapped_in_promise (line 259) | fn invoke_from_event_loop_wrapped_in_promise(
method clone (line 237) | fn clone(&self) -> Self {
function run_event_loop (line 324) | pub fn run_event_loop() -> Result<(), JsValue> {
function init (line 335) | pub fn init() -> Result<(), JsValue> {
FILE: demos/energy-monitor/build.rs
function main (line 5) | fn main() {
function main (line 10) | fn main() {
FILE: demos/energy-monitor/src/controllers/header.rs
function setup (line 8) | pub fn setup(window: &MainWindow) -> Timer {
function update (line 21) | fn update(header_adapter: &HeaderAdapter) {
FILE: demos/energy-monitor/src/controllers/weather.rs
constant WEATHER_API_KEY (line 14) | const WEATHER_API_KEY: &str = "WEATHER_API";
constant WEATHER_LAT_KEY (line 15) | const WEATHER_LAT_KEY: &str = "WEATHER_LAT";
constant WEATHER_LONG_KEY (line 16) | const WEATHER_LONG_KEY: &str = "WEATHER_LONG";
constant LAT_BERLIN (line 17) | const LAT_BERLIN: f32 = 52.520008;
constant LONG_BERLIN (line 18) | const LONG_BERLIN: f32 = 13.404954;
constant FORECAST_DAYS (line 19) | const FORECAST_DAYS: i64 = 3;
function setup (line 21) | pub fn setup(window: &MainWindow) -> thread::JoinHandle<()> {
function weather_worker_loop (line 29) | async fn weather_worker_loop(window_weak: Weak<MainWindow>) {
function current_forecast (line 84) | async fn current_forecast(
function display_current (line 97) | fn display_current(window_weak: Weak<MainWindow>, current: Current, curr...
function display_forecast (line 114) | fn display_forecast(window_weak: Weak<MainWindow>, forecast: Vec<(Foreca...
function get_icon (line 162) | fn get_icon(window: &MainWindow, condition: &Condition) -> Image {
function api_key (line 171) | fn api_key() -> String {
function lat (line 186) | fn lat() -> f32 {
function long (line 201) | fn long() -> f32 {
FILE: demos/energy-monitor/src/lib.rs
function main (line 30) | pub fn main() {
function kiosk_timer (line 53) | fn kiosk_timer(window: &MainWindow) -> Timer {
function android_main (line 78) | fn android_main(app: slint::android::AndroidApp) {
FILE: demos/energy-monitor/src/main.rs
function main (line 11) | pub fn main() {
function main (line 17) | fn main() -> ! {
FILE: demos/home-automation/rust/lib.rs
function main (line 21) | pub fn main() {
function android_main (line 52) | fn android_main(android_app: slint::android::AndroidApp) {
FILE: demos/home-automation/rust/main.rs
function main (line 4) | fn main() {
FILE: demos/home-automation/zephyr/main.cpp
function main (line 21) | int main(void)
FILE: demos/printerdemo/cpp/main.cpp
type InkLevelModel (line 14) | struct InkLevelModel : slint::Model<InkLevel>
method row_count (line 16) | size_t row_count() const override { return m_data.size(); }
method row_data (line 17) | std::optional<InkLevel> row_data(size_t i) const override
function main (line 30) | int main()
FILE: demos/printerdemo/cpp_interpreted/main.cpp
type InkLevelModel (line 10) | struct InkLevelModel : slint::Model<Value>
method row_count (line 12) | size_t row_count() const override { return m_data.size(); }
method row_data (line 13) | std::optional<Value> row_data(size_t i) const override
method Value (line 21) | static Value make_inklevel_value(slint::Color color, float level)
function main (line 37) | int main()
FILE: demos/printerdemo/python/main.py
class MainWindow (line 18) | class MainWindow(slint.loader.ui.printerdemo.MainWindow):
method __init__ (line 19) | def __init__(self):
method quit (line 38) | def quit(self):
method push_job (line 42) | def push_job(self, title):
method cancel_job (line 56) | def cancel_job(self, index):
method update_jobs (line 59) | def update_jobs(self):
method change_language (line 72) | def change_language(self, language: int) -> None:
FILE: demos/printerdemo/rust/build.rs
function main (line 4) | fn main() {
FILE: demos/printerdemo/rust/lib.rs
function current_time (line 13) | fn current_time() -> slint::SharedString {
type PrinterQueueData (line 20) | struct PrinterQueueData {
method push_job (line 26) | fn push_job(&self, title: slint::SharedString) {
function main (line 40) | pub fn main() {
function android_main (line 138) | fn android_main(app: slint::android::AndroidApp) {
FILE: demos/printerdemo/rust/main.rs
function main (line 7) | fn main() {
FILE: demos/printerdemo/zephyr/main.cpp
type InkLevelModel (line 21) | struct InkLevelModel : slint::Model<InkLevel>
method row_count (line 23) | size_t row_count() const override { return m_data.size(); }
method row_data (line 24) | std::optional<InkLevel> row_data(size_t i) const override
function main (line 37) | int main(void)
FILE: demos/printerdemo_mcu/bench.rs
type BenchPlatform (line 19) | struct BenchPlatform;
method create_window_adapter (line 21) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platf...
constant SIZE (line 26) | const SIZE: slint::PhysicalSize = slint::PhysicalSize { width: 480, heig...
type RenderMode (line 29) | enum RenderMode {
type DrawBuffer (line 34) | struct DrawBuffer<'a, T>(&'a mut [T]);
type TargetPixel (line 37) | type TargetPixel = T;
function process_line (line 38) | fn process_line(
function do_rendering (line 48) | fn do_rendering(
function render_only (line 66) | fn render_only<T: TargetPixel + Default>(bencher: divan::Bencher, mode: ...
function full (line 86) | fn full<T: TargetPixel + Default>(bencher: divan::Bencher) {
function main (line 100) | fn main() {
FILE: demos/printerdemo_mcu/build.rs
function main (line 4) | fn main() {
FILE: demos/printerdemo_mcu/esp-idf/main/main.cpp
type InkLevelModel (line 21) | struct InkLevelModel : slint::Model<InkLevel>
method row_count (line 23) | size_t row_count() const override { return m_data.size(); }
method row_data (line 24) | std::optional<InkLevel> row_data(size_t i) const override
function app_main (line 37) | void app_main(void)
FILE: demos/printerdemo_mcu/main.rs
type PrinterQueueData (line 19) | struct PrinterQueueData {
method push_job (line 25) | fn push_job(&self, title: slint::SharedString) {
function main (line 39) | fn main() -> ! {
FILE: demos/usecases/cpp/main.cpp
function init_virtual_keyboard (line 6) | void init_virtual_keyboard(slint::ComponentHandle<App> app)
function run (line 14) | void run()
function main (line 87) | int main()
FILE: demos/usecases/esp-idf/main/main.cpp
function app_main (line 22) | void app_main(void)
FILE: demos/usecases/rust/build.rs
function main (line 7) | fn main() {
FILE: demos/usecases/rust/src/lib.rs
function app (line 9) | fn app() -> Result<App, slint::PlatformError> {
function main (line 18) | pub fn main() {
function android_main (line 38) | fn android_main(android_app: slint::android::AndroidApp) {
function init (line 49) | pub fn init(app: &App) {
function init (line 72) | pub fn init(app: &App) {
FILE: demos/usecases/rust/src/main.rs
function main (line 7) | fn main() {
FILE: demos/weather-demo/build.rs
function main (line 4) | fn main() {
FILE: demos/weather-demo/src/app_main.rs
type AppHandler (line 15) | pub struct AppHandler {
method new (line 23) | pub fn new() -> Self {
method save (line 55) | pub fn save(&self) {
method reload (line 63) | pub fn reload(&self) {
method initialize_ui (line 72) | pub fn initialize_ui(&mut self) {
method run (line 79) | pub fn run(&self) -> Result<(), slint::PlatformError> {
FILE: demos/weather-demo/src/lib.rs
function android_main (line 26) | fn android_main(android_app: slint::android::AndroidApp) -> Result<(), s...
function main (line 67) | pub fn main() {
FILE: demos/weather-demo/src/main.rs
function main (line 15) | fn main() -> Result<(), slint::PlatformError> {
FILE: demos/weather-demo/src/weather/dummyweathercontroller.rs
type DummyWeatherController (line 11) | pub struct DummyWeatherController {
method new (line 16) | pub fn new() -> Self {
method generate_dummy_data (line 20) | fn generate_dummy_data() -> Vec<CityWeatherData> {
method load (line 51) | fn load(&mut self) -> Result<(), Box<dyn std::error::Error>> {
method save (line 56) | fn save(&self) -> Result<(), Box<dyn std::error::Error>> {
method refresh_cities (line 60) | fn refresh_cities(&mut self) -> Result<Vec<CityWeatherData>, Box<dyn std...
method add_city (line 64) | fn add_city(
method reorder_cities (line 72) | fn reorder_cities(
method remove_city (line 81) | fn remove_city(&mut self, index: usize) -> Result<(), Box<dyn std::error...
method search_location (line 86) | fn search_location(
FILE: demos/weather-demo/src/weather/openweathercontroller.rs
constant CITIES_STORED_FILE_NAME (line 27) | const CITIES_STORED_FILE_NAME: &str = "cities_data.json";
constant ORGANIZATION_QUALIFIER (line 28) | const ORGANIZATION_QUALIFIER: &str = "dev";
constant ORGANIZATION_NAME (line 29) | const ORGANIZATION_NAME: &str = "slint.examples";
constant APPLICATION_NAME (line 30) | const APPLICATION_NAME: &str = "weatherdemo";
function project_data_dir (line 32) | fn project_data_dir() -> Option<PathBuf> {
type WeatherClient (line 72) | pub struct WeatherClient {
method new (line 399) | pub fn new(lat: f64, lon: f64, cname: &str) -> Self {
method refresh_weather (line 403) | pub async fn refresh_weather(
type OpenWeatherController (line 77) | pub struct OpenWeatherController {
method new (line 85) | pub fn new(api_key: String) -> Self {
method weather_condition_from_icon_icon_type (line 107) | fn weather_condition_from_icon_icon_type(icon_type: &str) -> WeatherCo...
method current_day_weather_data_from_response (line 122) | fn current_day_weather_data_from_response(
method forecast_day_weather_data_from_response (line 168) | fn forecast_day_weather_data_from_response(
method city_weather_data_from_client (line 219) | fn city_weather_data_from_client(city_client: &WeatherClient) -> CityW...
method geo_location_data_from_response (line 230) | fn geo_location_data_from_response(response: &GeocodingResponse) -> Ge...
method load (line 242) | fn load(&mut self) -> Result<(), Box<dyn std::error::Error>> {
method save (line 263) | fn save(&self) -> Result<(), Box<dyn std::error::Error>> {
method refresh_cities (line 288) | fn refresh_cities(&mut self) -> Result<Vec<CityWeatherData>, Box<dyn std...
method add_city (line 313) | fn add_city(
method reorder_cities (line 340) | fn reorder_cities(
method remove_city (line 353) | fn remove_city(&mut self, index: usize) -> Result<(), Box<dyn std::error...
method search_location (line 362) | fn search_location(
FILE: demos/weather-demo/src/weather/utils.rs
function get_day_from_datetime (line 6) | pub fn get_day_from_datetime(date: DateTime<chrono::offset::Utc>) -> Str...
FILE: demos/weather-demo/src/weather/weathercontroller.rs
type CityData (line 8) | pub struct CityData {
type WeatherCondition (line 15) | pub enum WeatherCondition {
type TemperatureData (line 30) | pub struct TemperatureData {
type PrecipitationData (line 40) | pub struct PrecipitationData {
type DayWeatherData (line 47) | pub struct DayWeatherData {
type ForecastWeatherData (line 59) | pub struct ForecastWeatherData {
type WeatherData (line 65) | pub struct WeatherData {
type CityWeatherData (line 71) | pub struct CityWeatherData {
type GeoLocationData (line 77) | pub struct GeoLocationData {
type WeatherControllerPointer (line 86) | pub type WeatherControllerPointer = Box<dyn WeatherController + Send>;
type WeatherControllerPointer (line 88) | pub type WeatherControllerPointer = Box<dyn WeatherController + Send + '...
type WeatherControllerSharedPointer (line 90) | pub type WeatherControllerSharedPointer = Arc<Mutex<WeatherControllerPoi...
type WeatherController (line 92) | pub trait WeatherController {
method load (line 93) | fn load(&mut self) -> Result<(), Box<dyn std::error::Error>>;
method save (line 94) | fn save(&self) -> Result<(), Box<dyn std::error::Error>>;
method refresh_cities (line 96) | fn refresh_cities(&mut self) -> Result<Vec<CityWeatherData>, Box<dyn s...
method add_city (line 98) | fn add_city(
method reorder_cities (line 103) | fn reorder_cities(
method remove_city (line 109) | fn remove_city(&mut self, index: usize) -> Result<(), Box<dyn std::err...
method search_location (line 111) | fn search_location(
FILE: demos/weather-demo/src/weather/weatherdisplaycontroller.rs
type WeatherDisplayController (line 24) | pub struct WeatherDisplayController {
method new (line 109) | pub fn new(data_controller: &WeatherControllerSharedPointer) -> Self {
method initialize_ui (line 113) | pub fn initialize_ui(&self, window: &AppWindow, support_add_city: bool) {
method refresh (line 180) | pub fn refresh(&self, window: &AppWindow) {
method load (line 187) | pub fn load(&self, window: &AppWindow) {
method refresh_cities (line 218) | fn refresh_cities(
method add_city (line 245) | fn add_city(
method reorder_cities (line 281) | fn reorder_cities(
method remove_city (line 310) | fn remove_city(
method search_location (line 333) | fn search_location(
method update_displayed_cities (line 362) | fn update_displayed_cities(window: &AppWindow, data: Vec<CityWeatherDa...
method update_location_search_results (line 375) | fn update_location_search_results(window: &AppWindow, result: Vec<GeoL...
method set_busy (line 388) | fn set_busy(window: &AppWindow) {
method unset_busy (line 392) | fn unset_busy(window: &AppWindow) {
method check_update_error (line 396) | fn check_update_error<E: std::fmt::Display>(result: Result<(), E>) {
method icon_type_from_condition (line 402) | fn icon_type_from_condition(condition: &WeatherCondition) -> IconType {
method weather_info_from_data (line 417) | fn weather_info_from_data(data: &DayWeatherData) -> WeatherInfo {
method forecast_weather_info_from_data (line 438) | fn forecast_weather_info_from_data(data: &[ForecastWeatherData]) -> Ve...
method city_weather_info_from_data (line 447) | fn city_weather_info_from_data(data: &CityWeatherData) -> CityWeatherI...
method geo_location_entry_from_data (line 459) | fn geo_location_entry_from_data(data: &GeoLocationData) -> GeoLocation...
function forecast_graph_command (line 28) | fn forecast_graph_command(
FILE: demos/zephyr-common/slint-zephyr.cpp
function is_supported_pixel_format (line 20) | bool is_supported_pixel_format(display_pixel_format current_pixel_format)
type k_unique_lock (line 58) | struct k_unique_lock
method k_unique_lock (line 60) | k_unique_lock(struct k_mutex *m) : mutex(m) { k_mutex_lock(mutex, K_FO...
type k_mutex (line 62) | struct k_mutex
type RotationInfo (line 65) | struct RotationInfo
method is_transpose (line 71) | bool is_transpose() const
method mirror_width (line 76) | bool mirror_width() const
method mirror_height (line 81) | bool mirror_height() const
function transformed (line 87) | slint::LogicalPosition transformed(slint::LogicalPosition p, const Rotat...
function transformed (line 98) | slint::PhysicalSize transformed(slint::PhysicalSize s, const RotationInf...
class ZephyrPlatform (line 112) | class ZephyrPlatform : public slint::platform::Platform
type device (line 115) | struct device
type device (line 124) | struct device
class ZephyrWindowAdapter (line 125) | class ZephyrWindowAdapter
type k_mutex (line 127) | struct k_mutex
class ZephyrWindowAdapter (line 132) | class ZephyrWindowAdapter : public slint::platform::WindowAdapter
type device (line 151) | struct device
function RotationInfo (line 318) | const RotationInfo &ZephyrWindowAdapter::rotationInfo() const
method is_transpose (line 71) | bool is_transpose() const
method mirror_width (line 76) | bool mirror_width() const
method mirror_height (line 81) | bool mirror_height() const
type device (line 323) | struct device
function zephyr_process_input_event (line 422) | void zephyr_process_input_event(struct input_event *event, void *user_data)
function slint_zephyr_init (line 488) | void slint_zephyr_init(const struct device *display)
FILE: demos/zephyr-common/slint-zephyr.h
type device (line 6) | struct device
FILE: docs/astro/ec.config.mjs
function sideBorder (line 8) | function sideBorder() {
function remapLanguageIdentifiers (line 46) | function remapLanguageIdentifiers(lang) {
function languageLabel (line 60) | function languageLabel() {
function workersPlaygroundButton (line 101) | function workersPlaygroundButton() {
FILE: docs/astro/src/components/editor/codemirror.js
function createCopyButton (line 58) | function createCopyButton(view) {
function createRunButton (line 84) | function createRunButton(view) {
function statusPanel (line 104) | function statusPanel(view) {
function debounce (line 127) | function debounce(func, wait) {
function updateWasmPreview (line 135) | async function updateWasmPreview(previewContainer, content) {
function initializePreviewContainers (line 161) | function initializePreviewContainers(previewContainer, _content) {
function loadSlintWasmInterpreter (line 172) | async function loadSlintWasmInterpreter(_editor) {
FILE: docs/astro/src/components/editor/language-facets.js
method combine (line 8) | combine(languages) {
FILE: docs/astro/src/content/code/main_game_logic.cpp
function main (line 11) | int main()
FILE: docs/astro/src/content/code/main_game_logic.py
class MainWindow (line 13) | class MainWindow(slint.loader.ui.app_window.MainWindow):
method __init__ (line 14) | def __init__(self):
method check_if_pair_solved (line 26) | def check_if_pair_solved(self):
FILE: docs/astro/src/content/code/main_game_logic_in_rust.rs
function main (line 5) | fn main() {
FILE: docs/astro/src/content/code/main_initial.cpp
function main (line 9) | int main(int argc, char **argv)
FILE: docs/astro/src/content/code/main_initial.py
class MainWindow (line 7) | class MainWindow(slint.loader.ui.app_window.MainWindow):
FILE: docs/astro/src/content/code/main_initial.rs
function main (line 6) | fn main() {
FILE: docs/astro/src/content/code/main_memory_tile.rs
function main (line 5) | fn main() {
FILE: docs/astro/src/content/code/main_multiple_tiles.rs
function main (line 5) | fn main() {
FILE: docs/astro/src/content/code/main_polishing_the_tile.rs
function main (line 5) | fn main() {
FILE: docs/astro/src/content/code/main_tiles_from_cpp.cpp
function main (line 12) | int main()
FILE: docs/astro/src/content/code/main_tiles_from_python.py
class MainWindow (line 13) | class MainWindow(slint.loader.ui.app_window.MainWindow):
method __init__ (line 14) | def __init__(self):
FILE: docs/astro/src/content/code/main_tiles_from_rust.rs
function main (line 6) | fn main() {
FILE: docs/common/src/utils/site-config.ts
constant BASE_URL (line 4) | const BASE_URL = "https://localhost";
constant BASE_PATH (line 5) | const BASE_PATH = "/docs/";
constant SLINT_DOWNLOAD_VERSION (line 6) | const SLINT_DOWNLOAD_VERSION = "nightly";
constant CPP_BASE_URL (line 7) | const CPP_BASE_URL = `${BASE_URL}${BASE_PATH}../cpp/`;
constant RUST_BASE_URL (line 8) | const RUST_BASE_URL = `${BASE_URL}${BASE_PATH}../rust/`;
constant RUST_SLINT_CRATE_URL (line 9) | const RUST_SLINT_CRATE_URL = `${RUST_BASE_URL}slint/`;
constant RUST_SLINT_INTERPRETER_CRATE_URL (line 10) | const RUST_SLINT_INTERPRETER_CRATE_URL = `${RUST_BASE_URL}slint_interpre...
constant RUST_SLINT_BUILD_CRATE_URL (line 11) | const RUST_SLINT_BUILD_CRATE_URL = `${RUST_BASE_URL}slint_build/`;
constant NODEJS_BASE_URL (line 12) | const NODEJS_BASE_URL = `${BASE_URL}${BASE_PATH}../node/`;
constant PYTHON_BASE_URL (line 13) | const PYTHON_BASE_URL = `${BASE_URL}${BASE_PATH}../python/`;
FILE: docs/common/src/utils/utils.ts
type LinkMapType (line 8) | type LinkMapType = {
function getEnumContent (line 16) | async function getEnumContent(enumName: string | undefined) {
function getStructContent (line 31) | async function getStructContent(
type KnownType (line 68) | type KnownType =
type PropertyVisibility (line 89) | type PropertyVisibility = "private" | "in" | "out" | "in-out";
type TypeInfo (line 91) | interface TypeInfo {
function getTypeInfo (line 96) | function getTypeInfo(typeName: KnownType): TypeInfo {
function extractLines (line 219) | function extractLines(
function removeLeadingSpaces (line 230) | function removeLeadingSpaces(input: string, spaces = 4): string {
FILE: editors/tree-sitter-slint/grammar.js
function commaSep (line 800) | function commaSep(rule) {
function commaSep1 (line 804) | function commaSep1(rule) {
function commaSep2 (line 808) | function commaSep2(rule) {
FILE: editors/tree-sitter-slint/test-to-corpus.py
function header (line 23) | def header(file_name):
function process_file (line 32) | def process_file(input, corpus):
FILE: editors/vscode/esbuild.js
method setup (line 14) | setup(build) {
FILE: editors/vscode/src/browser-lsp-worker.ts
function send_notification (line 23) | function send_notification(method: string, params: any): boolean {
function send_request (line 28) | async function send_request(
function load_file (line 35) | async function load_file(path: string): Promise<string> {
FILE: editors/vscode/src/browser.ts
function startClient (line 19) | function startClient(
function activate (line 83) | function activate(context: vscode.ExtensionContext) {
function deactivate (line 106) | function deactivate(): Thenable<void> | undefined {
FILE: editors/vscode/src/common.ts
class ClientHandle (line 19) | class ClientHandle {
method client (line 23) | get client(): BaseLanguageClient | null {
method client (line 27) | set client(c: BaseLanguageClient | null) {
method add_updater (line 34) | public add_updater(u: (c: BaseLanguageClient | null) => void) {
method stop (line 39) | async stop() {
function languageClientOptions (line 63) | function languageClientOptions(
function prepare_client (line 133) | function prepare_client(client: BaseLanguageClient) {
function activate (line 139) | function activate(
function deactivate (line 235) | function deactivate(): Thenable<void> | undefined {
function maybeSendStartupTelemetryEvent (line 243) | async function maybeSendStartupTelemetryEvent(
function helpBaseUrl (line 296) | function helpBaseUrl(context: vscode.ExtensionContext): string {
function getHelpUrlForElement (line 306) | function getHelpUrlForElement(
FILE: editors/vscode/src/extension.ts
type Platform (line 33) | interface Platform {
function lsp_panic_log_dir (line 38) | function lsp_panic_log_dir(context: vscode.ExtensionContext) {
function lspPlatform (line 42) | function lspPlatform(): Platform | null {
function find_lsp_binary (line 92) | function find_lsp_binary(
function startClient (line 170) | function startClient(
function activate (line 251) | function activate(context: vscode.ExtensionContext) {
function deactivate (line 352) | function deactivate(): Thenable<void> | undefined {
function handleTelemetryEvent (line 356) | function handleTelemetryEvent(
function startTelemetryTimer (line 368) | function startTelemetryTimer(
FILE: editors/vscode/src/lsp_commands.ts
function showPreview (line 21) | function showPreview(url: LspURI, component: string): Thenable<unknown> {
FILE: editors/vscode/src/quick_picks.ts
function newProject (line 12) | async function newProject(context: vscode.ExtensionContext) {
FILE: editors/vscode/src/snippets.ts
class SnippetTextEditFeature (line 22) | class SnippetTextEditFeature implements StaticFeature {
method fillClientCapabilities (line 25) | fillClientCapabilities(capabilities: ClientCapabilities) {
method initialize (line 30) | initialize() {
method clear (line 37) | clear() {
method applySnippetTextEdit (line 41) | private async applySnippetTextEdit(uri: vscode.Uri, edit: vscode.TextE...
method getState (line 55) | getState(): FeatureState {
function detectSnippetCodeActions (line 60) | function detectSnippetCodeActions(
FILE: editors/vscode/src/telemetry.ts
class SlintTelemetrySender (line 6) | class SlintTelemetrySender implements vscode.TelemetrySender {
method constructor (line 9) | constructor(extensionMode: vscode.ExtensionMode) {
method sendEventData (line 16) | sendEventData(eventName: string, data?: Record<string, any>): void {
method sendErrorData (line 38) | sendErrorData(error: Error, data?: Record<string, any>): void {
FILE: editors/vscode/src/wasm_preview.ts
function use_wasm_preview (line 14) | function use_wasm_preview(): boolean {
function panel (line 20) | function panel(): vscode.WebviewPanel | null {
function update_configuration (line 24) | function update_configuration() {
function initClientForPreview (line 35) | function initClientForPreview(
function send_to_lsp (line 65) | function send_to_lsp(message: any): boolean {
function open_preview (line 75) | function open_preview(context: vscode.ExtensionContext): boolean {
function getPreviewHtml (line 92) | function getPreviewHtml(
class PreviewSerializer (line 187) | class PreviewSerializer implements vscode.WebviewPanelSerializer {
method constructor (line 190) | constructor(context: vscode.ExtensionContext) {
method deserializeWebviewPanel (line 194) | deserializeWebviewPanel(webviewPanel: vscode.WebviewPanel, _state: any) {
function map_url (line 201) | function map_url(webview: vscode.Webview, url_: string) {
function initPreviewPanel (line 220) | function initPreviewPanel(
FILE: editors/zed/src/slint.rs
type SlintBinary (line 8) | struct SlintBinary {
type SlintExtension (line 13) | struct SlintExtension {
method language_server_binary_path (line 18) | fn language_server_binary_path(
method new (line 137) | fn new() -> Self {
method language_server_command (line 141) | fn language_server_command(
method language_server_workspace_configuration (line 154) | fn language_server_workspace_configuration(
FILE: examples/7guis/booker.rs
function main (line 9) | pub fn main() {
FILE: examples/7guis/cells.rs
constant ROW_COUNT (line 12) | const ROW_COUNT: usize = 100;
constant COL_COUNT (line 13) | const COL_COUNT: usize = 26;
type DepGraph (line 18) | struct DepGraph<A, B> {
function add_dep (line 24) | pub fn add_dep(&mut self, a: A, b: B) {
function dependents (line 29) | pub fn dependents<'a>(&'a self, a: &A) -> impl Iterator<Item = &'a B> + ...
function remove_dependencies (line 33) | pub fn remove_dependencies(&mut self, b: &B) {
type Expr (line 43) | enum Expr {
function parse_formula (line 50) | fn parse_formula(formula: &str) -> Option<Expr> {
function test_parse_formula (line 84) | fn test_parse_formula() {
type RowModel (line 109) | struct RowModel {
type Data (line 117) | type Data = CellContent;
method row_count (line 119) | fn row_count(&self) -> usize {
method row_data (line 123) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method model_tracker (line 127) | fn model_tracker(&self) -> &dyn slint::ModelTracker {
method set_row_data (line 131) | fn set_row_data(&self, index: usize, data: CellContent) {
type CellsModel (line 138) | struct CellsModel {
method new (line 144) | fn new() -> Rc<Self> {
method get_cell_value (line 160) | fn get_cell_value(&self, row: usize, col: usize) -> Option<f32> {
method update_cell (line 165) | fn update_cell(&self, row: usize, col: usize, new_formula: Option<Shar...
method eval (line 199) | fn eval(&self, exp: &Expr) -> f32 {
function make_deps (line 210) | fn make_deps(
type Data (line 226) | type Data = ModelRc<CellContent>;
method row_count (line 228) | fn row_count(&self) -> usize {
method row_data (line 232) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method model_tracker (line 236) | fn model_tracker(&self) -> &dyn slint::ModelTracker {
function main (line 241) | pub fn main() {
FILE: examples/7guis/circledraw.rs
type Change (line 12) | enum Change {
type UndoStack (line 18) | struct UndoStack<F> {
function new (line 29) | fn new(undo2redo: F) -> Self {
function push (line 33) | fn push(&mut self, change: Change) {
function undoable (line 39) | fn undoable(&self) -> bool {
function redoable (line 43) | fn redoable(&self) -> bool {
function undo (line 47) | fn undo(&mut self) {
function redo (line 55) | fn redo(&mut self) {
function main (line 64) | pub fn main() {
FILE: examples/7guis/crud.rs
type Name (line 10) | struct Name {
function main (line 14) | pub fn main() {
FILE: examples/async-io/main.py
function refresh_stocks (line 11) | async def refresh_stocks(model: slint.ListModel[Symbol]) -> None:
class MainWindow (line 27) | class MainWindow(slint.loader.stockticker.MainWindow):
method __init__ (line 28) | def __init__(self):
method refresh (line 35) | async def refresh(self):
function main (line 39) | async def main() -> None:
FILE: examples/async-io/main.rs
type JsonSymbol (line 13) | struct JsonSymbol {
type JsonSymbols (line 19) | struct JsonSymbols {
function refresh_stocks (line 23) | async fn refresh_stocks(model: slint::ModelRc<Symbol>) {
function main (line 56) | fn main() -> Result<(), slint::PlatformError> {
FILE: examples/bevy/bevy-hosts-slint-gpu/main.rs
constant UI_WIDTH (line 73) | const UI_WIDTH: u32 = 800;
constant UI_HEIGHT (line 74) | const UI_HEIGHT: u32 = 600;
constant SCALE_FACTOR (line 75) | const SCALE_FACTOR: f32 = 2.0;
type BevyWindowAdapter (line 124) | struct BevyWindowAdapter {
method window (line 132) | fn window(&self) -> &slint::Window {
method size (line 136) | fn size(&self) -> slint::PhysicalSize {
method renderer (line 140) | fn renderer(&self) -> &dyn slint::platform::Renderer {
method set_visible (line 144) | fn set_visible(&self, _visible: bool) -> Result<(), slint::PlatformErr...
method request_redraw (line 148) | fn request_redraw(&self) {}
method new (line 152) | fn new(instance: wgpu::Instance, device: wgpu::Device, queue: wgpu::Qu...
method resize (line 165) | fn resize(&self, new_size: PhysicalSize, scale_factor: f32) {
type SlintBevyPlatform (line 180) | struct SlintBevyPlatform {
method create_window_adapter (line 187) | fn create_window_adapter(
type SlintContext (line 202) | struct SlintContext {
type SlintQuad (line 211) | struct SlintQuad;
type Cube (line 215) | struct Cube;
type TextureSender (line 220) | struct TextureSender(std::sync::mpsc::Sender<wgpu::Texture>);
type SlintImageHandle (line 225) | struct SlintImageHandle(Handle<Image>);
type SlintSharedTexture (line 230) | struct SlintSharedTexture {
type CursorState (line 237) | struct CursorState {
function raycast_slint (line 243) | fn raycast_slint(
function handle_input (line 270) | fn handle_input(
function setup (line 326) | fn setup(
function receive_texture (line 417) | fn receive_texture(shared: Res<SlintSharedTexture>) {
function send_slint_texture (line 425) | fn send_slint_texture(
function render_slint (line 444) | fn render_slint(slint_context: Option<NonSend<SlintContext>>, shared: Re...
function initialize_slint (line 454) | fn initialize_slint(
function rotate_cube (line 497) | fn rotate_cube(
function main (line 520) | fn main() {
FILE: examples/bevy/bevy-hosts-slint/main.rs
type SlintContext (line 124) | struct SlintContext {
method from_world (line 137) | fn from_world(_world: &mut World) -> Self {
type SlintScene (line 165) | struct SlintScene {
type Cube (line 176) | struct Cube;
type BevyWindowAdapter (line 192) | struct BevyWindowAdapter {
method window (line 212) | fn window(&self) -> &slint::Window {
method size (line 218) | fn size(&self) -> slint::PhysicalSize {
method renderer (line 224) | fn renderer(&self) -> &dyn slint::platform::Renderer {
method set_visible (line 230) | fn set_visible(&self, _visible: bool) -> Result<(), slint::PlatformErr...
method request_redraw (line 236) | fn request_redraw(&self) {}
method new (line 248) | fn new() -> Rc<Self> {
method resize (line 265) | fn resize(&self, new_size: PhysicalSize, scale_factor: f32) {
type SlintBevyPlatform (line 299) | struct SlintBevyPlatform {}
method create_window_adapter (line 310) | fn create_window_adapter(
type SlintQuad (line 335) | struct SlintQuad;
type CursorState (line 343) | struct CursorState {
function handle_input (line 361) | fn handle_input(
function main (line 488) | fn main() {
function rotate_cube (line 513) | fn rotate_cube(
function setup (line 557) | fn setup(
function render_slint (line 709) | fn render_slint(
FILE: examples/bevy/slint-hosts-bevy/main.rs
function main (line 94) | fn main() -> Result<(), Box<dyn std::error::Error>> {
type GLTFModel (line 214) | struct GLTFModel {
type CameraPos (line 221) | struct CameraPos(Vec3);
type ModelBasePath (line 224) | struct ModelBasePath(String);
function setup (line 226) | fn setup(mut commands: Commands) {
function reload_model_from_channel (line 231) | fn reload_model_from_channel(
function animate_camera (line 254) | fn animate_camera(
FILE: examples/bevy/slint-hosts-bevy/slint_bevy_adapter.rs
type ControlMessage (line 25) | pub enum ControlMessage {
function run_bevy_app_with_slint (line 44) | pub async fn run_bevy_app_with_slint(
type FrontBufferReturnSender (line 203) | struct FrontBufferReturnSender(smol::channel::Sender<wgpu::Texture>);
type SlintRenderToTexturePlugin (line 205) | struct SlintRenderToTexturePlugin(smol::channel::Sender<wgpu::Texture>);
method build (line 207) | fn build(&self, app: &mut App) {
type BackBuffer (line 219) | struct BackBuffer(pub Option<wgpu::Texture>);
type SlintSwapChain (line 222) | struct SlintSwapChain;
type SlintSwapChainDriver (line 225) | struct SlintSwapChainDriver;
method run (line 228) | fn run(
FILE: examples/bevy/slint-hosts-bevy/web_asset.rs
function map_err (line 8) | fn map_err(err: reqwest::Error) -> bevy::asset::io::AssetReaderError {
function get (line 20) | async fn get(
type WebAssetLoader (line 52) | struct WebAssetLoader(smol::channel::Sender<(SharedString, f32)>);
method read (line 55) | fn read<'a>(
method read_meta (line 63) | fn read_meta<'a>(
method read_directory (line 72) | fn read_directory<'a>(
method is_directory (line 84) | fn is_directory<'a>(
type WebAssetReaderPlugin (line 94) | pub struct WebAssetReaderPlugin(pub smol::channel::Sender<(SharedString,...
method build (line 97) | fn build(&self, app: &mut App) {
FILE: examples/carousel/cpp/main.cpp
function main (line 6) | int main()
FILE: examples/carousel/esp-idf/main.cpp
function app_main (line 25) | void app_main(void)
FILE: examples/carousel/rust/build.rs
function main (line 5) | fn main() {
function main (line 10) | fn main() {
FILE: examples/carousel/rust/main.rs
function main (line 21) | pub fn main() {
function main (line 32) | fn main() -> ! {
FILE: examples/cpp/platform_native/appview.cpp
type MyPlatform (line 15) | struct MyPlatform : public slint::platform::Platform
method create_window_adapter (line 18) | std::unique_ptr<slint::platform::WindowAdapter> create_window_adapter(...
FILE: examples/cpp/platform_native/appview.h
type HWND (line 8) | typedef HWND WINDOW_HANDLE;
type MyWindowAdapter (line 11) | struct MyWindowAdapter
function class (line 13) | class AppView
FILE: examples/cpp/platform_native/main.cpp
function LRESULT (line 12) | static LRESULT WindowProc(HWND h, UINT msg, WPARAM wp, LPARAM lp)
function WinMain (line 56) | int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int ...
FILE: examples/cpp/platform_native/windowadapter_win.h
type Geometry (line 12) | struct Geometry
type MyWindowAdapter (line 20) | struct MyWindowAdapter
function set_visible (line 72) | void set_visible(bool visible) override { ShowWindow(hwnd, visible ? SW_...
function request_redraw (line 74) | void request_redraw() override { InvalidateRect(hwnd, nullptr, false); }
function render (line 76) | void render()
function resize (line 83) | void resize(uint32_t width, uint32_t height)
function setGeometry (line 88) | void setGeometry(int x, int y, int width, int height)
function mouse_event (line 93) | void mouse_event(UINT uMsg, WPARAM wParam, LPARAM lParam)
function LRESULT (line 143) | static LRESULT CALLBACK windowProc(HWND hwnd, UINT uMsg, WPARAM wParam, ...
FILE: examples/cpp/platform_qt/main.cpp
function update_timer (line 12) | static void update_timer()
function convert_button (line 29) | slint::PointerEventButton convert_button(Qt::MouseButtons b)
function window_handle_for_qt_window (line 43) | static slint::platform::NativeWindowHandle window_handle_for_qt_window(Q...
function key_event_text (line 79) | static slint::SharedString key_event_text(QKeyEvent *e)
class MyWindow (line 192) | class MyWindow : public QWindow, public slint::platform::WindowAdapter
method MyWindow (line 198) | MyWindow(QWindow *parentWindow = nullptr) : QWindow(parentWindow)
method paintEvent (line 206) | void paintEvent(QPaintEvent *ev) override
method closeEvent (line 218) | void closeEvent(QCloseEvent *event) override
method event (line 226) | bool event(QEvent *e) override
method set_visible (line 252) | void set_visible(bool visible) override
method set_size (line 263) | void set_size(slint::PhysicalSize size) override
method size (line 269) | slint::PhysicalSize size() override
method set_position (line 277) | void set_position(slint::PhysicalPosition position) override
method position (line 283) | std::optional<slint::PhysicalPosition> position() override
method request_redraw (line 291) | void request_redraw() override { requestUpdate(); }
method update_window_properties (line 293) | void update_window_properties(const WindowProperties &props) override
method resizeEvent (line 311) | void resizeEvent(QResizeEvent *ev) override
method mousePressEvent (line 318) | void mousePressEvent(QMouseEvent *event) override
method mouseReleaseEvent (line 326) | void mouseReleaseEvent(QMouseEvent *event) override
method mouseMoveEvent (line 334) | void mouseMoveEvent(QMouseEvent *event) override
type MyPlatform (line 343) | struct MyPlatform : public slint::platform::Platform
method create_window_adapter (line 347) | std::unique_ptr<slint::platform::WindowAdapter> create_window_adapter(...
method set_clipboard_text (line 352) | void set_clipboard_text(const slint::SharedString &str,
method clipboard_text (line 365) | std::optional<slint::SharedString> clipboard_text(Clipboard clipboard)...
function main (line 386) | int main(int argc, char **argv)
FILE: examples/cpp/qt_viewer/qt_viewer.cpp
type LoadedFile (line 9) | struct LoadedFile
function show_diagnostics (line 15) | void show_diagnostics(QWidget *root,
function main (line 41) | int main(int argc, char **argv)
FILE: examples/ffmpeg/build.rs
function main (line 4) | fn main() {
FILE: examples/ffmpeg/lib.rs
function main (line 10) | pub fn main() {
type Rescaler (line 63) | struct Rescaler(ffmpeg_next::software::scaling::Context);
function rgba_rescaler_for_frame (line 66) | fn rgba_rescaler_for_frame(frame: &ffmpeg_next::util::frame::Video) -> R...
function video_frame_to_pixel_buffer (line 81) | fn video_frame_to_pixel_buffer(
function android_main (line 101) | fn android_main(app: slint::android::AndroidApp) {
FILE: examples/ffmpeg/main.rs
function main (line 7) | fn main() {
FILE: examples/ffmpeg/player.rs
type ControlCommand (line 12) | pub enum ControlCommand {
type Player (line 17) | pub struct Player {
method start (line 25) | pub fn start(
method toggle_pause_playing (line 120) | pub fn toggle_pause_playing(&mut self) {
method drop (line 133) | fn drop(&mut self) {
FILE: examples/ffmpeg/player/audio.rs
type AudioPlaybackThread (line 18) | pub struct AudioPlaybackThread {
method start (line 25) | pub fn start(stream: &ffmpeg_next::format::stream::Stream) -> Result<S...
method receive_packet (line 106) | pub async fn receive_packet(&self, packet: ffmpeg_next::codec::packet:...
method send_control_message (line 113) | pub async fn send_control_message(&self, message: ControlCommand) {
method drop (line 119) | fn drop(&mut self) {
type FFMpegToCPalSampleForwarder (line 127) | trait FFMpegToCPalSampleForwarder {
method forward (line 128) | fn forward(
method forward (line 138) | fn forward(
type FFmpegToCPalForwarder (line 160) | struct FFmpegToCPalForwarder {
method new (line 169) | fn new<T: Send + Pod + SizedSample + 'static>(
method stream (line 215) | async fn stream(&mut self) {
FILE: examples/ffmpeg/player/video.rs
type VideoPlaybackThread (line 8) | pub struct VideoPlaybackThread {
method start (line 15) | pub fn start(
method receive_packet (line 87) | pub async fn receive_packet(&self, packet: ffmpeg_next::codec::packet:...
method send_control_message (line 94) | pub async fn send_control_message(&self, message: ControlCommand) {
method drop (line 100) | fn drop(&mut self) {
type StreamClock (line 108) | struct StreamClock {
method new (line 114) | fn new(stream: &ffmpeg_next::format::stream::Stream) -> Self {
method convert_pts_to_instant (line 124) | fn convert_pts_to_instant(&self, pts: Option<i64>) -> Option<std::time...
FILE: examples/gallery/build.rs
function main (line 4) | fn main() {
FILE: examples/gallery/main.cpp
function main (line 11) | int main()
FILE: examples/gallery/main.rs
function load_font_from_bytes (line 13) | pub fn load_font_from_bytes(font_data: js_sys::Uint8Array, locale: &str)...
function scripts_for_locale (line 30) | fn scripts_for_locale(
function main (line 67) | pub fn main() {
function filter_sort_model (line 97) | fn filter_sort_model(
FILE: examples/gstreamer-player/build.rs
function main (line 6) | fn main() {
FILE: examples/gstreamer-player/main.rs
function main (line 11) | fn main() {
FILE: examples/gstreamer-player/slint_video_sink/egl_integration.rs
function init (line 10) | pub fn init<App: slint::ComponentHandle + 'static>(
type SlintOpenGLSink (line 60) | pub struct SlintOpenGLSink {
method new (line 69) | pub fn new() -> Self {
method element (line 97) | pub fn element(&self) -> gst::Element {
method connect (line 101) | pub fn connect(
method fetch_next_frame (line 227) | pub fn fetch_next_frame(&self) -> Option<slint::Image> {
method deactivate_and_pause (line 257) | pub fn deactivate_and_pause(&self) {
FILE: examples/gstreamer-player/slint_video_sink/mod.rs
function init (line 12) | pub fn init(
FILE: examples/gstreamer-player/slint_video_sink/software_rendering.rs
function init (line 8) | pub fn init<App: slint::ComponentHandle + 'static>(
function try_gstreamer_video_frame_to_pixel_buffer (line 57) | fn try_gstreamer_video_frame_to_pixel_buffer(
FILE: examples/imagefilter/node/main.ts
function fromImageData (line 8) | function fromImageData(bitmap: slint.ImageData): Image {
function toImageData (line 15) | function toImageData(image: Image): slint.ImageData {
function constantRgb (line 25) | function constantRgb(w: number, h: number, r: number, g: number, b: numb...
class Filter (line 29) | class Filter {
method constructor (line 33) | constructor(
class Filters (line 42) | class Filters extends slint.Model<string> {
method constructor (line 45) | constructor(filters: Filter[]) {
method at (line 50) | at(index: number): Filter {
method rowCount (line 54) | rowCount(): number {
method rowData (line 58) | rowData(row: number): string | undefined {
method setRowData (line 62) | setRowData(row: number, data: string): void {
FILE: examples/imagefilter/rust/build.rs
function main (line 4) | fn main() {
FILE: examples/imagefilter/rust/main.rs
type Filter (line 12) | struct Filter {
type Filters (line 17) | struct Filters(Vec<Filter>);
type Data (line 20) | type Data = SharedString;
method row_count (line 22) | fn row_count(&self) -> usize {
method row_data (line 26) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method model_tracker (line 30) | fn model_tracker(&self) -> &dyn slint::ModelTracker {
function main (line 36) | pub fn main() {
FILE: examples/iot-dashboard/dashboard.h
type PropertyDeclaration (line 13) | struct PropertyDeclaration
type WidgetLocation (line 72) | struct WidgetLocation
type DashboardBuilder (line 87) | struct DashboardBuilder
FILE: examples/iot-dashboard/main.cpp
class PlaceholderWidget (line 13) | class PlaceholderWidget : public Widget
method PlaceholderWidget (line 16) | PlaceholderWidget(std::string_view type_name) : m_type_name(type_name)...
method type_name (line 18) | std::string type_name() const override { return m_type_name; }
method properties (line 19) | std::vector<PropertyDeclaration> properties() const override { return ...
class ClockWidget (line 25) | class ClockWidget : public Widget
method type_name (line 29) | std::string type_name() const override { return "Clock"; }
method properties (line 30) | std::vector<PropertyDeclaration> properties() const override
class HumidityWidget (line 51) | class HumidityWidget : public Widget
method type_name (line 55) | std::string type_name() const override { return "Humidity"; }
method properties (line 56) | std::vector<PropertyDeclaration> properties() const override
function main (line 80) | int main()
FILE: examples/maps/main.rs
constant TILE_SIZE (line 17) | const TILE_SIZE: isize = 256;
type TileCoordinate (line 95) | struct TileCoordinate {
type World (line 101) | struct World {
method new (line 114) | fn new() -> Self {
method set_zoom_level (line 129) | fn set_zoom_level(&mut self, zoom_level: u32, ox: f64, oy: f64) {
method reset_view (line 145) | fn reset_view(&mut self) {
method poll (line 226) | fn poll(&mut self, context: &mut Context, changed: &mut bool) {
type State (line 241) | struct State {
method do_poll (line 248) | fn do_poll(self: Rc<Self>) {
method refresh_model (line 271) | fn refresh_model(&self) {
method set_viewport_size (line 287) | fn set_viewport_size(&self) {
function main (line 301) | fn main() {
FILE: examples/mcu-board-support/build.rs
function main (line 4) | fn main() -> std::io::Result<()> {
FILE: examples/mcu-board-support/embassy.rs
type PlatformBackend (line 8) | pub(crate) trait PlatformBackend {
method dispatch_events (line 9) | async fn dispatch_events(&mut self, window: &slint::Window);
method render (line 10) | async fn render(&mut self, renderer: &slint::platform::software_render...
method wait_for_event (line 15) | async fn wait_for_event(&mut self) {
type EmbassyBackend (line 20) | pub struct EmbassyBackend<PlatformImpl> {
function new (line 29) | pub fn new(
function create_window_adapter (line 47) | fn create_window_adapter(
function run_event_loop (line 59) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
function new_event_loop_proxy (line 75) | fn new_event_loop_proxy(&self) -> Option<Box<dyn slint::platform::EventL...
function duration_since_start (line 79) | fn duration_since_start(&self) -> core::time::Duration {
function debug_log (line 83) | fn debug_log(&self, arguments: core::fmt::Arguments) {
function run_loop (line 89) | async fn run_loop(&self) {
function main_loop_task (line 136) | async fn main_loop_task(
FILE: examples/mcu-board-support/esope_sld_c_w_s3/esope_sld_c_w_s3.rs
type I2cDevice (line 36) | type I2cDevice = RefCellDevice<'static, esp_hal::i2c::master::I2c<'stati...
type TouchController (line 37) | type TouchController = sitronix_touch::TouchIC<I2cDevice>;
constant LCD_H_RES_USIZE (line 56) | const LCD_H_RES_USIZE: usize = 320;
constant LCD_V_RES_USIZE (line 57) | const LCD_V_RES_USIZE: usize = 240;
constant LCD_BUFFER_SIZE (line 58) | const LCD_BUFFER_SIZE: usize = LCD_H_RES_USIZE * LCD_V_RES_USIZE;
constant LCD_H_RES (line 70) | const LCD_H_RES: u16 = 320;
constant LCD_V_RES (line 71) | const LCD_V_RES: u16 = 240;
constant MAX_FRAME_BYTES (line 74) | const MAX_FRAME_BYTES: usize = 320 * 240 * 2;
constant MAX_NUM_DMA_DESC (line 75) | const MAX_NUM_DMA_DESC: usize = (MAX_FRAME_BYTES + CHUNK_SIZE - 1) / CHU...
function panic (line 84) | fn panic(info: &core::panic::PanicInfo) -> ! {
type EspBackend (line 89) | struct EspBackend {
method create_window_adapter (line 169) | fn create_window_adapter(
method duration_since_start (line 179) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 183) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method default (line 95) | fn default() -> Self {
function init (line 101) | pub fn init() {
type PSRAMFrameBuffer (line 145) | pub struct PSRAMFrameBuffer<'a> {
function new (line 150) | pub fn new(buf: &'a mut [Rgb565; LCD_BUFFER_SIZE]) -> Self {
type Color (line 156) | type Color = Rgb565;
method set (line 157) | fn set(&mut self, index: usize, color: Self::Color) {
method get (line 160) | fn get(&self, index: usize) -> Self::Color {
method nr_elements (line 163) | fn nr_elements(&self) -> usize {
function slint_rendering_task (line 438) | async fn slint_rendering_task(
function dma_display_task (line 577) | async fn dma_display_task(mut dpi: Dpi<'static, esp_hal::Blocking>, mut ...
FILE: examples/mcu-board-support/esp32_s3_box_3/esp32_s3_box_3.rs
function panic (line 2) | fn panic(info: &core::panic::PanicInfo) -> ! {
type EspBackend (line 38) | struct EspBackend {
method create_window_adapter (line 44) | fn create_window_adapter(
method duration_since_start (line 54) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 58) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method run_event_loop (line 88) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method default (line 64) | fn default() -> Self {
function init (line 70) | pub fn init() {
type DrawBuffer (line 279) | struct DrawBuffer<'a, Display> {
type TargetPixel (line 290) | type TargetPixel = slint::platform::software_renderer::Rgb565Pixel;
function process_line (line 292) | fn process_line(
FILE: examples/mcu-board-support/esp32_s3_lcd_ev_board/esp32_s3_lcd_ev_board.rs
type Ft5x06 (line 10) | struct Ft5x06<I2C> {
function new (line 19) | pub fn new(i2c: I2C, address: u8) -> Self {
function get_touch (line 24) | pub fn get_touch(&mut self) -> Result<Option<(u16, u16)>, I2C::Error> {
constant LCD_H_RES (line 75) | const LCD_H_RES: u16 = 480;
constant LCD_V_RES (line 76) | const LCD_V_RES: u16 = 480;
constant FRAME_BYTES (line 77) | const FRAME_BYTES: usize = (LCD_H_RES as usize * LCD_V_RES as usize) * 2;
constant NUM_DMA_DESC (line 78) | const NUM_DMA_DESC: usize = (FRAME_BYTES + CHUNK_SIZE - 1) / CHUNK_SIZE;
function panic (line 85) | fn panic(_info: &core::panic::PanicInfo) -> ! {
type EspBackend (line 90) | struct EspBackend {
method create_window_adapter (line 120) | fn create_window_adapter(
method duration_since_start (line 130) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 134) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method default (line 96) | fn default() -> Self {
function init (line 102) | pub fn init() {
type Tca9554 (line 381) | struct Tca9554 {
method new (line 387) | pub fn new(i2c: I2c<'static, esp_hal::Blocking>) -> Self {
method write_direction_reg (line 390) | pub fn write_direction_reg(&mut self, value: u8) -> Result<(), Error> {
method write_output_reg (line 393) | pub fn write_output_reg(&mut self, value: u8) -> Result<(), Error> {
method into_i2c (line 397) | pub fn into_i2c(self) -> I2c<'static, Blocking> {
type InitCmd (line 404) | enum InitCmd {
constant INIT_CMDS (line 409) | const INIT_CMDS: &[InitCmd] = &[
FILE: examples/mcu-board-support/lib.rs
function init (line 108) | pub fn init() {}
FILE: examples/mcu-board-support/m5stack_cores3/m5stack_cores3.rs
function panic (line 5) | fn panic(info: &core::panic::PanicInfo) -> ! {
constant FT6336U_DEVICE_ADDRESS (line 45) | const FT6336U_DEVICE_ADDRESS: u8 = 0x38;
constant AW9523_I2C_ADDRESS (line 48) | const AW9523_I2C_ADDRESS: u8 = 0x58;
type TouchResetDriverAW9523 (line 52) | pub struct TouchResetDriverAW9523<I2C> {
function new (line 57) | pub fn new(i2c: I2C) -> Self {
type Error (line 66) | type Error = I2C::Error;
method reset (line 68) | fn reset(&mut self) -> Result<(), Self::Error> {
type EspBackend (line 100) | struct EspBackend {
method create_window_adapter (line 106) | fn create_window_adapter(
method duration_since_start (line 116) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 120) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method run_event_loop (line 247) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method default (line 126) | fn default() -> Self {
function init (line 132) | pub fn init() {
function init_axp2101_power (line 153) | fn init_axp2101_power<I2C>(mut i2c_device: I2C) -> Result<(), ()>
function init_aw9523_gpio_expander (line 194) | fn init_aw9523_gpio_expander<I2C>(mut i2c_device: I2C) -> Result<(), ()>
type DrawBuffer (line 447) | struct DrawBuffer<'a, Display> {
type TargetPixel (line 458) | type TargetPixel = slint::platform::software_renderer::Rgb565Pixel;
function process_line (line 460) | fn process_line(
FILE: examples/mcu-board-support/pico2_st7789/pico2_st7789.rs
constant HEAP_SIZE (line 31) | const HEAP_SIZE: usize = 400 * 1024;
type IrqPin (line 37) | type IrqPin = gpio::Pin<gpio::bank0::Gpio17, gpio::FunctionSio<gpio::Sio...
constant SPI_ST7789VW_MAX_FREQ (line 44) | const SPI_ST7789VW_MAX_FREQ: Hertz<u32> = Hertz::<u32>::Hz(62_500_000);
constant DISPLAY_SIZE (line 46) | const DISPLAY_SIZE: slint::PhysicalSize = slint::PhysicalSize::new(320, ...
type TargetPixel (line 49) | pub type TargetPixel = Rgb565Pixel;
type SpiPins (line 51) | type SpiPins = (
type EnabledSpi (line 57) | type EnabledSpi = hal::Spi<hal::spi::Enabled, pac::SPI1, SpiPins, 8>;
type SpiRefCell (line 58) | type SpiRefCell = RefCell<(EnabledSpi, Hertz<u32>)>;
type Display (line 59) | type Display<DI, RST> = mipidsi::Display<DI, mipidsi::models::ST7789, RST>;
type SharedSpiWithFreq (line 62) | struct SharedSpiWithFreq<CS> {
type Error (line 69) | type Error = <EnabledSpi as ErrorType>::Error;
method transaction (line 74) | fn transaction(&mut self, operations: &mut [Operation<u8>]) -> Result<()...
function init (line 99) | pub fn init() {
type PicoBackend (line 207) | struct PicoBackend<DrawBuffer, Touch, Backlight> {
function create_window_adapter (line 231) | fn create_window_adapter(
function duration_since_start (line 240) | fn duration_since_start(&self) -> core::time::Duration {
function run_event_loop (line 247) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
function debug_log (line 337) | fn debug_log(&self, arguments: core::fmt::Arguments) {
type PioTransfer (line 343) | enum PioTransfer<TO: WriteTarget, CH: SingleChannel> {
function wait (line 349) | fn wait(self) -> (CH, &'static mut [TargetPixel], TO) {
type DrawBuffer (line 360) | struct DrawBuffer<Display, PioTransfer, Stolen> {
type TargetPixel (line 377) | type TargetPixel = TargetPixel;
function process_line (line 379) | fn process_line(
function flush_frame (line 436) | fn flush_frame(&mut self) {
type PartialReadBuffer (line 449) | struct PartialReadBuffer(&'static mut [Rgb565Pixel], core::ops::Range<us...
type Word (line 451) | type Word = u8;
method read_buffer (line 453) | unsafe fn read_buffer(&self) -> (*const <Self as embedded_dma::ReadBuf...
constant SPI_FREQ (line 467) | pub const SPI_FREQ: Hertz<u32> = Hertz::<u32>::Hz(3_000_000);
type XPT2046 (line 469) | pub struct XPT2046<IRQ: InputPin + 'static, SPI: SpiDevice> {
function new (line 476) | pub fn new(irq: &'static Mutex<RefCell<Option<IRQ>>>, spi: SPI) -> Resul...
function read (line 480) | pub fn read(&mut self) -> Result<Option<Point2D<f32>>, Error<PinE, SPI::...
type Error (line 546) | pub enum Error<PinE, TransferE> {
function IO_IRQ_BANK0 (line 553) | fn IO_IRQ_BANK0() {
function TIMER0_IRQ_0 (line 563) | fn TIMER0_IRQ_0() {
function panic (line 572) | fn panic(info: &core::panic::PanicInfo) -> ! {
FILE: examples/mcu-board-support/pico2_st7789/rp_pico2.rs
constant XOSC_CRYSTAL_FREQ (line 821) | pub const XOSC_CRYSTAL_FREQ: u32 = 12_000_000;
FILE: examples/mcu-board-support/pico2_touch_lcd_2_8/pico2_touch_lcd_2_8.rs
constant DISPLAY_SIZE (line 27) | const DISPLAY_SIZE: slint::PhysicalSize = slint::PhysicalSize::new(240, ...
constant SPI_ST7789VW_MAX_FREQ (line 28) | const SPI_ST7789VW_MAX_FREQ: u32 = 62_500_000;
constant HEAP_SIZE (line 29) | const HEAP_SIZE: usize = 400 * 1024;
type TargetPixel (line 37) | pub type TargetPixel = Rgb565Pixel;
type RawUart0 (line 42) | struct RawUart0;
method write (line 49) | fn write(&mut self, buf: &[u8]) {
method flush (line 58) | fn flush(&mut self) {
constant UART0_DR (line 45) | const UART0_DR: *mut u32 = 0x4007_0000 as *mut u32;
constant UART0_FR (line 46) | const UART0_FR: *const u32 = 0x4007_0018 as *const u32;
function init (line 65) | pub fn init() {
type DisplaySpi (line 166) | type DisplaySpi = RefCellDevice<
type DisplayInterface (line 172) | type DisplayInterface = mipidsi::interface::SpiInterface<'static, Displa...
type Display (line 173) | type Display = mipidsi::Display<DisplayInterface, mipidsi::models::ST778...
type PicoEmbassyBackend (line 175) | struct PicoEmbassyBackend {
method dispatch_events (line 187) | async fn dispatch_events(&mut self, window: &slint::Window) {
method render (line 224) | async fn render(&mut self, renderer: &SoftwareRenderer) {
method wait_for_event (line 236) | async fn wait_for_event(&mut self) {
constant CS_PIN_MASK (line 246) | const CS_PIN_MASK: u32 = 1 << 13;
constant DC_PIN_MASK (line 247) | const DC_PIN_MASK: u32 = 1 << 14;
function start_dma_to_spi1 (line 249) | fn start_dma_to_spi1(src: *const u8, byte_count: usize) {
function wait_dma (line 270) | fn wait_dma() {
function flush_spi1 (line 274) | fn flush_spi1() {
function drain_spi1_rx (line 278) | fn drain_spi1_rx() {
function cs_low (line 284) | fn cs_low() {
function cs_high (line 288) | fn cs_high() {
function dc_high (line 292) | fn dc_high() {
type DmaLineBufferProvider (line 298) | struct DmaLineBufferProvider<'a> {
function flush_frame (line 306) | fn flush_frame(&mut self) {
type TargetPixel (line 318) | type TargetPixel = Rgb565Pixel;
function process_line (line 320) | fn process_line(
constant TP_ADDR (line 369) | const TP_ADDR: u8 = 0x1A;
constant CMD_DEBUG_INFO_MODE (line 372) | const CMD_DEBUG_INFO_MODE: [u8; 2] = [0xD1, 0x01];
constant CMD_READ_CHIP_ID (line 373) | const CMD_READ_CHIP_ID: [u8; 2] = [0xD1, 0xFC];
constant CMD_NORMAL_MODE (line 374) | const CMD_NORMAL_MODE: [u8; 2] = [0xD1, 0x09];
constant CMD_READ_TOUCH_DATA (line 375) | const CMD_READ_TOUCH_DATA: [u8; 2] = [0xD0, 0x00];
type CST328 (line 377) | pub struct CST328<I2C: I2c> {
function new (line 382) | pub fn new(
function read (line 402) | pub fn read(&mut self) -> Result<Option<Point2D<f32>>, I2C::Error> {
FILE: examples/mcu-board-support/pico_st7789/pico_st7789.rs
constant HEAP_SIZE (line 29) | const HEAP_SIZE: usize = 200 * 1024;
type IrqPin (line 35) | type IrqPin = gpio::Pin<gpio::bank0::Gpio17, gpio::FunctionSio<gpio::Sio...
constant SPI_ST7789VW_MAX_FREQ (line 42) | const SPI_ST7789VW_MAX_FREQ: Hertz<u32> = Hertz::<u32>::Hz(62_500_000);
constant DISPLAY_SIZE (line 44) | const DISPLAY_SIZE: slint::PhysicalSize = slint::PhysicalSize::new(320, ...
type TargetPixel (line 47) | pub type TargetPixel = Rgb565Pixel;
type SpiPins (line 49) | type SpiPins = (
type EnabledSpi (line 55) | type EnabledSpi = hal::Spi<hal::spi::Enabled, pac::SPI1, SpiPins, 8>;
type SpiRefCell (line 56) | type SpiRefCell = RefCell<(EnabledSpi, Hertz<u32>)>;
type Display (line 57) | type Display<DI, RST> = mipidsi::Display<DI, mipidsi::models::ST7789, RST>;
type SharedSpiWithFreq (line 60) | struct SharedSpiWithFreq<CS> {
type Error (line 67) | type Error = <EnabledSpi as ErrorType>::Error;
method transaction (line 72) | fn transaction(&mut self, operations: &mut [Operation<u8>]) -> Result<()...
function init (line 97) | pub fn init() {
type PicoBackend (line 205) | struct PicoBackend<DrawBuffer, Touch, Backlight> {
function create_window_adapter (line 229) | fn create_window_adapter(
function duration_since_start (line 238) | fn duration_since_start(&self) -> core::time::Duration {
function run_event_loop (line 245) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
function debug_log (line 335) | fn debug_log(&self, arguments: core::fmt::Arguments) {
type PioTransfer (line 341) | enum PioTransfer<TO: WriteTarget, CH: SingleChannel> {
function wait (line 347) | fn wait(self) -> (CH, &'static mut [TargetPixel], TO) {
type DrawBuffer (line 358) | struct DrawBuffer<Display, PioTransfer, Stolen> {
type TargetPixel (line 375) | type TargetPixel = TargetPixel;
function process_line (line 377) | fn process_line(
function flush_frame (line 434) | fn flush_frame(&mut self) {
type PartialReadBuffer (line 447) | struct PartialReadBuffer(&'static mut [Rgb565Pixel], core::ops::Range<us...
type Word (line 449) | type Word = u8;
method read_buffer (line 451) | unsafe fn read_buffer(&self) -> (*const <Self as embedded_dma::ReadBuf...
constant SPI_FREQ (line 465) | pub const SPI_FREQ: Hertz<u32> = Hertz::<u32>::Hz(3_000_000);
type XPT2046 (line 467) | pub struct XPT2046<IRQ: InputPin + 'static, SPI: SpiDevice> {
function new (line 474) | pub fn new(irq: &'static Mutex<RefCell<Option<IRQ>>>, spi: SPI) -> Resul...
function read (line 478) | pub fn read(&mut self) -> Result<Option<Point2D<f32>>, Error<PinE, SPI::...
type Error (line 544) | pub enum Error<PinE, TransferE> {
function IO_IRQ_BANK0 (line 551) | fn IO_IRQ_BANK0() {
function TIMER_IRQ_0 (line 561) | fn TIMER_IRQ_0() {
function panic (line 570) | fn panic(info: &core::panic::PanicInfo) -> ! {
FILE: examples/mcu-board-support/profiler.rs
type Timer (line 7) | pub enum Timer {
method new (line 16) | pub fn new(_devices: &dyn Devices) -> Self {
method new_stopped (line 22) | pub fn new_stopped() -> Self {
method elapsed (line 30) | pub fn elapsed(&self, _devices: &dyn Devices) -> core::time::Duration {
method stop (line 37) | pub fn stop(&mut self, _devices: &dyn Devices) {
method start (line 47) | pub fn start(&mut self, _devices: &dyn Devices) {
method stop_profiling (line 57) | pub fn stop_profiling(&mut self, _devices: &dyn Devices, _context: &'s...
type Timer (line 13) | pub struct Timer {}
method new (line 16) | pub fn new(_devices: &dyn Devices) -> Self {
method new_stopped (line 22) | pub fn new_stopped() -> Self {
method elapsed (line 30) | pub fn elapsed(&self, _devices: &dyn Devices) -> core::time::Duration {
method stop (line 37) | pub fn stop(&mut self, _devices: &dyn Devices) {
method start (line 47) | pub fn start(&mut self, _devices: &dyn Devices) {
method stop_profiling (line 57) | pub fn stop_profiling(&mut self, _devices: &dyn Devices, _context: &'s...
FILE: examples/mcu-board-support/stm32h735g/stm32h735g.rs
constant HEAP_SIZE (line 24) | const HEAP_SIZE: usize = 200 * 1024;
constant DISPLAY_WIDTH (line 27) | const DISPLAY_WIDTH: usize = 480;
constant DISPLAY_HEIGHT (line 28) | const DISPLAY_HEIGHT: usize = 272;
type TargetPixel (line 31) | pub type TargetPixel = software_renderer::Rgb565Pixel;
function init (line 39) | pub fn init() {
type StmBackendInner (line 52) | struct StmBackendInner {
type StmBackend (line 59) | struct StmBackend {
method create_window_adapter (line 315) | fn create_window_adapter(
method run_event_loop (line 325) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method duration_since_start (line 393) | fn duration_since_start(&self) -> core::time::Duration {
method debug_log (line 399) | fn debug_log(&self, arguments: core::fmt::Arguments) {
method default (line 66) | fn default() -> Self {
function rng (line 405) | fn rng(buf: &mut [u8]) -> Result<(), getrandom::Error> {
FILE: examples/mcu-board-support/stm32u5g9j_dk2/hspi.rs
function rcc_init (line 11) | pub fn rcc_init(config: &mut embassy_stm32::Config) {
type OctaDtrFlashMemory (line 27) | pub struct OctaDtrFlashMemory<'d, I: Instance> {
constant CMD_READ_OCTA_DTR (line 32) | const CMD_READ_OCTA_DTR: u16 = 0xEE11;
constant CMD_RESET_ENABLE (line 34) | const CMD_RESET_ENABLE: u8 = 0x66;
constant CMD_RESET_ENABLE_OCTA_DTR (line 35) | const CMD_RESET_ENABLE_OCTA_DTR: u16 = 0x6699;
constant CMD_RESET (line 36) | const CMD_RESET: u8 = 0x99;
constant CMD_RESET_OCTA_DTR (line 37) | const CMD_RESET_OCTA_DTR: u16 = 0x9966;
constant CMD_WRITE_ENABLE (line 39) | const CMD_WRITE_ENABLE: u8 = 0x06;
constant CMD_READ_SR (line 41) | const CMD_READ_SR: u8 = 0x05;
constant CMD_WRITE_CR2 (line 43) | const CMD_WRITE_CR2: u8 = 0x72;
constant CR2_REG1_ADDR (line 45) | const CR2_REG1_ADDR: u32 = 0x00000000;
constant CR2_OCTA_DTR (line 46) | const CR2_OCTA_DTR: u8 = 0x02;
constant CR2_REG3_ADDR (line 48) | const CR2_REG3_ADDR: u32 = 0x00000300;
constant CR2_DC_6_CYCLES (line 49) | const CR2_DC_6_CYCLES: u8 = 0x07;
function new (line 51) | pub async fn new(hspi: Hspi<'d, I, Async>) -> Self {
function enable_octa_dtr (line 59) | async fn enable_octa_dtr(&mut self) {
function enable_mm (line 66) | pub async fn enable_mm(&mut self) {
function exec_command_spi (line 95) | async fn exec_command_spi(&mut self, cmd: u8) {
function exec_command_octa_dtr (line 105) | async fn exec_command_octa_dtr(&mut self, cmd: u16) {
function wait_write_finish_spi (line 117) | fn wait_write_finish_spi(&mut self) {
function reset_memory (line 121) | pub async fn reset_memory(&mut self) {
function write_enable_spi (line 130) | async fn write_enable_spi(&mut self) {
function read_sr_spi (line 134) | pub fn read_sr_spi(&mut self) -> u8 {
function write_cr2_spi (line 147) | pub fn write_cr2_spi(&mut self, addr: u32, value: u8) {
FILE: examples/mcu-board-support/stm32u5g9j_dk2/stm32u5g9j_dk2.rs
constant HEAP_SIZE (line 30) | const HEAP_SIZE: usize = 200 * 1024;
constant DISPLAY_WIDTH (line 38) | const DISPLAY_WIDTH: usize = 800;
constant DISPLAY_HEIGHT (line 39) | const DISPLAY_HEIGHT: usize = 480;
type TargetPixel (line 42) | pub type TargetPixel = software_renderer::Rgb565Pixel;
function init (line 51) | pub fn init() {
type StmBackendInner (line 262) | struct StmBackendInner {
method dispatch_events (line 277) | async fn dispatch_events(&mut self, window: &slint::Window) {
method render (line 315) | async fn render(&mut self, renderer: &slint::platform::software_renderer...
function rng (line 326) | fn rng(buf: &mut [u8]) -> Result<(), getrandom::Error> {
FILE: examples/mcu-board-support/waveshare_esp32_s3_touch_amoled_1_8/waveshare_esp32_s3_touch_amoled_1_8.rs
type TouchResetDriver (line 34) | pub struct TouchResetDriver<I2C> {
function new (line 39) | pub fn new(i2c: I2C) -> Self {
type Error (line 48) | type Error = I2C::Error;
method reset (line 50) | fn reset(&mut self) -> Result<(), Self::Error> {
type EspBackend (line 61) | struct EspBackend {
method create_window_adapter (line 67) | fn create_window_adapter(
method duration_since_start (line 77) | fn duration_since_start(&self) -> core::time::Duration {
method run_event_loop (line 81) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method run_event_loop (line 111) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method default (line 87) | fn default() -> Self {
function init (line 93) | pub fn init() {
FILE: examples/mcu-embassy/slint_generated/build.rs
function main (line 4) | fn main() {
FILE: examples/mcu-embassy/src/bin/ui_mcu.rs
constant MY_TASK_POOL_SIZE (line 52) | const MY_TASK_POOL_SIZE: usize = 2;
constant HEAP_SIZE (line 53) | const HEAP_SIZE: usize = 200 * 1024;
function main (line 60) | async fn main(spawner: Spawner) {
function init_heap_in_place (line 218) | unsafe fn init_heap_in_place(buf: &mut MaybeUninit<[u8; HEAP_SIZE]>) -> ...
function init_fb_in_place (line 228) | unsafe fn init_fb_in_place(
function led_task (line 241) | async fn led_task(mut led: Output<'static>) {
function user_btn_task (line 255) | async fn user_btn_task(mut user_btn: ExtiInput<'static>) {
function render_loop (line 290) | pub async fn render_loop(
function process_touch (line 321) | fn process_touch(
FILE: examples/mcu-embassy/src/bin/ui_simulator.rs
function main (line 48) | fn main() {
function sdl2_render_loop (line 67) | fn sdl2_render_loop(
function main_task (line 190) | async fn main_task(
function embassy_render_loop (line 219) | async fn embassy_render_loop(
FILE: examples/mcu-embassy/src/controller.rs
type Action (line 12) | pub enum Action {
type ActionChannelType (line 18) | type ActionChannelType = Channel<embassy_sync::blocking_mutex::raw::Thre...
type ActionChannelType (line 21) | type ActionChannelType =
type Hardware (line 28) | pub trait Hardware {
method green_led_set_high (line 29) | fn green_led_set_high(&mut self) {}
method green_led_set_low (line 31) | fn green_led_set_low(&mut self) {}
type Controller (line 34) | pub struct Controller<'a, Hardware> {
function new (line 43) | pub fn new(main_window: &'a MainWindow, hardware: H) -> Self {
function run (line 47) | pub async fn run(&mut self) {
function process_action (line 64) | pub async fn process_action(&mut self, action: Action) -> Result<(), ()> {
function set_action_event_handlers (line 83) | fn set_action_event_handlers(&self) {
function send_action (line 89) | pub fn send_action(a: Action) {
FILE: examples/mcu-embassy/src/mcu/double_buffer.rs
type DoubleBuffer (line 10) | pub struct DoubleBuffer {
method new (line 18) | pub fn new(
method current (line 26) | pub fn current(&mut self) -> &mut [TargetPixelType] {
method swap_temp (line 30) | pub fn swap_temp(&mut self) {
method swap (line 34) | pub async fn swap<T: ltdc::Instance>(
method clear (line 45) | pub fn clear(&mut self) {
FILE: examples/mcu-embassy/src/mcu/hardware.rs
type HardwareMcu (line 6) | pub struct HardwareMcu {
method green_led_set_high (line 11) | fn green_led_set_high(&mut self) {
method green_led_set_low (line 15) | fn green_led_set_low(&mut self) {
FILE: examples/mcu-embassy/src/mcu/rcc_setup.rs
function stm32u5g9zj_init (line 9) | pub fn stm32u5g9zj_init() -> Peripherals {
FILE: examples/mcu-embassy/src/simulator/hardware.rs
type HardwareSim (line 7) | pub struct HardwareSim {}
method green_led_set_high (line 10) | fn green_led_set_high(&mut self) {
method green_led_set_low (line 14) | fn green_led_set_low(&mut self) {
FILE: examples/mcu-embassy/src/slint_backend.rs
constant DISPLAY_WIDTH (line 14) | pub const DISPLAY_WIDTH: usize = 800;
constant DISPLAY_HEIGHT (line 15) | pub const DISPLAY_HEIGHT: usize = 480;
type TargetPixelType (line 16) | pub type TargetPixelType = software_renderer::Rgb565Pixel;
type StmBackend (line 18) | pub struct StmBackend {
method new (line 23) | pub fn new(window: Rc<MinimalSoftwareWindow>) -> Self {
method create_window_adapter (line 29) | fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter>, Platfor...
method duration_since_start (line 35) | fn duration_since_start(&self) -> core::time::Duration {
FILE: examples/memory/main.py
class MainWindow (line 14) | class MainWindow(slint.loader.memory.MainWindow):
method __init__ (line 15) | def __init__(self):
method check_if_pair_solved (line 27) | def check_if_pair_solved(self):
FILE: examples/memory/main.rs
function main (line 16) | pub fn main() {
FILE: examples/memory/memory.cpp
function main (line 7) | int main()
FILE: examples/native-gestures/build.rs
function main (line 4) | fn main() {
FILE: examples/native-gestures/src/lib.rs
function app_main (line 6) | pub fn app_main() -> Result<(), slint::PlatformError> {
function android_main (line 12) | fn android_main(app: slint::android::AndroidApp) -> Result<(), slint::Pl...
FILE: examples/native-gestures/src/main.rs
function main (line 4) | fn main() -> Result<(), slint::PlatformError> {
FILE: examples/opengl_texture/build.rs
function main (line 4) | fn main() {
FILE: examples/opengl_texture/main.cpp
function GLint (line 17) | static GLint compile_shader(GLuint program, GLuint shader_type, const GL...
type ScopedVAOBinding (line 67) | struct ScopedVAOBinding
method ScopedVAOBinding (line 70) | ScopedVAOBinding() = delete;
method ScopedVAOBinding (line 71) | ScopedVAOBinding(const ScopedVAOBinding &) = delete;
method ScopedVAOBinding (line 72) | ScopedVAOBinding &operator=(const ScopedVAOBinding &) = delete;
method ScopedVAOBinding (line 73) | ScopedVAOBinding(GLuint new_value)
type DemoTexture (line 81) | struct DemoTexture
method DemoTexture (line 88) | DemoTexture(int width, int height) : width(width), height(height)
method DemoTexture (line 127) | DemoTexture(const DemoTexture &) = delete;
method DemoTexture (line 128) | DemoTexture &operator=(const DemoTexture &) = delete;
method with_active_fbo (line 136) | void with_active_fbo(Callback callback)
class DemoRenderer (line 143) | class DemoRenderer
method DemoRenderer (line 146) | DemoRenderer(slint::ComponentWeakHandle<App> app) : app_weak(app) { }
method setup (line 175) | void setup()
method render (line 317) | slint::Image render(float red, float green, float blue, int width, int...
method teardown (line 358) | void teardown()
function main (line 377) | int main()
FILE: examples/opengl_texture/main.rs
type DemoTexture (line 71) | struct DemoTexture {
method new (line 80) | unsafe fn new(gl: &Rc<glow::Context>, width: u32, height: u32) -> Self {
method with_texture_as_active_fbo (line 146) | unsafe fn with_texture_as_active_fbo<R>(&self, callback: impl FnOnce()...
method drop (line 155) | fn drop(&mut self) {
type DemoRenderer (line 163) | struct DemoRenderer {
method new (line 176) | fn new(gl: glow::Context) -> Self {
method render (line 353) | fn render(
method drop (line 343) | fn drop(&mut self) {
function main (line 416) | fn main() {
FILE: examples/opengl_underlay/build.rs
function main (line 4) | fn main() {
FILE: examples/opengl_underlay/main.cpp
function GLint (line 15) | static GLint compile_shader(GLuint program, GLuint shader_type, const GL...
class OpenGLUnderlay (line 42) | class OpenGLUnderlay
method OpenGLUnderlay (line 45) | OpenGLUnderlay(slint::ComponentWeakHandle<App> app) : app_weak(app) { }
method setup (line 68) | void setup()
method render (line 159) | void render(bool enable_rotation)
method teardown (line 186) | void teardown() { glDeleteProgram(program); }
function main (line 200) | int main()
FILE: examples/opengl_underlay/main.rs
type EGLUnderlay (line 11) | struct EGLUnderlay {
method new (line 25) | fn new(gl: glow::Context) -> Self {
method render (line 159) | fn render(&mut self, rotation_enabled: bool) {
method drop (line 149) | fn drop(&mut self) {
function main (line 211) | pub fn main() {
FILE: examples/plotter/main.rs
function pdf (line 17) | fn pdf(x: f64, y: f64, a: f64) -> f64 {
function render_plot (line 25) | fn render_plot(pitch: f32, yaw: f32, amplitude: f32) -> slint::Image {
function main (line 73) | pub fn main() {
FILE: examples/plotter/wasm_backend.rs
type BackendWithoutText (line 6) | pub struct BackendWithoutText<ForwardedBackend: DrawingBackend> {
type ErrorType (line 11) | type ErrorType = ForwardedBackend::ErrorType;
method get_size (line 13) | fn get_size(&self) -> (u32, u32) {
method ensure_prepared (line 17) | fn ensure_prepared(&mut self) -> Result<(), DrawingErrorKind<Self::Error...
method present (line 21) | fn present(&mut self) -> Result<(), DrawingErrorKind<Self::ErrorType>> {
method draw_pixel (line 25) | fn draw_pixel(
method draw_line (line 33) | fn draw_line<S: BackendStyle>(
method draw_rect (line 42) | fn draw_rect<S: BackendStyle>(
method draw_path (line 52) | fn draw_path<S: BackendStyle, I: IntoIterator<Item = BackendCoord>>(
method draw_circle (line 60) | fn draw_circle<S: BackendStyle>(
method fill_polygon (line 70) | fn fill_polygon<S: BackendStyle, I: IntoIterator<Item = BackendCoord>>(
method draw_text (line 78) | fn draw_text<TStyle: BackendTextStyle>(
method estimate_text_size (line 87) | fn estimate_text_size<TStyle: BackendTextStyle>(
method blit_bitmap (line 95) | fn blit_bitmap<'b>(
FILE: examples/safe-ui/core/build.rs
function main (line 7) | fn main() {
FILE: examples/safe-ui/core/src/lib.rs
constant WIDTH_PIXELS (line 28) | pub const WIDTH_PIXELS: u32 = match option_env!("SAFE_UI_WIDTH") {
constant HEIGHT_PIXELS (line 33) | pub const HEIGHT_PIXELS: u32 = match option_env!("SAFE_UI_HEIGHT") {
constant SCALE_FACTOR (line 38) | pub const SCALE_FACTOR: f32 = match option_env!("SAFE_UI_SCALE_FACTOR") {
function slint_app_main (line 44) | pub extern "C" fn slint_app_main() {
function parse_u32 (line 54) | const fn parse_u32(s: &str) -> u32 {
function parse_f32 (line 67) | const fn parse_f32(s: &str) -> f32 {
FILE: examples/safe-ui/core/src/pixels/bgra8888.rs
type Bgra8888Pixel (line 6) | pub struct Bgra8888Pixel(pub u32);
method from (line 23) | fn from(pixel: slint::platform::software_renderer::PremultipliedRgbaCo...
method blend (line 34) | fn blend(&mut self, color: slint::platform::software_renderer::Premult...
method from_rgb (line 39) | fn from_rgb(r: u8, g: u8, b: u8) -> Self {
method background (line 42) | fn background() -> Self {
function from (line 10) | fn from(pixel: Bgra8888Pixel) -> Self {
FILE: examples/safe-ui/core/src/pixels/mod.rs
type PlatformPixel (line 8) | pub type PlatformPixel = crate::pixels::bgra8888::Bgra8888Pixel;
type PlatformPixel (line 10) | pub type PlatformPixel = slint::platform::software_renderer::Rgb565Pixel;
type PlatformPixel (line 12) | pub type PlatformPixel = slint::Rgb8Pixel;
type Rgb8Pixel (line 16) | pub struct Rgb8Pixel {
method from (line 24) | fn from(p: PlatformPixel) -> Self {
method from (line 32) | fn from(p: PlatformPixel) -> Self {
method from (line 44) | fn from(p: PlatformPixel) -> Self {
FILE: examples/safe-ui/core/src/platform.rs
type Platform (line 12) | struct Platform {
method create_window_adapter (line 19) | fn create_window_adapter(
method run_event_loop (line 25) | fn run_event_loop(&self) -> Result<(), slint::PlatformError> {
method duration_since_start (line 79) | fn duration_since_start(&self) -> core::time::Duration {
function render_wrapper (line 86) | fn render_wrapper<P, F>(f: &F)
function slint_init_safeui_platform (line 115) | pub fn slint_init_safeui_platform(width: u32, height: u32, scale_factor:...
function panic (line 163) | fn panic(info: &core::panic::PanicInfo) -> ! {
function free (line 225) | pub fn free(p: *mut c_void);
function malloc (line 226) | pub fn malloc(size: usize) -> *mut c_void;
type CAlloc (line 229) | struct CAlloc;
method alloc (line 231) | unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
method dealloc (line 244) | unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
FILE: examples/safe-ui/simulator/build.rs
function main (line 4) | fn main() {
FILE: examples/safe-ui/simulator/src/desktop_platform.rs
constant SCALED_WIDTH (line 11) | pub const SCALED_WIDTH: u32 = (WIDTH_PIXELS as f32 * SCALE_FACTOR).round...
constant SCALED_HEIGHT (line 12) | pub const SCALED_HEIGHT: u32 = (HEIGHT_PIXELS as f32 * SCALE_FACTOR).rou...
constant PIXEL_STRIDE (line 13) | const PIXEL_STRIDE: u32 = SCALED_WIDTH;
function init_channel (line 18) | pub fn init_channel(sender: smol::channel::Sender<Vec<slint::Rgb8Pixel>>) {
function set_sim_thread (line 22) | pub fn set_sim_thread(thread: std::thread::Thread) {
function convert_to_rgb8 (line 26) | fn convert_to_rgb8(pixels: &[PlatformPixel]) -> Vec<slint::Rgb8Pixel> {
function slint_safeui_platform_wait_for_events (line 62) | extern "C" fn slint_safeui_platform_wait_for_events(max_wait_millisecond...
function slint_safeui_platform_wake (line 71) | extern "C" fn slint_safeui_platform_wake() {
function slint_safeui_platform_render (line 78) | extern "C" fn slint_safeui_platform_render(
function slint_safeui_platform_duration_since_start (line 102) | extern "C" fn slint_safeui_platform_duration_since_start() -> i32 {
function slint_safeui_platform_get_screen_size (line 110) | extern "C" fn slint_safeui_platform_get_screen_size(width: *mut u32, hei...
FILE: examples/safe-ui/simulator/src/main.rs
function main (line 14) | fn main() {
FILE: examples/servo/build.rs
function main (line 13) | fn main() {
FILE: examples/servo/src/lib.rs
function main (line 19) | pub fn main() {
function android_main (line 39) | pub fn android_main(android_app: slint::android::AndroidApp) {
function setup_wgpu (line 45) | fn setup_wgpu() -> (wgpu::Device, wgpu::Queue) {
FILE: examples/servo/src/main.rs
function main (line 4) | fn main() {
FILE: examples/servo/src/webview/adapter.rs
function upgrade_adapter (line 26) | pub fn upgrade_adapter(weak_ref: &Weak<SlintServoAdapter>) -> Rc<SlintSe...
type SlintServoAdapter (line 48) | pub struct SlintServoAdapter {
method new (line 71) | pub fn new(
method inner (line 92) | pub fn inner(&self) -> Ref<'_, SlintServoAdapterInner> {
method inner_mut (line 96) | pub fn inner_mut(&self) -> RefMut<'_, SlintServoAdapterInner> {
method waker_sender (line 100) | pub fn waker_sender(&self) -> Sender<()> {
method waker_reciver (line 104) | pub fn waker_reciver(&self) -> Receiver<()> {
method wgpu_device (line 109) | pub fn wgpu_device(&self) -> wgpu::Device {
method wgpu_queue (line 114) | pub fn wgpu_queue(&self) -> wgpu::Queue {
method servo (line 118) | pub fn servo(&self) -> Ref<'_, Servo> {
method webview (line 122) | pub fn webview(&self) -> WebView {
method set_inner (line 126) | pub fn set_inner(
method update_web_content_with_latest_frame (line 140) | pub fn update_web_content_with_latest_frame(&self, app: &MyApp) {
type SlintServoAdapterInner (line 60) | pub struct SlintServoAdapterInner {
FILE: examples/servo/src/webview/delegate.rs
type AppDelegate (line 26) | pub struct AppDelegate {
method new (line 40) | pub fn new(app: &MyApp, adapter: Rc<SlintServoAdapter>) -> Self {
method notify_new_frame_ready (line 48) | fn notify_new_frame_ready(&self, webview: WebView) {
method notify_url_changed (line 55) | fn notify_url_changed(&self, _webview: WebView, url: url::Url) {
FILE: examples/servo/src/webview/events_utils/key_event_util.rs
function convert_slint_key_event_to_servo_input_event (line 12) | pub fn convert_slint_key_event_to_servo_input_event(
function key_from_text (line 26) | fn key_from_text(text: &str) -> Key {
function get_modifiers (line 90) | fn get_modifiers(modifiers: &KeyboardModifiers) -> Modifiers {
FILE: examples/servo/src/webview/events_utils/pointer_event_util.rs
function convert_slint_pointer_event_to_servo_input_event (line 14) | pub fn convert_slint_pointer_event_to_servo_input_event(
function handle_touch_events (line 25) | fn handle_touch_events(pointer_event: &PointerEvent, point: WebViewPoint...
function handle_mouse_events (line 35) | fn handle_mouse_events(pointer_event: &PointerEvent, point: WebViewPoint...
function get_mouse_button (line 50) | fn get_mouse_button(point_event: &PointerEvent) -> MouseButton {
FILE: examples/servo/src/webview/events_utils/url_event_util.rs
function convert_input_string_to_servo_url (line 6) | pub fn convert_input_string_to_servo_url(url: &str) -> ServoUrl {
function input_to_url (line 16) | fn input_to_url(request: &str, searchpage: &str) -> Option<ServoUrl> {
function try_as_search_page (line 24) | fn try_as_search_page(request: &str, searchpage: &str) -> Option<ServoUr...
function try_as_domain (line 31) | fn try_as_domain(request: &str) -> Option<ServoUrl> {
function is_domain_like (line 38) | fn is_domain_like(s: &str) -> bool {
FILE: examples/servo/src/webview/rendering_context/gpu_rendering_context.rs
type VulkanTextureError (line 22) | pub enum VulkanTextureError {
type GPURenderingContext (line 39) | pub struct GPURenderingContext {
method new (line 54) | pub fn new(size: PhysicalSize<u32>) -> Result<Self, surfman::Error> {
method get_wgpu_texture_from_metal (line 78) | pub fn get_wgpu_texture_from_metal(
method get_wgpu_texture_from_vulkan (line 111) | pub fn get_wgpu_texture_from_vulkan(
method drop (line 46) | fn drop(&mut self) {
method prepare_for_rendering (line 326) | fn prepare_for_rendering(&self) {
method read_to_image (line 330) | fn read_to_image(&self, source_rectangle: DeviceIntRect) -> Option<RgbaI...
method size (line 334) | fn size(&self) -> PhysicalSize<u32> {
method resize (line 338) | fn resize(&self, size: PhysicalSize<u32>) {
method present (line 351) | fn present(&self) {
method make_current (line 357) | fn make_current(&self) -> std::result::Result<(), surfman::Error> {
method gleam_gl_api (line 361) | fn gleam_gl_api(&self) -> Rc<dyn gleam::gl::Gl> {
method glow_gl_api (line 365) | fn glow_gl_api(&self) -> Arc<glow::Context> {
method create_texture (line 369) | fn create_texture(&self, surface: Surface) -> Option<(SurfaceTexture, u3...
method destroy_texture (line 373) | fn destroy_texture(&self, surface_texture: SurfaceTexture) -> Option<Sur...
method connection (line 377) | fn connection(&self) -> Option<Connection> {
FILE: examples/servo/src/webview/rendering_context/metal/metal.rs
type WPGPUTextureFromMetal (line 24) | pub struct WPGPUTextureFromMetal {
method new (line 30) | pub fn new(size: PhysicalSize<u32>, wgpu_device: &wgpu::Device) -> Self {
method get (line 34) | pub fn get(
method create_texture_from_iosurface (line 55) | fn create_texture_from_iosurface(
method objc2_metal_texture (line 75) | fn objc2_metal_texture(
method create_wgpu_texture_descriptor (line 122) | fn create_wgpu_texture_descriptor(
method wgpu_hal_texture (line 153) | fn wgpu_hal_texture(
method create_flipped_texture_render (line 192) | fn create_flipped_texture_render(
FILE: examples/servo/src/webview/rendering_context/metal/texture_importer.rs
type ServoTextureImporter (line 8) | pub struct ServoTextureImporter {
method new (line 15) | pub fn new(device: &wgpu::Device) -> Self {
FILE: examples/servo/src/webview/rendering_context/servo_rendering_adapter.rs
function create_software_context (line 15) | pub fn create_software_context(size: PhysicalSize<u32>) -> Box<dyn Servo...
function try_create_gpu_context (line 26) | pub fn try_create_gpu_context(
type ServoRenderingAdapter (line 53) | pub trait ServoRenderingAdapter {
method current_framebuffer_as_image (line 54) | fn current_framebuffer_as_image(&self) -> Image;
method get_rendering_context (line 55) | fn get_rendering_context(&self) -> Rc<dyn RenderingContext>;
method current_framebuffer_as_image (line 67) | fn current_framebuffer_as_image(&self) -> Image {
method get_rendering_context (line 86) | fn get_rendering_context(&self) -> Rc<dyn RenderingContext> {
method current_framebuffer_as_image (line 96) | fn current_framebuffer_as_image(&self) -> Image {
method get_rendering_context (line 113) | fn get_rendering_context(&self) -> Rc<dyn RenderingContext> {
type ServoGPURenderingContext (line 59) | struct ServoGPURenderingContext {
type ServoSoftwareRenderingContext (line 91) | struct ServoSoftwareRenderingContext {
FILE: examples/servo/src/webview/rendering_context/surfman_context.rs
type SurfmanRenderingContext (line 30) | pub struct SurfmanRenderingContext {
method new (line 46) | pub fn new(connection: &Connection, adapter: &Adapter) -> Result<Self,...
method create_surface (line 88) | pub fn create_surface(
method bind_surface (line 97) | pub fn bind_surface(&self, surface: Surface) -> Result<(), Error> {
method create_attached_swap_chain (line 107) | pub fn create_attached_swap_chain(&self) -> Result<SwapChain<Device>, ...
method framebuffer (line 113) | fn framebuffer(&self) -> Option<NativeFramebuffer> {
method prepare_for_rendering (line 122) | pub fn prepare_for_rendering(&self) {
method read_to_image (line 127) | pub fn read_to_image(&self, source_rectangle: DeviceIntRect) -> Option...
method make_current (line 132) | pub fn make_current(&self) -> Result<(), Error> {
method create_texture (line 138) | pub fn create_texture(&self, surface: Surface) -> Option<(SurfaceTextu...
method destroy_texture (line 152) | pub fn destroy_texture(&self, surface_texture: SurfaceTexture) -> Opti...
method connection (line 159) | pub fn connection(&self) -> Option<Connection> {
method read_framebuffer_to_image (line 165) | fn read_framebuffer_to_image(
method drop (line 38) | fn drop(&mut self) {
FILE: examples/servo/src/webview/waker.rs
type Waker (line 18) | pub struct Waker(Sender<()>);
method new (line 26) | pub fn new(sender: Sender<()>) -> Self {
method wake (line 33) | fn wake(&self) {
method clone_box (line 38) | fn clone_box(&self) -> Box<dyn EventLoopWaker> {
FILE: examples/servo/src/webview/webview.rs
type WebView (line 39) | pub struct WebView {}
method new (line 63) | pub fn new(
method init_rendering_adapter (line 102) | fn init_rendering_adapter(
method init_servo_builder (line 140) | fn init_servo_builder(adapter: Rc<SlintServoAdapter>) -> Servo {
method init_webview (line 161) | fn init_webview(
method spin_servo_event_loop (line 201) | fn spin_servo_event_loop(state: Rc<SlintServoAdapter>) {
FILE: examples/servo/src/webview/webview_events.rs
type WebViewEvents (line 22) | pub struct WebViewEvents<'a> {
function new (line 28) | pub fn new(app: &'a MyApp, adapter: Rc<SlintServoAdapter>) {
function on_url (line 39) | fn on_url(&self) {
function on_theme (line 49) | fn on_theme(&self) {
function on_resize (line 61) | fn on_resize(&self) {
function on_scroll (line 81) | fn on_scroll(&self) {
function on_buttons (line 98) | fn on_buttons(&self) {
function on_pointer (line 121) | fn on_pointer(&self) {
function on_key_event (line 133) | fn on_key_event(&self) {
FILE: examples/slide_puzzle/build.rs
function main (line 4) | fn main() {
FILE: examples/slide_puzzle/main.rs
function shuffle (line 13) | fn shuffle() -> Vec<i8> {
type AppState (line 40) | struct AppState {
method set_pieces_pos (line 54) | fn set_pieces_pos(&self, p: i8, pos: i8) {
method randomize (line 63) | fn randomize(&mut self) {
method apply_tiles_left (line 72) | fn apply_tiles_left(&mut self) {
method piece_clicked (line 78) | fn piece_clicked(&mut self, p: i8) -> bool {
method slide (line 104) | fn slide(&mut self, pos: i8, offset: i8) {
method random_move (line 113) | fn random_move(&mut self) {
method kick_animation (line 130) | fn kick_animation(&mut self) {
function main (line 168) | pub fn main() -> Result<(), slint::PlatformError> {
FILE: examples/speedometer/rust/lib.rs
function main (line 18) | pub fn main() {
FILE: examples/speedometer/rust/main.rs
function main (line 4) | fn main() {
FILE: examples/todo-mvc/rust/build.rs
function main (line 4) | fn main() {
FILE: examples/todo-mvc/rust/src/callback.rs
type CallbackWrapper (line 6) | type CallbackWrapper<Arguments, Result = ()> =
type Callback (line 9) | pub struct Callback<Arguments: ?Sized, Result = ()> {
method default (line 14) | fn default() -> Self {
function on (line 20) | pub fn on(&self, mut f: impl FnMut(&Arguments) -> Result + 'static) {
function invoke (line 24) | pub fn invoke(&self, a: &Arguments) -> Result {
function test_invoke (line 41) | fn test_invoke() {
FILE: examples/todo-mvc/rust/src/lib.rs
function main (line 15) | pub fn main() {
function init (line 21) | fn init() -> ui::MainWindow {
FILE: examples/todo-mvc/rust/src/main.rs
function main (line 4) | fn main() {
FILE: examples/todo-mvc/rust/src/mvc/controllers/create_task_controller.rs
type CreateTaskController (line 10) | pub struct CreateTaskController {
method new (line 16) | pub fn new(repo: impl DateTimeRepository + 'static) -> Self {
method current_date (line 20) | pub fn current_date(&self) -> DateModel {
method current_time (line 24) | pub fn current_time(&self) -> TimeModel {
method date_string (line 28) | pub fn date_string(&self, date_model: DateModel) -> String {
method time_string (line 32) | pub fn time_string(&self, time_model: TimeModel) -> String {
method back (line 36) | pub fn back(&self) {
method on_back (line 40) | pub fn on_back(&self, mut callback: impl FnMut() + 'static) {
method time_stamp (line 46) | pub fn time_stamp(&self, date_model: DateModel, time_model: TimeModel)...
function test_controller (line 57) | fn test_controller() -> CreateTaskController {
function test_current_date (line 66) | fn test_current_date() {
function test_current_time (line 72) | fn test_current_time() {
function test_date_string (line 78) | fn test_date_string() {
function test_time_string (line 87) | fn test_time_string() {
function test_back (line 96) | fn test_back() {
function test_time_stamp (line 115) | fn test_time_stamp() {
FILE: examples/todo-mvc/rust/src/mvc/controllers/task_list_controller.rs
type TaskListController (line 15) | pub struct TaskListController {
method new (line 21) | pub fn new(repo: impl mvc::traits::TaskRepository + 'static) -> Self {
method task_model (line 28) | pub fn task_model(&self) -> ModelRc<mvc::TaskModel> {
method toggle_done (line 32) | pub fn toggle_done(&self, index: usize) {
method remove_task (line 36) | pub fn remove_task(&self, index: usize) {
method create_task (line 40) | pub fn create_task(&self, title: &str, due_date: i64) {
method show_create_task (line 48) | pub fn show_create_task(&self) {
method on_show_create_task (line 52) | pub fn on_show_create_task(&self, mut callback: impl FnMut() + 'static) {
type TaskModel (line 60) | struct TaskModel {
method new (line 66) | fn new(repo: impl mvc::traits::TaskRepository + 'static) -> Self {
method toggle_done (line 70) | fn toggle_done(&self, index: usize) {
method remove_task (line 78) | fn remove_task(&self, index: usize) {
method push_task (line 86) | fn push_task(&self, task: mvc::TaskModel) {
type Data (line 96) | type Data = mvc::TaskModel;
method row_count (line 98) | fn row_count(&self) -> usize {
method row_data (line 102) | fn row_data(&self, row: usize) -> Option<Self::Data> {
method model_tracker (line 106) | fn model_tracker(&self) -> &dyn ModelTracker {
function test_controller (line 117) | fn test_controller() -> TaskListController {
function test_tasks (line 125) | fn test_tasks() {
function test_toggle_task_checked (line 141) | fn test_toggle_task_checked() {
function test_remove_task (line 151) | fn test_remove_task() {
function test_show_create_task (line 166) | fn test_show_create_task() {
function test_add_task (line 185) | fn test_add_task() {
FILE: examples/todo-mvc/rust/src/mvc/models/date_model.rs
type DateModel (line 5) | pub struct DateModel {
FILE: examples/todo-mvc/rust/src/mvc/models/task_model.rs
type TaskModel (line 5) | pub struct TaskModel {
FILE: examples/todo-mvc/rust/src/mvc/models/time_model.rs
type TimeModel (line 5) | pub struct TimeModel {
FILE: examples/todo-mvc/rust/src/mvc/repositories.rs
function date_time_repo (line 14) | pub fn date_time_repo() -> impl traits::DateTimeRepository + Clone {
function task_repo (line 22) | pub fn task_repo() -> impl traits::TaskRepository + Clone {
FILE: examples/todo-mvc/rust/src/mvc/repositories/mock_date_time_repository.rs
type MockDateTimeRepository (line 9) | pub struct MockDateTimeRepository {
method new (line 16) | pub fn new(
method current_date (line 26) | fn current_date(&self) -> mvc::DateModel {
method current_time (line 30) | fn current_time(&self) -> mvc::TimeModel {
method date_to_string (line 34) | fn date_to_string(&self, date: mvc::DateModel) -> String {
method time_to_string (line 38) | fn time_to_string(&self, time: mvc::TimeModel) -> String {
method time_stamp (line 42) | fn time_stamp(&self, _date: mvc::DateModel, _time: mvc::TimeModel) -> ...
FILE: examples/todo-mvc/rust/src/mvc/repositories/mock_task_repository.rs
type MockTaskRepository (line 10) | pub struct MockTaskRepository {
method new (line 15) | pub fn new(tasks: Vec<mvc::TaskModel>) -> Self {
method task_count (line 21) | fn task_count(&self) -> usize {
method get_task (line 25) | fn get_task(&self, index: usize) -> Option<mvc::TaskModel> {
method toggle_done (line 29) | fn toggle_done(&self, index: usize) -> bool {
method remove_task (line 38) | fn remove_task(&self, index: usize) -> bool {
method push_task (line 47) | fn push_task(&self, task: mvc::TaskModel) -> bool {
FILE: examples/todo-mvc/rust/src/mvc/repositories/traits/date_time_repository.rs
type DateTimeRepository (line 6) | pub trait DateTimeRepository {
method current_date (line 7) | fn current_date(&self) -> mvc::DateModel;
method current_time (line 8) | fn current_time(&self) -> mvc::TimeModel;
method date_to_string (line 9) | fn date_to_string(&self, date: mvc::DateModel) -> String;
method time_to_string (line 10) | fn time_to_string(&self, time: mvc::TimeModel) -> String;
method time_stamp (line 11) | fn time_stamp(&self, date: mvc::DateModel, time: mvc::TimeModel) -> i32;
FILE: examples/todo-mvc/rust/src/mvc/repositories/traits/task_repository.rs
type TaskRepository (line 6) | pub trait TaskRepository {
method task_count (line 7) | fn task_count(&self) -> usize;
method get_task (line 8) | fn get_task(&self, index: usize) -> Option<mvc::TaskModel>;
method toggle_done (line 9) | fn toggle_done(&self, index: usize) -> bool;
method remove_task (line 10) | fn remove_task(&self, index: usize) -> bool;
method push_task (line 11) | fn push_task(&self, task: mvc::TaskModel) -> bool;
FILE: examples/todo-mvc/rust/src/ui/create_task_adapter.rs
function connect_with_controller (line 14) | fn connect_with_controller(
function connect_with_task_list_controller (line 23) | fn connect_with_task_list_controller(
function connect (line 32) | pub fn connect(view_handle: &ui::MainWindow, controller: CreateTaskContr...
function connect_task_list_controller (line 78) | pub fn connect_task_list_controller(view_handle: &ui::MainWindow, contro...
function map_time_model_to_time (line 88) | fn map_time_model_to_time(time_model: TimeModel) -> ui::Time {
function map_time_to_time_model (line 96) | fn map_time_to_time_model(time: ui::Time) -> TimeModel {
function map_date_model_to_date (line 100) | fn map_date_model_to_date(date_model: DateModel) -> ui::Date {
function map_date_to_date_model (line 104) | fn map_date_to_date_model(date: ui::Date) -> DateModel {
FILE: examples/todo-mvc/rust/src/ui/navigation_adapter.rs
function connect_create_task_controller (line 12) | pub fn connect_create_task_controller(
function connect_task_list_controller (line 26) | pub fn connect_task_list_controller(view_handle: &ui::MainWindow, contro...
FILE: examples/todo-mvc/rust/src/ui/task_list_adapter.rs
function connect_with_controller (line 14) | pub fn connect_with_controller(
function connect (line 23) | pub fn connect(view_handle: &ui::MainWindow, controller: TaskListCo
Copy disabled (too large)
Download .json
Condensed preview — 3030 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,320K chars).
[
{
"path": ".cargo/config.toml",
"chars": 979,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".clang-format",
"chars": 2899,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".clippy.toml",
"chars": 223,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".dockerignore",
"chars": 12,
"preview": "target\n.git\n"
},
{
"path": ".gitattributes",
"chars": 343,
"preview": "*.rs diff=rust\n# These files are automatically checked by the build.rs\n# With linguist-generated we can mark them as "
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug-report.yaml",
"chars": 2472,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/ISSUE_TEMPLATE/2-feature-request.yaml",
"chars": 1759,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/ISSUE_TEMPLATE/3-tracking-issue.md",
"chars": 710,
"preview": "---\nname: 🎯 Tracking Issue — ⚠️ Internal use only\nabout: Track progress on a long-term goal (Internal use only)\ntitle: '"
},
{
"path": ".github/ISSUE_TEMPLATE/4-blank.md",
"chars": 143,
"preview": "---\nname: 🚧 Blank issue — ⚠️ Internal use only\nabout: Issue without labels. (Only for Slint developers)\ntitle: ''\nlabels"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 422,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/actions/codesign/action.yaml",
"chars": 1597,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/actions/install-linux-dependencies/action.yaml",
"chars": 1584,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/actions/install-skia-dependencies/action.yaml",
"chars": 693,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/actions/setup-rust/action.yaml",
"chars": 2908,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/ci_path_filters.yaml",
"chars": 2708,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/dependabot.yml",
"chars": 1891,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/pull_request_template.md",
"chars": 359,
"preview": "<!--\n- [ ] If the change modifies a visible behavior, it changes the documentation accordingly\n- [ ] If possible, the ch"
},
{
"path": ".github/workflows/autofix.yaml",
"chars": 2604,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/bevy_examples.yaml",
"chars": 1837,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/build_and_test_reusable.yaml",
"chars": 6534,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/build_docs.yaml",
"chars": 11386,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/ci.yaml",
"chars": 29939,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/cpp_package.yaml",
"chars": 13946,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/crater.yaml",
"chars": 26062,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/embedded_build.yaml",
"chars": 3365,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/issue_triage.yaml",
"chars": 1374,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/material.yaml",
"chars": 7530,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/material_gallery.yaml",
"chars": 4839,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/material_wasm_gallery.yaml",
"chars": 2355,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/nightly_snapshot.yaml",
"chars": 34601,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/nightly_tests.yaml",
"chars": 14855,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/node_test_reusable.yaml",
"chars": 2420,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/publish_npm_package.yaml",
"chars": 11057,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/python_test_reusable.yaml",
"chars": 2200,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/schedule_nightly_snapshot.yaml",
"chars": 1207,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/servo_example.yaml",
"chars": 2022,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/slint_tool_binary.yaml",
"chars": 11121,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/spellcheck.yaml",
"chars": 499,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/torizon_demos.yaml",
"chars": 3248,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/translations.yaml",
"chars": 2917,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/tree_sitter.yaml",
"chars": 1998,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/upgrade_version.yaml",
"chars": 6563,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/upload_esp_idf_component.yaml",
"chars": 3510,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/upload_pypi.yaml",
"chars": 9363,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/upload_pypi_briefcase.yaml",
"chars": 2562,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/upload_pypi_slint_compiler.yaml",
"chars": 2795,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/wasm_demos.yaml",
"chars": 4203,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".github/workflows/wasm_editor_and_interpreter.yaml",
"chars": 4023,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".gitignore",
"chars": 680,
"preview": "# The servo example requires a lock file as servo only builds with pinned dependencies.\n!examples/servo/Cargo.lock\ntscon"
},
{
"path": ".mailmap",
"chars": 842,
"preview": "Aurindam Jana <aurindam.jana@slint.dev> <aurindam.jana@slint-ui.com>\nFlorian Blasius <florian.blasius@slint.dev> <floria"
},
{
"path": ".mise/config.toml",
"chars": 660,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".mise/tasks/fix/text/trailing_spaces",
"chars": 660,
"preview": "#!/usr/bin/env bash\n# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-S"
},
{
"path": ".mise/tasks/lint/legal/reuse",
"chars": 544,
"preview": "#!/usr/bin/env bash\n# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-S"
},
{
"path": ".mise/tasks.toml",
"chars": 3641,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".npmrc",
"chars": 189,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".taplo.toml",
"chars": 216,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": ".vscode/.gitignore",
"chars": 26,
"preview": "launch.json\nsettings.json\n"
},
{
"path": ".vscode/extensions.json",
"chars": 162,
"preview": "{\n \"recommendations\": [\n \"rust-lang.rust-analyzer\",\n \"vadimcn.vscode-lldb\",\n \"ms-vscode.cmake-tools\",\n \"llv"
},
{
"path": "AGENTS.md",
"chars": 7898,
"preview": "# AGENTS.md\n\nThis file provides guidance to AI coding assistants when working with code in this repository.\n\n## Project "
},
{
"path": "CHANGELOG.md",
"chars": 107287,
"preview": "\n# Changelog\nAll notable changes to this project are documented in this file.\n\n## [1.16.0] - Unreleased\n\n### General\n\n -"
},
{
"path": "CMakeLists.txt",
"chars": 1810,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "CMakePresets.json",
"chars": 1922,
"preview": "{\n \"version\": 8,\n \"$schema\": \"https://cmake.org/cmake/help/latest/_downloads/3e2d73bff478d88a7de0de736ba5e361/sche"
},
{
"path": "CONTRIBUTING.md",
"chars": 1371,
"preview": "\n# Contributing\n\nWe warmly welcome contributions to the project. Let's discuss ideas or questions\nin [Github discussions"
},
{
"path": "Cargo.toml",
"chars": 7923,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "Cross.toml",
"chars": 658,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "FAQ.md",
"chars": 11201,
"preview": "\n# Frequently Asked Questions: <!-- omit in toc -->\n\n- [General](#general)\n - [Why does Slint use a domain specific lan"
},
{
"path": "LICENSE.md",
"chars": 1688,
"preview": "\n# Slint License\n\nYou can use Slint under ***any*** of the following licenses, at your choice:\n\n1. [Royalty-free License"
},
{
"path": "LICENSES/Apache-2.0.txt",
"chars": 10280,
"preview": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AN"
},
{
"path": "LICENSES/CC-BY-2.0.txt",
"chars": 12572,
"preview": "Creative Commons Attribution 2.0\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. D"
},
{
"path": "LICENSES/CC-BY-4.0.txt",
"chars": 16983,
"preview": "Creative Commons Attribution 4.0 International\n\n Creative Commons Corporation (“Creative Commons”) is not a law firm and"
},
{
"path": "LICENSES/CC-BY-ND-4.0.txt",
"chars": 16790,
"preview": "Creative Commons Attribution-NoDerivatives 4.0 International\n\n Creative Commons Corporation (“Creative Commons”) is not "
},
{
"path": "LICENSES/CC-BY-SA-3.0.txt",
"chars": 21305,
"preview": "Creative Commons Attribution-ShareAlike 3.0 Unported\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVI"
},
{
"path": "LICENSES/CC-BY-SA-4.0.txt",
"chars": 20003,
"preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
},
{
"path": "LICENSES/CC-PDDC.txt",
"chars": 1593,
"preview": "\nThe person or persons who have associated work with this document (the \"Dedicator\" or \"Certifier\") hereby either (a) ce"
},
{
"path": "LICENSES/GPL-3.0-only.txt",
"chars": 34505,
"preview": "GNU GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>\n\nE"
},
{
"path": "LICENSES/LicenseRef-DejaVu-Font.txt",
"chars": 8791,
"preview": "Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.\nGlyphs imported from Arev fonts are (c) Tavmjo"
},
{
"path": "LICENSES/LicenseRef-Slint-Royalty-free-2.0.md",
"chars": 3620,
"preview": "# Slint Royalty-free Desktop, Mobile, and Web Applications License\n\nVersion 2.0\n\n## Preamble\n\nSlint is a toolkit that ca"
},
{
"path": "LICENSES/LicenseRef-Slint-Software-3.0.md",
"chars": 9194,
"preview": "# Slint Software License\n\nVersion 3.0.5\n\n## Preamble\n\nSlint is a toolkit that can be used to build user interfaces for a"
},
{
"path": "LICENSES/LicenseRef-qskinny.txt",
"chars": 27450,
"preview": " QSkinny License\n Version 1.0, November 1, 2016\n\nQSkinny is Copyri"
},
{
"path": "LICENSES/MIT.txt",
"chars": 1078,
"preview": "MIT License\n\nCopyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "LICENSES/OFL-1.1-RFN.txt",
"chars": 4012,
"preview": "SIL OPEN FONT LICENSE\n\nVersion 1.1 - 26 February 2007\n\nPREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimula"
},
{
"path": "LICENSES/OFL-1.1.txt",
"chars": 4012,
"preview": "SIL OPEN FONT LICENSE\n\nVersion 1.1 - 26 February 2007\n\nPREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimula"
},
{
"path": "LICENSES/Unlicense.txt",
"chars": 1211,
"preview": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, c"
},
{
"path": "README.md",
"chars": 11915,
"preview": "\n  is a UI toolkit that supports different programming langu"
},
{
"path": "api/cpp/build.rs",
"chars": 1208,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/cbindgen.rs",
"chars": 40069,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/cmake/SlintConfig.cmake.in",
"chars": 3191,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/cmake/SlintMacro.cmake",
"chars": 5763,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/docs/_static/theme_tweak.css",
"chars": 256,
"preview": ".wy-table-responsive table td, .wy-table-responsive table th {\n white-space: normal;\n}\n\n.wy-table-responsive {\n ma"
},
{
"path": "api/cpp/docs/_templates/base.html",
"chars": 224,
"preview": "{% extends \"!base.html\" %}\n{% block scripts %}\n{{ super() }}\n{% include \"../../../../docs/astro/src/utils/slint-docs-pre"
},
{
"path": "api/cpp/docs/cmake.md",
"chars": 8270,
"preview": "<!-- cSpell: ignore ccmake dslint femtovg -->\n\n# Set Up Development Environment\n\n## Prerequisites\n\n* A C++ compiler that"
},
{
"path": "api/cpp/docs/cmake_reference.md",
"chars": 5984,
"preview": "# CMake Reference\n\n## `slint_target_sources`\n\n```\nslint_target_sources(<target> <files>.... [NAMESPACE namespace] [LIBRA"
},
{
"path": "api/cpp/docs/conf.py",
"chars": 4902,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Software-3.0\n\n#"
},
{
"path": "api/cpp/docs/generated_code.md",
"chars": 5838,
"preview": "# Generated Code\n\nThe Slint compiler [called by the build system](cmake_reference.md#slint_target_sources)\nwill generate"
},
{
"path": "api/cpp/docs/genindex.rst",
"chars": 115,
"preview": ".. Copyright © SixtyFPS GmbH <info@slint.dev>\n.. SPDX-License-Identifier: MIT\n\n===========\nIndex (C++)\n===========\n"
},
{
"path": "api/cpp/docs/getting_started.md",
"chars": 3473,
"preview": "# Getting Started\n\nOnce Slint is built, you can use it in your CMake application or library\ntarget in two steps:\n\n1. Ass"
},
{
"path": "api/cpp/docs/index.rst",
"chars": 3053,
"preview": ".. Copyright © SixtyFPS GmbH <info@slint.dev>\n.. SPDX-License-Identifier: MIT\n\n.. Slint C++ documentation master file\n\nS"
},
{
"path": "api/cpp/docs/live_preview.md",
"chars": 859,
"preview": "<!-- cSpell: ignore ccmake dslint femtovg -->\n\n# Live-Preview\n\n`.slint` files are compiled to C++ code when using the [`"
},
{
"path": "api/cpp/docs/mcu/esp-idf/troubleshoot.md",
"chars": 1872,
"preview": "\n# Troubleshooting\n\nYou may run into compile or run-time issues due to Slint's requirements. The following sections\ntrac"
},
{
"path": "api/cpp/docs/mcu/esp_idf.md",
"chars": 5751,
"preview": "\n# Espressif's IoT Development Framework\n\nSlint provides a [component](https://components.espressif.com/components/slint"
},
{
"path": "api/cpp/docs/mcu/generic.md",
"chars": 3269,
"preview": "\n# Generic MCU Environment Setup\n\nWe aim to support many different MCUs and their respective software development enviro"
},
{
"path": "api/cpp/docs/mcu/intro.md",
"chars": 604,
"preview": "\n# Introduction\n\nMicrocontrollers (MCUs) are highly customizable and each vendor typically provides their own developmen"
},
{
"path": "api/cpp/docs/mcu/stm32/generic.md",
"chars": 4083,
"preview": "\n# Generic Instructions for Slint on STM32 MCUs\n\nThe following instructions outline a rough, general path how to get sta"
},
{
"path": "api/cpp/docs/mcu/stm32.md",
"chars": 2621,
"preview": "\n# STMicroelectronics' STM32Cube Ecosystem\n\nSlint provides a platform integration with into STMicroelectronics' (STM) ST"
},
{
"path": "api/cpp/docs/overview.md",
"chars": 3801,
"preview": "# Overview\n\nThe following sections explain how to integrate your `.slint` designs into your\nC++ application. The entry p"
},
{
"path": "api/cpp/docs/pyproject.toml",
"chars": 405,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: MIT\n\n[project]\nname = \"slint-cppdocs\"\nversion = "
},
{
"path": "api/cpp/docs/thirdparty.hbs",
"chars": 575,
"preview": "<!-- Copyright © SixtyFPS GmbH <info@slint.dev> -->\n<!-- SPDX-License-Identifier: MIT -->\n\n# Third Party Licenses\n\nThis "
},
{
"path": "api/cpp/docs/types.md",
"chars": 3430,
"preview": "# Type Mappings\n\nThe types used for properties in `.slint` design markup each translate to specific types in C++.\nThe fo"
},
{
"path": "api/cpp/esp-idf/slint/CMakeLists.txt",
"chars": 2115,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/esp-idf/slint/README.md",
"chars": 1804,
"preview": "\n# Slint\n\n[](https://components."
},
{
"path": "api/cpp/esp-idf/slint/cmake/FindSlint.cmake",
"chars": 3812,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/esp-idf/slint/esp-println.x",
"chars": 553,
"preview": "/* Copyright © SixtyFPS GmbH <info@slint.dev>\n SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/esp-idf/slint/idf_component.yml",
"chars": 574,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/esp-idf/slint/include/slint-esp.h",
"chars": 5247,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/esp-idf/slint/src/slint-esp.cpp",
"chars": 14302,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint-interpreter.h",
"chars": 45077,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint-platform.h",
"chars": 44164,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint-stm32.h",
"chars": 7029,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint-testing.h",
"chars": 21332,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint.h",
"chars": 27677,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_brush.h",
"chars": 15034,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_callbacks.h",
"chars": 4225,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_color.h",
"chars": 11608,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_config.h",
"chars": 751,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_image.h",
"chars": 12714,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_interpreter.h",
"chars": 280,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_item_tree.h",
"chars": 4425,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_live_preview.h",
"chars": 14827,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_models.h",
"chars": 39628,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_pathdata.h",
"chars": 2357,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_point.h",
"chars": 1488,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_properties.h",
"chars": 17507,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_sharedvector.h",
"chars": 8832,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_size.h",
"chars": 1241,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_string.h",
"chars": 11483,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_tests_helpers.h",
"chars": 3089,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_timer.h",
"chars": 4968,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/slint_window.h",
"chars": 28175,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/include/vtable.h",
"chars": 7634,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/lib.rs",
"chars": 10989,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/platform.rs",
"chars": 32872,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/CMakeLists.txt",
"chars": 2020,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/tests/datastructures.cpp",
"chars": 8265,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/eventloop.cpp",
"chars": 4553,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/interpreter.cpp",
"chars": 20807,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/libraries/CMakeLists.txt",
"chars": 508,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/tests/libraries/README.md",
"chars": 93,
"preview": "\nThis is a test making sure that slint_target_sources accepts slint component library paths.\n"
},
{
"path": "api/cpp/tests/libraries/app-window.slint",
"chars": 355,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/libraries/main.cpp",
"chars": 269,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/models.cpp",
"chars": 22921,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/multiple-includes/CMakeLists.txt",
"chars": 446,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/cpp/tests/multiple-includes/README.md",
"chars": 242,
"preview": "\nThis is a test making sure that the header can be included in several compilation without causing multiple definitions\n"
},
{
"path": "api/cpp/tests/multiple-includes/another-window.slint",
"chars": 690,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/multiple-includes/app-window.slint",
"chars": 747,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/multiple-includes/logic.cpp",
"chars": 357,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/multiple-includes/logic.h",
"chars": 220,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/multiple-includes/main.cpp",
"chars": 507,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/platform_eventloop.cpp",
"chars": 10368,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/properties.cpp",
"chars": 910,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/test.slint",
"chars": 195,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/testing.cpp",
"chars": 4206,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/translator.cpp",
"chars": 3196,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/cpp/tests/window.cpp",
"chars": 1291,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/.gitignore",
"chars": 67,
"preview": "rust-module.cjs\nrust-module.d.cts\nindex.js\ndocs/\nnpm/\ndist/\nbuild/\n"
},
{
"path": "api/node/.npmignore",
"chars": 128,
"preview": "target\nCargo.lock\n.cargo\n.github\nnpm\n.eslintrc\n.prettierignore\nrustfmt.toml\nyarn.lock\n*.node\n.yarn\n__test__\nrenovate.jso"
},
{
"path": "api/node/.yarnrc.yml",
"chars": 180,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/node/Cargo.toml",
"chars": 2565,
"preview": "# Copyright © SixtyFPS GmbH <info@slint.dev>\n# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2."
},
{
"path": "api/node/README.md",
"chars": 8822,
"preview": "\n# Slint-node (Beta)\n\n[](https://www.npmjs.com/package/slint-ui)\n\n[Slint](h"
},
{
"path": "api/node/__test__/api.spec.mts",
"chars": 8458,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/compiler.spec.mts",
"chars": 9678,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/eventloop.spec.mts",
"chars": 2263,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/globals.spec.mts",
"chars": 6411,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/helpers/utils.ts",
"chars": 939,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/js_value_conversion.spec.mts",
"chars": 32880,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/models.spec.mts",
"chars": 1643,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/error.slint",
"chars": 222,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/test-constructor.slint",
"chars": 245,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/test-enum.slint",
"chars": 269,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/test-fileloader.slint",
"chars": 305,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/test-struct.slint",
"chars": 306,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/resources/test.slint",
"chars": 224,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/tsconfig.json",
"chars": 193,
"preview": "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"target\": \"esnext\",\n \"outDir\": \"../build\",\n "
},
{
"path": "api/node/__test__/types.spec.mts",
"chars": 3643,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/__test__/window.spec.mts",
"chars": 1216,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/binaries.json",
"chars": 250,
"preview": "{\n \"binaryName\": \"slint-ui\",\n \"packageName\": \"@slint-ui/slint-ui-binary\",\n \"targets\": [\n \"x86_64-unknown-linux-gnu"
},
{
"path": "api/node/biome.json",
"chars": 1189,
"preview": "{\n \"root\": true,\n \"extends\": [\"../../biome.json\"],\n \"files\": {\n \"includes\": [\n \"**\",\n "
},
{
"path": "api/node/build-on-demand.mjs",
"chars": 1186,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/build.rs",
"chars": 377,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/cover.md",
"chars": 13355,
"preview": "# Slint-node (Beta)\n\n[](https://www.npmjs.com/package/slint-ui)\n\n[Slint](ht"
},
{
"path": "api/node/package.json",
"chars": 1835,
"preview": "{\n \"name\": \"slint-ui\",\n \"version\": \"1.16.0\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"homepage\": \"h"
},
{
"path": "api/node/rust/interpreter/component_compiler.rs",
"chars": 8755,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/rust/interpreter/component_definition.rs",
"chars": 2339,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/rust/interpreter/component_instance.rs",
"chars": 14619,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
},
{
"path": "api/node/rust/interpreter/diagnostic.rs",
"chars": 2271,
"preview": "// Copyright © SixtyFPS GmbH <info@slint.dev>\n// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-"
}
]
// ... and 2830 more files (download for full content)
About this extraction
This page contains the full source code of the slint-ui/slint GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3030 files (18.0 MB), approximately 4.3M tokens, and a symbol index with 10815 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.