7GUIs is a GUI programming benchmark. This repository implements the benchmark's tasks via the KAS GUI.
Currently, KAS's only drawing method is WebGPU, which requires DirectX 11/12, Vulkan or Metal. In the future, there may be support for OpenGL and software rendering.
If you haven't already, install Rust, including
the nightly channel (rustup toolchain install nightly
). Either make nightly
the default (rustup default nightly
) or use cargo +nightly ...
below.
A few other dependencies may require installation, depending on the system. On Ubuntu:
sudo apt-get install build-essential git python3 cmake libxcb-shape0-dev libxcb-xfixes0-dev
Next, clone the repository:
git clone https://github.com/kas-gui/7guis
cd 7guis
cargo run
A brief list of the implemented tasks:
A very simple push-button application.
An application to convert between Celsius and Fahrenheit temperatures.
An application to gather date inputs, with real-time validation of input fields.
A timer with animations and slightly-complex event handling.
A simple front-end to a shared data-set supporting Create, Read, Update and Delete operations as well as filtering.
An app for drawing circles with unified undo handling.
Not implemented yet. At the time of writing, KAS lacks context menus and universal "undo" support (the drawing API is also a bit primitive, though still sufficient for this example).
A simple spreadsheet application.
Partially implemented:
- matrix view over matrix data: done
- formula parsing and evaluation: done (but very limited since writing a DSL is not the point of the challenge)
- cell referencing and dependencies: done, but inefficient approach
- drawing row/column labels: not done
- drawing pretty cell dividers: not done
- drawing cell background (highlight / error state): not done
- cell selection and keyboard navigation: partial impl but not usable
- select/copy/paste/delete cell ranges: not done
This collection of examples is distributed under the "New BSD License". See the COPYRIGHT file for details.