1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext/tk/sample/tkextlib/blt/barchart5.rb
naruse c4fdfabcc8 handle ext/ as r53141
g -L frozen_string_literal ext/**/*.rb|xargs ruby -Ka -e'ARGV.each{|fn|puts
fn;open(fn,"r+"){|f|s=f.read.sub(/\A(#!.*\n)?(#.*coding.*\n)?/,"\\&#
frozen_string_literal: false\n");f.rewind;f.write s}}'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:31:54 +00:00

102 lines
3 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: false
require 'tk'
require 'tkextlib/blt'
load File.join(File.dirname(File.expand_path(__FILE__)),
'scripts', 'stipples.rb')
TkOption.add('*graph.x.Title', 'X Axis Label')
TkOption.add('*graph.y.Title', 'Y Axis Label')
TkOption.add('*graph.title', 'A Simple Barchart')
TkOption.add('*graph.x.Font', 'Times 10')
TkOption.add('*graph.Element.Relief', :raised)
visual = Tk.root.winfo_screenvisual
if visual != 'staticgray' && visual != 'grayscale'
TkOption.add('*graph.LineMarker.color', 'yellow')
TkOption.add('*graph.Element.Background', 'white')
TkOption.add('*graph.Legend.activeForeground', 'pink')
TkOption.add('*print.background', 'yellow')
TkOption.add('*quit.background', 'red')
TkOption.add('*graph.background', 'palegreen')
TkOption.add('*graph.plotBackground', 'lightblue')
end
htext = Tk::BLT::Htext.new(:widgetname=>'.htext', :text=><<EOD)
This is an example of the barchart widget. The barchart has
many components; x and y axis, legend, crosshairs, elements, etc.
To create a postscript file "bar.ps", press the %%
ruby {
b = TkButton.new(Tk::BLT::Htext::Htext_Widget.window,
:widgetname=>'print', :text=>'Print',
:command=>proc{
$graph.postsript(:output=>'bar.ps')
})
Tk::BLT::Htext::Htext_Widget.window.append(b)
}
%% button.
%%
ruby {
$graph = Tk::BLT::Barchart.new(:widgetname=>'.htext.graph',
:relief=>:raised, :borderwidth=>2)
$graph.xaxis_configure(:rotate=>90, :stepsize=>0)
Tk::BLT::Htext::Htext_Widget.window.append($graph,
:fill=>:both, :padx=>4)
}
%%
Hit the %%
ruby {
b = TkButton.new(Tk::BLT::Htext::Htext_Widget.window,
:widgetname=>'quit', :text=>'Quit',
:command=>proc{ exit })
Tk::BLT::Htext::Htext_Widget.window.append(b)
}
%% button when you've seen enough.%%
ruby {
l = TkLabel.new(Tk::BLT::Htext::Htext_Widget.window, :bitmap=>'BLT')
Tk::BLT::Htext::Htext_Widget.window.append(l, :padx=>20)
}
%%
EOD
names = %w(One Two Three Four Five Six Seven Eight)
if visual == 'staticgray' || visual == 'grayscale'
fgcolors = %w(white white white white white white white white)
bgcolors = %w(black black black black black black black black)
else
fgcolors = %w(yellow orange red magenta purple blue cyan green)
bgcolors = %w(yellow4 orange4 red4 magenta4 purple4 blue4 cyan4 green4)
end
numColors = names.length
Tk::TCL_PRECISION.value = 15
x = Tk::BLT::Vector.new
y = Tk::BLT::Vector.new
x.seq(-5.0, 5.0, 0.2)
y.expr("sin(#{x})")
barWidth = 0.19
$graph.element_create('sin', :relief=>:raised, :borderwidth=>1,
:x=>x, :y=>y, :barwidth=>barWidth)
Tk::BLT::Table.add(Tk.root, htext, :fill=>:both)
Tk.root.minsize(0, 0)
Tk::BLT.zoom_stack($graph)
Tk::BLT.crosshairs($graph)
Tk::BLT.active_legend($graph)
Tk::BLT.closest_point($graph)
Tk.mainloop