Я нашел решение / взломать все-таки (в C #):
private string _extractUri(Widget wi) {
if (wi is Entry)
return ((wi as Entry).Text);
else if (wi is Container) {
foreach (Widget w in (wi as Container).Children) {
string x = _extractUri(w);
if (x!=null)
return x;
}
}
return null;
}
Я не уверен, всегда ли это безопасно, но оно работало для стандартного FileChooserDialog. Он вернет исходную строку из поля ввода - даже если искажены стандартные результаты Uri / File.