From a946ada0c479de3fb58e55d1dd874ff241d47b7e Mon Sep 17 00:00:00 2001 From: Cameron Cooper Date: Sun, 12 Dec 2021 18:18:03 -0500 Subject: [PATCH 1/2] Dependencies update for clojure-editor(ember) prototype --- Cargo.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 64adde0..527a20a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,4 +14,7 @@ itertools= "0.9" url = "2.1.1" regex = "1.3.7" if_chain = "1.0" -reqwest = { version = "0.10.4", features = ["blocking"] } \ No newline at end of file +# @TODO This is for clojure-editor (ember), but this will be removed from core ClojureRS after +# the prototype is complete +druid = "0.7.0" +reqwest = { version = "0.10.4", features = ["blocking"] } From 55f6ff0f45678f19f8402e0964539566364ecc6a Mon Sep 17 00:00:00 2001 From: Cameron Cooper Date: Sun, 12 Dec 2021 20:33:10 -0500 Subject: [PATCH 2/2] Prototype "editor" (just a textbox) --- src/clojure_editor.rs | 3 +++ src/clojure_editor/data.rs | 6 ++++++ src/clojure_editor/main.rs | 19 +++++++++++++++++++ src/clojure_editor/view.rs | 11 +++++++++++ src/main.rs | 2 ++ src/repl.rs | 2 +- 6 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/clojure_editor.rs create mode 100644 src/clojure_editor/data.rs create mode 100644 src/clojure_editor/main.rs create mode 100644 src/clojure_editor/view.rs diff --git a/src/clojure_editor.rs b/src/clojure_editor.rs new file mode 100644 index 0000000..8472d42 --- /dev/null +++ b/src/clojure_editor.rs @@ -0,0 +1,3 @@ +pub(crate) mod view; +pub(crate) mod main; +pub(crate) mod data; diff --git a/src/clojure_editor/data.rs b/src/clojure_editor/data.rs new file mode 100644 index 0000000..7a5c077 --- /dev/null +++ b/src/clojure_editor/data.rs @@ -0,0 +1,6 @@ +use druid::{Data, Lens}; + +#[derive(Clone, Data, Lens)] +pub struct AppState { + pub body: String +} diff --git a/src/clojure_editor/main.rs b/src/clojure_editor/main.rs new file mode 100644 index 0000000..ca12a2f --- /dev/null +++ b/src/clojure_editor/main.rs @@ -0,0 +1,19 @@ +use druid::{AppLauncher, WindowDesc}; + +use super::data; +use data::AppState; + +use super::view; +use view::build_ui; + +pub fn main() { + let main_window = WindowDesc::new(build_ui) + .title("Ember editor") + .window_size((400.0, 400.0)); + + let initial_state = AppState { body: "pub struct Repl {}".into()}; + + AppLauncher::with_window(main_window) + .launch(initial_state) + .expect("Failed to launch application"); +} diff --git a/src/clojure_editor/view.rs b/src/clojure_editor/view.rs new file mode 100644 index 0000000..43df727 --- /dev/null +++ b/src/clojure_editor/view.rs @@ -0,0 +1,11 @@ +use druid::WidgetExt; +use druid::{widget::Label, widget::TextBox, Widget, Lens}; + +use super::data::*; + +pub fn build_ui() -> impl Widget { + TextBox::new() + // .with_placeholder("pub struct Repl") + // .expand_width() + .lens(AppState::body) +} diff --git a/src/main.rs b/src/main.rs index d19be7e..99745cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,8 @@ mod util; mod value; mod protocols; mod traits; + +mod clojure_editor; fn main() { let cli_args: user_action::Action = user_action::parse_args(std::env::args().collect()); diff --git a/src/repl.rs b/src/repl.rs index db161d6..28bcc73 100644 --- a/src/repl.rs +++ b/src/repl.rs @@ -34,7 +34,7 @@ impl Repl { } pub fn run(&self) { let stdin = io::stdin(); - + crate::clojure_editor::main::main(); loop { print!("{}=> ", self.environment.get_current_namespace_name()); let _ = io::stdout().flush();