2016-04-06 2 views
0

Я пытаюсь добавить диалог в небольшое приложение с джином. Это диалоговое окно openfile, которое должно открываться после нажатия кнопки headerbar button.Как бы интерфейс интерфейса выглядел в Genie?

Примеры отсутствуют в Genie, поэтому я сейчас пытаюсь что-то приспособить от vala. Однако все примеры, которые я нашел, использовали команду switch, которую я не могу перевести на Genie.

Это код Вала:

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

Это явно выдает ошибку на сазе. Как использовать переключатель в Genie?

+0

Думают о 'switch' как стенография для' если-то еще if' цепи, сравнивая переменную после 'switch' к каждому' значению case'. 'break' выходит из текущего корпуса тела; если у вас нет 'break' в конце, он перейдет к следующему' case'. Я не знаю, Genie, поэтому я не знаю, что такое эквивалент. – andlabs

ответ

1

А, я вижу сейчас. Эквивалент switch в Вала - case...when. Переключатель в вашем верхнем примере будет

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

Пустой оператор будет использовать ключевое слово 'pass', но он не нужен. Почему по умолчанию ничего не делает? Просто пропустите это. – AlThomas

+0

@AlThomas Чтобы сделать полностью буквальный перевод, ничего не пропущенного, чтобы продемонстрировать. Благодарю. – andlabs

Смежные вопросы