class Rabbit::CursorManager

Attributes

current[RW]

Public Class Methods

new() click to toggle source
# File lib/rabbit/cursor-manager.rb, line 10
def initialize
  @stocks = {}
  @current = nil
  @blank_cursor = blank_cursor
  @pencil_cursor = Gdk::Cursor.new(Gdk::Cursor::PENCIL)
  @hand_cursor = Gdk::Cursor.new(Gdk::Cursor::HAND1)
end

Public Instance Methods

keep(name) click to toggle source
# File lib/rabbit/cursor-manager.rb, line 18
def keep(name)
  @stocks[name] ||= []
  @stocks[name].push(@current)
end
restore(drawable, name) click to toggle source
# File lib/rabbit/cursor-manager.rb, line 23
def restore(drawable, name)
  if name.nil?
    type = @current
  else
    type = @stocks[name].pop
  end
  drawable.cursor = type_to_cursor(type)
end
update(drawable, type) click to toggle source
# File lib/rabbit/cursor-manager.rb, line 32
def update(drawable, type)
  drawable.cursor = type_to_cursor(type)
end

Private Instance Methods

blank_cursor() click to toggle source
# File lib/rabbit/cursor-manager.rb, line 49
def blank_cursor
  if @@blank_cursor.nil?
    source = Gdk::Pixmap.new(nil, 1, 1, 1)
    mask = Gdk::Pixmap.new(nil, 1, 1, 1)
    gc = Gdk::GC.new(source)
    fg = gc.foreground
    bg = gc.background
    @@blank_cursor = Gdk::Cursor.new(source, mask, fg, bg, 1, 1)
  end
  @@blank_cursor
end
type_to_cursor(type) click to toggle source
# File lib/rabbit/cursor-manager.rb, line 37
def type_to_cursor(type)
  if type.nil?
    nil
  else
    name = "@#{type}_cursor"
    unless instance_variable_defined?(name)
      raise UnknownCursorTypeError.new(type)
    end
    instance_variable_get(name)
  end
end