代码之家  ›  专栏  ›  技术社区  ›  viraptor

GTK文件选择器对话框中的HTTP URI

  •  2
  • viraptor  · 技术社区  · 16 年前

    GTKγ能 FileChooserDialog 是否用作统一文件/uri对话框?我希望它接受http/https/ftp uris,而不“重写”它们(预先准备本地目录)。

    即使我设定 LocalOnly=false 并粘贴一个http://在文件选择器内的文本框中,我无法获取原始条目。本地目录总是在文本前面。

    3 回复  |  直到 16 年前
        1
  •  0
  •   unwind    16 年前

    我做过一些研究,我认为这是不可能的。至少没有直接的本地c gtk+api,这是我测试的。

    在我的测试中,我总是要么把本地目录的路径预先设置到我在对话框中输入的http://uri,要么返回(空)。我确实打电话给 get_uri() 方法,不仅仅是 get_filename () .

    我还快速地看了一眼,作为参考, GIMP 应用程序的文件菜单。正如您可能知道的,gimp在gtk+中提供了g,因此有时它可以用作参考,以了解如何使用工具箱。gimp不尝试支持在文件选择器对话框中输入的uri,而是有一个专用的 Open Location 命令,打开一个简单的对话框,其中只包含一个gtkentry。

        2
  •  0
  •   Vlagged    16 年前

    我想你需要设置 local-only 然后使用gio get_file ()/get_files () 调用返回可通过 GIO 文件api,因此通过 gvfs .

        3
  •  0
  •   viraptor    16 年前

    我找到了一个解决方案/黑客(在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;
    }
    

    我不确定这是否总是安全的,但它适用于标准的文件选择器对话框。它将从输入字段返回原始字符串-即使标准的URI/文件结果被破坏。