From: Victor Reyes Date: 2008-04-01T02:19:17+09:00 Subject: Re: Displaying gruff graphs ------=_Part_2823_8425187.1206983954065 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Mark, thank you for your answer and time. Alex, this is exactly what I am looking for. I am trying to do two things at the same time: Learning Ruby well and second learning to use gruff so I can use it at work. I copied your sample code where I incorporated the sample gruff code that I got from the web. When I run it, a wx frame flashes quickly and end. Some errors are displayed on the screen. Would you mind if I send you directly my piece of code? It is very very simple. It only adds about five (5) lines to your sample code. Thank you for your help. Victor PS: The following are the errors: C:\$user\vmr\Ruby>ruby rdg00.rb c:/ruby/lib/ruby/gems/1.8/gems/gruff-0.3.1/lib/gruff/base.rb:465:in `write': no encode delegate for this image format `C:/DOCUME~1/REYESV~1 :ImageMagickError) from c:/ruby/lib/ruby/gems/1.8/gems/gruff-0.3.1/lib/gruff/base.rb:465:in `write' from rdg00.rb:25:in `on_paint' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/evthandler.rb:123:in `call' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/evthandler.rb:123:in `acquire_handler' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/window.rb:44:in `call' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/window.rb:44:in `evt_paint' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/app.rb:16:in `call' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/app.rb:16:in `process_event' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/app.rb:16:in `main_loop' from c:/ruby/lib/ruby/gems/1.8/gems/wxruby-1.9.5-i386-mswin32/lib/wx/classes/app.rb:16:in `run' from rdg00.rb:34 On 3/31/08, Alex Fenton wrote: > > Victor Reyes wrote: > > > Once a graph is written to disk, g.write("filename.png"), how can it be > > displayed in Ruby? > > I would like to re-create the graph and re-displayed often enough to > give > > the appearance of "real time" > > > It's not clear whether you meant via a browser or in a desktop app. If > you want to show it on the desktop, you'll need some sort of GUI toolkit > to display a window then draw the bitmap in it. > > You have a lot of choices: wxRuby, FXRuby, QT/Ruby, Tk, Ruby/GTK etc > etc. They vary widely in suitability for different platforms, ease of > installation, features, aesthetics. > > I use wxRuby b/c it's easy to install (gem install wxruby) and looks > good on all the big platforms. A simple 25-line example that would > regularly redraw an updated graph is below: > > hth > alex > __ > require 'wx' > require 'tempfile' > > # A frame that draws a regularly updated graph from Gruff every X > millisecs > class GruffFrame < Wx::Frame > def initialize(refresh_delay = 5000) > super(nil, :title => 'Gruff') > Wx::Timer.every(refresh_delay) { refresh } > evt_paint :on_paint > end > > # Writes the gruff graph to a file then reads it back to draw it > def on_paint > # Set up your graph here > graph = Gruff::Lines.new # .... > # Write to a tempfile and read back > tmp = Tempfile.new('gruff') > graph.write(tmp.path) > bmp = Wx::Bitmap.new(tmp.path, Wx::BITMAP_TYPE_PNG) > # Draw it on the Frame > paint do | dc | > dc.draw_bitmap(bmp, 0, 0, false) > end > end > end > > Wx::App.run { GruffFrame.new.show } > > ------=_Part_2823_8425187.1206983954065--