1# 2# tkextlib/tcllib/crosshair.rb 3# by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) 4# 5# * Part of tcllib extension 6# * Crosshairs for Tk canvas 7# 8 9require 'tk' 10require 'tkextlib/tcllib.rb' 11 12# TkPackage.require('crosshair', '1.0.2') 13TkPackage.require('crosshair') 14 15module Tk::Tcllib 16 module Crosshair 17 PACKAGE_NAME = 'crosshair'.freeze 18 def self.package_name 19 PACKAGE_NAME 20 end 21 22 def self.package_version 23 begin 24 TkPackage.require('crosshair') 25 rescue 26 '' 27 end 28 end 29 end 30end 31 32module Tk::Tcllib::Crosshair 33 include TkCore 34 TkCommandNames = ['::crosshair::crosshair'.freeze].freeze 35 36 def self.crosshair(w, keys={}) 37 Tk.tk_call('::crosshair::crosshair', w, *hash_kv(keys)) 38 w 39 end 40 def self.on(w, keys={}) 41 self.crosshair(w, keys) 42 end 43 44 def self.off(w) 45 Tk.tk_call('::crosshair::off', w) 46 w 47 end 48 49 def self.track_on(w, &b) 50 Tk.tk_call('::crosshair::track_on', w, b) 51 w 52 end 53 54 def self.track_off(w) 55 Tk.tk_call('::crosshair::track_off', w) 56 w 57 end 58end 59 60class << Tk::Tcllib::Crosshair 61 include TkComm 62 include TkCanvasItemConfig 63 64 def __item_methodcall_optkeys(id) 65 {} 66 end 67 private :__item_methodcall_optkeys 68 69 def __item_config_cmd(id) 70 # maybe need to override 71 ['::crosshair::configure', id] 72 end 73 private :__item_config_cmd 74 75 private :itemcget_tkstring, :itemcget, :itemcget_strict 76 private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo 77 78 def confugure(w, slot, value=None) 79 itemconfigure(w, slot, value) 80 end 81 def confuginfo(w, slot = nil) 82 itemconfiginfo(w, slot) 83 end 84 def current_configinfo(w, slot = nil) 85 current_itemconfiginfo(w, slot) 86 end 87 def cget(w, slot) 88 current_itemconfiginfo(w, slot).values[0] 89 end 90end 91 92module Tk::Tcllib::Crosshair 93 def crosshair_on(keys={}) 94 Tk::Tcllib::Crosshair.on(self, keys) 95 end 96 def crosshair_off 97 Tk::Tcllib::Crosshair.off(self) 98 end 99 def crosshair_track_on(&b) 100 Tk::Tcllib::Crosshair.track_on(self, &b) 101 end 102 def crosshair_track_off 103 Tk::Tcllib::Crosshair.track_off(self) 104 end 105 def crosshair_configure(*args) 106 Tk::Tcllib::Crosshair.configure(self, *args) 107 end 108 def crosshair_configinfo(slot = nil) 109 Tk::Tcllib::Crosshair.configinfo(self, slot) 110 end 111 def crosshair_current_configinfo(slot = nil) 112 Tk::Tcllib::Crosshair.current_configinfo(self, slot) 113 end 114 def crosshair_cget(slot) 115 Tk::Tcllib::Crosshair.cget(self, slot) 116 end 117end 118