GTU中的HTTP uri#FileChooserDialog

时间:2009-04-17 16:15:02

标签: file dialog gtk

GTK#的FileChooserDialog可以用作统一文件/ URI对话框吗?我希望它接受http / https / ftp URI而不“重写”它们(在添加本地目录之前)。

即使我设置LocalOnly=false并将http:// .... uri粘贴到filechooser内的文本框中,我也无法获得原始条目。本地目录始终附加在文本中。

3 个答案:

答案 0 :(得分:0)

我做了一些研究,我认为这不可行。至少没有使用直接原生C GTK + API,这是我测试过的。

在我的测试中,我总是将本地目录的路径添加到我在对话框中输入的http:// URI之前,或者我回来了(null)。我确实调用了get_uri()方法,而不仅仅是get_filename()

我还在GIMP应用程序的“文件”菜单中快速查看了一下作为参考。您可能知道,GIMP在GTK +中提供G,因此它有时可以作为有关如何使用该工具包的想法的参考。 GIMP不会尝试支持在文件选择器对话框中输入的URI,而是使用专用的Open Location命令,只需一个GtkEntry即可打开一个简单的对话框。

答案 1 :(得分:0)

我认为您需要将local-only设置为FALSE,然后使用GIO get_file ()/get_files ()调用返回通过GIO文件API访问的GFile *,从而通过gvfs

答案 2 :(得分:0)

毕竟我找到了一个解决方案/ hack(在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结果被破坏。