blob: 40f7689eae1b243dd40e46e55ba7f6bcbf6b21fc (
plain) (
tree)
|
|
#class Bar
# def initialize( text = '' )
# @text = text
# @text_prefix = nil
# @max = 0
# @done = 0
# @counter = 0
# @thread = nil
# @update_proc = nil
# Fm.bar_add(self)
# end
#
# def kill(evil = true)
# Fm.bar_del(self)
# Fm.force_update
#
# @thread.kill
# end
#
# def update(&block)
# if block
# @update_proc = block
# elsif @update_proc
# @update_proc.call(self)
# end
# end
#
# def set_text_prefix(text)
# @text_prefix = text
# end
# def set_text(text)
# @text_prefix = nil
# @text = text
# end
# alias text= set_text
#
# attr_accessor :thread, :counter, :max
#end
#
#class CopyBar < Bar
# def initialize( text = '' )
# super
#
# @update_proc = proc do |b|
# begin
# b.done = File.size(fname).to_f / finished
# rescue
# b.done = 0
# end
# end
# end
#end
class Bar2
def kill(evil = true)
Fm.bar_del(self)
Fm.force_update
@thread.kill
end
def set_text_prefix(text)
@text_prefix = text
end
def set_text(text)
@text_prefix = nil
@text = text
end
alias text= set_text
attr_accessor :thread, :counter, :max
def done
if @counter.is_a? MutableNumber
@counter.value.to_f / @max
else
0
end
end
def update() end
def text
if @text_prefix
"#{@text_prefix} #{(@counter.value.to_f * 10000/ @max).round.to_f/100}%"
elsif @text
@text
else
""
end
end
end
class CopyOrMoveBar < Bar2
def initialize(files, path)
path = path.path unless path.is_a? String
Fm.bar_add(self)
log([files, path])
@thread = Thread.new do
begin
for file in files
file = file.path unless file.is_a? String
if File.exists?(file)
run_operation(file, path)
end
end
rescue
log $!
log $!.backtrace
ensure
kill(false)
end
end
@thread.priority = Fm::COPY_PRIORITY
end
end
class CopyBar2 < CopyOrMoveBar
def run_operation(file, path)
if File.directory?(file)
FileUtils.cp_r_in_bar(self, file, path)
else
FileUtils.cp_in_bar(self, file, path)
end
end
end
class MoveBar2 < CopyOrMoveBar
def run_operation(file, path)
FileUtils.mv_in_bar(self, file, path)
end
end
|