mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 00:54:01 +02:00
* lib/tkextlib/blt/component.rb: cannot create elements except
default type of element. * lib/tkextlib/blt/barchart.rb: ditto. * lib/tkextlib/blt/graph.rb: ditto. * lib/tkextlib/blt/stripchart.rb: ditto. * lib/tkextlib/blt/component.rb: axis command option gets proper object type of arguments. * sample/tkextlib/blt/calendar.rb: new sample. * sample/tkextlib/blt/pareto.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ddeed4af3c
commit
ef5afcf8a0
9 changed files with 537 additions and 48 deletions
|
@ -1,3 +1,21 @@
|
||||||
|
2005-03-29 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||||
|
|
||||||
|
* lib/tkextlib/blt/component.rb: cannot create elements except
|
||||||
|
default type of element.
|
||||||
|
|
||||||
|
* lib/tkextlib/blt/barchart.rb: ditto.
|
||||||
|
|
||||||
|
* lib/tkextlib/blt/graph.rb: ditto.
|
||||||
|
|
||||||
|
* lib/tkextlib/blt/stripchart.rb: ditto.
|
||||||
|
|
||||||
|
* lib/tkextlib/blt/component.rb: axis command option gets
|
||||||
|
proper object type of arguments.
|
||||||
|
|
||||||
|
* sample/tkextlib/blt/calendar.rb: new sample.
|
||||||
|
|
||||||
|
* sample/tkextlib/blt/pareto.rb: ditto.
|
||||||
|
|
||||||
2005-03-26 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
2005-03-26 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||||
|
|
||||||
* lib/tkextlib/blt.rb: add commands for zooming.
|
* lib/tkextlib/blt.rb: add commands for zooming.
|
||||||
|
@ -16,19 +34,19 @@
|
||||||
* lib/tkextlib/blt/htext.rb: add TkVariable object to access
|
* lib/tkextlib/blt/htext.rb: add TkVariable object to access
|
||||||
special Tcl variables.
|
special Tcl variables.
|
||||||
|
|
||||||
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: typo fix.
|
* lib/tkextlib/treectrl/tktreectrl.rb: typo fix.
|
||||||
|
|
||||||
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: proper treatment
|
* lib/tkextlib/treectrl/tktreectrl.rb: proper treatment
|
||||||
of 'font' option of element_configure.
|
of 'font' option of element_configure.
|
||||||
|
|
||||||
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix on item_sort.
|
* lib/tkextlib/treectrl/tktreectrl.rb: bug fix on item_sort.
|
||||||
|
|
||||||
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: add methods to
|
* lib/tkextlib/treectrl/tktreectrl.rb: add methods to
|
||||||
call TreeCtrl commands for bindings.
|
call TreeCtrl commands for bindings.
|
||||||
|
|
||||||
* ext/tk/sample/tkextlib/blt/*: add some sample scripts.
|
* sample/tkextlib/blt/*: add some sample scripts.
|
||||||
|
|
||||||
* ext/tk/sample/tkextlib/treectrl/*: add some sample scripts.
|
* sample/tkextlib/treectrl/*: add some sample scripts.
|
||||||
|
|
||||||
2005-03-18 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
2005-03-18 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
private :__strval_optkeys
|
private :__strval_optkeys
|
||||||
|
|
||||||
|
=begin
|
||||||
BarElement_ID = ['blt_barchart_bar'.freeze, '00000'.taint].freeze
|
BarElement_ID = ['blt_barchart_bar'.freeze, '00000'.taint].freeze
|
||||||
|
|
||||||
def bar(elem=nil, keys={})
|
def bar(elem=nil, keys={})
|
||||||
|
@ -40,6 +41,7 @@ module Tk::BLT
|
||||||
tk_send('bar', elem, keys)
|
tk_send('bar', elem, keys)
|
||||||
Element.new(self, elem, :without_creating=>true)
|
Element.new(self, elem, :without_creating=>true)
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
def extents(item)
|
def extents(item)
|
||||||
num_or_str(tk_send_without_enc('extents', item))
|
num_or_str(tk_send_without_enc('extents', item))
|
||||||
|
|
|
@ -78,6 +78,19 @@ module Tk::BLT
|
||||||
ret = itemcget(['axis', id], option)
|
ret = itemcget(['axis', id], option)
|
||||||
end
|
end
|
||||||
def axis_configure(id, slot, value=None)
|
def axis_configure(id, slot, value=None)
|
||||||
|
if slot.kind_of?(Hash)
|
||||||
|
slot = _symbolkey2str(slot)
|
||||||
|
if cmd = slot.delete('command')
|
||||||
|
slot['command'] = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
elsif slot == :command || slot == 'command'
|
||||||
|
cmd = value
|
||||||
|
value = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
itemconfigure(['axis', id], slot, value)
|
itemconfigure(['axis', id], slot, value)
|
||||||
end
|
end
|
||||||
def axis_configinfo(id, slot=nil)
|
def axis_configinfo(id, slot=nil)
|
||||||
|
@ -113,6 +126,32 @@ module Tk::BLT
|
||||||
current_itemconfiginfo(['element', id], slot)
|
current_itemconfiginfo(['element', id], slot)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def bar_cget(id, option)
|
||||||
|
itemcget(['bar', id], option)
|
||||||
|
end
|
||||||
|
def bar_configure(id, slot, value=None)
|
||||||
|
itemconfigure(['bar', id], slot, value)
|
||||||
|
end
|
||||||
|
def bar_configinfo(id, slot=nil)
|
||||||
|
itemconfiginfo(['bar', id], slot)
|
||||||
|
end
|
||||||
|
def current_bar_configinfo(id, slot=nil)
|
||||||
|
current_itemconfiginfo(['bar', id], slot)
|
||||||
|
end
|
||||||
|
|
||||||
|
def line_cget(id, option)
|
||||||
|
itemcget(['line', id], option)
|
||||||
|
end
|
||||||
|
def line_configure(id, slot, value=None)
|
||||||
|
itemconfigure(['line', id], slot, value)
|
||||||
|
end
|
||||||
|
def line_configinfo(id, slot=nil)
|
||||||
|
itemconfiginfo(['line', id], slot)
|
||||||
|
end
|
||||||
|
def current_line_configinfo(id, slot=nil)
|
||||||
|
current_itemconfiginfo(['line', id], slot)
|
||||||
|
end
|
||||||
|
|
||||||
def gridline_cget(option)
|
def gridline_cget(option)
|
||||||
itemcget('grid', option)
|
itemcget('grid', option)
|
||||||
end
|
end
|
||||||
|
@ -294,6 +333,16 @@ module Tk::BLT
|
||||||
@chart.current_axis_configinfo(@id, key)
|
@chart.current_axis_configinfo(@id, key)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def command(cmd=nil, &b)
|
||||||
|
if cmd
|
||||||
|
configure('command', cmd)
|
||||||
|
elsif b
|
||||||
|
configure('command', Proc.new(&b))
|
||||||
|
else
|
||||||
|
cget('command')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def delete
|
def delete
|
||||||
@chart.axis_delete(@id)
|
@chart.axis_delete(@id)
|
||||||
self
|
self
|
||||||
|
@ -385,10 +434,26 @@ module Tk::BLT
|
||||||
#################
|
#################
|
||||||
|
|
||||||
class Element < TkObject
|
class Element < TkObject
|
||||||
|
extend Tk
|
||||||
|
extend TkItemFontOptkeys
|
||||||
|
extend TkItemConfigOptkeys
|
||||||
|
|
||||||
|
extend Tk::BLT::PlotComponent::OptKeys
|
||||||
|
|
||||||
|
ElementTypeName = 'element'
|
||||||
|
ElementTypeToClass = { ElementTypeName=>self }
|
||||||
|
ElementID_TBL = TkCore::INTERP.create_table
|
||||||
|
|
||||||
|
TkCore::INTERP.init_ip_env{ ElementID_TBL.clear }
|
||||||
|
|
||||||
OBJ_ID = ['blt_chart_element'.freeze, '00000'.taint].freeze
|
OBJ_ID = ['blt_chart_element'.freeze, '00000'.taint].freeze
|
||||||
OBJ_TBL={}
|
OBJ_TBL={}
|
||||||
|
|
||||||
def self.id2obj(chart, id)
|
def Element.type2class(type)
|
||||||
|
ElementTypeToClass[type]
|
||||||
|
end
|
||||||
|
|
||||||
|
def Element.id2obj(chart, id)
|
||||||
cpath = chart.path
|
cpath = chart.path
|
||||||
return id unless OBJ_TBL[cpath]
|
return id unless OBJ_TBL[cpath]
|
||||||
OBJ_TBL[cpath][id]? OBJ_TBL[cpath][id]: id
|
OBJ_TBL[cpath][id]? OBJ_TBL[cpath][id]: id
|
||||||
|
@ -419,11 +484,12 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
@parent = @chart = chart
|
@parent = @chart = chart
|
||||||
@cpath = @chart.path
|
@cpath = @chart.path
|
||||||
|
@typename = self.class::ElementTypeName
|
||||||
Element::OBJ_TBL[@cpath][@element] = self
|
Element::OBJ_TBL[@cpath][@element] = self
|
||||||
keys = _symbolkey2str(keys)
|
keys = _symbolkey2str(keys)
|
||||||
unless keys.delete('without_creating')
|
unless keys.delete('without_creating')
|
||||||
# @chart.element_create(@element, keys)
|
# @chart.element_create(@element, keys)
|
||||||
tk_call(@chart, 'element', 'create', @element, keys)
|
tk_call(@chart, @typename, 'create', @element, keys)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -436,17 +502,21 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
|
|
||||||
def cget(option)
|
def cget(option)
|
||||||
@chart.element_cget(@id, option)
|
# @chart.element_cget(@id, option)
|
||||||
|
@chart.__send__(@typename + '_cget', @id, option)
|
||||||
end
|
end
|
||||||
def configure(key, value=None)
|
def configure(key, value=None)
|
||||||
@chart.element_configure(@id, key, value)
|
# @chart.element_configure(@id, key, value)
|
||||||
|
@chart.__send__(@typename + '_configure', @id, key, value)
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
def configinfo(key=nil)
|
def configinfo(key=nil)
|
||||||
@chart.element_configinfo(@id, key)
|
# @chart.element_configinfo(@id, key)
|
||||||
|
@chart.__send__(@typename + '_configinfo', @id, key)
|
||||||
end
|
end
|
||||||
def current_configinfo(key=nil)
|
def current_configinfo(key=nil)
|
||||||
@chart.current_element_configinfo(@id, key)
|
# @chart.current_element_configinfo(@id, key)
|
||||||
|
@chart.__send__('current_' << @typename << '_configinfo', @id, key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def activate(*args)
|
def activate(*args)
|
||||||
|
@ -455,7 +525,8 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
|
|
||||||
def closest(x, y, var, keys={})
|
def closest(x, y, var, keys={})
|
||||||
@chart.element_closest(x, y, var, @id, keys)
|
# @chart.element_closest(x, y, var, @id, keys)
|
||||||
|
@chart.__send__(@typename + '_closest', x, y, var, @id, keys)
|
||||||
end
|
end
|
||||||
|
|
||||||
def deactivate
|
def deactivate
|
||||||
|
@ -481,6 +552,15 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class Bar < Element
|
||||||
|
ElementTypeName = 'bar'.freeze
|
||||||
|
ElementTypeToClass[ElementTypeName] = self
|
||||||
|
end
|
||||||
|
class Line < Element
|
||||||
|
ElementTypeName = 'line'.freeze
|
||||||
|
ElementTypeToClass[ElementTypeName] = self
|
||||||
|
end
|
||||||
|
|
||||||
#################
|
#################
|
||||||
|
|
||||||
class GridLine < TkObject
|
class GridLine < TkObject
|
||||||
|
@ -781,7 +861,7 @@ module Tk::BLT
|
||||||
fail RuntimeError, "#{self} is an abstract class"
|
fail RuntimeError, "#{self} is an abstract class"
|
||||||
end
|
end
|
||||||
args, fontkeys = _parse_create_args(keys)
|
args, fontkeys = _parse_create_args(keys)
|
||||||
idnum = tk_call_without_enc(chart.path, 'create',
|
idnum = tk_call_without_enc(chart.path, 'marker', 'create',
|
||||||
self::MarkerTypeName, *args)
|
self::MarkerTypeName, *args)
|
||||||
chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
|
chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
|
||||||
idnum.to_i # 'item id' is an integer number
|
idnum.to_i # 'item id' is an integer number
|
||||||
|
@ -789,7 +869,8 @@ module Tk::BLT
|
||||||
|
|
||||||
def self.create_type(chart, type, keys={})
|
def self.create_type(chart, type, keys={})
|
||||||
args, fontkeys = _parse_create_args(keys)
|
args, fontkeys = _parse_create_args(keys)
|
||||||
idnum = tk_call_without_enc(chart.path, 'create', type, *args)
|
idnum = tk_call_without_enc(chart.path, 'marker', 'create',
|
||||||
|
type, *args)
|
||||||
chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
|
chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
|
||||||
id = idnum.to_i # 'item id' is an integer number
|
id = idnum.to_i # 'item id' is an integer number
|
||||||
obj = self.allocate
|
obj = self.allocate
|
||||||
|
@ -797,10 +878,10 @@ module Tk::BLT
|
||||||
@parent = @chart = chart
|
@parent = @chart = chart
|
||||||
@path = chart.path
|
@path = chart.path
|
||||||
@id = id
|
@id = id
|
||||||
unless Tk::BLT::PlotComponent::MarkerID_TBL[@path]
|
unless Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path]
|
||||||
Tk::BLT::PlotComponent::MarkerID_TBL[@path] = {}
|
Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path] = {}
|
||||||
end
|
end
|
||||||
Tk::BLT::PlotComponent::MarkerID_TBL[@path][@id] = self
|
Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path][@id] = self
|
||||||
}
|
}
|
||||||
obj
|
obj
|
||||||
end
|
end
|
||||||
|
@ -810,10 +891,10 @@ module Tk::BLT
|
||||||
@path = parent.path
|
@path = parent.path
|
||||||
|
|
||||||
@id = create_self(*args) # an integer number as 'item id'
|
@id = create_self(*args) # an integer number as 'item id'
|
||||||
unless Tk::BLT::PlotComponent::MarkerID_TBL[@path]
|
unless Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path]
|
||||||
Tk::BLT::PlotComponent::MarkerID_TBL[@path] = {}
|
Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path] = {}
|
||||||
end
|
end
|
||||||
Tk::BLT::PlotComponent::MarkerID_TBL[@path][@id] = self
|
Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@path][@id] = self
|
||||||
end
|
end
|
||||||
def create_self(*args)
|
def create_self(*args)
|
||||||
self.class.create(@chart, *args) # return an integer as 'item id'
|
self.class.create(@chart, *args) # return an integer as 'item id'
|
||||||
|
@ -973,6 +1054,32 @@ module Tk::BLT
|
||||||
_component_bindinfo('element', tag, context)
|
_component_bindinfo('element', tag, context)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def bar_bind(tag, context, *args)
|
||||||
|
_component_bind('bar', tag, context, *args)
|
||||||
|
end
|
||||||
|
def bar_bind_append(tag, context, *args)
|
||||||
|
_component_bind_append('bar', tag, context, *args)
|
||||||
|
end
|
||||||
|
def bar_bind_remove(tag, context)
|
||||||
|
_component_bind_remove('bar', tag, context)
|
||||||
|
end
|
||||||
|
def bar_bindinfo(tag, context=nil)
|
||||||
|
_component_bindinfo('bar', tag, context)
|
||||||
|
end
|
||||||
|
|
||||||
|
def line_bind(tag, context, *args)
|
||||||
|
_component_bind('line', tag, context, *args)
|
||||||
|
end
|
||||||
|
def line_bind_append(tag, context, *args)
|
||||||
|
_component_bind_append('line', tag, context, *args)
|
||||||
|
end
|
||||||
|
def line_bind_remove(tag, context)
|
||||||
|
_component_bind_remove('line', tag, context)
|
||||||
|
end
|
||||||
|
def line_bindinfo(tag, context=nil)
|
||||||
|
_component_bindinfo('line', tag, context)
|
||||||
|
end
|
||||||
|
|
||||||
def legend_bind(tag, context, *args)
|
def legend_bind(tag, context, *args)
|
||||||
_component_bind('legend', tag, context, *args)
|
_component_bind('legend', tag, context, *args)
|
||||||
end
|
end
|
||||||
|
@ -1017,7 +1124,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def axis_names(*pats)
|
def axis_names(*pats)
|
||||||
simplelist(tk_send('axis', 'names', *pats)).collect{|axis|
|
simplelist(tk_send('axis', 'names', *pats)).collect{|axis|
|
||||||
Axis.id2obj(self, axis)
|
Tk::BLT::PlotComponent::Axis.id2obj(self, axis)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
def axis_transform(id, val)
|
def axis_transform(id, val)
|
||||||
|
@ -1029,9 +1136,12 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def axis_use(id, target=nil)
|
def axis_use(id, target=nil)
|
||||||
if target
|
if target
|
||||||
Axis.id2obj(self, tk_send('axis', 'use', tagid(id), tagid(target)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('axis', 'use',
|
||||||
|
tagid(id), tagid(target)))
|
||||||
else
|
else
|
||||||
Axis.id2obj(self, tk_send('axis', 'use', tagid(id)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('axis', 'use', tagid(id)))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1082,7 +1192,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def element_names(*pats)
|
def element_names(*pats)
|
||||||
simplelist(tk_send('element', 'names', *pats)).collect{|elem|
|
simplelist(tk_send('element', 'names', *pats)).collect{|elem|
|
||||||
Element.id2obj(self, elem)
|
Tk::BLT::PlotComponent::Element.id2obj(self, elem)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
def element_show(*names)
|
def element_show(*names)
|
||||||
|
@ -1099,6 +1209,102 @@ module Tk::BLT
|
||||||
|
|
||||||
###################
|
###################
|
||||||
|
|
||||||
|
def bar_create(id=nil, keys={})
|
||||||
|
# tk_send('bar', 'create', tagid(id), keys)
|
||||||
|
Tk::BLT::PlotComponent::Bar.new(self, id, keys)
|
||||||
|
end
|
||||||
|
alias bar bar_create
|
||||||
|
def bar_activate(id, *indices)
|
||||||
|
tk_send('bar', 'activate', tagid(id), *indices)
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def bar_closest(x, y, var, *args)
|
||||||
|
if args[-1].kind_of?(Hash)
|
||||||
|
keys = args.pop
|
||||||
|
bool(tk_send('bar', 'activate', x, y, var,
|
||||||
|
*(hash_kv(keys).concat(args))))
|
||||||
|
else
|
||||||
|
bool(tk_send('bar', 'activate', x, y, var, *args))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def bar_deactivate(*ids)
|
||||||
|
tk_send('bar', 'deactivate', *(ids.collect{|id| tagid(id)}))
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def bar_delete(*ids)
|
||||||
|
tk_send('bar', 'delete', *(ids.collect{|id| tagid(id)}))
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def bar_exist?(id)
|
||||||
|
bool(tk_send('bar', 'exists', tagid(id)))
|
||||||
|
end
|
||||||
|
def bar_names(*pats)
|
||||||
|
simplelist(tk_send('bar', 'names', *pats)).collect{|elem|
|
||||||
|
Tk::BLT::PlotComponent::Element.id2obj(self, elem)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def bar_show(*names)
|
||||||
|
if names.empty?
|
||||||
|
simplelist(tk_send('bar', 'show'))
|
||||||
|
else
|
||||||
|
tk_send('bar', 'show', *names)
|
||||||
|
self
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def bar_type(id)
|
||||||
|
tk_send('bar', 'type', tagid(id))
|
||||||
|
end
|
||||||
|
|
||||||
|
###################
|
||||||
|
|
||||||
|
def line_create(id=nil, keys={})
|
||||||
|
# tk_send('line', 'create', tagid(id), keys)
|
||||||
|
Tk::BLT::PlotComponent::Line.new(self, id, keys)
|
||||||
|
end
|
||||||
|
alias bar line_create
|
||||||
|
def line_activate(id, *indices)
|
||||||
|
tk_send('line', 'activate', tagid(id), *indices)
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def line_closest(x, y, var, *args)
|
||||||
|
if args[-1].kind_of?(Hash)
|
||||||
|
keys = args.pop
|
||||||
|
bool(tk_send('line', 'activate', x, y, var,
|
||||||
|
*(hash_kv(keys).concat(args))))
|
||||||
|
else
|
||||||
|
bool(tk_send('line', 'activate', x, y, var, *args))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def line_deactivate(*ids)
|
||||||
|
tk_send('line', 'deactivate', *(ids.collect{|id| tagid(id)}))
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def line_delete(*ids)
|
||||||
|
tk_send('line', 'delete', *(ids.collect{|id| tagid(id)}))
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def line_exist?(id)
|
||||||
|
bool(tk_send('line', 'exists', tagid(id)))
|
||||||
|
end
|
||||||
|
def line_names(*pats)
|
||||||
|
simplelist(tk_send('line', 'names', *pats)).collect{|elem|
|
||||||
|
Tk::BLT::PlotComponent::Element.id2obj(self, elem)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def line_show(*names)
|
||||||
|
if names.empty?
|
||||||
|
simplelist(tk_send('line', 'show'))
|
||||||
|
else
|
||||||
|
tk_send('line', 'show', *names)
|
||||||
|
self
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def line_type(id)
|
||||||
|
tk_send('line', 'type', tagid(id))
|
||||||
|
end
|
||||||
|
|
||||||
|
###################
|
||||||
|
|
||||||
def gridline_off
|
def gridline_off
|
||||||
tk_send_without_enc('grid', 'off')
|
tk_send_without_enc('grid', 'off')
|
||||||
self
|
self
|
||||||
|
@ -1124,9 +1330,12 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def legend_get(pos, y=nil)
|
def legend_get(pos, y=nil)
|
||||||
if y
|
if y
|
||||||
Element.id2obj(self, tk_send('legend', 'get', _at(pos, y)))
|
Tk::BLT::PlotComponent::Element.id2obj(self,
|
||||||
|
tk_send('legend', 'get',
|
||||||
|
_at(pos, y)))
|
||||||
else
|
else
|
||||||
Element.id2obj(self, tk_send('legend', 'get', pos))
|
Tk::BLT::PlotComponent::Element.id2obj(self,
|
||||||
|
tk_send('legend', 'get', pos))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1142,7 +1351,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def pen_names(*pats)
|
def pen_names(*pats)
|
||||||
simplelist(tk_send('pen', 'names', *pats)).collect{|pen|
|
simplelist(tk_send('pen', 'names', *pats)).collect{|pen|
|
||||||
Pen.id2obj(self, pen)
|
Tk::BLT::PlotComponent::Pen.id2obj(self, pen)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1211,7 +1420,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def marker_names(*pats)
|
def marker_names(*pats)
|
||||||
simplelist(tk_send('marker', 'names', *pats)).collect{|id|
|
simplelist(tk_send('marker', 'names', *pats)).collect{|id|
|
||||||
Marker.id2obj(self, id)
|
Tk::BLT::PlotComponent::Marker.id2obj(self, id)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
def marker_type(id)
|
def marker_type(id)
|
||||||
|
@ -1220,21 +1429,23 @@ module Tk::BLT
|
||||||
|
|
||||||
###################
|
###################
|
||||||
|
|
||||||
alias line_cget element_cget
|
|
||||||
alias line_configure element_configure
|
|
||||||
alias line_configinfo element_configinfo
|
|
||||||
alias current_line_configinfo current_element_configinfo
|
|
||||||
alias line_bind element_bind
|
|
||||||
alias line_bind_append element_bind_append
|
|
||||||
alias line_bind_remove element_bind_remove
|
|
||||||
alias line_bindinfo element_bindinfo
|
|
||||||
|
|
||||||
###################
|
|
||||||
|
|
||||||
def xaxis_cget(option)
|
def xaxis_cget(option)
|
||||||
itemcget('xaxis', option)
|
itemcget('xaxis', option)
|
||||||
end
|
end
|
||||||
def xaxis_configure(slot, value=None)
|
def xaxis_configure(slot, value=None)
|
||||||
|
if slot.kind_of?(Hash)
|
||||||
|
slot = _symbolkey2str(slot)
|
||||||
|
if cmd = slot.delete('command')
|
||||||
|
slot['command'] = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
elsif slot == :command || slot == 'command'
|
||||||
|
cmd = value
|
||||||
|
value = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
itemconfigure('xaxis', slot, value)
|
itemconfigure('xaxis', slot, value)
|
||||||
end
|
end
|
||||||
def xaxis_configinfo(slot=nil)
|
def xaxis_configinfo(slot=nil)
|
||||||
|
@ -1279,9 +1490,11 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def xaxis_use(target=nil)
|
def xaxis_use(target=nil)
|
||||||
if target
|
if target
|
||||||
Axis.id2obj(self, tk_send('xaxis', 'use', tagid(target)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('xaxis', 'use',
|
||||||
|
tagid(target)))
|
||||||
else
|
else
|
||||||
Axis.id2obj(self, tk_send('xaxis', 'use'))
|
Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('xaxis', 'use'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1289,6 +1502,19 @@ module Tk::BLT
|
||||||
itemcget('x2axis', option)
|
itemcget('x2axis', option)
|
||||||
end
|
end
|
||||||
def x2axis_configure(slot, value=None)
|
def x2axis_configure(slot, value=None)
|
||||||
|
if slot.kind_of?(Hash)
|
||||||
|
slot = _symbolkey2str(slot)
|
||||||
|
if cmd = slot.delete('command')
|
||||||
|
slot['command'] = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
elsif slot == :command || slot == 'command'
|
||||||
|
cmd = value
|
||||||
|
value = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
itemconfigure('x2axis', slot, value)
|
itemconfigure('x2axis', slot, value)
|
||||||
end
|
end
|
||||||
def x2axis_configinfo(slot=nil)
|
def x2axis_configinfo(slot=nil)
|
||||||
|
@ -1333,9 +1559,11 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def x2axis_use(target=nil)
|
def x2axis_use(target=nil)
|
||||||
if target
|
if target
|
||||||
Axis.id2obj(self, tk_send('x2axis', 'use', tagid(target)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('x2axis', 'use',
|
||||||
|
tagid(target)))
|
||||||
else
|
else
|
||||||
Axis.id2obj(self, tk_send('x2axis', 'use'))
|
Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('x2axis', 'use'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1343,6 +1571,19 @@ module Tk::BLT
|
||||||
itemcget('yaxis', option)
|
itemcget('yaxis', option)
|
||||||
end
|
end
|
||||||
def yaxis_configure(slot, value=None)
|
def yaxis_configure(slot, value=None)
|
||||||
|
if slot.kind_of?(Hash)
|
||||||
|
slot = _symbolkey2str(slot)
|
||||||
|
if cmd = slot.delete('command')
|
||||||
|
slot['command'] = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
elsif slot == :command || slot == 'command'
|
||||||
|
cmd = value
|
||||||
|
value = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
itemconfigure('yaxis', slot, value)
|
itemconfigure('yaxis', slot, value)
|
||||||
end
|
end
|
||||||
def yaxis_configinfo(slot=nil)
|
def yaxis_configinfo(slot=nil)
|
||||||
|
@ -1387,9 +1628,11 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def yaxis_use(target=nil)
|
def yaxis_use(target=nil)
|
||||||
if target
|
if target
|
||||||
Axis.id2obj(self, tk_send('yaxis', 'use', tagid(target)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('yaxis', 'use',
|
||||||
|
tagid(target)))
|
||||||
else
|
else
|
||||||
Axis.id2obj(self, tk_send('yaxis', 'use'))
|
Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('yaxis', 'use'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1397,6 +1640,19 @@ module Tk::BLT
|
||||||
itemcget('y2axis', option)
|
itemcget('y2axis', option)
|
||||||
end
|
end
|
||||||
def y2axis_configure(slot, value=None)
|
def y2axis_configure(slot, value=None)
|
||||||
|
if slot.kind_of?(Hash)
|
||||||
|
slot = _symbolkey2str(slot)
|
||||||
|
if cmd = slot.delete('command')
|
||||||
|
slot['command'] = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
elsif slot == :command || slot == 'command'
|
||||||
|
cmd = value
|
||||||
|
value = proc{|w, tick|
|
||||||
|
cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
|
||||||
|
}
|
||||||
|
end
|
||||||
itemconfigure('y2axis', slot, value)
|
itemconfigure('y2axis', slot, value)
|
||||||
end
|
end
|
||||||
def y2axis_configinfo(slot=nil)
|
def y2axis_configinfo(slot=nil)
|
||||||
|
@ -1441,9 +1697,11 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
def y2axis_use(target=nil)
|
def y2axis_use(target=nil)
|
||||||
if target
|
if target
|
||||||
Axis.id2obj(self, tk_send('y2axis', 'use', tagid(target)))
|
Tk::BLT::PlotComponent::Axis.id2obj(self,
|
||||||
|
tk_send('y2axis', 'use',
|
||||||
|
tagid(target)))
|
||||||
else
|
else
|
||||||
Axis.id2obj(self, tk_send('y2axis', 'use'))
|
Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('y2axis', 'use'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -26,6 +26,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
private :__strval_optkeys
|
private :__strval_optkeys
|
||||||
|
|
||||||
|
=begin
|
||||||
BarElement_ID = ['blt_graph_bar'.freeze, '00000'.taint].freeze
|
BarElement_ID = ['blt_graph_bar'.freeze, '00000'.taint].freeze
|
||||||
|
|
||||||
def bar(elem=nil, keys={})
|
def bar(elem=nil, keys={})
|
||||||
|
@ -40,6 +41,7 @@ module Tk::BLT
|
||||||
tk_send('bar', elem, keys)
|
tk_send('bar', elem, keys)
|
||||||
Element.new(self, elem, :without_creating=>true)
|
Element.new(self, elem, :without_creating=>true)
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
def extents(item)
|
def extents(item)
|
||||||
num_or_str(tk_send_without_enc('extents', item))
|
num_or_str(tk_send_without_enc('extents', item))
|
||||||
|
|
|
@ -26,6 +26,7 @@ module Tk::BLT
|
||||||
end
|
end
|
||||||
private :__strval_optkeys
|
private :__strval_optkeys
|
||||||
|
|
||||||
|
=begin
|
||||||
BarElement_ID = ['blt_stripchart_bar'.freeze, '00000'.taint].freeze
|
BarElement_ID = ['blt_stripchart_bar'.freeze, '00000'.taint].freeze
|
||||||
|
|
||||||
def bar(elem=nil, keys={})
|
def bar(elem=nil, keys={})
|
||||||
|
@ -40,6 +41,7 @@ module Tk::BLT
|
||||||
tk_send('bar', elem, keys)
|
tk_send('bar', elem, keys)
|
||||||
Element.new(self, elem, :without_creating=>true)
|
Element.new(self, elem, :without_creating=>true)
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
def extents(item)
|
def extents(item)
|
||||||
num_or_str(tk_send_without_enc('extents', item))
|
num_or_str(tk_send_without_enc('extents', item))
|
||||||
|
|
117
ext/tk/sample/tkextlib/blt/calendar.rb
Normal file
117
ext/tk/sample/tkextlib/blt/calendar.rb
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'tk'
|
||||||
|
require 'tkextlib/blt'
|
||||||
|
|
||||||
|
require 'date'
|
||||||
|
|
||||||
|
dir = File.join(File.dirname(File.expand_path(__FILE__)), 'images')
|
||||||
|
file = File.join(dir, 'chalk.gif')
|
||||||
|
active = File.join(dir, 'rain.gif')
|
||||||
|
|
||||||
|
texture1 = TkPhotoImage.new(:file=>file)
|
||||||
|
texture2 = TkPhotoImage.new(:file=>active)
|
||||||
|
|
||||||
|
TkOption.add('*Tile', texture1)
|
||||||
|
|
||||||
|
TkOption.add('*HighlightThickness', 0)
|
||||||
|
TkOption.add('*calendar.weekframe*Tile', texture2)
|
||||||
|
TkOption.add('*Calendar.Label.borderWidth', 0)
|
||||||
|
TkOption.add('*Calendar.Label.relief', :sunken)
|
||||||
|
TkOption.add('*Calendar.Frame.borderWidth', 2)
|
||||||
|
TkOption.add('*Calendar.Frame.relief', :raised)
|
||||||
|
TkOption.add('*Calendar.Label.font', 'Helvetica 11')
|
||||||
|
TkOption.add('*Calendar.Label.foreground', 'navyblue')
|
||||||
|
TkOption.add('*button.foreground', 'navyblue')
|
||||||
|
TkOption.add('*background', 'grey85')
|
||||||
|
TkOption.add('*Label.ipadX', 200)
|
||||||
|
|
||||||
|
TkOption.add('*tile', texture2)
|
||||||
|
|
||||||
|
class BLT_Calendar_sample
|
||||||
|
@@monthInfo = [
|
||||||
|
nil, # dummy
|
||||||
|
['January', 31],
|
||||||
|
['February', 28],
|
||||||
|
['March', 31],
|
||||||
|
['April', 30],
|
||||||
|
['May', 31],
|
||||||
|
['June', 30],
|
||||||
|
['July', 31],
|
||||||
|
['August', 31],
|
||||||
|
['Septembar', 30],
|
||||||
|
['October', 31],
|
||||||
|
['November', 30],
|
||||||
|
['December', 31]
|
||||||
|
]
|
||||||
|
|
||||||
|
@@abbrDays = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ]
|
||||||
|
|
||||||
|
def initialize()
|
||||||
|
today = Date.today
|
||||||
|
|
||||||
|
if TkComm.bool(Tk.info(:commands, '.calendar'))
|
||||||
|
Tk.destroy('.calendar')
|
||||||
|
end
|
||||||
|
cal = Tk::BLT::Tile::Frame.new(:widgetname=>'.calendar',
|
||||||
|
:classname=>'Calendar',
|
||||||
|
:width=>'3i', :height=>'3i')
|
||||||
|
|
||||||
|
mon = Tk::BLT::Tile::Label.new(cal, :font=>'Courier 14 bold',
|
||||||
|
:text=>"#{@@monthInfo[today.month][0]} " +
|
||||||
|
"#{today.year}")
|
||||||
|
Tk::BLT::Table.add(cal, mon, [1, 0], :cspan=>7, :pady=>10)
|
||||||
|
|
||||||
|
week_f = Tk::BLT::Tile::Frame.new(cal, :widgetname=>'weekframe',
|
||||||
|
:relief=>:sunken, :borderwidth=>1)
|
||||||
|
Tk::BLT::Table.add(cal, week_f, [2, 0], :columnspan=>7, :fill=>:both)
|
||||||
|
|
||||||
|
@@abbrDays.each_with_index{|dayName, idx|
|
||||||
|
Tk::BLT::Table.add(cal,
|
||||||
|
Tk::BLT::Tile::Label.new(cal, :text=>dayName,
|
||||||
|
:font=>'Helvetica 12'),
|
||||||
|
[2, idx], :pady=>2, :padx=>2)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tk::BLT::Table.itemconfigure(cal, 'c*', 'r2', :pad=>4)
|
||||||
|
|
||||||
|
numDays = @@monthInfo[today.month][1]
|
||||||
|
week = 0
|
||||||
|
cnt = 1
|
||||||
|
|
||||||
|
wkday = today.wday - ((today.day - 1) % 7)
|
||||||
|
wkday += 7 if wkday < 0
|
||||||
|
|
||||||
|
while cnt <= numDays
|
||||||
|
Tk::BLT::Table.add(cal,
|
||||||
|
Tk::BLT::Tile::Label.new(cal, :text=>cnt){
|
||||||
|
self.configure(:borderwidth=>1,
|
||||||
|
:relief=>:sunken) if cnt == today.day
|
||||||
|
},
|
||||||
|
[week+3, wkday], :fill=>:both, :ipadx=>10, :ipady=>4)
|
||||||
|
cnt += 1
|
||||||
|
wkday += 1
|
||||||
|
if wkday == 7
|
||||||
|
week += 1
|
||||||
|
wkday = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Tk::BLT::Tile::Frame.new(cal, :borderwidth=>1, :relief=>:sunken){|f|
|
||||||
|
Tk::BLT::Table.add(f,
|
||||||
|
Tk::BLT::Tile::Button.new(f, :widgetname=>'button',
|
||||||
|
:command=>proc{exit},
|
||||||
|
:borderwidth=>2,
|
||||||
|
:text=>'Quit'),
|
||||||
|
:padx=>4, :pady=>4)
|
||||||
|
Tk::BLT::Table.add(cal, f, [week+4, 5], :cspan=>2, :pady=>4)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tk::BLT::Table.add(Tk.root, cal, :fill=>:both)
|
||||||
|
Tk::BLT::Table.itemconfigure(cal, 'r0', :resize=>:none)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BLT_Calendar_sample.new
|
||||||
|
|
||||||
|
Tk.mainloop
|
BIN
ext/tk/sample/tkextlib/blt/images/chalk.gif
Normal file
BIN
ext/tk/sample/tkextlib/blt/images/chalk.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
BIN
ext/tk/sample/tkextlib/blt/images/rain.gif
Normal file
BIN
ext/tk/sample/tkextlib/blt/images/rain.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
90
ext/tk/sample/tkextlib/blt/pareto.rb
Normal file
90
ext/tk/sample/tkextlib/blt/pareto.rb
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'tk'
|
||||||
|
require 'tkextlib/blt'
|
||||||
|
|
||||||
|
# Example of a pareto chart.
|
||||||
|
#
|
||||||
|
# The pareto chart mixes line and bar elements in the same graph.
|
||||||
|
# Each processing operating is represented by a bar element. The
|
||||||
|
# total accumulated defects is displayed with a single line element.
|
||||||
|
b = Tk::BLT::Barchart.new(:title=>'Defects Found During Inspection',
|
||||||
|
:font=>'Helvetica 12', :plotpady=>[12, 4],
|
||||||
|
:width=>'6i', :height=>'5i')
|
||||||
|
Tk::BLT::Table.add(Tk.root, b, :fill=>:both)
|
||||||
|
|
||||||
|
data = [
|
||||||
|
["Spot Weld", 82, 'yellow'],
|
||||||
|
["Lathe", 49, 'orange'],
|
||||||
|
["Gear Cut", 38, 'green'],
|
||||||
|
["Drill", 24, 'blue'],
|
||||||
|
["Grind", 17, 'red'],
|
||||||
|
["Lapping", 12, 'brown'],
|
||||||
|
["Press", 8, 'purple'],
|
||||||
|
["De-burr", 4, 'pink'],
|
||||||
|
["Packaging", 3, 'cyan'],
|
||||||
|
["Other", 12, 'magenta']
|
||||||
|
]
|
||||||
|
|
||||||
|
# Create an X-Y graph line element to trace the accumulated defects.
|
||||||
|
b.line_create('accum', :label=>'', :symbol=>:none, :color=>'red')
|
||||||
|
|
||||||
|
# Define a bitmap to be used to stipple the background of each bar.
|
||||||
|
pattern1 = Tk::BLT::Bitmap.define([ [4, 4], [1, 2, 4, 8] ])
|
||||||
|
|
||||||
|
# For each process, create a bar element to display the magnitude.
|
||||||
|
count = 0
|
||||||
|
sum = 0
|
||||||
|
ydata = [0]
|
||||||
|
xdata = [0]
|
||||||
|
labels = []
|
||||||
|
|
||||||
|
data.each{|label, value, color|
|
||||||
|
count += 1
|
||||||
|
b.element_create(label, :xdata=>count, :ydata=>value, :foreground=>color,
|
||||||
|
:relief=>:solid, :borderwidth=>1, :stipple=>pattern1,
|
||||||
|
:background=>'lightblue')
|
||||||
|
labels[count] = label
|
||||||
|
# Get the total number of defects.
|
||||||
|
sum += value
|
||||||
|
ydata << sum
|
||||||
|
xdata << count
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configure the coordinates of the accumulated defects,
|
||||||
|
# now that we know what they are.
|
||||||
|
b.element_configure('accum', :xdata=>xdata, :ydata=>ydata)
|
||||||
|
|
||||||
|
# Add text markers to label the percentage of total at each point.
|
||||||
|
xdata.zip(ydata){|x, y|
|
||||||
|
percent = (y * 100.0) / sum
|
||||||
|
if x == 0
|
||||||
|
text = ' 0%'
|
||||||
|
else
|
||||||
|
text = '%.1f' % percent
|
||||||
|
end
|
||||||
|
b.marker_create(:text, :coords=>[x, y], :text=>text, :font=>'Helvetica 10',
|
||||||
|
:foreground=>'red4', :anchor=>:center, :yoffset=>-5)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Display an auxillary y-axis for percentages.
|
||||||
|
b.axis_configure('y2', :hide=>false, :min=>0.0, :max=>100.0,
|
||||||
|
:title=>'Percentage')
|
||||||
|
|
||||||
|
# Title the y-axis
|
||||||
|
b.axis_configure('y', :title=>'Defects')
|
||||||
|
|
||||||
|
# Configure the x-axis to display the process names, instead of numbers.
|
||||||
|
b.axis_configure('x', :title=>'Process', :rotate=>90, :subdivisions=>0,
|
||||||
|
:command=>proc{|w, val|
|
||||||
|
val = val.round
|
||||||
|
labels[val]? labels[val]: val
|
||||||
|
})
|
||||||
|
|
||||||
|
# No legend needed.
|
||||||
|
b.legend_configure(:hide=>true)
|
||||||
|
|
||||||
|
# Configure the grid lines.
|
||||||
|
b.gridline_configure(:mapx=>:x, :color=>'lightblue')
|
||||||
|
|
||||||
|
Tk.mainloop
|
Loading…
Add table
Add a link
Reference in a new issue