This commit is contained in:
dbr 2021-09-25 13:03:06 +10:00
parent 9eb6b410b4
commit 82ad709167
10 changed files with 82 additions and 73 deletions

View File

@ -8,7 +8,8 @@ fn main() {
};
let system = support::init(file!());
system.main_loop(move |run, ui| {
let w = ui.window("Collapsing header")
let w = ui
.window("Collapsing header")
.opened(run)
.position([20.0, 20.0], Condition::Appearing)
.size([700.0, 500.0], Condition::Appearing);

View File

@ -17,7 +17,8 @@ fn main() {
}
fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
let w = ui.window("Color button examples")
let w = ui
.window("Color button examples")
.opened(run)
.position([20.0, 20.0], Condition::Appearing)
.size([700.0, 100.0], Condition::Appearing)
@ -33,7 +34,8 @@ fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
}
fn example_1(ui: &Ui, state: &mut State) {
let w = ui.window("Example 1: Basics")
let w = ui
.window("Example 1: Basics")
.size([700.0, 300.0], Condition::Appearing)
.position([20.0, 140.0], Condition::Appearing);
w.build(|| {
@ -73,7 +75,8 @@ fn example_1(ui: &Ui, state: &mut State) {
}
fn example_2(ui: &Ui) {
let w = ui.window("Example 2: Alpha component")
let w = ui
.window("Example 2: Alpha component")
.size([700.0, 320.0], Condition::Appearing)
.position([20.0, 140.0], Condition::Appearing);
w.build(|| {
@ -123,7 +126,8 @@ fn example_2(ui: &Ui) {
}
fn example_3(ui: &Ui) {
let w = ui.window("Example 3: Input format")
let w = ui
.window("Example 3: Input format")
.size([700.0, 320.0], Condition::Appearing)
.position([20.0, 140.0], Condition::Appearing);
w.build(|| {

View File

@ -12,8 +12,7 @@ fn main() {
// imgui-rs has two main methods of creating windows (and these same approaches
// apply to many other widgets). First, callback based:
ui.window("My window via callback")
.build(||{
ui.window("My window via callback").build(|| {
ui.text("This content appears in a window");
// Everything in this callback appears in the window, like this button:
@ -24,7 +23,7 @@ fn main() {
// In this case, there is the "token based" approach. You call a method and get a "window token",
// everything that happens until the token is dropped is included in the window this is more-or-less how
// the Dear ImGui C++ API works)
// Here we (maybe) get a window token:
let window_token = ui.window("Token based window").begin();
if let Some(_t) = window_token {
@ -34,36 +33,35 @@ fn main() {
// Here we create a window with a specific size, and force it to always have a vertical scrollbar visible
ui.window("Big complex window")
.size([200.0, 100.0], imgui::Condition::FirstUseEver)
.always_vertical_scrollbar(true)
.build(||{
ui.text("Imagine something complicated here..");
.size([200.0, 100.0], imgui::Condition::FirstUseEver)
.always_vertical_scrollbar(true)
.build(|| {
ui.text("Imagine something complicated here..");
// Note you can create windows inside other windows, however, they both appear as separate windows.
// For example, somewhere deep inside a complex window, we can quickly create a widget to display a
// variable, like a graphical "debug print"
ui.window("Confusion").build(||{
ui.text(format!("Some variable: {:?}", ui.io().mouse_pos))
})
});
// Note you can create windows inside other windows, however, they both appear as separate windows.
// For example, somewhere deep inside a complex window, we can quickly create a widget to display a
// variable, like a graphical "debug print"
ui.window("Confusion")
.build(|| ui.text(format!("Some variable: {:?}", ui.io().mouse_pos)))
});
// If you want to nest windows inside other windows, you can a "child window".
// This is essentially a scrollable area, with all the same properties as a regular window
ui.window("Parent window").build(||{
ui.window("Parent window").build(|| {
ui.child_window("Child window")
.size([100.0, 100.0])
.build(||{
for _ in 0..10 {
ui.text("Lines and");
}
});
.size([100.0, 100.0])
.build(|| {
for _ in 0..10 {
ui.text("Lines and");
}
});
ui.child_window("Second child window")
.size([100.0, 100.0])
.build(||{
for _ in 0..10 {
ui.text("More and");
}
});
.size([100.0, 100.0])
.build(|| {
for _ in 0..10 {
ui.text("More and");
}
});
});
});
}

View File

@ -6,41 +6,40 @@ fn main() {
let items = vec!["a", "b", "c", "d"];
ui.window("Broken Example")
.position([0.0, 0.0], imgui::Condition::FirstUseEver)
.size([390.0, 200.0], imgui::Condition::FirstUseEver)
.build(|| {
ui.text("Broken! Only first button responds to clicks");
.position([0.0, 0.0], imgui::Condition::FirstUseEver)
.size([390.0, 200.0], imgui::Condition::FirstUseEver)
.build(|| {
ui.text("Broken! Only first button responds to clicks");
// Because all our buttons have the same label (and thus ID),
// only the first button responds to clicks!
for it in &items {
ui.text(it);
for num in 0..5 {
ui.same_line();
if ui.button("Example") {
println!("{}: {}", it, num);
// Because all our buttons have the same label (and thus ID),
// only the first button responds to clicks!
for it in &items {
ui.text(it);
for num in 0..5 {
ui.same_line();
if ui.button("Example") {
println!("{}: {}", it, num);
}
}
}
}
});
});
ui.window("Good Example")
.position([400.0, 0.0], imgui::Condition::FirstUseEver)
.size([390.0, 200.0], imgui::Condition::FirstUseEver)
.build(|| {
ui.text("Works!");
for it in &items {
let _label_id = ui.push_id(it);
ui.text(it);
for num in 0..5 {
let _num_id = ui.push_id(num);
ui.same_line();
if ui.button("Example") {
println!("{}: {}", it, num);
.position([400.0, 0.0], imgui::Condition::FirstUseEver)
.size([390.0, 200.0], imgui::Condition::FirstUseEver)
.build(|| {
ui.text("Works!");
for it in &items {
let _label_id = ui.push_id(it);
ui.text(it);
for num in 0..5 {
let _num_id = ui.push_id(num);
ui.same_line();
if ui.button("Example") {
println!("{}: {}", it, num);
}
}
}
}
});
});
});
}

View File

@ -5,7 +5,8 @@ mod support;
fn main() {
let system = support::init(file!());
system.main_loop(move |run, ui| {
let w = ui.window("Progress bar")
let w = ui
.window("Progress bar")
.opened(run)
.position([20.0, 20.0], Condition::Appearing)
.size([700.0, 200.0], Condition::Appearing);

View File

@ -16,7 +16,8 @@ fn main() {
}
fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
let w = ui.window("Radio button examples")
let w = ui
.window("Radio button examples")
.opened(run)
.position([20.0, 20.0], Condition::Appearing)
.size([700.0, 80.0], Condition::Appearing)
@ -32,7 +33,8 @@ fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
}
fn example_1(ui: &Ui, state: &mut State) {
let w = ui.window("Example 1: Boolean radio buttons")
let w = ui
.window("Example 1: Boolean radio buttons")
.size([700.0, 200.0], Condition::Appearing)
.position([20.0, 120.0], Condition::Appearing);
w.build(|| {
@ -58,7 +60,8 @@ fn example_1(ui: &Ui, state: &mut State) {
}
fn example_2(ui: &Ui, state: &mut State) {
let w = ui.window("Example 2: Radio buttons")
let w = ui
.window("Example 2: Radio buttons")
.size([700.0, 300.0], Condition::Appearing)
.position([20.0, 120.0], Condition::Appearing);
w.build(|| {

View File

@ -16,7 +16,8 @@ fn main() {
}
fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
let w = ui.window("Slider examples")
let w = ui
.window("Slider examples")
.opened(run)
.position([20.0, 20.0], Condition::Appearing)
.size([700.0, 80.0], Condition::Appearing)
@ -32,7 +33,8 @@ fn example_selector(run: &mut bool, ui: &mut Ui, state: &mut State) {
}
fn example_1(ui: &Ui, state: &mut State) {
let w = ui.window("Example 1: Basic sliders")
let w = ui
.window("Example 1: Basic sliders")
.size([700.0, 340.0], Condition::Appearing)
.position([20.0, 120.0], Condition::Appearing);
w.build(|| {
@ -67,7 +69,8 @@ fn example_1(ui: &Ui, state: &mut State) {
}
fn example_2(ui: &Ui, state: &mut State) {
let w = ui.window("Example 2: Slider arrays")
let w = ui
.window("Example 2: Slider arrays")
.size([700.0, 260.0], Condition::Appearing)
.position([20.0, 120.0], Condition::Appearing);
w.build(|| {

View File

@ -317,7 +317,8 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
show_app_log(ui, &mut state.app_log);
}
let mut window = ui.window("ImGui Demo")
let mut window = ui
.window("ImGui Demo")
.title_bar(!state.no_titlebar)
.resizable(!state.no_resize)
.movable(!state.no_move)

View File

@ -360,7 +360,6 @@ impl<'ui> Ui<'ui> {
}
}
// Widgets: Input
impl<'ui> Ui<'ui> {
#[doc(alias = "InputText", alias = "InputTextWithHint")]

View File

@ -490,7 +490,7 @@ impl<'ui> Ui<'ui> {
/// ```
///
/// We don't have to use numbers - strings also work:
///
///
/// ```no_run
/// # let mut imgui = imgui::Context::create();
/// # let ui = imgui.frame();
@ -500,13 +500,13 @@ impl<'ui> Ui<'ui> {
/// println!("First button clicked")
/// }
/// }
///
///
/// fn callback2(ui: &imgui::Ui) {
/// if ui.button("Click") {
/// println!("Second button clicked")
/// }
/// }
///
///
/// ui.window("Example")
/// .build(||{
/// {