Release 0.13.0 - Better panels, plots and new visual style

This commit is contained in:
Emil Ernerfeldt 2021-06-24 20:00:06 +02:00
parent 8abd232854
commit d807451348
23 changed files with 451 additions and 434 deletions

View file

@ -7,14 +7,21 @@ NOTE: [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md) and [
## Unreleased
## 0.13.0 - 2021-06-24 - Better panels, plots and new visual style
### Added ⭐
* Plot:
* [More plot items: Arrows, Polygons, Text, Images](https://github.com/emilk/egui/pull/471).
* [Plot legend improvements](https://github.com/emilk/egui/pull/410).
* [Line markers for plots](https://github.com/emilk/egui/pull/363).
* Panels:
* Add right and bottom panels (`SidePanel::right` and `Panel::bottom`).
* Add resizable panels.
* Panels can now be resized.
* Add an option to overwrite frame of a `Panel`.
* [Improve accessibility / screen reader](https://github.com/emilk/egui/pull/412).
* Add `ScrollArea::show_rows` for efficient scrolling of huge UI:s.
* Add `ScrollArea::enable_scrolling` to allow freezing scrolling when editing TextEdit widgets within it
* Add `Ui::set_visible` as a way to hide widgets.
* Add `Style::override_text_style` to easily change the text style of everything in a `Ui` (or globally).
* You can now change `TextStyle` on checkboxes, radio buttons and `SelectableLabel`.
@ -22,16 +29,17 @@ NOTE: [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md) and [
* Add features `extra_asserts` and `extra_debug_asserts` to enable additional checks.
* `TextEdit` now supports edits on a generic buffer using `TextBuffer`.
* Add `Context::set_debug_on_hover` and `egui::trace!(ui)`
* Add `ScrollArea::enable_scrolling` to allow freezing scrolling when editing TextEdit widgets within it
### Changed 🔧
* Minimum Rust version is now 1.51 (used to be 1.52)
* [Tweaked the default visuals style](https://github.com/emilk/egui/pull/450).
* Plot: Changed `Curve` to `Line`.
* Plot: Renamed `Curve` to `Line`.
* `TopPanel::top` is now `TopBottomPanel::top`.
* `SidePanel::left` no longet takes the default width by argument, but by a builder call.
* `SidePanel::left` is resizable by default.
### Fixed 🐛
* Fix uneven lettering on non-integral device scales ("extortion lettering").
* Fix invisible scroll bar when native window is too narrow for egui.

18
Cargo.lock generated
View file

@ -766,7 +766,7 @@ checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf"
[[package]]
name = "eframe"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"egui",
"egui_glium",
@ -776,7 +776,7 @@ dependencies = [
[[package]]
name = "egui"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"epaint",
"ron",
@ -786,7 +786,7 @@ dependencies = [
[[package]]
name = "egui_demo_app"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"eframe",
"egui_demo_lib",
@ -794,7 +794,7 @@ dependencies = [
[[package]]
name = "egui_demo_lib"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"criterion",
"egui",
@ -807,7 +807,7 @@ dependencies = [
[[package]]
name = "egui_glium"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"chrono",
"copypasta",
@ -824,7 +824,7 @@ dependencies = [
[[package]]
name = "egui_web"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"egui",
"epi",
@ -845,7 +845,7 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "emath"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"mint",
"serde",
@ -866,7 +866,7 @@ dependencies = [
[[package]]
name = "epaint"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"ab_glyph",
"ahash",
@ -880,7 +880,7 @@ dependencies = [
[[package]]
name = "epi"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"egui",
"ron",

View file

@ -64,7 +64,7 @@ if ui.button("Click each year").clicked() {
ui.label(format!("Hello '{}', age {}", name, age));
```
<img src="media/demo-2021-01-17.gif">
<img src="media/demo.gif">
## Goals

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -3,6 +3,10 @@ All notable changes to the `eframe` crate.
## Unreleased
## 0.13.0 - 2021-06-24
* `App::setup` now takes a `Frame` and `Storage` by argument.
* `App::load` has been removed. Implement `App::setup` instead.

View file

@ -1,6 +1,6 @@
[package]
name = "eframe"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "egui framework - write GUI apps that compiles to web and/or natively"
edition = "2018"
@ -23,16 +23,16 @@ all-features = true
[lib]
[dependencies]
egui = { version = "0.12.0", path = "../egui", default-features = false }
epi = { version = "0.12.0", path = "../epi" }
egui = { version = "0.13.0", path = "../egui", default-features = false }
epi = { version = "0.13.0", path = "../epi" }
# For compiling natively:
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
egui_glium = { version = "0.12.0", path = "../egui_glium", default-features = false }
egui_glium = { version = "0.13.0", path = "../egui_glium", default-features = false }
# For compiling to web:
[target.'cfg(target_arch = "wasm32")'.dependencies]
egui_web = { version = "0.12.0", path = "../egui_web", default-features = false }
egui_web = { version = "0.13.0", path = "../egui_web", default-features = false }
[features]
default = ["default_fonts"]

View file

@ -1,6 +1,6 @@
[package]
name = "egui"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Simple, portable immediate mode GUI library for Rust"
edition = "2018"
@ -20,7 +20,7 @@ include = [
[lib]
[dependencies]
epaint = { version = "0.12.0", path = "../epaint", default-features = false }
epaint = { version = "0.13.0", path = "../epaint", default-features = false }
serde = { version = "1", features = ["derive", "rc"], optional = true }
ron = { version = "0.6.4", optional = true }

View file

@ -141,8 +141,6 @@ impl CtxRef {
show_error(prev_rect.min, format!("First use of ID {}", id_str));
show_error(new_rect.min, format!("Second use of ID {}", id_str));
}
// TODO: a tooltip explaining this.
}
}

View file

@ -320,12 +320,13 @@ impl RawInput {
#[derive(Clone, Copy, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub struct TouchDeviceId(pub u64);
/// Unique identifiction of a touch occurence (finger or pen or ...).
/// Unique identification of a touch occurrence (finger or pen or ...).
/// A Touch ID is valid until the finger is lifted.
/// A new ID is used for the next touch.
#[derive(Clone, Copy, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub struct TouchId(pub u64);
/// In what phase a touch event is in.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum TouchPhase {
/// User just placed a touch point on the touch surface

View file

@ -102,7 +102,8 @@
//!
//! # Integrating with egui
//!
//! Most likely you are using an existing `egui` backend/integration such as [`eframe`](https://docs.rs/eframe) or [`bevy_egui`](https://docs.rs/bevy_egui),
//! Most likely you are using an existing `egui` backend/integration such as [`eframe`](https://docs.rs/eframe), [`bevy_egui`](https://docs.rs/bevy_egui),
//! or [`egui-miniquad`](https://github.com/not-fl3/egui-miniquad),
//! but if you want to integrate `egui` into a new game engine, this is the section for you.
//!
//! To write your own integration for egui you need to do this:

View file

@ -1,6 +1,6 @@
[package]
name = "egui_demo_app"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2018"
@ -10,8 +10,8 @@ publish = false
crate-type = ["cdylib", "rlib"]
[dependencies]
eframe = { version = "0.12.0", path = "../eframe", features = ["time"] }
egui_demo_lib = { version = "0.12.0", path = "../egui_demo_lib" }
eframe = { version = "0.13.0", path = "../eframe", features = ["time"] }
egui_demo_lib = { version = "0.13.0", path = "../egui_demo_lib" }
[features]
default = ["persistence"]

View file

@ -1,6 +1,6 @@
[package]
name = "egui_demo_lib"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Example library for egui"
edition = "2018"
@ -23,8 +23,8 @@ all-features = true
[lib]
[dependencies]
egui = { version = "0.12.0", path = "../egui", default-features = false }
epi = { version = "0.12.0", path = "../epi" }
egui = { version = "0.13.0", path = "../egui", default-features = false }
epi = { version = "0.13.0", path = "../epi" }
unicode_names2 = { version = "0.4.0", default-features = false }
# feature "http":

View file

@ -5,8 +5,12 @@ All notable changes to the `egui_glium` integration will be noted in this file.
## Unreleased
## 0.13.0 - 2021-06-24
* Add `EguiGlium::is_quit_event` to replace `control_flow` arguemnt to `EguiGlium::on_event`.
* [Fix modifier key for zoom with mouse wheel on Mac](https://github.com/emilk/egui/issues/401)
* [Fix stuck modifier keys](https://github.com/emilk/egui/pull/479)
## 0.12.0 - 2021-05-10

View file

@ -1,6 +1,6 @@
[package]
name = "egui_glium"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for using egui natively using the glium library"
edition = "2018"
@ -23,8 +23,8 @@ all-features = true
[dependencies]
copypasta = "0.7"
egui = { version = "0.12.0", path = "../egui", default-features = false, features = ["single_threaded"] }
epi = { version = "0.12.0", path = "../epi" }
egui = { version = "0.13.0", path = "../egui", default-features = false, features = ["single_threaded"] }
epi = { version = "0.13.0", path = "../epi" }
glium = "0.30"
webbrowser = "0.5"

View file

@ -5,6 +5,9 @@ All notable changes to the `egui_web` integration will be noted in this file.
## Unreleased
## 0.13.0 - 2021-06-24
### Changed 🔧
* Default to light visuals unless the system reports a preference for dark mode.

View file

@ -1,6 +1,6 @@
[package]
name = "egui_web"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for compiling egui code to WASM for a web page"
license = "MIT OR Apache-2.0"
@ -25,8 +25,8 @@ all-features = true
crate-type = ["cdylib", "rlib"]
[dependencies]
egui = { version = "0.12.0", path = "../egui", default-features = false, features = ["single_threaded"] }
epi = { version = "0.12.0", path = "../epi" }
egui = { version = "0.13.0", path = "../egui", default-features = false, features = ["single_threaded"] }
epi = { version = "0.13.0", path = "../epi" }
js-sys = "0.3"
ron = { version = "0.6", optional = true }
serde = { version = "1", optional = true }

View file

@ -1,6 +1,6 @@
[package]
name = "emath"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D math library for GUI work"
edition = "2018"

View file

@ -1,6 +1,6 @@
[package]
name = "epaint"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D graphics library for GUI work"
edition = "2018"
@ -22,7 +22,7 @@ include = [
[lib]
[dependencies]
emath = { version = "0.12.0", path = "../emath" }
emath = { version = "0.13.0", path = "../emath" }
ab_glyph = "0.2.11"
ahash = { version = "0.7", features = ["std"], default-features = false }

View file

@ -1,6 +1,6 @@
[package]
name = "epi"
version = "0.12.0"
version = "0.13.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Backend-agnostic interface for writing apps using egui"
edition = "2018"
@ -23,7 +23,7 @@ all-features = true
[lib]
[dependencies]
egui = { version = "0.12.0", path = "../egui", default-features = false, features = ["single_threaded"] }
egui = { version = "0.13.0", path = "../egui", default-features = false, features = ["single_threaded"] }
ron = { version = "0.6", optional = true }
serde = { version = "1", optional = true }

BIN
media/demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB