summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tkextlib/bwidget/widget.rb
blob: a93364b5676acb853706583e569a5aa1c00758ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#
#  tkextlib/bwidget/widget.rb
#                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
#

require 'tk'
require 'tkextlib/bwidget.rb'

module Tk
  module BWidget
    module Widget
    end
  end
end

module Tk::BWidget::Widget
  include Tk
  extend Tk

  def self.__pathname
    'Widget::configure'
  end

  def self.__cget_cmd
    ['Widget::cget']
  end

  def self.__config_cmd
    ['Widget::configure']
  end

  def self.cget_strict(slot)
    slot = slot.to_s
    info = {}
    self.current_configinfo.each{|k,v| info[k.to_s] = v if k.to_s == slot}
    fail RuntimeError, "unknown option \"-#{slot}\""  if info.empty?
    info.values[0]
  end
  def self.cget(slot)
    self.current_configinfo(slot).values[0]
  end

  def self.add_map(klass, subclass, subpath, opts)
    tk_call('Widget::addmap', klass, subclass, subpath, opts)
  end

  def self.bwinclude(klass, subclass, subpath, *args)
    tk_call('Widget::bwinclude', klass, subclass, subpath, *args)
  end

  def self.create(klass, path, rename=None, &b)
    win = window(tk_call('Widget::create', klass, path, rename))
    if b
      if TkCore::WITH_RUBY_VM  ### Ruby 1.9 !!!!
        win.instance_exec(self, &b)
      else
        win.instance_eval(&b)
      end
    end
    win
  end

  def self.declare(klass, optlist)
    tk_call('Widget::declare', klass, optlist)
  end

  def self.define(klass, filename, *args)
    tk_call('Widget::define', klass, filename, *args)
  end

  def self.destroy(win)
    tk_call('Widget::destroy', _epath(win))
  end

  def self.focus_next(win)
    tk_call('Widget::focusNext', win)
  end

  def self.focus_ok(win)
    tk_call('Widget::focusOk', win)
  end

  def self.focus_prev(win)
    tk_call('Widget::focusPrev', win)
  end

  def self.generate_doc(dir, widgetlist)
    tk_call('Widget::generate-doc', dir, widgetlist)
  end

  def self.generate_widget_doc(klass, iscmd, file)
    tk_call('Widget::generate-widget-doc', klass, iscmd, file)
  end

  def self.get_option(win, option)
    tk_call('Widget::getoption', win, option)
  end

  def self.get_variable(win, varname, my_varname=None)
    tk_call('Widget::getVariable', win, varname, my_varname)
  end

  def self.has_changed(win, option, pvalue)
    tk_call('Widget::hasChanged', win, option, pvalue)
  end

  def self.init(klass, win, options)
    tk_call('Widget::init', klass, win, options)
  end

  def self.set_option(win, option, value)
    tk_call('Widget::setoption', win, option, value)
  end

  def self.sub_cget_strict(win, subwidget)
    tk_call('Widget::subcget', win, subwidget)
  end
  def self.sub_cget(win, subwidget)
    self.sub_cget_strict(win, subwidget)
  end

  def self.sync_options(klass, subclass, subpath, options)
    tk_call('Widget::syncoptions', klass, subclass, subpath, options)
  end

  def self.tkinclude(klass, tkwidget, subpath, *args)
    tk_call('Widget::tkinclude', klass, tkwidget, subpath, *args)
  end
end