Improve misc docs
This commit is contained in:
parent
7f1123a54c
commit
ef36cac422
7 changed files with 43 additions and 17 deletions
|
@ -291,7 +291,7 @@ There is experimental support for a screen reader. In [the web demo](https://emi
|
||||||
|
|
||||||
Read more at <https://github.com/emilk/egui/issues/167>.
|
Read more at <https://github.com/emilk/egui/issues/167>.
|
||||||
|
|
||||||
### What is the difference between egui and eframe?
|
### What is the difference between [egui](https://docs.rs/egui) and [eframe](https://docs.rs/eframe)?
|
||||||
|
|
||||||
`egui` is a 2D user interface library for laying out and interacting with buttons, sliders, etc.
|
`egui` is a 2D user interface library for laying out and interacting with buttons, sliders, etc.
|
||||||
`egui` has no idea if it is running on the web or natively, and does not know how to collect input or show things on screen.
|
`egui` has no idea if it is running on the web or natively, and does not know how to collect input or show things on screen.
|
||||||
|
|
|
@ -53,6 +53,20 @@ pub fn show_tooltip(ctx: &CtxRef, id: Id, add_contents: impl FnOnce(&mut Ui)) {
|
||||||
show_tooltip_at_pointer(ctx, id, add_contents)
|
show_tooltip_at_pointer(ctx, id, add_contents)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Show a tooltip at the current pointer position (if any).
|
||||||
|
///
|
||||||
|
/// Most of the time it is easier to use [`Response::on_hover_ui`].
|
||||||
|
///
|
||||||
|
/// See also [`show_tooltip_text`].
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// # let mut ui = egui::Ui::__test();
|
||||||
|
/// if ui.ui_contains_pointer() {
|
||||||
|
/// egui::show_tooltip_at_pointer(ui.ctx(), egui::Id::new("my_tooltip"), |ui| {
|
||||||
|
/// ui.label("Helpful text");
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
pub fn show_tooltip_at_pointer(ctx: &CtxRef, id: Id, add_contents: impl FnOnce(&mut Ui)) {
|
pub fn show_tooltip_at_pointer(ctx: &CtxRef, id: Id, add_contents: impl FnOnce(&mut Ui)) {
|
||||||
let suggested_pos = ctx
|
let suggested_pos = ctx
|
||||||
.input()
|
.input()
|
||||||
|
|
|
@ -394,7 +394,10 @@ pub fn warn_if_debug_build(ui: &mut crate::Ui) {
|
||||||
|
|
||||||
/// Create a [`Hyperlink`](crate::Hyperlink) to the current [`file!()`] (and line) on Github
|
/// Create a [`Hyperlink`](crate::Hyperlink) to the current [`file!()`] (and line) on Github
|
||||||
///
|
///
|
||||||
/// Example: `ui.add(github_link_file_line!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));`
|
/// ```
|
||||||
|
/// # let ui = &mut egui::Ui::__test();
|
||||||
|
/// ui.add(egui::github_link_file_line!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));
|
||||||
|
/// ```
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! github_link_file_line {
|
macro_rules! github_link_file_line {
|
||||||
($github_url:expr, $label:expr) => {{
|
($github_url:expr, $label:expr) => {{
|
||||||
|
@ -405,7 +408,10 @@ macro_rules! github_link_file_line {
|
||||||
|
|
||||||
/// Create a [`Hyperlink`](crate::Hyperlink) to the current [`file!()`] on github.
|
/// Create a [`Hyperlink`](crate::Hyperlink) to the current [`file!()`] on github.
|
||||||
///
|
///
|
||||||
/// Example: `ui.add(github_link_file!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));`
|
/// ```
|
||||||
|
/// # let ui = &mut egui::Ui::__test();
|
||||||
|
/// ui.add(egui::github_link_file!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));
|
||||||
|
/// ```
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! github_link_file {
|
macro_rules! github_link_file {
|
||||||
($github_url:expr, $label:expr) => {{
|
($github_url:expr, $label:expr) => {{
|
||||||
|
|
|
@ -92,14 +92,15 @@ impl Painter {
|
||||||
|
|
||||||
/// ## Accessors etc
|
/// ## Accessors etc
|
||||||
impl Painter {
|
impl Painter {
|
||||||
|
/// Get a reference to the parent [`CtxRef`].
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub(crate) fn ctx(&self) -> &CtxRef {
|
pub fn ctx(&self) -> &CtxRef {
|
||||||
&self.ctx
|
&self.ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Available fonts
|
/// Available fonts.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub(crate) fn fonts(&self) -> &Fonts {
|
pub fn fonts(&self) -> &Fonts {
|
||||||
self.ctx.fonts()
|
self.ctx.fonts()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,19 +124,19 @@ impl Painter {
|
||||||
self.clip_rect = clip_rect;
|
self.clip_rect = clip_rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Useful for pixel-perfect rendering
|
/// Useful for pixel-perfect rendering.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn round_to_pixel(&self, point: f32) -> f32 {
|
pub fn round_to_pixel(&self, point: f32) -> f32 {
|
||||||
self.ctx().round_to_pixel(point)
|
self.ctx().round_to_pixel(point)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Useful for pixel-perfect rendering
|
/// Useful for pixel-perfect rendering.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn round_vec_to_pixels(&self, vec: Vec2) -> Vec2 {
|
pub fn round_vec_to_pixels(&self, vec: Vec2) -> Vec2 {
|
||||||
self.ctx().round_vec_to_pixels(vec)
|
self.ctx().round_vec_to_pixels(vec)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Useful for pixel-perfect rendering
|
/// Useful for pixel-perfect rendering.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn round_pos_to_pixels(&self, pos: Pos2) -> Pos2 {
|
pub fn round_pos_to_pixels(&self, pos: Pos2) -> Pos2 {
|
||||||
self.ctx().round_pos_to_pixels(pos)
|
self.ctx().round_pos_to_pixels(pos)
|
||||||
|
|
|
@ -698,9 +698,9 @@ impl Ui {
|
||||||
widget_rect
|
widget_rect
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Allocate a specific part of the `Ui‘.
|
/// Allocate a specific part of the `Ui`.
|
||||||
///
|
///
|
||||||
/// Ignore the layout of the `Ui‘: just put my widget here!
|
/// Ignore the layout of the `Ui`: just put my widget here!
|
||||||
/// The layout cursor will advance to past this `rect`.
|
/// The layout cursor will advance to past this `rect`.
|
||||||
pub fn allocate_rect(&mut self, rect: Rect, sense: Sense) -> Response {
|
pub fn allocate_rect(&mut self, rect: Rect, sense: Sense) -> Response {
|
||||||
let id = self.advance_cursor_after_rect(rect);
|
let id = self.advance_cursor_after_rect(rect);
|
||||||
|
|
|
@ -6,6 +6,7 @@ enum Enum {
|
||||||
Third,
|
Third,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Shows off one example of each major type of widget.
|
||||||
#[cfg_attr(feature = "persistence", derive(serde::Deserialize, serde::Serialize))]
|
#[cfg_attr(feature = "persistence", derive(serde::Deserialize, serde::Serialize))]
|
||||||
pub struct WidgetGallery {
|
pub struct WidgetGallery {
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
@ -141,7 +142,7 @@ impl WidgetGallery {
|
||||||
});
|
});
|
||||||
ui.end_row();
|
ui.end_row();
|
||||||
|
|
||||||
ui.add(doc_link_label("Combo box", "combo_box"));
|
ui.add(doc_link_label("Combo box", "ComboBox"));
|
||||||
|
|
||||||
egui::ComboBox::from_label("Take your pick")
|
egui::ComboBox::from_label("Take your pick")
|
||||||
.selected_text(format!("{:?}", radio))
|
.selected_text(format!("{:?}", radio))
|
||||||
|
|
|
@ -96,8 +96,8 @@ pub trait App {
|
||||||
|
|
||||||
/// Called once before the first frame.
|
/// Called once before the first frame.
|
||||||
///
|
///
|
||||||
/// Allows you to do setup code, e.g to call `[Context::set_fonts]`,
|
/// Allows you to do setup code, e.g to call `[egui::Context::set_fonts]`,
|
||||||
/// `[Context::set_visuals]` etc.
|
/// `[egui::Context::set_visuals]` etc.
|
||||||
///
|
///
|
||||||
/// Also allows you to restore state, if there is a storage.
|
/// Also allows you to restore state, if there is a storage.
|
||||||
fn setup(
|
fn setup(
|
||||||
|
@ -127,7 +127,7 @@ pub trait App {
|
||||||
/// where `APPNAME` is what is returned by [`Self::name()`].
|
/// where `APPNAME` is what is returned by [`Self::name()`].
|
||||||
fn save(&mut self, _storage: &mut dyn Storage) {}
|
fn save(&mut self, _storage: &mut dyn Storage) {}
|
||||||
|
|
||||||
/// Called once on shutdown (before or after `save()`)
|
/// Called once on shutdown (before or after [`Self::save`])
|
||||||
fn on_exit(&mut self) {}
|
fn on_exit(&mut self) {}
|
||||||
|
|
||||||
// ---------
|
// ---------
|
||||||
|
@ -136,12 +136,12 @@ pub trait App {
|
||||||
/// The name of your App.
|
/// The name of your App.
|
||||||
fn name(&self) -> &str;
|
fn name(&self) -> &str;
|
||||||
|
|
||||||
/// Time between automatic calls to `save()`
|
/// Time between automatic calls to [`Self::save`]
|
||||||
fn auto_save_interval(&self) -> std::time::Duration {
|
fn auto_save_interval(&self) -> std::time::Duration {
|
||||||
std::time::Duration::from_secs(30)
|
std::time::Duration::from_secs(30)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The size limit of the web app canvas
|
/// The size limit of the web app canvas.
|
||||||
fn max_size_points(&self) -> egui::Vec2 {
|
fn max_size_points(&self) -> egui::Vec2 {
|
||||||
// Some browsers get slow with huge WebGL canvases, so we limit the size:
|
// Some browsers get slow with huge WebGL canvases, so we limit the size:
|
||||||
egui::Vec2::new(1024.0, 2048.0)
|
egui::Vec2::new(1024.0, 2048.0)
|
||||||
|
@ -254,6 +254,8 @@ impl<'a> Frame<'a> {
|
||||||
|
|
||||||
/// Very simple Http fetch API.
|
/// Very simple Http fetch API.
|
||||||
/// Calls the given callback when done.
|
/// Calls the given callback when done.
|
||||||
|
///
|
||||||
|
/// You must enable the "http" feature for this.
|
||||||
#[cfg(feature = "http")]
|
#[cfg(feature = "http")]
|
||||||
pub fn http_fetch(
|
pub fn http_fetch(
|
||||||
&self,
|
&self,
|
||||||
|
@ -370,6 +372,8 @@ pub const APP_KEY: &str = "app";
|
||||||
|
|
||||||
#[cfg(feature = "http")]
|
#[cfg(feature = "http")]
|
||||||
/// `epi` supports simple HTTP requests with [`Frame::http_fetch`].
|
/// `epi` supports simple HTTP requests with [`Frame::http_fetch`].
|
||||||
|
///
|
||||||
|
/// You must enable the "http" feature for this.
|
||||||
pub mod http {
|
pub mod http {
|
||||||
/// A simple http requests.
|
/// A simple http requests.
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
|
|
Loading…
Reference in a new issue