Sha256: aa6fcab88ae66afc7db462bd2943d4ca6b55b5e25bdad9cbf8e24055eb79ef7d
Contents?: true
Size: 1.37 KB
Versions: 18
Compression:
Stored size: 1.37 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_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
Version data entries
18 entries across 18 versions & 1 rubygems