#!/usr/bin/ruby

Shoes.setup do
  gem "launchy"
end

require "net/http"
require "rexml/document"
require "launchy"

Shoes.app(:width => 650, :title => "NYTReader") do
  
  background "#FFF"
  
  stack(:height => 15, :align => "right") do
    background "#DDD".."#FFF" # Yay, gradients!
  end
  
  
  feed = "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
  
  xml_data = Net::HTTP.get_response(URI.parse(feed)).body
  doc = REXML::Document.new(xml_data)
  @items = []
  doc.elements.each("rss/channel/item") do |e|
    @items << e
  end


  stack(:padding => 20) do
    # NYT Logo
    image doc.elements["rss/channel/image/url"].text, :top => 10, :right => 30
    
    # Title text
    line 10, 50, self.width-30, 50, :stroke => "#CCC"
    title "Today’s front page", :font => "Times New Roman", :stroke => "#333"
    
    # RSS Items
    flow do
      @items.each do |item|
        stack(:margin => 6, :width => 325) do # Item box
          # Link
          title link(item.elements["title"].text, :stroke => "#468") { Launchy.open item.elements["guid"].text },
            :size => 18, :font => "Georgia"

          stack do
            image item.elements["*/*/media:url"].text unless item.elements["*/*/media:url"].nil?
            para item.elements["description"].text.split(".")[0] + ".", :size => 10, :font => "Lucida Grande"
          end
        end
      end
    end
  end
end
