You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.3KB

  1. require_relative '../control'
  2. require_relative '../dimensions'
  3. module DHE
  4. class Counter < Control
  5. def initialize(faceplate:, x:, y:, name:, labels:, enabled:, selection:)
  6. @name = name
  7. @slug = "counter-#{@name}"
  8. @button = Button.new(faceplate: faceplate, x: x, y: y)
  9. @label_offset = @button.radius + PADDING
  10. @labels = labels.map { |label| Label.new(faceplate: faceplate, x: x, y: y - @label_offset, text: label, size:
  11. :small) }
  12. bottom = y + (@button.y - @labels[0].top)
  13. super(faceplate: faceplate, x: x, y: y, top: @labels[0].top, right: @button.right, bottom: bottom, left:
  14. @button.left)
  15. @enabled = enabled
  16. @selection = selection
  17. end
  18. def draw(svg:, x:, y:, selection: @selection)
  19. @labels[selection - 1].draw(svg: svg, x: x, y: y - @label_offset)
  20. @button.draw(svg: svg, x: x, y: y)
  21. end
  22. def draw_faceplate(svg:)
  23. return unless @enabled
  24. draw(svg: svg, x: @x, y: @y)
  25. end
  26. def svg_files
  27. (0...@labels.size).map do |index|
  28. selection = index + 1
  29. path = faceplate.slug / "#{@slug}-#{selection}"
  30. svg_file(path: path, has_text: true) do |svg|
  31. draw_control(svg: svg, selection: selection)
  32. end
  33. end
  34. end
  35. end
  36. end