2

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

即使我将LocalOnly=falsehttp://.... uri 设置并粘贴到文件选择器内的文本框中,我也无法获得原始条目。本地目录总是附加在文本前面。

4

3 回答 3

0

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

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

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

于 2009-04-21T07:55:22.827 回答
0

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

于 2009-05-03T21:55:16.067 回答
0

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

于 2009-05-04T11:17:04.733 回答