class Airplay::CLI::ImageViewer
Attributes
devices[R]
options[R]
Public Class Methods
new(devices, options = {})
click to toggle source
# File lib/airplay/cli/image_viewer.rb, line 6 def initialize(devices, options = {}) @devices = Array(devices) @options = options end
Public Instance Methods
interactive(files)
click to toggle source
# File lib/airplay/cli/image_viewer.rb, line 26 def interactive(files) numbers = Array(0...files.count) transition = "None" i = 0 loop do view(files[i], transition) case read_char when "\e[C" # Right Arrow i = i + 1 > numbers.count - 1 ? 0 : i + 1 transition = "SlideLeft" when "\e[D" # Left Arrow i = i - 1 < 0 ? numbers.count - 1 : i - 1 transition = "SlideRight" else break end end end
slideshow(files)
click to toggle source
# File lib/airplay/cli/image_viewer.rb, line 18 def slideshow(files) puts "Autoplay every #{options[:wait]}" files.each do |file| view(file) sleep options[:wait] end end
view(file, transition = "SlideLeft")
click to toggle source
# File lib/airplay/cli/image_viewer.rb, line 11 def view(file, transition = "SlideLeft") puts "Showing #{file}" devices.each do |device| device.view(file, transition: transition) end end
Private Instance Methods
read_char()
click to toggle source
# File lib/airplay/cli/image_viewer.rb, line 49 def read_char STDIN.echo = false STDIN.raw! input = STDIN.getc.chr if input == "\e" then input << STDIN.read_nonblock(3) rescue nil input << STDIN.read_nonblock(2) rescue nil end ensure STDIN.echo = true STDIN.cooked! return input end