X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=bin%2Fembrace;h=8feccd3aff578921273392d1b24a95de89dbe492;hb=e4a1763a49c6ad35ab3a93448e5aa1db8aaddead;hp=f9d00c047afd82af3d6c8d2d9b0a498c01fc61e1;hpb=76d5e549fcb9c0b316f81eb4a2a496d84f0313c7;p=embrace.git diff --git a/bin/embrace b/bin/embrace index f9d00c0..8feccd3 100755 --- a/bin/embrace +++ b/bin/embrace @@ -117,9 +117,9 @@ module Embrace @label = Evas::Text.new(evas) @objects = [@img, @label] + @objects.each { |o| add_member(o) } @img.set_color(255, 255, 255, 0) - @label.set_color(255, 255, 255, 0) @label.set_color(255, 0, 0, 0) @img.set_file(ICON_FILE) @@ -159,18 +159,6 @@ module Embrace @img = @label = @alpha_anim = nil end - def on_layer_set(layer) - @objects.each { |o| o.layer = layer } - end - - def on_stack_above(other) - @objects.each { |o| o.stack_above = other } - end - - def on_stack_below(other) - @objects.each { |o| o.stack_below = other } - end - def on_move(x, y) @objects.each { |o| o.move(x, y) } @@ -182,28 +170,6 @@ module Embrace end end - class FixedSizeArray < Array - def initialize(siz) - super - end - - def each - super { |item| yield item unless item.nil? } - end - - def delete_at(i) - self[i] = nil - end - - undef :push - undef :<< - undef :unshift - - undef :pop - undef :shift - undef :delete - end - class Container < Evas::Smart class ContainerError < StandardError; end class ContainerFullError < ContainerError; end @@ -217,20 +183,22 @@ module Embrace @bg = Evas::Rectangle.new(evas) @bg.set_color(0, 0, 0, 255) - @icons = FixedSizeArray.new(MAX_ICONS) - @about_to_add = [] + add_member(@bg) + + @icons = [] @animators = [] - @lock_count = 0 + @about_to_add = 0 + @add_lock_count = 0 end def each - @icons.each { |i| yield i unless i.nil? } + @icons.compact.each { |i| yield i } end def <<(i) Kernel.raise(ContainerFullError) if slots_left.zero? - Kernel.raise(ContainerLockedError) if @lock_count > 0 + Kernel.raise(ContainerLockedError) unless @add_lock_count.zero? i.move_relative(self, 0, 0) i.slot = next_slot @@ -245,7 +213,7 @@ module Embrace movement = Main.instance.icon_height * (slots_left - 1) - @about_to_add << i + @about_to_add += 1 move_time = 0.25 * slots_left @animators << MoveAnimator.new(move_time, movement, i) @@ -254,15 +222,11 @@ module Embrace @animators.delete(ani) @icons[i.slot] = i - # FIXME check whether we can always shift the array instead - #puts "really added #{i.label} now (slot #{i.slot})" - @about_to_add.delete(i) + @about_to_add -= 1 end end def delete(icon) - # icons that are placed above the one that's deleted need - # to be moved i = @icons.index(icon) return (block_given? ? yield : nil) if i.nil? @@ -270,25 +234,26 @@ module Embrace end def delete_at(i) + Kernel.raise(ContainerLockedError) unless @about_to_add.zero? + + # icons that are placed above the one that's deleted need + # to be moved + ar = @icons[(i + 1)..-1] + @icons[i].delete @icons.delete_at(i) - ar = @icons[i..-1].reject { |i| i.nil? } - return if ar.nil? + return if ar.empty? - @lock_count += 1 + @add_lock_count += 1 @animators << MoveAnimator.new(2, Main.instance.icon_height, *ar) @animators.last.on_finished do |ani| @animators.delete(ani) - @lock_count -= 1 + @add_lock_count -= 1 end end - def length - @icons.nitems - end - # smart callbacks def on_show @bg.show @@ -303,18 +268,6 @@ module Embrace @bg = nil end - def on_layer_set(layer) - @bg.layer = layer - end - - def on_stack_above(other) - @bg.stack_above = other - end - - def on_stack_below(other) - @bg.stack_below = other - end - def on_move(x, y) @bg.move(x, y) end @@ -325,11 +278,11 @@ module Embrace private def slots_left - MAX_ICONS - @icons.nitems - @about_to_add.length + MAX_ICONS - @icons.nitems - @about_to_add end def next_slot - @icons.nitems + @about_to_add.length + @icons.nitems + @about_to_add end end @@ -341,12 +294,12 @@ module Embrace def initialize super - self.title = "blah" + self.title = "Embrace" self.borderless = true @icon_dim = IO.read(ICON_FILE, 8, 16).unpack("NN") - self.on_resize { @container.resize(*geometry[2, 3]) } + on_resize { @container.resize(*geometry[2, 3]) } @container = Container.new(evas) @container.move(0, 0) @@ -367,6 +320,9 @@ module Embrace &method(:on_finished)) ] + s = File.expand_path("~/.e/apps/embrace/config.yaml") + @config = YAML.load(File.read(s)) + @server = nil @timer = Ecore::Timer.new(30, &method(:on_timer)) on_timer @@ -388,31 +344,7 @@ module Embrace def on_timer return unless @server.nil? - mboxes = %w{ - INBOX - Lists.ba-2005 - Lists.blackbox-devel - Lists.clc-devel - Lists.crux - Lists.cruxcon - Lists.dri-devel - Lists.dri-users - Lists.enlightenment-cvs - Lists.enlightenment-devel - Lists.hobix - Lists.mesa3d-dev - Lists.ruby-core - Lists.rubygems-devel - Lists.vim-ruby-devel - Lists.xmms2-devel - Lists.xorg - } - - s = File.expand_path("~/.e/apps/embrace/config.yaml") - - File.open(s) do |f| - @server = IMAP::Session.new(YAML.load(f), mboxes) - end + @server = IMAP::Session.new(@config) true end