Struct EditableCombobox

Source
pub struct EditableCombobox { /* private fields */ }
Expand description

A control to select one item from a predefined list of items or enter ones own.

Implementations§

Source§

impl EditableCombobox

Source

pub fn show(&mut self)

Source

pub fn hide(&mut self)

Source

pub fn enable(&mut self)

Source

pub fn disable(&mut self)

Source

pub unsafe fn from_raw( uiEditableCombobox: *mut uiEditableCombobox, ) -> EditableCombobox

Create an ui struct for this control from the raw pointer for it.

§Unsafety

The given pointer must point to a valid control or memory unsafety may result.

Source

pub fn ptr(&self) -> *mut uiEditableCombobox

Return the underlying pointer for this control.

Source§

impl EditableCombobox

Source

pub fn new() -> EditableCombobox

Creates a new editable combobox.

Examples found in repository?
examples/controlgallery/page2.rs (line 50)
4pub fn make_numbers_page(_ui: UI) -> Control {
5    // Left
6    let mut hbox = HorizontalBox::new();
7    let mut group_numbers = Group::new("Numbers");
8    let mut vbox_numbers = VerticalBox::new();
9    vbox_numbers.set_padded(true);
10
11    let mut spinner = Spinbox::new(0, 100);
12    let mut slider = Slider::new(0, 100);
13    let progressbar = ProgressBar::new();
14
15    spinner.on_changed({
16        let mut slider = slider.clone();
17        let mut progressbar = progressbar.clone();
18        move |val| -> () {
19            slider.set_value(val);
20            progressbar.set_value(val as u32);
21        }
22    });
23
24    slider.on_changed({
25        let mut spinner = spinner.clone();
26        let mut progressbar = progressbar.clone();
27        move |val| -> () {
28            spinner.set_value(val);
29            progressbar.set_value(val as u32);
30        }
31    });
32
33    vbox_numbers.append(spinner, LayoutStrategy::Compact);
34    vbox_numbers.append(slider, LayoutStrategy::Compact);
35    vbox_numbers.append(progressbar, LayoutStrategy::Compact);
36
37    group_numbers.set_child(vbox_numbers);
38    hbox.append(group_numbers.clone(), LayoutStrategy::Stretchy);
39
40    // Right
41    let mut group_lists = Group::new("Lists");
42    let mut vbox_lists = VerticalBox::new();
43    vbox_lists.set_padded(true);
44
45    let combobox = Combobox::new();
46    combobox.append("Combobox Item 1");
47    combobox.append("Combobox Item 2");
48    combobox.append("Combobox Item 3");
49
50    let mut combobox_editable = EditableCombobox::new();
51    combobox_editable.append("Editable Item 1");
52    combobox_editable.append("Editable Item 2");
53    combobox_editable.append("Editable Item 3");
54    combobox_editable.set_value("Custom Text");
55
56    let radiobuttons = RadioButtons::new();
57    radiobuttons.append("Radio Button 1");
58    radiobuttons.append("Radio Button 2");
59    radiobuttons.append("Radio Button 3");
60
61    let dummybox = VerticalBox::new();
62    vbox_lists.append(combobox, LayoutStrategy::Compact);
63    vbox_lists.append(combobox_editable, LayoutStrategy::Compact);
64    vbox_lists.append(radiobuttons, LayoutStrategy::Compact);
65    
66    // On MacOS, the last item in a list tends to take all the remaining space,
67    // regardless of our `LayoutStrategy`. Because we don't want the radio buttons
68    // to be all over the place, a dummy box is inserted to take the space instead
69    // without visually affecting the UI.
70    vbox_lists.append(dummybox, LayoutStrategy::Compact);
71
72    group_lists.set_child(vbox_lists);
73    hbox.append(group_lists.clone(), LayoutStrategy::Stretchy);
74
75    return hbox.into();
76}
Source

pub fn append(&self, name: &str)

Adds a new option to the combobox.

Examples found in repository?
examples/controlgallery/page2.rs (line 51)
4pub fn make_numbers_page(_ui: UI) -> Control {
5    // Left
6    let mut hbox = HorizontalBox::new();
7    let mut group_numbers = Group::new("Numbers");
8    let mut vbox_numbers = VerticalBox::new();
9    vbox_numbers.set_padded(true);
10
11    let mut spinner = Spinbox::new(0, 100);
12    let mut slider = Slider::new(0, 100);
13    let progressbar = ProgressBar::new();
14
15    spinner.on_changed({
16        let mut slider = slider.clone();
17        let mut progressbar = progressbar.clone();
18        move |val| -> () {
19            slider.set_value(val);
20            progressbar.set_value(val as u32);
21        }
22    });
23
24    slider.on_changed({
25        let mut spinner = spinner.clone();
26        let mut progressbar = progressbar.clone();
27        move |val| -> () {
28            spinner.set_value(val);
29            progressbar.set_value(val as u32);
30        }
31    });
32
33    vbox_numbers.append(spinner, LayoutStrategy::Compact);
34    vbox_numbers.append(slider, LayoutStrategy::Compact);
35    vbox_numbers.append(progressbar, LayoutStrategy::Compact);
36
37    group_numbers.set_child(vbox_numbers);
38    hbox.append(group_numbers.clone(), LayoutStrategy::Stretchy);
39
40    // Right
41    let mut group_lists = Group::new("Lists");
42    let mut vbox_lists = VerticalBox::new();
43    vbox_lists.set_padded(true);
44
45    let combobox = Combobox::new();
46    combobox.append("Combobox Item 1");
47    combobox.append("Combobox Item 2");
48    combobox.append("Combobox Item 3");
49
50    let mut combobox_editable = EditableCombobox::new();
51    combobox_editable.append("Editable Item 1");
52    combobox_editable.append("Editable Item 2");
53    combobox_editable.append("Editable Item 3");
54    combobox_editable.set_value("Custom Text");
55
56    let radiobuttons = RadioButtons::new();
57    radiobuttons.append("Radio Button 1");
58    radiobuttons.append("Radio Button 2");
59    radiobuttons.append("Radio Button 3");
60
61    let dummybox = VerticalBox::new();
62    vbox_lists.append(combobox, LayoutStrategy::Compact);
63    vbox_lists.append(combobox_editable, LayoutStrategy::Compact);
64    vbox_lists.append(radiobuttons, LayoutStrategy::Compact);
65    
66    // On MacOS, the last item in a list tends to take all the remaining space,
67    // regardless of our `LayoutStrategy`. Because we don't want the radio buttons
68    // to be all over the place, a dummy box is inserted to take the space instead
69    // without visually affecting the UI.
70    vbox_lists.append(dummybox, LayoutStrategy::Compact);
71
72    group_lists.set_child(vbox_lists);
73    hbox.append(group_lists.clone(), LayoutStrategy::Stretchy);
74
75    return hbox.into();
76}
Source

pub fn value(&self) -> String

Source

pub fn set_value(&mut self, value: &str)

Examples found in repository?
examples/controlgallery/page2.rs (line 54)
4pub fn make_numbers_page(_ui: UI) -> Control {
5    // Left
6    let mut hbox = HorizontalBox::new();
7    let mut group_numbers = Group::new("Numbers");
8    let mut vbox_numbers = VerticalBox::new();
9    vbox_numbers.set_padded(true);
10
11    let mut spinner = Spinbox::new(0, 100);
12    let mut slider = Slider::new(0, 100);
13    let progressbar = ProgressBar::new();
14
15    spinner.on_changed({
16        let mut slider = slider.clone();
17        let mut progressbar = progressbar.clone();
18        move |val| -> () {
19            slider.set_value(val);
20            progressbar.set_value(val as u32);
21        }
22    });
23
24    slider.on_changed({
25        let mut spinner = spinner.clone();
26        let mut progressbar = progressbar.clone();
27        move |val| -> () {
28            spinner.set_value(val);
29            progressbar.set_value(val as u32);
30        }
31    });
32
33    vbox_numbers.append(spinner, LayoutStrategy::Compact);
34    vbox_numbers.append(slider, LayoutStrategy::Compact);
35    vbox_numbers.append(progressbar, LayoutStrategy::Compact);
36
37    group_numbers.set_child(vbox_numbers);
38    hbox.append(group_numbers.clone(), LayoutStrategy::Stretchy);
39
40    // Right
41    let mut group_lists = Group::new("Lists");
42    let mut vbox_lists = VerticalBox::new();
43    vbox_lists.set_padded(true);
44
45    let combobox = Combobox::new();
46    combobox.append("Combobox Item 1");
47    combobox.append("Combobox Item 2");
48    combobox.append("Combobox Item 3");
49
50    let mut combobox_editable = EditableCombobox::new();
51    combobox_editable.append("Editable Item 1");
52    combobox_editable.append("Editable Item 2");
53    combobox_editable.append("Editable Item 3");
54    combobox_editable.set_value("Custom Text");
55
56    let radiobuttons = RadioButtons::new();
57    radiobuttons.append("Radio Button 1");
58    radiobuttons.append("Radio Button 2");
59    radiobuttons.append("Radio Button 3");
60
61    let dummybox = VerticalBox::new();
62    vbox_lists.append(combobox, LayoutStrategy::Compact);
63    vbox_lists.append(combobox_editable, LayoutStrategy::Compact);
64    vbox_lists.append(radiobuttons, LayoutStrategy::Compact);
65    
66    // On MacOS, the last item in a list tends to take all the remaining space,
67    // regardless of our `LayoutStrategy`. Because we don't want the radio buttons
68    // to be all over the place, a dummy box is inserted to take the space instead
69    // without visually affecting the UI.
70    vbox_lists.append(dummybox, LayoutStrategy::Compact);
71
72    group_lists.set_child(vbox_lists);
73    hbox.append(group_lists.clone(), LayoutStrategy::Stretchy);
74
75    return hbox.into();
76}
Source

pub fn on_changed<'ctx, F>(&mut self, _ctx: &'ctx UI, callback: F)
where F: FnMut(String) + 'static,

Registers a callback for when an editable combobox item is selected or user text changed.

Note: The callback is not triggered when calling set_value(). Note: Only one callback can be registered at a time.

Trait Implementations§

Source§

impl Clone for EditableCombobox

Source§

fn clone(&self) -> EditableCombobox

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Drop for EditableCombobox

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Into<Control> for EditableCombobox

Source§

fn into(self) -> Control

Converts this type into the (usually inferred) input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.