pub struct ComboBox { /* private fields */ }Available on crate feature
winio only.Expand description
A simple combo box.
Implementations§
Source§impl ComboBox
impl ComboBox
Sourcepub fn selection(&self) -> Option<usize>
pub fn selection(&self) -> Option<usize>
The selection index.
Examples found in repository?
examples/options/options.rs (line 119)
97 async fn update(&mut self, message: Self::Message, sender: &ComponentSender<Self>) -> bool {
98 futures_util::join!(self.window.update());
99 match message {
100 MainMessage::Noop => false,
101 MainMessage::Close => {
102 sender.output(());
103 false
104 }
105 MainMessage::Redraw => true,
106 MainMessage::EnabledClick => {
107 let enabled = self.enabled.is_checked();
108 self.b.set_enabled(enabled);
109 self.e.set_enabled(enabled);
110 self.s.set_enabled(enabled);
111 false
112 }
113 MainMessage::OptionsPage(m) => {
114 tracing::debug!(?m, "Options page message");
115 match m {
116 OptionsPageMessage::Save(config, tx) => {
117 config.enabled = self.enabled.is_checked();
118 config.b = self.b.is_checked();
119 config.e = match self.e.selection() {
120 Some(0) => Mode::A,
121 Some(1) => Mode::B,
122 _ => Default::default(),
123 };
124 config.s = self.s.text();
125 tx.send(config).unwrap()
126 }
127 }
128 false
129 }
130 }
131 }More examples
examples/test/widgets.rs (line 207)
187 async fn update(&mut self, message: Self::Message, sender: &ComponentSender<Self>) -> bool {
188 futures_util::future::join(self.window.update(), self.canvas.update()).await;
189 match message {
190 MainMessage::Noop => false,
191 MainMessage::Close => {
192 sender.output(());
193 false
194 }
195 MainMessage::Redraw => true,
196 MainMessage::PasswordCheck => {
197 self.pentry.set_password(!self.pcheck.is_checked());
198 true
199 }
200 MainMessage::List(e) => {
201 self.pop_button.set_enabled(!self.list.is_empty());
202 self.combo
203 .emit(ComboBoxMessage::from_observable_vec_event(e))
204 .await
205 }
206 MainMessage::Select => {
207 self.index = self.combo.selection();
208 false
209 }
210 MainMessage::Push => {
211 self.list.push(
212 match self.rindex {
213 0 => &self.r1,
214 1 => &self.r2,
215 2 => &self.r3,
216 _ => unreachable!(),
217 }
218 .text(),
219 );
220 false
221 }
222 MainMessage::Pop => {
223 self.list.pop();
224 false
225 }
226 MainMessage::RSelect(i) => {
227 self.rindex = i;
228 false
229 }
230 MainMessage::Show => {
231 MessageBox::new()
232 .title("Show selected item")
233 .message(
234 self.index
235 .and_then(|index| self.list.get(index))
236 .map(|s| s.as_str())
237 .unwrap_or("No selection."),
238 )
239 .buttons(MessageBoxButton::Ok)
240 .show(&self.window)
241 .await;
242 false
243 }
244 MainMessage::OptionsPage(m) => {
245 tracing::debug!(?m, "Options page message");
246 match m {
247 OptionsPageMessage::Save(config, tx) => {
248 config.s = self.mltext.text();
249 tx.send(config).unwrap()
250 }
251 }
252 false
253 }
254 }
255 }Sourcepub fn set_selection(&mut self, i: Option<usize>)
pub fn set_selection(&mut self, i: Option<usize>)
Set or cancel the selection.
Examples found in repository?
examples/options/options.rs (lines 61-64)
35 fn init(mut init: Self::Init<'_>, sender: &ComponentSender<Self>) -> Self {
36 let mut window = init.window(sender);
37 // window.set_size(Size::new(800.0, 600.0));
38
39 let mut enabled = Child::<CheckBox>::init(&window);
40 enabled.set_text("Enable");
41
42 let mut b = Child::<CheckBox>::init(&window);
43 b.set_text("Switch");
44
45 let mut e_label = Child::<Label>::init(&window);
46 e_label.set_text("Mode:");
47 let mut e = Child::<ComboBox>::init(&window);
48 e.insert(0, "A");
49 e.insert(1, "B");
50
51 let mut s_label = Child::<Label>::init(&window);
52 s_label.set_text("Message:");
53 let mut s = Child::<Edit>::init(&window);
54
55 HANDLER.with_app(|a| {
56 let config = a.config();
57
58 enabled.set_checked(config.enabled);
59 b.set_checked(config.b);
60
61 e.set_selection(Some(match config.e {
62 Mode::A => 0,
63 Mode::B => 1,
64 }));
65
66 s.set_text(&config.s);
67 });
68
69 sender.post(MainMessage::EnabledClick);
70
71 window.show();
72
73 Self {
74 window,
75 enabled,
76 b,
77 s_label,
78 s,
79 e_label,
80 e,
81 }
82 }Sourcepub fn insert(&mut self, i: usize, s: impl AsRef<str>)
pub fn insert(&mut self, i: usize, s: impl AsRef<str>)
Insert the selection item by index.
Examples found in repository?
examples/options/options.rs (line 48)
35 fn init(mut init: Self::Init<'_>, sender: &ComponentSender<Self>) -> Self {
36 let mut window = init.window(sender);
37 // window.set_size(Size::new(800.0, 600.0));
38
39 let mut enabled = Child::<CheckBox>::init(&window);
40 enabled.set_text("Enable");
41
42 let mut b = Child::<CheckBox>::init(&window);
43 b.set_text("Switch");
44
45 let mut e_label = Child::<Label>::init(&window);
46 e_label.set_text("Mode:");
47 let mut e = Child::<ComboBox>::init(&window);
48 e.insert(0, "A");
49 e.insert(1, "B");
50
51 let mut s_label = Child::<Label>::init(&window);
52 s_label.set_text("Message:");
53 let mut s = Child::<Edit>::init(&window);
54
55 HANDLER.with_app(|a| {
56 let config = a.config();
57
58 enabled.set_checked(config.enabled);
59 b.set_checked(config.b);
60
61 e.set_selection(Some(match config.e {
62 Mode::A => 0,
63 Mode::B => 1,
64 }));
65
66 s.set_text(&config.s);
67 });
68
69 sender.post(MainMessage::EnabledClick);
70
71 window.show();
72
73 Self {
74 window,
75 enabled,
76 b,
77 s_label,
78 s,
79 e_label,
80 e,
81 }
82 }Trait Implementations§
Source§impl AsRawWidget for ComboBox
impl AsRawWidget for ComboBox
Source§fn as_raw_widget(&self) -> RawWidget
fn as_raw_widget(&self) -> RawWidget
Get the raw window handle.
Source§impl AsWidget for ComboBox
impl AsWidget for ComboBox
Source§fn as_widget(&self) -> BorrowedWidget<'_>
fn as_widget(&self) -> BorrowedWidget<'_>
Get the window handle.
Source§impl Component for ComboBox
impl Component for ComboBox
Source§type Event = ComboBoxEvent
type Event = ComboBoxEvent
The output event type to the parent.
Source§type Init<'a> = BorrowedWindow<'a>
type Init<'a> = BorrowedWindow<'a>
Initial parameter type.
Source§type Message = ComboBoxMessage
type Message = ComboBoxMessage
The input message type to update.
Source§fn init(
init: <ComboBox as Component>::Init<'_>,
_sender: &ComponentSender<ComboBox>,
) -> ComboBox
fn init( init: <ComboBox as Component>::Init<'_>, _sender: &ComponentSender<ComboBox>, ) -> ComboBox
Create the initial component.
Source§async fn update(
&mut self,
message: <ComboBox as Component>::Message,
_sender: &ComponentSender<ComboBox>,
) -> bool
async fn update( &mut self, message: <ComboBox as Component>::Message, _sender: &ComponentSender<ComboBox>, ) -> bool
Respond to the message.
Source§fn render(&mut self, _sender: &ComponentSender<ComboBox>)
fn render(&mut self, _sender: &ComponentSender<ComboBox>)
Render the widgets.
Source§impl Layoutable for ComboBox
impl Layoutable for ComboBox
Source§fn preferred_size(&self) -> Size2D<f64, LogicalSpace>
fn preferred_size(&self) -> Size2D<f64, LogicalSpace>
The preferred size.
Auto Trait Implementations§
impl Freeze for ComboBox
impl RefUnwindSafe for ComboBox
impl !Send for ComboBox
impl !Sync for ComboBox
impl Unpin for ComboBox
impl UnwindSafe for ComboBox
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more