Я пытаюсь создать окно с двумя FileChooserButtons
. Первый должен помочь пользователю выбрать каталог, поэтому я использую действие Select_folder; вторая - позволить пользователю выбрать файл.Синтаксис signal.connect
Проблема в том, что я хотел, чтобы второй изменил текущую папку в зависимости от выбора, сделанного пользователем в первом.
Моя первоначальная идея состояла в том, чтобы использовать Signal.connect, как в строке:
Signal.connect(chooser1, "selection_changed", folder_changed, null)
Однако это становится мне следующее сообщение об ошибке компиляции:
exercise4_1.gs:62.55-62.68: error: Cannot create delegate without target for instance method or closure
Signal.connect(chooser1, "selection_changed", folder_changed, null)
^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)
Я также попытался добавить (callback) folder_changed в соответствии с этим mail communication в списке рассылки vala, но безрезультатно.
Это весь код:
[indent=4]
uses
Gtk
GLib
class TestWindow : Window
chooser1:Gtk.FileChooserButton
chooser2:Gtk.FileChooserButton
construct()
// General characteristics of the window
title = "File chooser"
window_position = WindowPosition.CENTER
destroy.connect(Gtk.main_quit)
chooser1 = new FileChooserButton(
"Choose a Folder",
FileChooserAction.SELECT_FOLDER
)
chooser2 = new FileChooserButton(
"Chooser a Folder",
FileChooserAction.OPEN
)
chooser1.set_current_folder(Environment.get_home_dir())
chooser2.set_current_folder(Environment.get_home_dir())
Signal.connect(chooser1, "selection_changed", folder_changed, null)
var box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0)
box.pack_start(chooser1, true, true,0)
box.pack_start(chooser2, true, true,0)
add(box)
def folder_changed()
var folder = chooser1.get_filename()
chooser2.set_current_folder(folder)
init
Gtk.init (ref args)
var test = new TestWindow()
test.show_all()
Gtk.main()
Это, конечно, мое отсутствие понимания этого конкретного синтаксиса, но так как я застрял, я был бы признателен за указатель, чтобы получить меня из него.
В качестве дополнительного, менее важного момента, какова наилучшая практика: разделять и отступать длинные строки или разрешать их в коде?