Closed JMS55 closed 5 years ago
let model = ListStore::new(&[str::static_type()]); model.insert_with_values(None, &[0], &[&"Abandoned Ship - Good Rod"]); model.insert_with_values(None, &[0], &[&"Abandoned Ship - Old Rod"]); model.insert_with_values(None, &[0], &[&"Abandoned Ship - Super Rod"]); model.insert_with_values(None, &[0], &[&"Abandoned Ship - Surfing"]); model.insert_with_values(None, &[0], &[&"Altering Cave"]); model.insert_with_values(None, &[0], &[&"Artisan Cave"]); model.insert_with_values(None, &[0], &[&"Cave of Origin - 1F"]); model.insert_with_values(None, &[0], &[&"Cave of Origin - B1f"]); model.insert_with_values(None, &[0], &[&"Cave of Origin - Entrance"]); model.insert_with_values(None, &[0], &[&"Desert Underpass"]); model.insert_with_values(None, &[0], &[&"Ever Grande City - Good Rod"]); model.insert_with_values(None, &[0], &[&"Ever Grande City - Old Rod"]); model.insert_with_values(None, &[0], &[&"Ever Grande City - Super Rod"]); model.insert_with_values(None, &[0], &[&"Ever Grande City - Surfing"]); model.insert_with_values(None, &[0], &[&"Fiery Path"]); model.insert_with_values(None, &[0], &[&"Fortree City - Good Rod"]); model.insert_with_values(None, &[0], &[&"Fortree City - Old Rod"]); model.insert_with_values(None, &[0], &[&"Fortree City - Super Rod"]); model.insert_with_values(None, &[0], &[&"Fortree City - Surfing"]); model.insert_with_values(None, &[0], &[&"Granite Cave - 1F - Land"]); model.insert_with_values(None, &[0], &[&"Granite Cave - B1F - Land"]); model.insert_with_values(None, &[0], &[&"Granite Cave - B2F - Land"]); model.insert_with_values(None, &[0], &[&"Granite Cave - Rock Smash"]); model.insert_with_values(None, &[0], &[&"Granite Cave - Steven's Room - Land"]); model.insert_with_values(None, &[0], &[&"Jagged Pass"]); let text_renderer = CellRendererText::new(); text_renderer.set_alignment(0.5, 0.5); let combobox = ComboBox::new_with_model_and_entry(&model); combobox.pack_start(&text_renderer, false); combobox.add_attribute(&text_renderer, "text", 0); combobox.set_entry_text_column(0); let completion = EntryCompletion::new(); completion.set_model(&model); completion.pack_start(&text_renderer, false); completion.add_attribute(&text_renderer, "text", 0); completion.set_match_func(|completion, user_input, model_iter| { let row = completion .get_model() .unwrap() .get_value(&model_iter, 0) .get::<&str>() .unwrap() .to_lowercase(); for word in user_input.split(" ") { if !row.contains(word) { return false; } } true }); // Neither the default function, nor a custom function work completion.connect_match_selected(|completion, model, model_iter| { completion .get_entry() .unwrap() .downcast::<Entry>() .unwrap() .set_text(model.get_value(&model_iter, 0).get::<&str>().unwrap()); Inhibit(false) }); let entry = combobox.get_child().unwrap().downcast::<Entry>().unwrap(); entry.set_completion(Some(&completion)); combobox // add this to a window or something
My bad actually, I needed to call completion.set_text_column(0);
completion.set_text_column(0);