that's why... GUI objects that have intrinsic knowledge of networking are actually really powerful and useful.
It looks like Shoes is intended to be the graphics engine for writing Ruby apps including HH, and HH is supposed to be the easy-to-use general purpose programming language.
I would be curious to see how non-trivial applications fit within the Shoes framework. My experience with ambitious frameworks has been that they work great until you want to do something that isn't perfectly aligned with its intent/charter/design, then you start fighting them really fast. Maybe Ruby or Shoes offer ways around this, but if you have to write non-trivial network or disk i/o code maybe the total win you get from a really simple GUI framework is diminished.
True, once you break out into the "big bad world" of network protocols and disk I/O, your code may not be quite as dead simple, but it really shouldn't be too hard for most folks to jump from this:
Shoes.app do
button "PUSH!"
end
...to this: Shoes.app do
stack do
@text = para("hostnames go here...")
button("PUSH!") { @text.replace(File.read("/etc/hosts")) }
end
end
...and from there to this: Shoes.setup do
gem 'simple-rss'
end
require 'simple-rss'
require 'open-uri'
Shoes.app do
stack do
banner "News.YC Headlines"
button("Fetch") do
@articles.clear
rss = SimpleRSS.parse(open("http://news.ycombinator.com/rss").read)
rss.items.each do |item|
@articles.append { para(item.title) }
end
end
@articles = stack
end
end
That isn't so bad, is it?