update iris

This commit is contained in:
2025-12-09 01:53:00 -05:00
parent 4aa7219d49
commit 34f57ce0b5
8 changed files with 64 additions and 28 deletions

24
Cargo.lock generated
View File

@@ -1459,16 +1459,36 @@ name = "iris"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"arboard", "arboard",
"bytemuck",
"cosmic-text", "cosmic-text",
"fxhash",
"image", "image",
"iris-core",
"iris-macro",
"pollster", "pollster",
"unicode-segmentation", "unicode-segmentation",
"wgpu", "wgpu",
"winit", "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]] [[package]]
name = "is_terminal_polyfill" name = "is_terminal_polyfill"
version = "1.70.2" version = "1.70.2"

2
iris

Submodule iris updated: 434e3c3af7...e44bb8eca4

View File

@@ -1,5 +1,5 @@
use crate::Client; use crate::Client;
use iris::{prelude::*, winit::UiState}; use iris::prelude::*;
pub fn debug(_client: &mut Client, ui: &mut Ui, _state: &UiState) { pub fn debug(_client: &mut Client, ui: &mut Ui, _state: &UiState) {
ui.debug_layers(); ui.debug_layers();

View File

@@ -6,7 +6,7 @@ use crate::{
state::{ClientState, LoggedIn, Login}, state::{ClientState, LoggedIn, Login},
ui::*, ui::*,
}; };
use iris::{prelude::*, winit::*}; use iris::prelude::*;
use openworm::{ use openworm::{
net::{ClientMsg, ServerMsg, install_crypto_provider}, net::{ClientMsg, ServerMsg, install_crypto_provider},
rsc::DataDir, rsc::DataDir,
@@ -76,7 +76,7 @@ impl DefaultAppState for Client {
notif, notif,
proxy, proxy,
}; };
start_screen(&mut s, ui).set_ptr(&s.main_ui, ui); start_ui(&mut s, ui).set_ptr(&s.main_ui, ui);
s s
} }
@@ -101,7 +101,7 @@ impl DefaultAppState for Client {
&& let Some(msg_area) = &state.channel && let Some(msg_area) = &state.channel
{ {
let msg = msg_widget(&msg.user, &msg.content).add(ui); 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) => { ServerMsg::LoadMsgs(msgs) => {
@@ -111,7 +111,7 @@ impl DefaultAppState for Client {
for msg in msgs { for msg in msgs {
state.msgs.push(msg.clone()); state.msgs.push(msg.clone());
let msg = msg_widget(&msg.user, &msg.content).add(ui); 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);
} }
} }
} }

View File

@@ -1,6 +1,6 @@
use super::*; 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); let mut accounts = Span::empty(Dir::DOWN);
accounts.push( accounts.push(
@@ -9,8 +9,7 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef {
.center_text() .center_text()
.color(Color::GRAY) .color(Color::GRAY)
.height(60) .height(60)
.add(ui) .add(ui),
.any(),
); );
let connect = Button::submit("connect", ui); let connect = Button::submit("connect", ui);
@@ -22,6 +21,14 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef {
create_.disable(); 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), wtext("Select Account").text_align(Align::CENTER).size(30),
accounts, accounts,
@@ -29,12 +36,12 @@ pub fn start_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef {
) )
.span(Dir::DOWN) .span(Dir::DOWN)
.gap(30) .gap(30)
.pad(15) .modal(400)
.background(rect(color::MODAL_BG).radius(15))
.width(400)
.align(Align::CENTER)
.add(ui) .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 { // 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) // .width(400)
// .align(Align::CENTER) // .align(Align::CENTER)
// .add(ui) // .add(ui)
// .any()
// } // }
// pub fn login_screen(client: &mut Client, ui: &mut Ui) -> WidgetRef { // 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) // .width(400)
// .align(Align::CENTER) // .align(Align::CENTER)
// .add(ui) // .add(ui)
// .any()
// } // }

View File

@@ -11,7 +11,7 @@ pub fn main_view(client: &mut Client, ui: &mut Ui) -> WidgetRef {
let msg_panel = msg_panel(ui, state); let msg_panel = msg_panel(ui, state);
let side_bar = rect(Color::BLACK.brighter(0.05)).width(80); 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 { 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() .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); let msg_area = Span::empty(Dir::DOWN).gap(15).add(ui);
state.channel = Some(msg_area.clone()); 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())); state.network.send(ClientMsg::SendMsg(msg.clone()));
let msg = msg_widget(&state.username, &content).add(ctx.ui); 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) .pad(15)
.attr::<Selector>(send_text) .attr::<Selector>(send_text)
@@ -78,5 +78,5 @@ pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> impl WidgetRet + use<> {
) )
.span(Dir::DOWN) .span(Dir::DOWN)
.width(rest(1)) .width(rest(1))
.to_any() .add(ui)
} }

View File

@@ -6,7 +6,6 @@ pub fn werror(ui: &mut Ui, msg: &str) -> WidgetRef {
.pad(10) .pad(10)
.background(rect(Color::RED).radius(10)) .background(rect(Color::RED).radius(10))
.add(ui) .add(ui)
.any()
} }
pub fn hint(msg: impl Into<String>) -> TextBuilder { pub fn hint(msg: impl Into<String>) -> TextBuilder {
@@ -28,7 +27,6 @@ pub fn field_box(field: WidgetRef<TextEdit>, ui: &mut Ui) -> WidgetRef {
.background(rect(Color::BLACK.brighter(0.1)).radius(15)) .background(rect(Color::BLACK.brighter(0.1)).radius(15))
.attr::<Selector>(field) .attr::<Selector>(field)
.add(ui) .add(ui)
.any()
} }
#[derive(Clone)] #[derive(Clone)]
@@ -70,8 +68,7 @@ impl Button {
}) })
.height(60) .height(60)
.foreground(wtext(text).size(25).text_align(Align::CENTER)) .foreground(wtext(text).size(25).text_align(Align::CENTER))
.add(ui) .add(ui);
.any();
let root_ = root.clone(); let root_ = root.clone();
let enabled_ = enabled.clone(); let enabled_ = enabled.clone();
rect.clone() rect.clone()
@@ -100,3 +97,17 @@ impl Button {
self.rect.get_mut().color = self.color.darker(0.8); 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)
}
}
}

View File

@@ -2,12 +2,12 @@ use crate::Client;
use iris::prelude::*; use iris::prelude::*;
use len_fns::*; use len_fns::*;
mod login; mod connect;
mod main; mod main;
mod misc; mod misc;
pub mod color; pub mod color;
pub use login::*; pub use connect::*;
pub use main::*; pub use main::*;
pub use misc::*; pub use misc::*;