Skip to content
Snippets Groups Projects
Commit 4e0db2b5 authored by Lars Kanis's avatar Lars Kanis
Browse files

Add simple example with thread and runOnUiThread usage.

parent 5144699f
No related branches found
No related tags found
No related merge requests found
......@@ -128,6 +128,7 @@ examples/textedit/commands.rb
examples/textedit/helpwindow.rb
examples/textedit/prefdialog.rb
examples/textedit/textedit.rb
examples/thread.rb
examples/unicode.rb
ext/fox16_c/FXRbApp.cpp
ext/fox16_c/FXRbDataTarget.cpp
......
#!/usr/bin/env ruby
require 'fox16'
class ThreadedWindow < Fox::FXMainWindow
include Fox
def initialize(app)
# Call the base class initializer first
super(app, "Threaded Widget Test", :opts => DECOR_ALL, width: 200, height: 500)
@vframe = FXVerticalFrame.new(self,
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0) do |frame|
FXButton.new(frame, "Klick to add", opts: FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X) do |button|
button.connect(SEL_COMMAND, method(:on_button_clicked))
end
end
end
def on_button_clicked(sender, sel, ptr)
FXHorizontalFrame.new(@vframe,
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 10) do |frame|
label = FXLabel.new frame, "..."
Thread.new do
50.times do |seconds|
runOnUiThread do
label.text = "#{(50 - seconds)/10.0} seconds to remove"
end
sleep 0.1
end
runOnUiThread do
@vframe.removeChild(frame)
@vframe.create; @vframe.show; @vframe.recalc
end
end
end
@vframe.create; @vframe.show; @vframe.recalc
end
# Create and show this window
def create
super
show(PLACEMENT_SCREEN)
end
end
if __FILE__ == $0
application = Fox::FXApp.new("ThreadApp", "FoxTest")
ThreadedWindow.new(application)
application.create
application.run
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment