HTTP uri в GTK# FileChooserDialog

Можно ли использовать FileChooserDialog GTK# как единый диалог файла/URI? Я бы хотел, чтобы он принимал URI http/https/ftp без их «перезаписи» (предваряя локальный каталог).

Даже если я установлю LocalOnly=false и вставлю http://.... uri в текстовое поле внутри средства выбора файлов, я не смогу получить исходную запись. Локальный каталог всегда добавляется к тексту.


person viraptor    schedule 17.04.2009    source источник


Ответы (3)


Я провел некоторые исследования, и я не думаю, что это возможно. По крайней мере, не с прямым нативным C GTK+ API, который я тестировал.

В моем тестировании я всегда либо получал путь к локальному каталогу перед http:// URI, который я ввел в диалоговом окне, либо возвращал (null). Я вызвал метод get_uri(), а не только get_filename().

Я также бегло просмотрел в качестве справки меню «Файл» приложения GIMP. Как вы, наверное, знаете, GIMP предоставляет G в GTK+, поэтому его иногда можно использовать в качестве справочного материала для идей о том, как использовать инструментарий. GIMP не пытается поддерживать URI, введенные в диалоговом окне выбора файла, вместо этого он имеет выделенное Открыть местоположение, которая открывает простой диалог только с GtkEntry.

person unwind    schedule 21.04.2009

Я думаю, вам нужно установить заголовок local-only в FALSE, а затем используйте GIO get_file()/get_files(), которые возвращают GFile*, доступный через GIO File API и, следовательно, через gvfs.

person Vlagged    schedule 03.05.2009

Я все-таки нашел решение/хак (на С#):

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 искажены.

person viraptor    schedule 04.05.2009