From 69d911ccb822c247f7489a23fcd07e9d5f9b5946 Mon Sep 17 00:00:00 2001 From: Matthew Ryan Dillon Date: Thu, 15 Aug 2024 17:39:18 -0400 Subject: [PATCH] new: initial implementation --- Cargo.lock | 7 ++++++ Cargo.toml | 4 +++- src/main.rs | 63 ++++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f44826a..64953a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1669,6 +1669,7 @@ version = "0.1.0" dependencies = [ "bevy", "bevy_egui", + "vsort", ] [[package]] @@ -3867,6 +3868,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vsort" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11331a1b48f99ea6bb27faae41399d08783d055ddee131e1b1b70a854207ebf8" + [[package]] name = "walkdir" version = "2.5.0" diff --git a/Cargo.toml b/Cargo.toml index 7b071f0..a18dc6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,6 @@ edition = "2021" [dependencies] bevy = "0.14" -bevy_egui = "0.28" \ No newline at end of file +bevy_egui = "0.28" +# natord = "1.0" +vsort = "0.2" diff --git a/src/main.rs b/src/main.rs index e52091b..e01e25a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,16 +1,67 @@ -use bevy::prelude::*; -use bevy_egui::{egui, EguiContexts, EguiPlugin}; +use bevy::{prelude::*, winit::WinitSettings}; +use bevy_egui::{ + egui::{self}, + EguiContexts, EguiPlugin, +}; + +#[cfg(windows)] +const LINE_ENDING: &str = "\r\n"; +#[cfg(not(windows))] +const LINE_ENDING: &str = "\n"; + +#[derive(Resource)] +struct InputText { + value: String, +} + +#[derive(Resource)] +struct OutputText { + value: String, +} fn main() { App::new() + .insert_resource(WinitSettings::desktop_app()) + .insert_resource(InputText { + value: "".to_string(), + }) + .insert_resource(OutputText { + value: "".to_string(), + }) .add_plugins(DefaultPlugins) .add_plugins(EguiPlugin) - .add_systems(Update, ui_example_system) + .add_systems(Update, ui_system) + .add_systems(Update, process_text) .run(); } -fn ui_example_system(mut contexts: EguiContexts) { - egui::Window::new("Hello").show(contexts.ctx_mut(), |ui| { - ui.label("world"); +fn process_text(input_text: Res, mut output_text: ResMut) { + let mut arr = input_text.value.lines().collect::>(); + arr.sort_by(|&a, &b| vsort::compare(a, b)); + output_text.value = arr.join(LINE_ENDING); +} + +fn ui_system( + mut contexts: EguiContexts, + mut input_text: ResMut, + mut output_text: ResMut, +) { + egui::CentralPanel::default().show(contexts.ctx_mut(), |ui| { + ui.horizontal(|ui| { + ui.vertical(|ui| { + ui.label("input: "); + ui.add_sized( + [ui.available_width() / 2.0, ui.available_height()], + egui::TextEdit::multiline(&mut input_text.value), + ); + }); + ui.vertical(|ui| { + ui.label("output: "); + ui.add_sized( + [ui.available_width() / 2.0, ui.available_height()], + egui::TextEdit::multiline(&mut output_text.value), + ); + }); + }); }); }