projects
/
embrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fade out icons before removing them.
[embrace.git]
/
bin
/
embrace
diff --git
a/bin/embrace
b/bin/embrace
index bfd91c9187e631951842089f2910c4b569019d9a..f7ae62b0cf9ac72c17113b558c37a80e033e568d 100755
(executable)
--- a/
bin/embrace
+++ b/
bin/embrace
@@
-83,9
+83,20
@@
module Embrace
class AlphaAnimator < ZeroToOneAnimator
def initialize(duration, *objects)
super(duration) do |v|
class AlphaAnimator < ZeroToOneAnimator
def initialize(duration, *objects)
super(duration) do |v|
- objects.each { |o| o.alpha = (255 * v).to_i }
+ a = compute_alpha(v)
+ objects.each { |o| o.alpha = a }
end
end
end
end
+
+ def compute_alpha(v)
+ (255 * v).to_i
+ end
+ end
+
+ class InverseAlphaAnimator < AlphaAnimator
+ def compute_alpha(v)
+ super((1.0 - v).abs)
+ end
end
class MoveAnimator < ZeroToOneAnimator
end
class MoveAnimator < ZeroToOneAnimator
@@
-105,6
+116,16
@@
module Embrace
end
class MailboxIcon < Evas::Smart
end
class MailboxIcon < Evas::Smart
+ class FadeOutFinishedEvent < Ecore::Event
+ attr_reader :icon
+
+ def initialize(icon)
+ super()
+
+ @icon = icon
+ end
+ end
+
attr_accessor :slot
def initialize(evas, label)
attr_accessor :slot
def initialize(evas, label)
@@
-121,6
+142,7
@@
module Embrace
@objects = [@img, @label]
@objects.each { |o| add_member(o) }
@objects = [@img, @label]
@objects.each { |o| add_member(o) }
+ set_color(255, 255, 255, 0)
@img.set_color(255, 255, 255, 0)
@label.set_color(255, 0, 0, 0)
@img.set_color(255, 255, 255, 0)
@label.set_color(255, 0, 0, 0)
@@
-133,22
+155,34
@@
module Embrace
resize(*@img.get_size)
end
resize(*@img.get_size)
end
- # smart callbacks
- def on_show
- @objects.each { |o| o.show }
+ def fade_in
+ show
- @alpha_anim ||= AlphaAnimator.new(2,
@img, @label
)
+ @alpha_anim ||= AlphaAnimator.new(2,
self
)
@alpha_anim.on_finished { @alpha_anim = nil }
end
@alpha_anim.on_finished { @alpha_anim = nil }
end
- def on_hide
+ def fade_out
+ @alpha_anim ||= InverseAlphaAnimator.new(2, self)
+ @alpha_anim.on_finished do
+ @alpha_anim = nil
+ FadeOutFinishedEvent.raise(self)
+ end
+ end
+
+ # smart callbacks
+ def smart_show
+ @objects.each { |o| o.show }
+ end
+
+ def smart_hide
@objects.each { |o| o.hide }
@alpha_anim && @alpha_anim.delete
@alpha_anim = nil
end
@objects.each { |o| o.hide }
@alpha_anim && @alpha_anim.delete
@alpha_anim = nil
end
- def
on
_delete
+ def
smart
_delete
@objects.each { |o| o.delete }
@objects.clear
@objects.each { |o| o.delete }
@objects.clear
@@
-157,15
+191,19
@@
module Embrace
@img = @label = @alpha_anim = nil
end
@img = @label = @alpha_anim = nil
end
- def
on
_move(x, y)
+ def
smart
_move(x, y)
@objects.each { |o| o.move(x, y) }
@label.center(self)
end
@objects.each { |o| o.move(x, y) }
@label.center(self)
end
- def
on
_resize(w, h)
+ def
smart
_resize(w, h)
@img.resize(w, h)
end
@img.resize(w, h)
end
+
+ def smart_color_set(r, g, b, a)
+ @objects.each { |o| o.alpha = a }
+ end
end
class Container < Evas::Smart
end
class Container < Evas::Smart
@@
-177,7
+215,7
@@
module Embrace
super
@bg = Evas::Rectangle.new(evas)
super
@bg = Evas::Rectangle.new(evas)
- @bg.set_color(0, 0, 0,
255
)
+ @bg.set_color(0, 0, 0,
8
)
add_member(@bg)
add_member(@bg)
@@
-186,6
+224,11
@@
module Embrace
@about_to_add = 0
@add_lock_count = 0
@about_to_add = 0
@add_lock_count = 0
+
+ @handlers = [
+ Ecore::EventHandler.new(MailboxIcon::FadeOutFinishedEvent,
+ &method(:on_icon_fade_out_finished))
+ ]
end
def can_add?
end
def can_add?
@@
-203,7
+246,7
@@
module Embrace
i.move_relative(self, 0, 0)
i.slot = next_slot
i.clip = self
i.move_relative(self, 0, 0)
i.slot = next_slot
i.clip = self
- i.
show
+ i.
fade_in
# check whether we need to need to move this icon
if slots_left == 1
# check whether we need to need to move this icon
if slots_left == 1
@@
-237,16
+280,23
@@
module Embrace
Kernel.raise(ContainerLockedError) unless @about_to_add.zero?
Kernel.raise(ContainerLockedError) unless @add_lock_count.zero?
Kernel.raise(ContainerLockedError) unless @about_to_add.zero?
Kernel.raise(ContainerLockedError) unless @add_lock_count.zero?
- # icons that are placed above the one that's deleted need
- # to be moved
- ar = @icons[(i + 1)..-1]
+ @add_lock_count += 1
+ @icons[i].fade_out
+ end
- @icons[i].delete
+ def on_icon_fade_out_finished(ev)
+ i = @icons.index(ev.icon)
+ ev.icon.delete
@icons.delete_at(i)
@icons.delete_at(i)
- return if ar.empty?
+ # icons that are placed above the one that's deleted need
+ # to be moved. check whether are there any first
+ if i == @icons.length
+ @add_lock_count -= 1
+ return
+ end
- @add_lock_count += 1
+ ar = @icons[i..-1]
@animators << MoveAnimator.new(2, Main.instance.icon_height, *ar)
@animators.last.on_finished do |ani|
@animators << MoveAnimator.new(2, Main.instance.icon_height, *ar)
@animators.last.on_finished do |ani|
@@
-256,24
+306,24
@@
module Embrace
end
# smart callbacks
end
# smart callbacks
- def
on
_show
+ def
smart
_show
@bg.show
end
@bg.show
end
- def
on
_hide
+ def
smart
_hide
@bg.hide
end
@bg.hide
end
- def
on
_delete
+ def
smart
_delete
@bg.delete
@bg = nil
end
@bg.delete
@bg = nil
end
- def
on
_move(x, y)
+ def
smart
_move(x, y)
@bg.move(x, y)
end
@bg.move(x, y)
end
- def
on
_resize(w, h)
+ def
smart
_resize(w, h)
@bg.resize(w, h)
end
@bg.resize(w, h)
end
@@
-295,6
+345,7
@@
module Embrace
def initialize
super
def initialize
super
+ self.has_alpha = true
self.title = "Embrace"
self.borderless = true
self.title = "Embrace"
self.borderless = true