Хорошо, поэтому я не совсем уверен во многих вещах в Обуви, но мой метод проб и ошибок не помог мне в этом.
У меня есть класс, который выполняет какое-то вычисление, которое занимает некоторое время, и я хочу вызвать индикатор выполнения, чтобы пользователь мог посмотреть, пока он завершится. Мой вычислительно интенсивный метод дает свой процент завершения, если передан блок:
class MathyStuff
def initialize()
end
## Some expensive, time consuming method which yields it's percent complete
def expensiveMethod(&block)
0.upto(100) do |i|
0.upto(100000) do |j|
k = j;
end
yield i.to_f/100;
end
end
end
Вот что я бы хотел бы сказать в туфлях:
require 'MathyStuff.rb'
Shoes.app do
@myMathyStuff = MathyStuff.new();
button("Do expensive mathy thing...") do
window() do
@progress = progress();
@myMathyStuff.expensiveMethod() {|percent| @progress.fraction = percent;}
end
end
end
Но, похоже, это не работает. Я пробовал с / без вызова окна, я пробовал animate () различными способами, я даже пытался вызвать Thread.new и передать ему блок окна, чтобы они общались через Shoes.APPS () [0] .get / setPercent методы; кажется, ничего не работает должным образом.
Может быть, я не использую индикатор выполнения так, как он предназначен для использования. Опять же, для чего еще будет индикатор выполнения? ; -)