[fxruby-users] No more GUI update after FXRuby app put in thebackground?
Philippe Lang
philippe.lang at attiksystem.ch
Tue Jan 13 04:42:04 EST 2009
fxruby-users-bounces at rubyforge.org wrote:
> Hi,
>
> Here is a small program that represents the GUI I use for deploying
> FXRuby applications: a small window, with a progress bar in it.
>
> It works fine, as long as the application is not put in the
> background.
> Then the GUI stops being updated, even if the application is put back
> to the foreground again.
>
> Is there anything I can do for this?
Hi again,
I found the solution, I hope it can help someone: the trick is to call
"$app.runWhileEvents" now and then, to give a chance to fox to process
OS events... I should have remembered that before... !
-------------------
#!/usr/bin/ruby
require 'fox16'
include Fox
class MyWindow < FXMainWindow
def initialize(app, title, icon=nil, miniIcon=nil, opts=DECOR_ALL,
x=0, y=0, width=0, height=0, padLeft=0, padRight=0, padTop=0,
padBottom=0, hSpacing=4, vSpacing=4)
super
@bar = FXProgressBar.new(self, nil, 0,
PROGRESSBAR_PERCENTAGE|LAYOUT_FILL_X)
@label = FXLabel.new(self, "")
end
def deploy
setTotal(100)
setProgress(0, "Step 0")
sleep 1
setProgress(10, "Step 1")
sleep 1
setProgress(20, "Step 2")
sleep 1
setProgress(30, "Step 3")
sleep 1
setProgress(40, "Step 4")
sleep 1
setProgress(50, "Step 5")
sleep 1
setProgress(60, "Step 6")
sleep 1
setProgress(70, "Step 7")
sleep 1
setProgress(80, "Step 8")
sleep 1
setProgress(90, "Step 9")
sleep 1
setProgress(100, "Step 10")
end
def setTotal(progress_total)
@bar.total = progress_total
end
def setProgress(progress_value, progress_text)
@bar.progress = progress_value
@label.text = progress_text
layout
$app.runWhileEvents
end
end
class MyApp < FXApp
def initialize(appName="Application", vendorName="FoxDefault")
super
@window = MyWindow.new(self, "Deployment", nil, nil, DECOR_ALL,
0, 0, 300, 40)
end
def create
begin
super
@window.show(PLACEMENT_SCREEN)
@window.deploy
@window.close
rescue Exception => e
end
end
end
# Main program
GC.disable
$app = MyApp.new()
$app.disableThreads
$app.create
More information about the fxruby-users
mailing list