+ if (desc.datatype == Variant::PATH) {
+
+ /* Build a file selector button */
+
+ // Create/add controller
+ control_ui->file_button = manage(new Gtk::FileChooserButton(Gtk::FILE_CHOOSER_ACTION_OPEN));
+ control_ui->file_button->set_title(desc.label);
+
+ control_ui->pack_start (control_ui->label, true, true);
+ control_ui->pack_start (*control_ui->file_button, true, true);
+
+ // Connect signals (TODO: do this via the Control)
+ control_ui->file_button->signal_file_set().connect(
+ sigc::bind(sigc::mem_fun(*this, &GenericPluginUI::set_property),
+ desc, control_ui->file_button));
+ plugin->PropertyChanged.connect(*this, invalidator(*this),
+ boost::bind(&GenericPluginUI::property_changed, this, _1, _2),
+ gui_context());
+
+ _property_controls.insert(std::make_pair(desc.key, control_ui->file_button));
+ control_ui->file_button = control_ui->file_button;
+
+ return control_ui;
+ }
+