#!/usr/bin/env ruby require 'tk' require 'tkextlib/vu/charts' ####################################### xbm = File.join(File.dirname(File.expand_path(__FILE__)), 'm128_000.xbm') sval = [ 11, 22, 33, 44, 55, 66, 77, 88, 99 ] l0 = TkLabel.new(:width=>128, :height=>128, :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left) c0 = TkCanvas.new(:width=>80, :height=>80, :insertwidth=>0, :highlightthickness=>0, :selectborderwidth=>0, :borderwidth=>2, :relief=>:ridge).place(:in=>l0, :relx=>0.5, :rely=>0.5, :anchor=>:c) st = Tk::Vu::TkcStripchart.new(c0, 3, 3, 80, 80, :background=>"#b7c0d7", :fill=>'slategray3', :jumpscroll=>1, :outline=>'black', :scaleline=>'blue', :stripline=>'red', :selected=>1, :values=>sval) TkcText.create(c0, 40, 40, :text=>Tk::TCL_PATCHLEVEL, :fill=>'cyan', :tags=>'text') l1 = TkLabel.new(:width=>128, :height=>128, :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left) c1 = TkCanvas.new(:width=>80, :height=>80, :insertwidth=>0, :highlightthickness=>0, :selectborderwidth=>0, :borderwidth=>2, :relief=>:ridge).place(:in=>l1, :relx=>0.5, :rely=>0.5, :anchor=>:c) bar1 = Tk::Vu::TkcBarchart.new(c1, 3, 3, 80, 80, :background=>"#b7c0d7", :scalevalue=>10.0, :autocolor=>true, :selected=>1, :outline=>'black', :barline=>'yellow', :scalelinestyle=>0) bar2 = Tk::Vu::TkcBarchart.new(c1, 53, 3, 80, 80, :background=>"#b7c0d7", :scalevalue=>10.0, :autocolor=>true, :selected=>1, :outline=>'black', :fill=>"#b7c0d7", :barline=>'red', :scalelinestyle=>22) l2 = TkLabel.new(:width=>128, :height=>128, :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left) c2 = TkCanvas.new(:width=>80, :height=>80, :insertwidth=>0, :highlightthickness=>0, :selectborderwidth=>0, :borderwidth=>2, :relief=>:ridge).place(:in=>l2, :relx=>0.5, :rely=>0.5, :anchor=>:c) begin stick = Tk::Vu::TkcSticker.new(c2, 3, 3, 80, 80, :text=>"Tcl/Tk", :space=>0, :color=>'red', :outline=>'red', :font=>'Helvetica 14 bold', :fill=>'', :stipple=>'', :bar=>'blue', :orient=>:vertical, :anchor=>:s, :relheight=>1.0, :relwidth=>0.15, :relx=>0.1, :rely=>0.0) rescue stick = nil TkcText.new(c2, 40, 10, :text=>"No Sticker Item") end c_do = proc{ st[:values] = rand() * 100 bar1[:values] = rand() * 10 bar2[:values] = rand() * 10 stick[:rely] = rand() * 100 * 0.01 if stick } c0.bind('1', c_do) TkTimer.new(100, -1, c_do).start Tk.root.bind('q', proc{exit}) Tk.mainloop