require 'fox'

class Kalkulator
  include Fox
  def initialize
    @app = FXApp.new
    @main = FXMainWindow.new( @app, "Kalkulator") 
    @felt_x = lag_innputfelt("X")
    @felt_y = lag_innputfelt("Y")
    @utput  = lag_innputfelt("=")
    lag_knapperad
    FXButton.new(@main, "Avslutt", nil, @app, FXApp::ID_QUIT )    
  end
  def lag_innputfelt( merkelapp )
    ramme = FXHorizontalFrame.new( @main ) 
    FXLabel.new( ramme, merkelapp )
    FXTextField.new( ramme, 10, nil, 0, TEXTFIELD_NORMAL | JUSTIFY_RIGHT )
  end
  private :lag_innputfelt
  def lag_knapperad
    ramme = FXHorizontalFrame.new( @main ) 
    %w[ + - * / ** ].each do |tegn|      
      knapp = FXButton.new( ramme, tegn )
      knapp.connect(SEL_COMMAND) do
        beregn( tegn.intern )
      end   
    end
  end
  private :lag_knapperad
  def beregn( symbol )       
    x = @felt_x.text.to_f
    y = @felt_y.text.to_f
    resultat = x.send( symbol, y )
    @utput.text = resultat.to_s
  end
  def start
    @app.create
    @main.show  # Vis vinduet.
    @app.run    # Start GUI.
  end
end

Kalkulator.new.start
