2016-04-06 17 views
0

Ich versuche, einen Dialog zu einer kleinen Anwendung mit Genie hinzuzufügen. Es ist ein Openfile-Dialog, der beim Klicken in eine headerbar button öffnen sollte.Wie würde eine Switch-Schnittstelle in Genie aussehen?

Beispiele fehlen in Genie, also versuche ich jetzt, etwas von Vala anzupassen. Alle Beispiele, die ich gefunden habe, haben jedoch einen Switch-Befehl verwendet, den ich nicht in Genie übersetzen kann.

Dies ist der vala Code:

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

Und das ist, was ich aus dem vorherigen Code ausgearbeitet:

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

Es wirft offensichtlich einen Fehler bei der Case-Anweisung. Wie benutzt man den Schalter in Genie?

+0

Denken Sie an 'switch' als Kurzschrift für eine' if-else if' Kette, Vergleichen der Variablen nach dem 'switch' zu jedem' case' Wert. 'break' verlässt den aktuellen Fallkörper; Wenn Sie am Ende keine "Pause" haben, wird es zum nächsten "Fall" durchgehen. Ich kenne Genie nicht, also weiß ich nicht, was das Äquivalent ist. – andlabs

Antwort

1

Ah, ich sehe jetzt. Das Äquivalent zu switch in Vala ist case...when. Der Schalter in Ihrem oberen Beispiel wäre

+0

Die leere Anweisung würde das Schlüsselwort 'pass' verwenden, wird aber nicht benötigt. Warum haben Sie einen Standard, der nichts tut? Lass es einfach weg. – AlThomas

+0

@AlThomas Um eine voll wörtliche Übersetzung mit nichts ausgelassen, um zu demonstrieren. Vielen Dank. – andlabs