class Quadtone::Tools::Init

Public Instance Methods

get_inks() click to toggle source
# File lib/quadtone/tools/init.rb, line 51
def get_inks
  @inks = prompt('Inks', @printer.inks, @printer.inks.join(','))
  @inks = [@inks] unless @inks.kind_of?(Array)
end
get_medium() click to toggle source
# File lib/quadtone/tools/init.rb, line 38
def get_medium
  media = [
    'Epson Velvet Fine Art',
    'Epson Ultra Premium Presentation',
    'Epson Premium Presentation',
    'Epson Premium Luster',
    'Hahnemuhle Bamboo',
    'Southworth Antique Laid',
    'Crane Museo',
  ]
  @medium = prompt('Media', media, media[0])
end
get_printer() click to toggle source
# File lib/quadtone/tools/init.rb, line 21
def get_printer
  printers = CupsPrinter.get_all_printer_names.map { |n| Printer.new(n) }.select(&:quadtone?)
  raise "No quadtone printers" if printers.empty?
  @printer = prompt('Printer', printers, printers[0]) { |p| p.name }
end
get_printer_options() click to toggle source
# File lib/quadtone/tools/init.rb, line 27
def get_printer_options
  @printer_options = {}
  @printer.options.each do |name, option|
    if Printer::ImportantOptions.include?(name)
      choices = option.choices.map { |c| c.choice }
      default = option.choices.find { |c| c.choice == option.default_choice }
      @printer_options[name] = prompt(name, choices, default)
    end
  end
end
load_profile() click to toggle source
# File lib/quadtone/tools/init.rb, line 7
def load_profile
  false
end
prompt(label, values, default=nil) { |value| ... } click to toggle source
# File lib/quadtone/tools/init.rb, line 56
def prompt(label, values, default=nil, &block)
  choices = {}
  values.each_with_index { |value, i| choices[i + 1] = value }
  STDERR.puts
  STDERR.puts "#{label}:"
  choices.each { |i, value| STDERR.puts '%2d. %s' % [i, block_given? ? yield(value) : value] }
  STDERR.print "Choice" + (default ? " [#{block_given? ? yield(default) : default}]" : '') + "? "
  selections = STDIN.gets.chomp
  if selections.empty?
    default
  else
    selections = selections.split(',').map(&:to_i)
    case selections.length
    when 0
      default
    when 1
      choices[selections.first]
    else
      selections.map { |s| choices[s] }
    end
  end
end
run(*args) click to toggle source
# File lib/quadtone/tools/init.rb, line 11
def run(*args)
  get_printer
  get_printer_options
  get_inks
  get_medium
  profile = Profile.new(printer: @printer, printer_options: @printer_options, inks: @inks, medium: @medium)
  profile.save
  ;;warn "Created profile #{profile.name.inspect}"
end