mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 05:10:03 -04:00
This PR has a smaller scope, and this are some reverts
Will no longer change egui::Window!
This commit is contained in:
@@ -54,12 +54,10 @@ impl eframe::App for MyApp {
|
||||
|
||||
if ui.button("Yes!").clicked() {
|
||||
self.allowed_to_close = true;
|
||||
frame.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
if self.allowed_to_close {
|
||||
frame.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,8 @@ impl eframe::App for MyApp {
|
||||
&mut self,
|
||||
ctx: &egui::Context,
|
||||
_frame: &mut eframe::Frame,
|
||||
render: Option<&ViewportRender>,
|
||||
_: Option<&ViewportRender>,
|
||||
) {
|
||||
if let Some(render) = render {
|
||||
render(ctx);
|
||||
return;
|
||||
}
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
ui.heading("My egui Application");
|
||||
ui.horizontal(|ui| {
|
||||
|
||||
@@ -13,6 +13,5 @@ eframe = { path = "../../crates/eframe", default-features = false, features = [
|
||||
# accesskit struggles with threading
|
||||
"default_fonts",
|
||||
"wgpu",
|
||||
"x11"
|
||||
] }
|
||||
env_logger = "0.10"
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
||||
|
||||
use std::{sync::mpsc, thread::JoinHandle};
|
||||
use std::sync::mpsc;
|
||||
use std::thread::JoinHandle;
|
||||
|
||||
use eframe::egui::{self, ViewportRender};
|
||||
|
||||
@@ -39,20 +40,20 @@ impl ThreadState {
|
||||
}
|
||||
|
||||
fn show(&mut self, ctx: &egui::Context) {
|
||||
let thread_nr = self.thread_nr;
|
||||
let pos = egui::pos2(16.0, 128.0 * (thread_nr as f32 + 1.0));
|
||||
let title = self.title.clone();
|
||||
egui::Window::new(title).default_pos(pos).show(ctx, |ui| {
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Your name: ");
|
||||
ui.text_edit_singleline(&mut self.name);
|
||||
let pos = egui::pos2(16.0, 128.0 * (self.thread_nr as f32 + 1.0));
|
||||
egui::Window::new(&self.title)
|
||||
.default_pos(pos)
|
||||
.show(ctx, |ui| {
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Your name: ");
|
||||
ui.text_edit_singleline(&mut self.name);
|
||||
});
|
||||
ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age"));
|
||||
if ui.button("Click each year").clicked() {
|
||||
self.age += 1;
|
||||
}
|
||||
ui.label(format!("Hello '{}', age {}", self.name, self.age));
|
||||
});
|
||||
ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age"));
|
||||
if ui.button("Click each year").clicked() {
|
||||
self.age += 1;
|
||||
}
|
||||
ui.label(format!("Hello '{}', age {}", self.name, self.age));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,9 +97,7 @@ impl MyApp {
|
||||
|
||||
slf
|
||||
}
|
||||
}
|
||||
|
||||
impl MyApp {
|
||||
fn spawn_thread(&mut self) {
|
||||
let thread_nr = self.threads.len();
|
||||
self.threads
|
||||
@@ -120,22 +119,19 @@ impl eframe::App for MyApp {
|
||||
&mut self,
|
||||
ctx: &egui::Context,
|
||||
_frame: &mut eframe::Frame,
|
||||
render: Option<&ViewportRender>,
|
||||
_: Option<&ViewportRender>,
|
||||
) {
|
||||
if let Some(render) = render {
|
||||
render(ctx);
|
||||
return;
|
||||
}
|
||||
egui::Window::new("Main thread").show(ctx, |ui| {
|
||||
if ui.button("Spawn another thread").clicked() {
|
||||
self.spawn_thread();
|
||||
ui.ctx()
|
||||
.request_repaint_viewport(ui.ctx().get_parent_viewport_id());
|
||||
}
|
||||
});
|
||||
|
||||
for (_handle, show_tx) in &self.threads {
|
||||
let _ = show_tx.send(ctx.clone());
|
||||
}
|
||||
|
||||
for _ in 0..self.threads.len() {
|
||||
let _ = self.on_done_rc.recv();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,13 +15,9 @@ const RENDERER: eframe::Renderer = eframe::Renderer::Glow;
|
||||
pub struct App {
|
||||
show_async_viewport: bool,
|
||||
show_sync_viewport: bool,
|
||||
show_async_window: bool,
|
||||
show_sync_window: bool,
|
||||
|
||||
async_viewport_state: Arc<RwLock<usize>>,
|
||||
sync_viewport_state: usize,
|
||||
async_window_state: Arc<RwLock<usize>>,
|
||||
sync_window_state: usize,
|
||||
|
||||
show_async_viewport2: Arc<RwLock<bool>>,
|
||||
show_sync_viewport2: Arc<RwLock<bool>>,
|
||||
@@ -61,8 +57,6 @@ impl eframe::App for App {
|
||||
}
|
||||
ui.checkbox(&mut self.show_async_viewport, "Show Async Viewport");
|
||||
ui.checkbox(&mut self.show_sync_viewport, "Show Sync Viewport");
|
||||
ui.checkbox(&mut self.show_async_window, "Show Async Window");
|
||||
ui.checkbox(&mut self.show_sync_window, "Show Sync Window");
|
||||
|
||||
let ctx = ui.ctx();
|
||||
// Showing Async Viewport
|
||||
@@ -343,49 +337,6 @@ impl eframe::App for App {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// Showing Async Window
|
||||
if self.show_async_window {
|
||||
let state = self.async_window_state.clone();
|
||||
egui::Window::new("Async Window")
|
||||
.default_embedded(false)
|
||||
.show_async(ctx, move |ui| {
|
||||
let ctx = ui.ctx().clone();
|
||||
let mut state = state.write().unwrap();
|
||||
ui.label(format!("Frame: {}", ctx.frame_nr()));
|
||||
ui.label(format!("Current Viewport Id: {}", ctx.get_viewport_id()));
|
||||
ui.label(format!(
|
||||
"Current Parent Viewport Id: {}",
|
||||
ctx.get_viewport_id()
|
||||
));
|
||||
ui.label(format!("Pos: {:?}", ctx.viewport_outer_pos()));
|
||||
ui.label(format!("Size: {:?}", ctx.viewport_inner_size()));
|
||||
ui.label(format!("Count: {state}"));
|
||||
if ui.button("Add").clicked() {
|
||||
*state += 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Showing Sync Window
|
||||
if self.show_sync_window {
|
||||
egui::Window::new("Sync Window")
|
||||
.default_embedded(false)
|
||||
.show(ctx, |ui| {
|
||||
ui.label(format!("Frame: {}", ctx.frame_nr()));
|
||||
ui.label(format!("Current Viewport Id: {}", ctx.get_viewport_id()));
|
||||
ui.label(format!(
|
||||
"Current Parent Viewport Id: {}",
|
||||
ctx.get_viewport_id()
|
||||
));
|
||||
ui.label(format!("Pos: {:?}", ctx.viewport_outer_pos()));
|
||||
ui.label(format!("Size: {:?}", ctx.viewport_inner_size()));
|
||||
ui.label(format!("Count: {}", self.sync_window_state));
|
||||
if ui.button("Add").clicked() {
|
||||
self.sync_window_state += 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user