Хорошо, поэтому я не совсем уверен во многих вещах в Shoes, но мой метод проб и ошибок пока не помог мне в этом.
У меня есть класс, который выполняет какие-то вычисления, которые требуют времени, и я хочу показать пользователю индикатор выполнения, пока он завершится. Мой метод с интенсивными вычислениями дает процент завершения, если передан блок:
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 методы; вроде ничего не работает должным образом.
Может быть, я использую индикатор выполнения не так, как задумано. Опять же, для чего еще нужен индикатор выполнения? ;-)