require 'fltk' class MainWindow < FLTK::Window def initialize super(400, 200, 'Main Window'){|win| FLTK::Pack.new(w,h){|pack| @choices = ['Hamburger', 'Ravioli', 'Pad Thai'] FLTK::Pack.new(w,20){|row| row.pack_type(FLTK::HORIZONTAL) FLTK::Box.new(200, 20, 'Choose your meal:') @dropdown = FLTK::Choice.new(100,20) row.resizable(@dropdown) @dropdown.callback do onChangeOrder end @choices.each do | item | @dropdown.add(item) end @dropdown.value(0) } @checkbox = FLTK::CheckButton.new(100,20,'Do you want fries with that?') @checkbox.callback{ onChangeOrder } box = FLTK::Box.new(w,2) box.box(FLTK::BORDER_BOX) @order = FLTK::Input.new(w, 20) @order.deactivate onChangeOrder } yield(win) } end def onChangeOrder text = "Your Order: #{@choices[@dropdown.value]} " if(@checkbox.value > 0) text += "with fries" end @order.value(text) nil end end MainWindow.new{|win| win.show() } FLTK::run()