Genie中的交换机界面如何?

时间:2016-04-06 11:12:54

标签: gtk genie

我正在尝试将一个对话框添加到一个带有精灵的小应用程序中。这是一个openfile对话框,应该在点击headerbar button时打开。

Genie缺乏示例,所以我现在正试图从vala中调整一些东西。但是,我发现的所有示例都使用了一个我无法转换为Genie的切换命令。

这是vala代码:

    public void on_open_image (Button self) {
    var filter = new FileFilter ();
    var dialog = new FileChooserDialog ("Open image",
                                        window,
                                        FileChooserAction.OPEN,
                                        Stock.OK,     ResponseType.ACCEPT,
                                        Stock.CANCEL, ResponseType.CANCEL);
    filter.add_pixbuf_formats ();
    dialog.add_filter (filter);

    switch (dialog.run ())
    {
        case ResponseType.ACCEPT:
            var filename = dialog.get_filename ();
            image.set_from_file (filename);
            break;
        default:
            break;
    }
    dialog.destroy ();
}

这就是我从前面的代码中得出的结论:

def openfile (self:Button)
    var dialog = new FileChooserDialog ("Open file",
                                    window,
                                    FileChooserAction.OPEN,
                                    Stock.OK,     ResponseType.ACCEPT,
                                    Stock.CANCEL, ResponseType.CANCEL)

    switch (dialog.run ())

    case ResponseType.ACCEPT
        var filename
        filename = dialog.get_filename ()
        image.set_from_file (filename)
        break
    default
        break

    dialog.destroy ()

它显然在case语句中抛出错误。如何在Genie中使用开关?

1 个答案:

答案 0 :(得分:1)

啊,我现在看到了。 Vala中的switch相当于case...when。上面例子中的开关是

case dialog.run()
    when ResponseType.ACCEPT
        var filename = dialog.get_filename()
        image.set_from_file(filename)
    default
        pass