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
nagai 334325f72a * ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether
a class is available for a callback entry.
* ext/tk/lib/tk.rb (after_cancel): add Tk.after_cancel(afterID) method.
* ext/tk/lib/tk.rb (array2tk_list): change from private module method
  of TkComm to public module method.
* ext/tk/lib/tk.rb (cget): add check that slot argument is not empty string.
* ext/tk/lib/tk.rb (configinfo): ditto.
* ext/tk/lib/tk/itemconfig.rb (itemcget): add check that slot argument
  is not empty string.
* ext/tk/lib/tk/itemconfig.rb (itemconfiginfo): ditto.
* ext/tk/lib/tk/entry.rb: add TkEntry#icursor and icursor= (alias of
  cursor and cursor= method).
* ext/tk/lib/tk/font.rb: improve font treatment when the font name is
  empty string.
* ext/tk/lib/tk/variable.rb: add :variable, :window and :procedure type.
* ext/tk/lib/tk/variable.rb: improve treatment of array-type tkvariable.
* ext/tk/lib/tkextlib/blt.rb: add commands for zooming.
* ext/tk/lib/tkextlib/blt/*: bug fix.
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and add methods
  to call TreeCtrl commands for bindings.
* ext/tk/sample/tkextlib/blt/*: new sample scritps.
* ext/tk/sample/tkextlib/treectrl/*: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-26 13:58:11 +00:00

101 lines
3 KiB
Ruby

#!/usr/bin/env ruby
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