-
Notifications
You must be signed in to change notification settings - Fork 89
A File Chooser for Ruby Processing
Martin Prout edited this page Aug 18, 2013
·
13 revisions
Until I get round to implementing a file chooser library here is jruby example you might like to use in ruby-processing.
require 'rbconfig'
require 'pathname'
System = Java::JavaLang::System
JFile = Java::JavaIo::File
JXChooser = Java::javax::swing::JFileChooser
class ImageFilter < Java::javax::swing::filechooser::FileFilter
def accept fobj
return [".png",".jpg"].include? File.extname(fobj.to_s).downcase
return fobj.isDirectory
end
def getDescription
"Image Files"
end
end
# Detect OS
OS = case RbConfig::CONFIG['host_os']
when /darwin/ then :mac
when /mswin|mingw/ then :windows
else
:unix
end
# Asks the user to choose an editor.
# Returns either a Pathname object or nil (if canceled)
def pickImage
# Create a FileChooser
fc = JXChooser.new("Image Chooser")
fc.set_dialog_title("Please select an image")
fc.setFileFilter ImageFilter.new
if :mac == OS
fc.setCurrentDirectory(JFile.new(System.getProperty("user.home") << "/Pictures"))
elsif :windows == OS
fc.setCurrentDirectory(JFile.new(System.getProperty("user.dir")))
else
fc.setCurrentDirectory(JFile.new(System.getProperty("user.home")))
end
success = fc.show_open_dialog(nil)
if success == JXChooser::APPROVE_OPTION
return Pathname.new(fc.get_selected_file.get_absolute_path)
else
nil
end
end
puts "The user picked: #{pickImage}"
# EOF