Shoes.app :title => 'Timer',
  :width => 200,
  :height => 120,
  :resizable => false do

  @seconds = 0
  @paused = false
  background '#222'..'#aaa'

  def display_time
    @display.clear do
      title "%02d:%02d:%02d" % [
        @seconds / (60*60),
        @seconds / 60 % 60,
        @seconds % 60
      ], :stroke => @paused ? gray : white
    end
  end

  def switch_buttons
    @buttons.reverse!
    @button.remove if @button

    @box.before @reset do
      button @buttons[0], :width => '50%' do
        @paused = !@paused
        display_time
      end
    end
  end

  @display = stack :margin => 10
  display_time

  @buttons = %w{ Unpause Pause }
  @box = flow do
    @reset = button "Reset", :width => '50%' do
      @seconds = 0
      display_time
    end
  end
  switch_buttons

  animate(1) do
    @seconds += 1 unless @paused
    display_time
  end
end
