1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
// Copyright 2018, The Gtk-rs Project Developers. // See the COPYRIGHT file at the top-level directory of this distribution. // Licensed under the MIT license, see the LICENSE file or <http://opensource.org/licenses/MIT> use glib::object::IsA; use glib::translate::*; use gtk_sys; use ComboBox; pub trait ComboBoxExtManual: 'static { /// Sets the active item of `self` to be the item at `index`. /// ## `index_` /// An index in the model passed during construction, or -1 to have /// no active item fn set_active(&self, index_: Option<u32>); /// Returns the index of the currently active item, or -1 if there’s no /// active item. If the model is a non-flat treemodel, and the active item /// is not an immediate child of the root of the tree, this function returns /// `gtk_tree_path_get_indices (path)[0]`, where /// `path` is the `TreePath` of the active item. /// /// # Returns /// /// An integer which is the index of the currently active item, /// or -1 if there’s no active item. fn get_active(&self) -> Option<u32>; } impl<O: IsA<ComboBox>> ComboBoxExtManual for O { fn set_active(&self, index_: Option<u32>) { let index_ = match index_ { Some(i) => i as _, None => -1, }; unsafe { gtk_sys::gtk_combo_box_set_active(self.as_ref().to_glib_none().0, index_); } } fn get_active(&self) -> Option<u32> { match unsafe { gtk_sys::gtk_combo_box_get_active(self.as_ref().to_glib_none().0) } { -1 => None, x => Some(x as _), } } }