Merge pull request #74 from Palmr/radio-buttons

Added functions in lib for radios
This commit is contained in:
Joonas Javanainen 2017-09-05 22:35:13 +03:00 committed by GitHub
commit 1a2f5427ec
2 changed files with 55 additions and 0 deletions

View File

@ -42,6 +42,7 @@ struct State {
selected_fish: Option<usize>,
auto_resize_state: AutoResizeState,
file_menu: FileMenuState,
radio_button: i32,
}
impl Default for State {
@ -85,6 +86,7 @@ impl Default for State {
selected_fish: None,
auto_resize_state: Default::default(),
file_menu: Default::default(),
radio_button: 0,
}
}
}
@ -320,6 +322,12 @@ fn show_test_window<'a>(ui: &Ui<'a>, state: &mut State, opened: &mut bool) {
.build();
});
ui.radio_button(im_str!("radio a"), &mut state.radio_button, 0);
ui.same_line(0.0);
ui.radio_button(im_str!("radio b"), &mut state.radio_button, 1);
ui.same_line(0.0);
ui.radio_button(im_str!("radio c"), &mut state.radio_button, 2);
ui.separator();
ui.label_text(im_str!("label"), im_str!("Value"));
ui.combo(im_str!("combo"),

View File

@ -714,6 +714,53 @@ impl<'ui> Ui<'ui> {
}
}
// Widgets: Radio
impl<'ui> Ui<'ui> {
/// Creates a radio button for selecting an integer value.
/// Returns true if pressed.
///
/// # Example
/// ```rust,no_run
/// # use imgui::*;
/// # let mut imgui = ImGui::init();
/// # let ui = imgui.frame((0, 0), (0, 0), 0.1);
/// # let mut selected_radio_value = 2;
/// ui.radio_button(im_str!("Item 1"), &mut selected_radio_value, 1);
/// ui.radio_button(im_str!("Item 2"), &mut selected_radio_value, 2);
/// ui.radio_button(im_str!("Item 3"), &mut selected_radio_value, 3);
/// ```
pub fn radio_button<'p>(&self,
label: &'p ImStr,
value: &'p mut i32,
wanted: i32) -> bool {
unsafe {
imgui_sys::igRadioButton(label.as_ptr(), value, wanted)
}
}
/// Creates a radio button that shows as selected if the given value is true.
/// Returns true if pressed.
///
/// # Example
/// ```rust,no_run
/// # use imgui::*;
/// # let mut imgui = ImGui::init();
/// # let ui = imgui.frame((0, 0), (0, 0), 0.1);
/// # let mut radio_button_test = "cats".to_string();
/// if ui.radio_button_bool(im_str!("Cats"), radio_button_test == "cats") {
/// radio_button_test = "cats".to_string();
/// }
/// if ui.radio_button_bool(im_str!("Dogs"), radio_button_test == "dogs") {
/// radio_button_test = "dogs".to_string();
/// }
/// ```
pub fn radio_button_bool<'p>(&self, label: &'p ImStr, value: bool) -> bool {
unsafe {
imgui_sys::igRadioButtonBool(label.as_ptr(), value)
}
}
}
impl<'ui> Ui<'ui> {
pub fn plot_lines<'p>(&self, label: &'p ImStr, values: &'p [f32]) -> PlotLines<'ui, 'p> {
PlotLines::new(self, label, values)