class Fidgit::ColorPicker

Constants

CHANNELS
DEFAULT_CHANNEL_NAMES
INDICATOR_HEIGHT

Public Class Methods

new(options = {}, &block) click to toggle source

@param (see Composite#initialize) @option (see Composite#initialize)

Calls superclass method
# File lib/fidgit/elements/color_picker.rb, line 27
def initialize(options = {}, &block)
  options = {
    padding: 0,
    spacing: 0,
    channel_names: DEFAULT_CHANNEL_NAMES,
    color: default(:color),
    indicator_height: default(:indicator_height),
  }.merge! options

  @color = options[:color].dup
  @indicator_height = options[:indicator_height]

  super(options)

  slider_width = width
  vertical do
    @sliders = {}
    CHANNELS.each_with_index do |channel, i|
      @sliders[channel] = slider(value: @color.send(channel), range: 0..255, width: slider_width,
                                 tip: options[:channel_names][i]) do |sender, value|
        @color.send "#{channel}=", value
        @indicator.background_color = @color
        publish :changed, @color.dup
      end
    end

    @indicator = label '', background_color: @color, width: slider_width, height: @indicator_height
  end
end

Public Instance Methods

color() click to toggle source
# File lib/fidgit/elements/color_picker.rb, line 12
def color; @color.dup; end
color=(value) click to toggle source
# File lib/fidgit/elements/color_picker.rb, line 14
def color=(value)
  @color = value.dup
  CHANNELS.each do |channel|
    @sliders[channel].value = @color.send channel
  end

  publish :changed, @color.dup

  value
end

Protected Instance Methods

post_init_block(&block) click to toggle source

Use block as an event handler.

# File lib/fidgit/elements/color_picker.rb, line 59
def post_init_block(&block)
  subscribe :changed, &block
end