def ask_for_filename domain, question, default=nil, allow_directory=false
answer = ask domain, question, default do |s|
if s =~ /(~([^\s\/]*))/
full = $1
name = $2.empty? ? Etc.getlogin : $2
dir = Etc.getpwnam(name).dir rescue nil
if dir
[[s.sub(full, dir), "~#{name}"]]
else
users.select { |u| u =~ /^#{Regexp::escape name}/ }.map do |u|
[s.sub("~#{name}", "~#{u}"), "~#{u}"]
end
end
else
Dir["#{s}*"].sort.map do |fn|
suffix = File.directory?(fn) ? "/" : ""
[fn + suffix, File.basename(fn) + suffix]
end
end
end
if answer
answer =
if answer.empty?
spawn_modal "file browser", FileBrowserMode.new
elsif File.directory?(answer) && !allow_directory
spawn_modal "file browser", FileBrowserMode.new(answer)
else
File.expand_path answer
end
end
answer
end