The clock is now skinnable.
[kaya.git] / lib / item.rb
blob432f3775ee5f56dc7d66115208b3294d580e9911
1 require 'qtutils'
3 class Item < Qt::GraphicsPixmapItem
4   attr_reader :name, :item
5   attr_reader :opacity
6   
7   # name is whatever information the caller needs
8   # to recreate this piece with a different size
9   # 
10   def initialize(name, pixmap, parent)
11     super pixmap, parent
12     @name = name
13     @opacity = 1.0
14   end
15   
16   def paint(p, options, widget)
17     p.saving do |p|
18       p.opacity = @opacity
19       super p, options, widget
20     end
21   end
22   
23   def opacity=(value)
24     @opacity = value
25     update
26   end
27   
28   def remove
29     scene.remove_item self
30   end
31 end
33 module ItemUtils
34   BACKGROUND_ZVALUE = -10
35   TEMP_ZVALUE = 10
36   
37   def create_item(key, pix, opts = {})
38     name = opts[:name] || key.to_s
39     item = Item.new(name, pix, self)
40     item.pos = opts[:pos] || Qt::PointF.new(0, 0)
41     item.z_value = opts[:z] || 0
42     item.visible = false if opts[:hidden]
43     item
44   end
45   
46   def destroy_item(item)
47     scene.remove_item item
48   end
49   
50   def raise(item)
51     item.z_value = TEMP_ZVALUE
52   end
53   
54   def lower(item)
55     item.z_value = 0
56   end
57 end