我正在尝试将一个对话框添加到一个带有精灵的小应用程序中。这是一个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中使用开关?
答案 0 :(得分:1)
switch
相当于case...when
。上面例子中的开关是
case dialog.run()
when ResponseType.ACCEPT
var filename = dialog.get_filename()
image.set_from_file(filename)
default
pass