From 34f57ce0b570dd586fccd42ae30c1170911eca05 Mon Sep 17 00:00:00 2001 From: shadow cat Date: Tue, 9 Dec 2025 01:53:00 -0500 Subject: [PATCH] update iris --- Cargo.lock | 24 +++++++++++++++++++-- iris | 2 +- src/bin/client/debug.rs | 2 +- src/bin/client/main.rs | 8 +++---- src/bin/client/ui/{login.rs => connect.rs} | 25 +++++++++++++--------- src/bin/client/ui/main.rs | 8 +++---- src/bin/client/ui/misc.rs | 19 ++++++++++++---- src/bin/client/ui/mod.rs | 4 ++-- 8 files changed, 64 insertions(+), 28 deletions(-) rename src/bin/client/ui/{login.rs => connect.rs} (90%) diff --git a/Cargo.lock b/Cargo.lock index ecb55b1..d3f85f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1459,16 +1459,36 @@ name = "iris" version = "0.1.0" dependencies = [ "arboard", - "bytemuck", "cosmic-text", - "fxhash", "image", + "iris-core", + "iris-macro", "pollster", "unicode-segmentation", "wgpu", "winit", ] +[[package]] +name = "iris-core" +version = "0.1.0" +dependencies = [ + "bytemuck", + "cosmic-text", + "fxhash", + "image", + "wgpu", + "winit", +] + +[[package]] +name = "iris-macro" +version = "0.1.0" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" diff --git a/iris b/iris index 434e3c3..e44bb8e 160000 --- a/iris +++ b/iris @@ -1 +1 @@ -Subproject commit 434e3c3af7c726ec869ce9ed4a1fcd7a4adc2afc +Subproject commit e44bb8eca49a3154d82efa4015d6bbb274b16308 diff --git a/src/bin/client/debug.rs b/src/bin/client/debug.rs index 0e1852a..36b240d 100644 --- a/src/bin/client/debug.rs +++ b/src/bin/client/debug.rs @@ -1,5 +1,5 @@ use crate::Client; -use iris::{prelude::*, winit::UiState}; +use iris::prelude::*; pub fn debug(_client: &mut Client, ui: &mut Ui, _state: &UiState) { ui.debug_layers(); diff --git a/src/bin/client/main.rs b/src/bin/client/main.rs index 2b0a165..8ef65bd 100644 --- a/src/bin/client/main.rs +++ b/src/bin/client/main.rs @@ -6,7 +6,7 @@ use crate::{ state::{ClientState, LoggedIn, Login}, ui::*, }; -use iris::{prelude::*, winit::*}; +use iris::prelude::*; use openworm::{ net::{ClientMsg, ServerMsg, install_crypto_provider}, rsc::DataDir, @@ -76,7 +76,7 @@ impl DefaultAppState for Client { notif, proxy, }; - start_screen(&mut s, ui).set_ptr(&s.main_ui, ui); + start_ui(&mut s, ui).set_ptr(&s.main_ui, ui); s } @@ -101,7 +101,7 @@ impl DefaultAppState for Client { && let Some(msg_area) = &state.channel { let msg = msg_widget(&msg.user, &msg.content).add(ui); - msg_area.get_mut().children.push(msg.any()); + msg_area.get_mut().children.push(msg); } } ServerMsg::LoadMsgs(msgs) => { @@ -111,7 +111,7 @@ impl DefaultAppState for Client { for msg in msgs { state.msgs.push(msg.clone()); let msg = msg_widget(&msg.user, &msg.content).add(ui); - msg_area.get_mut().children.push(msg.any()); + msg_area.get_mut().children.push(msg); } } } diff --git a/src/bin/client/ui/login.rs b/src/bin/client/ui/connect.rs similarity index 90% rename from src/bin/client/ui/login.rs rename to src/bin/client/ui/connect.rs index 39fb2bb..55254a0 100644 --- a/src/bin/client/ui/login.rs +++ b/src/bin/client/ui/connect.rs @@ -1,6 +1,6 @@ use super::*; -pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { +pub fn start_ui(client: &mut Client, ui: &mut Ui) -> WidgetRef { let mut accounts = Span::empty(Dir::DOWN); accounts.push( @@ -9,8 +9,7 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { .center_text() .color(Color::GRAY) .height(60) - .add(ui) - .any(), + .add(ui), ); let connect = Button::submit("connect", ui); @@ -22,6 +21,14 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { create_.disable(); }); + let connect_ = connect.clone(); + let create_ = create.clone(); + ui.on(create.view(), Submit, move |ctx| { + connect_.disable(); + create_.disable(); + create_ui(ctx.ui).set_ptr(&ctx.state.main_ui, ctx.ui); + }); + ( wtext("Select Account").text_align(Align::CENTER).size(30), accounts, @@ -29,12 +36,12 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { ) .span(Dir::DOWN) .gap(30) - .pad(15) - .background(rect(color::MODAL_BG).radius(15)) - .width(400) - .align(Align::CENTER) + .modal(400) .add(ui) - .any() +} + +pub fn create_ui(ui: &mut Ui) -> WidgetRef { + wtext("hi").add(ui) } // pub fn connect_screen(client: &mut Client, ui: &mut Ui, state: &UiState) -> WidgetRef { @@ -77,7 +84,6 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { // .width(400) // .align(Align::CENTER) // .add(ui) -// .any() // } // pub fn login_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { @@ -142,5 +148,4 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { // .width(400) // .align(Align::CENTER) // .add(ui) -// .any() // } diff --git a/src/bin/client/ui/main.rs b/src/bin/client/ui/main.rs index f82d7a1..339bcbd 100644 --- a/src/bin/client/ui/main.rs +++ b/src/bin/client/ui/main.rs @@ -11,7 +11,7 @@ pub fn main_view(client: &mut Client, ui: &mut Ui) -> WidgetRef { let msg_panel = msg_panel(ui, state); let side_bar = rect(Color::BLACK.brighter(0.05)).width(80); - (side_bar, msg_panel).span(Dir::RIGHT).add(ui).any() + (side_bar, msg_panel).span(Dir::RIGHT).add(ui) } pub fn msg_widget(username: &str, content: &str) -> impl WidgetRet { @@ -36,7 +36,7 @@ pub fn msg_widget(username: &str, content: &str) -> impl WidgetRet { .to_any() } -pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> impl WidgetRet + use<> { +pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> WidgetRef { let msg_area = Span::empty(Dir::DOWN).gap(15).add(ui); state.channel = Some(msg_area.clone()); @@ -65,7 +65,7 @@ pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> impl WidgetRet + use<> { }; state.network.send(ClientMsg::SendMsg(msg.clone())); let msg = msg_widget(&state.username, &content).add(ctx.ui); - msg_area.get_mut().children.push(msg.any()); + msg_area.get_mut().children.push(msg); }) .pad(15) .attr::(send_text) @@ -78,5 +78,5 @@ pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> impl WidgetRet + use<> { ) .span(Dir::DOWN) .width(rest(1)) - .to_any() + .add(ui) } diff --git a/src/bin/client/ui/misc.rs b/src/bin/client/ui/misc.rs index afc175a..839a6fa 100644 --- a/src/bin/client/ui/misc.rs +++ b/src/bin/client/ui/misc.rs @@ -6,7 +6,6 @@ pub fn werror(ui: &mut Ui, msg: &str) -> WidgetRef { .pad(10) .background(rect(Color::RED).radius(10)) .add(ui) - .any() } pub fn hint(msg: impl Into) -> TextBuilder { @@ -28,7 +27,6 @@ pub fn field_box(field: WidgetRef, ui: &mut Ui) -> WidgetRef { .background(rect(Color::BLACK.brighter(0.1)).radius(15)) .attr::(field) .add(ui) - .any() } #[derive(Clone)] @@ -70,8 +68,7 @@ impl Button { }) .height(60) .foreground(wtext(text).size(25).text_align(Align::CENTER)) - .add(ui) - .any(); + .add(ui); let root_ = root.clone(); let enabled_ = enabled.clone(); rect.clone() @@ -100,3 +97,17 @@ impl Button { self.rect.get_mut().color = self.color.darker(0.8); } } + +widget_trait! { + pub Stuff; + fn modal(self, width: impl UiNum) -> impl WidgetIdFn { + |ui| { + self + .pad(15) + .background(rect(color::MODAL_BG).radius(15)) + .width(width) + .align(Align::CENTER) + .add(ui) + } + } +} diff --git a/src/bin/client/ui/mod.rs b/src/bin/client/ui/mod.rs index bfaf085..560d36c 100644 --- a/src/bin/client/ui/mod.rs +++ b/src/bin/client/ui/mod.rs @@ -2,12 +2,12 @@ use crate::Client; use iris::prelude::*; use len_fns::*; -mod login; +mod connect; mod main; mod misc; pub mod color; -pub use login::*; +pub use connect::*; pub use main::*; pub use misc::*;