Sha256: 27ab1ccc0671d3a77237d86b53342730461299e5b0f17e8036b03a1894a26110
Contents?: true
Size: 1.34 KB
Versions: 53
Compression:
Stored size: 1.34 KB
Contents
#!/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, :padding => 0) do |frame| FXButton.new(frame, "Click 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, :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
Version data entries
53 entries across 53 versions & 1 rubygems