switch to default iris app
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
use iris::winit::{attr::Selector, event::Edited};
|
||||
use openworm::net::ClientMsg;
|
||||
|
||||
use crate::state::ClientState;
|
||||
use crate::{net::AppHandle, state::ClientState};
|
||||
|
||||
use super::*;
|
||||
|
||||
@@ -37,11 +38,14 @@ pub fn submit_button(text: &str, on_submit: impl Fn(&mut Client) + 'static) -> i
|
||||
|
||||
pub fn connect_screen(client: &mut Client) -> WidgetId {
|
||||
let Client {
|
||||
data, ui, handle, ..
|
||||
data, ui, proxy, ..
|
||||
} = client;
|
||||
let ip = field_widget(&data.ip, "ip", ui);
|
||||
let ip_ = ip.clone();
|
||||
let handle = handle.clone();
|
||||
let handle = AppHandle {
|
||||
proxy: proxy.clone(),
|
||||
window: ui.window.clone(),
|
||||
};
|
||||
let submit = submit_button("connect", move |client| {
|
||||
let ClientState::Connect(state) = &mut client.state else {
|
||||
return;
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
use super::*;
|
||||
use crate::state::{ClientState, LoggedIn};
|
||||
use iris::layout::len_fns::*;
|
||||
use openworm::net::{ClientMsg, NetClientMsg, NetServerMsg};
|
||||
use iris::{
|
||||
layout::len_fns::*,
|
||||
winit::{
|
||||
attr::{Selectable, Selector},
|
||||
event::Submit,
|
||||
},
|
||||
};
|
||||
use openworm::net::{ClientMsg, NetClientMsg};
|
||||
|
||||
pub const SIZE: u32 = 20;
|
||||
|
||||
@@ -74,7 +80,7 @@ pub fn msg_panel(ui: &mut Ui, state: &mut LoggedIn) -> impl WidgetRet + use<> {
|
||||
content: content.clone(),
|
||||
};
|
||||
state.network.send(ClientMsg::SendMsg(msg.clone()));
|
||||
let msg = msg_widget(&client.data.username, &content).add(&mut client.ui);
|
||||
let msg = msg_widget(&state.username, &content).add(&mut client.ui);
|
||||
client.ui[&msg_area].children.push(msg.any());
|
||||
})
|
||||
.pad(15)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use super::*;
|
||||
|
||||
pub fn werror(ui: &mut Ui, msg: &str) -> WidgetId {
|
||||
@@ -11,63 +9,6 @@ pub fn werror(ui: &mut Ui, msg: &str) -> WidgetId {
|
||||
.any()
|
||||
}
|
||||
|
||||
pub struct Selector;
|
||||
|
||||
impl<W: 'static> WidgetAttr<W> for Selector {
|
||||
type Input = WidgetId<TextEdit>;
|
||||
|
||||
fn run(ui: &mut Ui, container: &WidgetId<W>, id: Self::Input) {
|
||||
let container = container.clone();
|
||||
ui.register_event(
|
||||
&container.clone(),
|
||||
CursorSense::click_or_drag(),
|
||||
move |client: &mut Client, mut data| {
|
||||
let region = client.ui.window_region(&id).unwrap();
|
||||
let id_pos = region.top_left;
|
||||
let container_pos = client.ui.window_region(&container).unwrap().top_left;
|
||||
data.cursor += container_pos - id_pos;
|
||||
data.size = region.size();
|
||||
select(id.clone(), client, data);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Selectable;
|
||||
|
||||
impl WidgetAttr<TextEdit> for Selectable {
|
||||
type Input = ();
|
||||
|
||||
fn run(ui: &mut Ui, id: &WidgetId<TextEdit>, _: Self::Input) {
|
||||
let id = id.clone();
|
||||
ui.register_event(
|
||||
&id.clone(),
|
||||
CursorSense::click_or_drag(),
|
||||
move |client: &mut Client, data| {
|
||||
select(id.clone(), client, data);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn select(id: WidgetId<TextEdit>, client: &mut Client, data: CursorData) {
|
||||
let now = Instant::now();
|
||||
let recent = (now - client.last_click) < Duration::from_millis(300);
|
||||
client.last_click = now;
|
||||
client
|
||||
.ui
|
||||
.text(&id)
|
||||
.select(data.cursor, data.size, data.sense.is_dragging(), recent);
|
||||
if let Some(region) = client.ui.window_region(&id) {
|
||||
client.handle.window.set_ime_allowed(true);
|
||||
client.handle.window.set_ime_cursor_area(
|
||||
LogicalPosition::<f32>::from(region.top_left.tuple()),
|
||||
LogicalSize::<f32>::from(region.size().tuple()),
|
||||
);
|
||||
}
|
||||
client.focus = Some(id);
|
||||
}
|
||||
|
||||
pub fn hint(msg: impl Into<String>) -> TextBuilder {
|
||||
wtext(msg).size(20).color(Color::GRAY)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ use crate::{
|
||||
net::{ConnectInfo, connect},
|
||||
};
|
||||
use iris::prelude::*;
|
||||
use winit::dpi::{LogicalPosition, LogicalSize};
|
||||
|
||||
mod login;
|
||||
mod main;
|
||||
@@ -11,17 +10,3 @@ mod misc;
|
||||
pub use login::*;
|
||||
pub use main::*;
|
||||
pub use misc::*;
|
||||
|
||||
#[derive(Eq, PartialEq, Hash, Clone)]
|
||||
pub struct Submit;
|
||||
|
||||
#[derive(Eq, PartialEq, Hash, Clone)]
|
||||
pub struct Edited;
|
||||
|
||||
impl DefaultEvent for Submit {
|
||||
type Data = ();
|
||||
}
|
||||
|
||||
impl DefaultEvent for Edited {
|
||||
type Data = ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user