diff --git a/Cargo.lock b/Cargo.lock index 8c8e2f9b..cc866c0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -953,6 +953,7 @@ dependencies = [ "custom_plot_manipulation", "eframe", "egui", + "egui_extras", "env_logger", "examples_utils", "filled_area", @@ -1161,6 +1162,20 @@ dependencies = [ "winit", ] +[[package]] +name = "egui_extras" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2cb8e069ccbb4b9f49e9c8f52637a088dc520b1d20f4071fdcb801ec4606fc4" +dependencies = [ + "ahash", + "egui", + "enum-map", + "itertools", + "log", + "profiling", +] + [[package]] name = "egui_glow" version = "0.36.0" @@ -1233,6 +1248,26 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "enumflags2" version = "0.7.12" diff --git a/Cargo.toml b/Cargo.toml index 99769fcf..c2892e85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ assertables = "9.8.2" document-features = "0.2.12" eframe = { version = "0.36.0", default-features = false } egui = { version = "0.36.0", default-features = false } +egui_extras = { version = "=0.36.0", default-features = false } egui_kittest = { version = "0.36.0", default-features = false } emath = { version = "0.36.0", default-features = false } env_logger = { version = "0.11.8", default-features = false, features = [ diff --git a/demo/Cargo.toml b/demo/Cargo.toml index c9d1e2a4..18e2d43a 100644 --- a/demo/Cargo.toml +++ b/demo/Cargo.toml @@ -15,6 +15,7 @@ workspace = true [dependencies] egui.workspace = true +egui_extras.workspace = true eframe = { workspace = true, default-features = false, features = [ "default_fonts", # Embed the default egui fonts. "glow", # Use the glow rendering backend. Alternative: "wgpu". diff --git a/demo/src/app.rs b/demo/src/app.rs index 249a4b65..792c641a 100644 --- a/demo/src/app.rs +++ b/demo/src/app.rs @@ -1,7 +1,6 @@ use eframe::egui; use egui::RichText; use egui::ScrollArea; -use egui::TextEdit; use egui::Vec2; use egui::special_emojis::GITHUB; use examples_utils::PlotExample; @@ -141,10 +140,11 @@ impl DemoGallery { format!("{GITHUB_URL}/tree/main/examples/{}", example.name()), ); }); - let mut source_code = String::from_utf8_lossy(example.code_bytes()).to_string(); - ScrollArea::vertical().show(ui, |ui| { - let text_edit = TextEdit::multiline(&mut source_code).code_editor().desired_width(600.0); - ui.add(text_edit); + let source_code = String::from_utf8_lossy(example.code_bytes()); + ScrollArea::both().show(ui, |ui| { + ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend); + let code_theme = egui_extras::syntax_highlighting::CodeTheme::from_style(ui.style()); + egui_extras::syntax_highlighting::code_view_ui(ui, &code_theme, &source_code, "rs"); }); }); }