GTK入口补全自定义匹配函数怎么写?
How to write a custom match function for GTK entry completion?
我想为 GTK EntryCompletion
functionality via set_match_func
实现模糊搜索。文档非常有限。
请注意,代码使用默认值 EntryCompletion
。
该函数应如下所示:
fn custom_entry_completion(store: >k::EntryCompletion, text: &str, ti: >k::TreeIter) -> bool {
println!("{} // {:?}", text, ti);
true
}
我想把它嵌入这样的东西中:
let completion_countries = gtk::EntryCompletion::new();
completion_countries.set_match_func(custom_entry_completion);
我想要模糊匹配,但我想我会自己处理那部分。最有帮助的是匹配不区分大小写或匹配字符串的最后部分(或其他内容)的示例。我正在寻找一个很好的例子(最好没有不安全的)and/or 好的文档。
所以我需要从 TreeIter 中获取值并检查匹配是否如我所愿。因此,我的问题是如何从 TreeIter 中获取要与 text
进行比较的项目。
文档
EntryCompletionExt::get_text_column
EntryCompletionExt::get_model
TreeModelExt::get_value
glib::value
一个例子
fn custom_entry_completion(store: >k::EntryCompletion, text: &str, ti: >k::TreeIter) -> bool {
let tree_model = store.get_model().unwrap();
let text_column = store.get_text_column();
let ti_text_value = tree_model.get_value(ti, text_column);
if ti_text_value.is::<String>() {
let value = ti_text_value.get::<String>().unwrap();
println!("{:?} // {:?}", text, value);
} else {
println!("{:?} // not a string", text);
}
true
}
与 entry_completion.rs 示例一起使用时的控制台输出:
"adfs" // "France"
"adfs" // "Italy"
"adfs" // "Italy"
"adfs" // "Sweden"
"adfs" // "Sweden"
"adfs" // "Switzerland"
"adfs" // "Switzerland"
"adfssdf" // "France"
"adfssdf" // "Italy"
"adfssdf" // "Sweden"
"adfssdf" // "Switzerland"
我想为 GTK EntryCompletion
functionality via set_match_func
实现模糊搜索。文档非常有限。
请注意,代码使用默认值 EntryCompletion
。
该函数应如下所示:
fn custom_entry_completion(store: >k::EntryCompletion, text: &str, ti: >k::TreeIter) -> bool {
println!("{} // {:?}", text, ti);
true
}
我想把它嵌入这样的东西中:
let completion_countries = gtk::EntryCompletion::new();
completion_countries.set_match_func(custom_entry_completion);
我想要模糊匹配,但我想我会自己处理那部分。最有帮助的是匹配不区分大小写或匹配字符串的最后部分(或其他内容)的示例。我正在寻找一个很好的例子(最好没有不安全的)and/or 好的文档。
所以我需要从 TreeIter 中获取值并检查匹配是否如我所愿。因此,我的问题是如何从 TreeIter 中获取要与 text
进行比较的项目。
文档
EntryCompletionExt::get_text_column
EntryCompletionExt::get_model
TreeModelExt::get_value
glib::value
一个例子
fn custom_entry_completion(store: >k::EntryCompletion, text: &str, ti: >k::TreeIter) -> bool {
let tree_model = store.get_model().unwrap();
let text_column = store.get_text_column();
let ti_text_value = tree_model.get_value(ti, text_column);
if ti_text_value.is::<String>() {
let value = ti_text_value.get::<String>().unwrap();
println!("{:?} // {:?}", text, value);
} else {
println!("{:?} // not a string", text);
}
true
}
与 entry_completion.rs 示例一起使用时的控制台输出:
"adfs" // "France"
"adfs" // "Italy"
"adfs" // "Italy"
"adfs" // "Sweden"
"adfs" // "Sweden"
"adfs" // "Switzerland"
"adfs" // "Switzerland"
"adfssdf" // "France"
"adfssdf" // "Italy"
"adfssdf" // "Sweden"
"adfssdf" // "Switzerland"