slint/examples/7guis/README.md
2022-05-19 14:27:52 +02:00

62 lines
3.9 KiB
Markdown

# Slint's 7GUIs implementation
[7GUIs](https://eugenkiss.github.io/7guis/) is a "GUI Programming Benchmark".
However rather than benchmarking performance, it offers 7 GUI related tasks that aim to make UI Toolkits comparable.
These 7 challenges have implementations for multiple frameworks already and the following are ours:
## [Counter](https://eugenkiss.github.io/7guis/tasks#counter)
Just a Button that increases a value in a text field.
![Screenshot of the 7GUIs Counter](https://user-images.githubusercontent.com/22800467/168557310-60219332-4774-4ebc-8584-7a973c7918c0.png "Counter")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/counter.slint)
## [Temperature Converter](https://eugenkiss.github.io/7guis/tasks/#temp)
Converts Celsius to Fahrenheit and vice versa.
![Screenshot of the 7GUIs Temperature Converter](https://user-images.githubusercontent.com/22800467/168557382-d00e22e5-c65b-430a-a6a4-72665445f98d.png "Temperature Converter")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/tempconv.slint)
## [Flight Booker](https://eugenkiss.github.io/7guis/tasks/#flight)
Performs some validation checking on dates.
Does not actually book flights.
![Screenshot of the 7GUIs Flight Booker](https://user-images.githubusercontent.com/22800467/168557449-769df1cd-f967-4e14-bc5c-d8eeccc33305.png "Flight Booker")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/booker.slint)
(Note that the logic for date validation and date comparison is implemented in [Rust](./booker.rs).)
## [Timer](https://eugenkiss.github.io/7guis/tasks/#timer)
A simple timer where the duration is adjustable while running.
![Screenshot of the 7GUIs Timer](https://user-images.githubusercontent.com/22800467/168557131-68382191-9228-4d58-9683-6648ab5e7efd.png "Timer")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/timer.slint)
(Note that the actual timer functionality is implemented in [Rust](./timer.rs).)
## [CRUD](https://eugenkiss.github.io/7guis/tasks/#crud)
Lets you create, read, update and delete names from a list as well as filter them by prefix.
Our implementation makes use of `MapModel` and `FilterModel` to achieve this.
![Screenshot of the 7GUIs CRUD](https://user-images.githubusercontent.com/22800467/168557502-93c87141-3eb5-410c-9b83-4b7342727e37.png "CRUD")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/crud.slint)
(Note that the changes to the data model and filtering is implemented in [Rust](./crud.rs).)
## [Circle Drawer](https://eugenkiss.github.io/7guis/tasks/#circle)
Draw some circles on a canvas and change their sizes. It has undo and redo capabilities.
![Screenshot of the 7GUIs Circle Drawer](https://user-images.githubusercontent.com/22800467/168557533-7632efba-3b3b-459d-a8c0-6f166fa42e23.png "Circle Drawer")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/circledraw.slint)
(Note that the undo-redo stack is implemented in [Rust](./circledraw.rs).)
## [Cells](https://eugenkiss.github.io/7guis/tasks/#cells)
Almost MS Excel. It uses nested models to create the table.
![Screenshot of the 7GUIs Cells](https://user-images.githubusercontent.com/22800467/168557595-95ad3255-006c-416a-bccd-8f5251adebd7.png "Cells")
[`.slint` code in web editor](https://slint-ui.com/editor/?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/7guis/cells.slint)
(Note that the cell model, expression evaluation and dependency handling is implemented in [Rust](./cells.rs).)