Sha256: b0ce9dcf9c58f5c099647ff1dcdf7dc523b6e41601ef74fb4df20c01efda9509

Contents?: true

Size: 1.21 KB

Versions: 30

Compression:

Stored size: 1.21 KB

Contents

require 'gtk2'

require 'rabbit/rabbit'

module Rabbit
  class CursorManager
    @@blank_cursor = nil

    attr_accessor :current
    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

    def keep(name)
      @stocks[name] ||= []
      @stocks[name].push(@current)
    end

    def restore(drawable, name)
      if name.nil?
	type = @current
      else
	type = @stocks[name].pop
      end
      drawable.cursor = type_to_cursor(type)
    end

    def update(drawable, type)
      drawable.cursor = type_to_cursor(type)
    end

    private
    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

    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
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
rabbit-2.1.3 lib/rabbit/cursor-manager.rb
rabbit-2.1.2 lib/rabbit/cursor-manager.rb
rabbit-2.1.1 lib/rabbit/cursor-manager.rb
rabbit-2.1.0 lib/rabbit/cursor-manager.rb
rabbit-2.0.9 lib/rabbit/cursor-manager.rb
rabbit-2.0.8 lib/rabbit/cursor-manager.rb
rabbit-2.0.7 lib/rabbit/cursor-manager.rb
rabbit-2.0.6 lib/rabbit/cursor-manager.rb
rabbit-2.0.5 lib/rabbit/cursor-manager.rb
rabbit-2.0.4 lib/rabbit/cursor-manager.rb
rabbit-2.0.3 lib/rabbit/cursor-manager.rb
rabbit-2.0.2 lib/rabbit/cursor-manager.rb
rabbit-2.0.1 lib/rabbit/cursor-manager.rb
rabbit-2.0.0 lib/rabbit/cursor-manager.rb
rabbit-1.0.9 lib/rabbit/cursor-manager.rb
rabbit-1.0.8 lib/rabbit/cursor-manager.rb
rabbit-1.0.7 lib/rabbit/cursor-manager.rb
rabbit-1.0.6 lib/rabbit/cursor-manager.rb
rabbit-1.0.5 lib/rabbit/cursor-manager.rb
rabbit-1.0.4 lib/rabbit/cursor-manager.rb