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/vu/oscilloscope.rb
nagai 41b74c6e20 * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries.
* ext/tk/*: Support new features of Tcl/Tk8.6b1 and minor bug fixes.
     ( [KNOWN BUG] Ruby/Tk on Ruby 1.9 will not work on Cygwin. )
* ext/tk/*: Unify sources between Ruby 1.8 & 1.9.
            Improve default_widget_set handling.
* ext/tk/*: Multi-TkInterpreter (multi-tk.rb) works on Ruby 1.8 & 1.9.
     ( [KNOWN BUG] On Ruby 1.8, join to a long term Thread on Tk
       callbacks may freeze. On Ruby 1.9, cannot create a second 
       master interpreter (creating slaves are OK); supported master
       interpreter is the default master interpreter only. )
* ext/tk/lib/tkextlib/*: Update supported versions of Tk extensions.
         Tcllib 1.8/Tklib 0.4.1  ==>  Tcllib 1.11.1/Tklib 0.5
         BWidgets 1.7            ==>  BWidgets 1.8
         TkTable 2.9             ==>  TkTable 2.10
         TkTreeCtrl 2005-12-02   ==>  TkTreeCtrl 2.2.9
         Tile 0.8.0/8.5.1        ==>  Tile 0.8.3/8.6b1
         IncrTcl 2005-02-14      ==>  IncrTcl 2008-12-15
         TclX 2005-02-07         ==>  TclX 2008-12-15
         Trofs 0.4.3             ==>  Trofs 0.4.4


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@24064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-12 23:09:52 +00:00

68 lines
1.8 KiB
Ruby

#!/usr/bin/env ruby
require 'tk'
require 'tkextlib/vu/charts'
#---USAGE
info = "...the heart of a Realtime Oscilloscope, where the PCIs
joystick port gives 4 digtal inputs and 4 analog 8 bit
values with an resolution of ~1 millisecond (!!!)
running Realtime Linux.
<p> creates DEMO.ps
<B1-Motion> see what happens"
puts info
#---GEOMETRY
geo_fr = [10, 10, 210, 180]
geo_ch0 = [10, 10, 210, 90]
geo_ch1 = [10, 90, 210, 180]
geo_t1 = [15, 88]
#---GUI
c = TkCanvas.new(:width=>220, :height=>190).pack(:fill=>:both, :expand=>true)
#---background
TkcRectangle.new(c, geo_fr, :width=>4, :fill=>'aquamarine3',
:tags=>['osc', 'frbg'])
#---channel 0
ch0 = Tk::Vu::TkcStripchart.new(c, geo_ch0,
:fill=>'', :jumpscroll=>false,
:outline=>'', :scaleline=>'',
:stripline=>'cyan', :tags=>['osc', 'ch0'])
#---channel 1
ch1 = Tk::Vu::TkcStripchart.new(c, geo_ch1,
:fill=>'', :jumpscroll=>0,
:outline=>'', :scaleline=>'',
:stripline=>'red', :tags=>['osc', 'ch1'])
#---frame
TkcRectangle.new(c, geo_fr, :width=>4, :tags=>['osc', 'frfg'])
#---position
txt1 = TkcText.new(c, geo_t1, :text=>"B1-Motion: X:%X\tY:%Y",
:anchor=>:nw, :tags=>['osc', 'txt1'])
#---BINDINGS
c.bind('B1-Motion', proc{|x, y, xx, yy|
ch0[:values] = x
ch1[:values] = y
txt1[:text] = "B1-Motion: X:#{xx}\tY:#{yy}"
}, '%x %y %X %Y')
Tk.root.bind('v', proc{
puts ch0[:values].join(' ')
puts ch0[:values].size
})
Tk.root.bind('p', proc{
c.postscript(:file=>'DEMO.ps')
puts "DEMO.ps printed"
})
Tk.root.bind('q', proc{exit})
#####################
Tk.mainloop