2016-04-06 12 views
0

Genie ile küçük bir uygulamaya bir iletişim kutusu eklemeye çalışıyorum. headerbar button'a tıklandığında açılması gereken bir açık dosya iletişim kutusu.Genie'de bir anahtar arabirimi nasıl görünür?

Genie'de örnekler eksiktir, bu yüzden şimdi valadan bir şeyleri uyarlamaya çalışıyorum. Ancak, bulduğum tüm örnekler Genie'ye çeviri yapamadığım bir geçiş komutu kullandı.

Bu

vala kodudur:

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(); 
} 

Ve bu önceki koddan çalıştı budur:

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() 

Açıkçası case ifadesi de hata verir. Genie'de anahtar nasıl kullanılır?

+0

Think olacaktır. "break" mevcut durum gövdesinden çıkar; Sonunda 'break' yoksa, sonraki 'case''e düşer. Genie'yi tanımıyorum, bu yüzden eşdeğerinin ne olduğunu bilmiyorum. – andlabs

cevap

1

Şimdi görüyorum. Vala'daki switch eşdeğeri case...when'dur. Üst örnekte anahtar her `case` değerine` switch` sonra değişken karşılaştırılması, bir 'ise-her if` zinciri için kısaltma olarak `switch` arasında

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

Boş deyim, "pass" anahtar sözcüğünü kullanır, ancak gerekli değildir. Neden hiçbir şey yapmayan bir varsayılan var? Sadece atla. – AlThomas

+0

@AlThomas Göstermek için hiçbir şey atlanmamış, tam anlamıyla çeviri yapmak. Teşekkürler. – andlabs