Ciao a tutti, avrei l’esigenza di creare un’applicazione in gtk3 che mi
plotta all’interno della mia gui dei grafici, per la creazione dei miei
grafici utilizzo gnuplot,nyaplot,rubyvis come output posso ottenere sia
file svg che canvas html5.
Per ora sono riuscito a crearmi un file svg e visulizzarlo in gtk in
questo modo:
require ‘gtk3’
require ‘rsvg2’
unless RSVG.cairo_available?
puts “this sample needs RSVG with cairo support”
exit(-1)
end
unless Gdk.cairo_available?
puts “this sample needs GDK with cairo support”
exit(-1)
end
if ARGV.size != 1
puts “usage: #{$0} input.svg”
exit(-1)
end
input = ARGV.shift
handle = RSVG::Handle.new_from_file(input)
width, height = handle.dimensions.to_a
window = Gtk::Window.new
window.set_default_size(width, height)
area = Gtk::DrawingArea.new
window.signal_connect(:destroy) do
Gtk.main_quit
end
area.signal_connect(:draw) do |widget, event|
context = widget.window.create_cairo_context
window_width, window_height = widget.window.size
context.scale(window_width.to_f / width, window_height.to_f / height)
context.render_rsvg_handle(handle)
end
window.add(area)
window.show_all
Gtk.main
Fino qui tutto ok, il problema è i grafici all’interno di chrome sono
interattivi, es se mi posizioni su un punto viene visualizzato un popup
con delle informazione, mentre in gtk non viene visualizzato nulla, come
se fosse un’immagine statica es png.
Come idea mi era venuta di creare un file html con i grafici e il codice
javascript, e renderizzarlo all’interno di gtk, ma non so come fare, e
webkit in windows non funziona.
Cercando ho visto anche la possibilità di usare i socket di gtk, e in
gnuplot dare come output x11 ma questo in windows non è supportato.