ffi-tk 2009.11.29 → 2009.12.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,23 @@
1
+ [0ec1768 | 2009-12-05 16:50:39 UTC] Michael Fellinger <m.fellinger@gmail.com>
2
+
3
+ * Gnugo defaults to 19 size
4
+
5
+ [95e450e | 2009-12-05 12:30:24 UTC] Michael Fellinger <m.fellinger@gmail.com>
6
+
7
+ * Add license and some options
8
+
9
+ [01bc732 | 2009-12-05 07:10:23 UTC] Michael Fellinger <m.fellinger@gmail.com>
10
+
11
+ * Fix some stuff of Canvas
12
+
13
+ [709119c | 2009-11-28 15:17:42 UTC] Michael Fellinger <m.fellinger@gmail.com>
14
+
15
+ * Make gemspec and related files
16
+
17
+ [a03ce1d | 2009-11-28 10:05:07 UTC] Michael Fellinger <m.fellinger@gmail.com>
18
+
19
+ * Fix Treeview#delete and add Treeview#clear
20
+
1
21
  [294fdaf | 2009-11-23 08:13:47 UTC] Julian Langschaedel <meta.rb@gmail.com>
2
22
 
3
23
  * Fix Listbox#value
data/MANIFEST CHANGED
@@ -20,6 +20,7 @@ example/tile/kroc_rb_demo.rb
20
20
  example/tile/notebook.rb
21
21
  example/tile/theme_hello.rb
22
22
  example/tile/treeview.rb
23
+ example/tkgo.rb
23
24
  example/various.rb
24
25
  example/wait.rb
25
26
  ffi-tk.gemspec
data/example/tkgo.rb ADDED
@@ -0,0 +1,269 @@
1
+ # Copyright (c) 2009 Michael Fellinger <m.fellinger@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all
11
+ # copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
+ # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ # tkgo.rb is an extended implementation of the goco frontend for GNU Go.
22
+ # goco can be found at http://stud4.tuwien.ac.at/~e0225855/
23
+ #
24
+ # TkGo contains many bugfixes and is written in Ruby.
25
+ # It shows some basics of Tk::Canvas usage.
26
+
27
+ require 'ffi-tk'
28
+ require 'optparse'
29
+ require 'open3'
30
+
31
+ class TkGo
32
+ attr_accessor(:linedist, :frame, :goban, :passb, :scoreb, :undob, :boardsize,
33
+ :sin, :sout, :serr, :status)
34
+
35
+ def initialize(options)
36
+ index = options.index('--boardsize')
37
+ @boardsize = index ? options[index + 1] : 19
38
+ @linedist = 28
39
+ @black_history = []
40
+ @white_history = []
41
+
42
+ cmd = "gnugo --mode gtp #{options.join(' ')}"
43
+
44
+ Open3.popen3 cmd do |sin, sout, serr|
45
+ @sin, @sout, @serr = sin, sout, serr
46
+ setup_widgets
47
+ Tk.mainloop
48
+ end
49
+ end
50
+
51
+ def setup_widgets
52
+ Tk::Tile.set_theme 'clam'
53
+
54
+ @frame = Tk::Tile::Frame.new
55
+ @passb = Tk::Tile::Button.new(frame, text: 'Pass'){ clicked_field('pass') }
56
+ @scoreb = Tk::Tile::Button.new(frame, text: 'Score'){ score }
57
+ @undob = Tk::Tile::Button.new(frame, text: 'Undo'){
58
+ 2.times{
59
+ sin.puts("undo")
60
+ read_pipe
61
+ }
62
+ @white_history.pop
63
+ @black_history.pop
64
+ draw_pieces
65
+ }
66
+ @status = Tk::Tile::Label.new
67
+ passb.pack(padx: 5, pady: 5, side: :left)
68
+ scoreb.pack(padx: 5, pady: 5, side: :left)
69
+ undob.pack(padx: 5, pady: 5, side: :left)
70
+ status.pack(side: :bottom, expand: true, fill: :both)
71
+
72
+ Tk.root.wm_title = 'GO considered'
73
+ Tk.root.bind('<Destroy>'){
74
+ sin.puts("exit")
75
+ exit
76
+ }
77
+
78
+ gobansize = linedist * (boardsize + 1)
79
+ @goban = Tk::Canvas.new(
80
+ Tk.root,
81
+ height: gobansize,
82
+ width: gobansize,
83
+ background: '#eebb77')
84
+ goban.pack(expand: true)
85
+ frame.pack(expand: true)
86
+ draw_board(goban)
87
+ end
88
+
89
+ # NOTE: there is no I
90
+ def x_to_letter(x)
91
+ %w[A B C D E F G H J K L M N O P Q R S T][x]
92
+ end
93
+
94
+ def read_pipe
95
+ reply = sout.gets.strip.split
96
+ ignore = sout.gets
97
+ reply
98
+ end
99
+
100
+ def draw_pieces
101
+ sin.puts("list_stones black")
102
+ blacks = read_pipe
103
+ blacks.shift
104
+
105
+ sin.puts("list_stones white")
106
+ whites = read_pipe
107
+ whites.shift
108
+
109
+ goban.delete(:piece, :marker)
110
+
111
+ blacks.each{|name| draw_piece(name, :black) }
112
+ whites.each{|name| draw_piece(name, :white) }
113
+
114
+ draw_markers(blacks.any?, whites.any?)
115
+ end
116
+
117
+ def draw_piece(name, color)
118
+ cs = goban.coords(name)
119
+ return if cs.empty?
120
+
121
+ goban.create_oval(*cs, tags: [:piece], fill: color)
122
+ outline = color == :white ? :black : :white
123
+ end
124
+
125
+ def draw_markers(blacks, whites)
126
+ last_white = @white_history.reject{|name| name =~ /pass/i }.last
127
+ draw_marker(last_white, :black) if whites && last_white
128
+
129
+ last_black = @black_history.reject{|name| name =~ /pass/i }.last
130
+ draw_marker(last_black, :white) if blacks && last_black
131
+ end
132
+
133
+ def draw_marker(name, color)
134
+ p draw_marker: [name, color]
135
+ x1, y1, x2, y2 = goban.coords(name)
136
+ margin = linedist / 4
137
+ cs = (x1 + margin), (y1 + margin), (x2 - margin), (y2 - margin)
138
+ goban.create_rectangle(*cs, tags: [:marker], outline: color)
139
+ end
140
+
141
+ def clicked_field(name)
142
+ @black_history << name
143
+ sin.puts("play black #{name}")
144
+ reply = read_pipe
145
+
146
+ return if reply[0] == '?'
147
+
148
+ sin.puts("genmove white")
149
+ pos = read_pipe.last
150
+ @white_history << pos
151
+ status.value = "White: #{pos}"
152
+
153
+ draw_pieces
154
+ rescue => ex
155
+ puts "#{ex.class}: #{ex}", *ex.backtrace
156
+ nil
157
+ end
158
+
159
+ def score
160
+ sin.puts("final_score")
161
+ reply = read_pipe.last
162
+ status.value = reply
163
+ end
164
+
165
+ def draw_board(board)
166
+ max = boardsize * linedist
167
+
168
+ 1.upto(boardsize) do |i|
169
+ start = linedist * i
170
+ board.create_line(linedist, start, max, start)
171
+ board.create_line(start, linedist, start, max)
172
+ end
173
+
174
+ (0...boardsize).each do |i|
175
+ (0...boardsize).each do |j|
176
+ x1 = ((linedist * i) + (linedist / 2)) - 2
177
+ y1 = ((linedist * j) + (linedist / 2)) - 2
178
+ x2 = (x1 + linedist) - 2
179
+ y2 = (y1 + linedist) - 2
180
+
181
+ fieldname = [x_to_letter(i), j + 1].join
182
+ # color = '#' << Array.new(3){ rand(255).to_s(16).rjust(2, '0') }.join
183
+ color = nil
184
+ board.create_rectangle(
185
+ x1, y1, x2, y2, tags: [fieldname], outline: nil, fill: color)
186
+ board.bind(fieldname, '<1>'){ clicked_field(fieldname) }
187
+ end
188
+ end
189
+ end
190
+ end
191
+
192
+ options = []
193
+
194
+ op = OptionParser.new{|o|
195
+ o.separator "\nMain Options:"
196
+ o.on('--level <amount>', Integer, 'strength (default 10)'){|amount|
197
+ options << '--level' << amount }
198
+ o.on('--never-resign', 'Forbid GNU Go to resign'){
199
+ options << '--never-resign' }
200
+ o.on('--resign-allowed', 'Allow resignation (default)'){
201
+ options << '--resign-allowed' }
202
+ o.on('-l', '--infile <file>', 'Load name sgf file'){|file|
203
+ options << '--infile' << file }
204
+ o.on('-L', '--until <move>', 'Stop loading just before move is played. <move>
205
+ can be the move number or location (eg L10).'){|move|
206
+ options << '--until' << move }
207
+ o.on('-o', '--outfile <file>', 'Write sgf output to file'){|file|
208
+ options << '--outfile' << file }
209
+ o.on('--printsgf <file>', 'Write position as a diagram to file (use with -l)'){|file|
210
+ options << '--printsgf' << file }
211
+
212
+ o.separator "\nGame Options:"
213
+ o.on('--boardsize <num>', Integer, 'Set the board size to use (1--19)'){|num|
214
+ options << '--boardsize' << num }
215
+ o.on('--color <color>', "Choose your color ('black' or 'white')"){|color|
216
+ options << '--color' << color }
217
+ o.on('--handicap <num>', Integer, 'Set the number of handicap stones (0--9)'){|num|
218
+ options << '--handicap' << num }
219
+ o.on('--komi <num>', Integer, 'Set the komi'){|num|
220
+ options << '--komi' << num }
221
+ o.on('--clock <sec>', 'Initialize the timer.'){|sec|
222
+ options << '--clock' << sec }
223
+ o.on('--byo-time <sec>', 'Initialize the byo-yomi timer.'){|sec|
224
+ options << '--byo-time' << sec }
225
+ o.on('--byo-period <stones>', 'Initialize the byo-yomi period.'){|stones|
226
+ options << '--byo-period' << stones }
227
+
228
+ o.on('--japanese-rules', '(default)'){
229
+ options << '---japanese-rules' }
230
+ o.on('--chinese-rules'){
231
+ options << '--chinese-rules' }
232
+ o.on('--forbid-suicide', 'Forbid suicide. (default)'){
233
+ options << '--forbid-suicide' }
234
+ o.on('--allow-suicide', 'Allow suicide except single-stone suicide.'){
235
+ options << '--allow-suicide' }
236
+ o.on('--allow-all-suicide', 'Allow all suicide moves.'){
237
+ options << '--allow-all-suicide' }
238
+ o.on('--simple-ko', 'Forbid simple ko recapture. (default)'){
239
+ options << '--simple-ko' }
240
+ o.on('--no-ko', 'Allow any ko recapture.'){
241
+ options << '--no-ko' }
242
+ o.on('--positional-superko', 'Positional superko restrictions.'){
243
+ options << '--positional-superko' }
244
+ o.on('--situational-superko', 'Situational superko restrictions.'){
245
+ options << '--situational-superko' }
246
+
247
+ o.on('--play-out-aftermath'){
248
+ options << '--play-out-aftermath' }
249
+ o.on('--capture-all-dead'){
250
+ options << '--capture-all-dead' }
251
+
252
+ o.on('--min-level <amount>', 'minimum level for adjustment schemes'){|amount|
253
+ options << '--min-level' << amount }
254
+ o.on('--max-level <amount>', 'maximum level for adjustment schemes'){|amount|
255
+ options << '--max-level' << amount }
256
+ o.on('--autolevel', 'adapt gnugo level during game to respect
257
+ the time specified by --clock <sec>.'){
258
+ options << '--autolevel' }
259
+
260
+
261
+ o.on('-h', '--help'){
262
+ puts o
263
+ exit
264
+ }
265
+ }
266
+
267
+ op.parse!
268
+
269
+ TkGo.new(options)
data/ffi-tk.gemspec CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{ffi-tk}
5
- s.version = "2009.11.29"
5
+ s.version = "2009.12.14"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Michael 'manveru' Fellinger"]
9
- s.date = %q{2009-11-29}
9
+ s.date = %q{2009-12-14}
10
10
  s.description = %q{Pure Ruby FFI wrapper for the Tk GUI toolkit.}
11
11
  s.email = %q{m.fellinger@gmail.com}
12
- s.files = ["CHANGELOG", "MANIFEST", "README.md", "Rakefile", "TODO.md", "bin/rwish", "doc/MIT_LICENSE", "doc/TCL_LICENSE", "example/choose_color.rb", "example/choose_directory.rb", "example/dialog.rb", "example/hello.rb", "example/message_box.rb", "example/option_menu.rb", "example/popup.rb", "example/set_palette.rb", "example/text.rb", "example/tile/kroc_demo_small.rb", "example/tile/kroc_rb_demo.rb", "example/tile/notebook.rb", "example/tile/theme_hello.rb", "example/tile/treeview.rb", "example/various.rb", "example/wait.rb", "ffi-tk.gemspec", "lib/ffi-tk.rb", "lib/ffi-tk/command.rb", "lib/ffi-tk/command/after.rb", "lib/ffi-tk/command/bell.rb", "lib/ffi-tk/command/bind.rb", "lib/ffi-tk/command/bindtags.rb", "lib/ffi-tk/command/cget.rb", "lib/ffi-tk/command/choose_color.rb", "lib/ffi-tk/command/choose_directory.rb", "lib/ffi-tk/command/clipboard.rb", "lib/ffi-tk/command/configure.rb", "lib/ffi-tk/command/destroy.rb", "lib/ffi-tk/command/dialog.rb", "lib/ffi-tk/command/event.rb", "lib/ffi-tk/command/focus.rb", "lib/ffi-tk/command/font.rb", "lib/ffi-tk/command/get_open_file.rb", "lib/ffi-tk/command/get_save_file.rb", "lib/ffi-tk/command/grab.rb", "lib/ffi-tk/command/grid.rb", "lib/ffi-tk/command/image.rb", "lib/ffi-tk/command/lower.rb", "lib/ffi-tk/command/message_box.rb", "lib/ffi-tk/command/option_menu.rb", "lib/ffi-tk/command/pack.rb", "lib/ffi-tk/command/place.rb", "lib/ffi-tk/command/popup.rb", "lib/ffi-tk/command/raise.rb", "lib/ffi-tk/command/scrollable.rb", "lib/ffi-tk/command/selection.rb", "lib/ffi-tk/command/set_palette.rb", "lib/ffi-tk/command/tk_cmd.rb", "lib/ffi-tk/command/vars.rb", "lib/ffi-tk/command/wait.rb", "lib/ffi-tk/command/winfo.rb", "lib/ffi-tk/command/wm.rb", "lib/ffi-tk/core_extensions.rb", "lib/ffi-tk/event/data.rb", "lib/ffi-tk/event/handler.rb", "lib/ffi-tk/ffi/tcl.rb", "lib/ffi-tk/ffi/tcl/cmd_proc.rb", "lib/ffi-tk/ffi/tcl/eval_result.rb", "lib/ffi-tk/ffi/tcl/interp.rb", "lib/ffi-tk/ffi/tcl/obj.rb", "lib/ffi-tk/ffi/tcl/time.rb", "lib/ffi-tk/ffi/tk.rb", "lib/ffi-tk/geometry.rb", "lib/ffi-tk/thread_sender.rb", "lib/ffi-tk/tk.rb", "lib/ffi-tk/variable.rb", "lib/ffi-tk/widget.rb", "lib/ffi-tk/widget/button.rb", "lib/ffi-tk/widget/canvas.rb", "lib/ffi-tk/widget/canvas/arc.rb", "lib/ffi-tk/widget/canvas/bitmap.rb", "lib/ffi-tk/widget/canvas/image.rb", "lib/ffi-tk/widget/canvas/item.rb", "lib/ffi-tk/widget/canvas/line.rb", "lib/ffi-tk/widget/canvas/oval.rb", "lib/ffi-tk/widget/canvas/polygon.rb", "lib/ffi-tk/widget/canvas/rectangle.rb", "lib/ffi-tk/widget/canvas/text.rb", "lib/ffi-tk/widget/canvas/window.rb", "lib/ffi-tk/widget/checkbutton.rb", "lib/ffi-tk/widget/entry.rb", "lib/ffi-tk/widget/frame.rb", "lib/ffi-tk/widget/label.rb", "lib/ffi-tk/widget/labelframe.rb", "lib/ffi-tk/widget/listbox.rb", "lib/ffi-tk/widget/menu.rb", "lib/ffi-tk/widget/menubutton.rb", "lib/ffi-tk/widget/message.rb", "lib/ffi-tk/widget/panedwindow.rb", "lib/ffi-tk/widget/radiobutton.rb", "lib/ffi-tk/widget/root.rb", "lib/ffi-tk/widget/scale.rb", "lib/ffi-tk/widget/scrollbar.rb", "lib/ffi-tk/widget/spinbox.rb", "lib/ffi-tk/widget/text.rb", "lib/ffi-tk/widget/text/peer.rb", "lib/ffi-tk/widget/tile.rb", "lib/ffi-tk/widget/tile/button.rb", "lib/ffi-tk/widget/tile/checkbutton.rb", "lib/ffi-tk/widget/tile/combobox.rb", "lib/ffi-tk/widget/tile/entry.rb", "lib/ffi-tk/widget/tile/frame.rb", "lib/ffi-tk/widget/tile/label.rb", "lib/ffi-tk/widget/tile/labelframe.rb", "lib/ffi-tk/widget/tile/menubutton.rb", "lib/ffi-tk/widget/tile/notebook.rb", "lib/ffi-tk/widget/tile/panedwindow.rb", "lib/ffi-tk/widget/tile/progressbar.rb", "lib/ffi-tk/widget/tile/radiobutton.rb", "lib/ffi-tk/widget/tile/scale.rb", "lib/ffi-tk/widget/tile/scrollbar.rb", "lib/ffi-tk/widget/tile/separator.rb", "lib/ffi-tk/widget/tile/sizegrip.rb", "lib/ffi-tk/widget/tile/style.rb", "lib/ffi-tk/widget/tile/treeview.rb", "lib/ffi-tk/widget/toplevel.rb", "spec/ffi-tk/command/bindtags.rb", "spec/ffi-tk/command/clipboard.rb", "spec/ffi-tk/command/font.rb", "spec/ffi-tk/command/grid.rb", "spec/ffi-tk/command/image.rb", "spec/ffi-tk/command/pack.rb", "spec/ffi-tk/command/place.rb", "spec/ffi-tk/command/selection.rb", "spec/ffi-tk/command/vars.rb", "spec/ffi-tk/command/winfo.rb", "spec/ffi-tk/command/wm.rb", "spec/ffi-tk/event.rb", "spec/ffi-tk/tile/button.rb", "spec/ffi-tk/tile/checkbutton.rb", "spec/ffi-tk/tile/combobox.rb", "spec/ffi-tk/tile/entry.rb", "spec/ffi-tk/tile/frame.rb", "spec/ffi-tk/tile/label.rb", "spec/ffi-tk/tile/labelframe.rb", "spec/ffi-tk/tile/menubutton.rb", "spec/ffi-tk/tile/notebook.rb", "spec/ffi-tk/tile/panedwindow.rb", "spec/ffi-tk/tile/progressbar.rb", "spec/ffi-tk/tile/radiobutton.rb", "spec/ffi-tk/tile/scale.rb", "spec/ffi-tk/tile/scrollbar.rb", "spec/ffi-tk/tile/separator.rb", "spec/ffi-tk/tile/sizegrip.rb", "spec/ffi-tk/tile/style.rb", "spec/ffi-tk/tile/treeview.rb", "spec/ffi-tk/variable.rb", "spec/ffi-tk/widget/button.rb", "spec/ffi-tk/widget/canvas.rb", "spec/ffi-tk/widget/checkbutton.rb", "spec/ffi-tk/widget/entry.rb", "spec/ffi-tk/widget/frame.rb", "spec/ffi-tk/widget/label.rb", "spec/ffi-tk/widget/labelframe.rb", "spec/ffi-tk/widget/listbox.rb", "spec/ffi-tk/widget/menu.rb", "spec/ffi-tk/widget/menubutton.rb", "spec/ffi-tk/widget/message.rb", "spec/ffi-tk/widget/panedwindow.rb", "spec/ffi-tk/widget/radiobutton.rb", "spec/ffi-tk/widget/root.rb", "spec/ffi-tk/widget/scale.rb", "spec/ffi-tk/widget/scrollbar.rb", "spec/ffi-tk/widget/spinbox.rb", "spec/ffi-tk/widget/text.rb", "spec/ffi-tk/widget/toplevel.rb", "spec/helper.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/ycov.rake"]
12
+ s.files = ["CHANGELOG", "MANIFEST", "README.md", "Rakefile", "TODO.md", "bin/rwish", "doc/MIT_LICENSE", "doc/TCL_LICENSE", "example/choose_color.rb", "example/choose_directory.rb", "example/dialog.rb", "example/hello.rb", "example/message_box.rb", "example/option_menu.rb", "example/popup.rb", "example/set_palette.rb", "example/text.rb", "example/tile/kroc_demo_small.rb", "example/tile/kroc_rb_demo.rb", "example/tile/notebook.rb", "example/tile/theme_hello.rb", "example/tile/treeview.rb", "example/tkgo.rb", "example/various.rb", "example/wait.rb", "ffi-tk.gemspec", "lib/ffi-tk.rb", "lib/ffi-tk/command.rb", "lib/ffi-tk/command/after.rb", "lib/ffi-tk/command/bell.rb", "lib/ffi-tk/command/bind.rb", "lib/ffi-tk/command/bindtags.rb", "lib/ffi-tk/command/cget.rb", "lib/ffi-tk/command/choose_color.rb", "lib/ffi-tk/command/choose_directory.rb", "lib/ffi-tk/command/clipboard.rb", "lib/ffi-tk/command/configure.rb", "lib/ffi-tk/command/destroy.rb", "lib/ffi-tk/command/dialog.rb", "lib/ffi-tk/command/event.rb", "lib/ffi-tk/command/focus.rb", "lib/ffi-tk/command/font.rb", "lib/ffi-tk/command/get_open_file.rb", "lib/ffi-tk/command/get_save_file.rb", "lib/ffi-tk/command/grab.rb", "lib/ffi-tk/command/grid.rb", "lib/ffi-tk/command/image.rb", "lib/ffi-tk/command/lower.rb", "lib/ffi-tk/command/message_box.rb", "lib/ffi-tk/command/option_menu.rb", "lib/ffi-tk/command/pack.rb", "lib/ffi-tk/command/place.rb", "lib/ffi-tk/command/popup.rb", "lib/ffi-tk/command/raise.rb", "lib/ffi-tk/command/scrollable.rb", "lib/ffi-tk/command/selection.rb", "lib/ffi-tk/command/set_palette.rb", "lib/ffi-tk/command/tk_cmd.rb", "lib/ffi-tk/command/vars.rb", "lib/ffi-tk/command/wait.rb", "lib/ffi-tk/command/winfo.rb", "lib/ffi-tk/command/wm.rb", "lib/ffi-tk/core_extensions.rb", "lib/ffi-tk/event/data.rb", "lib/ffi-tk/event/handler.rb", "lib/ffi-tk/ffi/tcl.rb", "lib/ffi-tk/ffi/tcl/cmd_proc.rb", "lib/ffi-tk/ffi/tcl/eval_result.rb", "lib/ffi-tk/ffi/tcl/interp.rb", "lib/ffi-tk/ffi/tcl/obj.rb", "lib/ffi-tk/ffi/tcl/time.rb", "lib/ffi-tk/ffi/tk.rb", "lib/ffi-tk/geometry.rb", "lib/ffi-tk/thread_sender.rb", "lib/ffi-tk/tk.rb", "lib/ffi-tk/variable.rb", "lib/ffi-tk/widget.rb", "lib/ffi-tk/widget/button.rb", "lib/ffi-tk/widget/canvas.rb", "lib/ffi-tk/widget/canvas/arc.rb", "lib/ffi-tk/widget/canvas/bitmap.rb", "lib/ffi-tk/widget/canvas/image.rb", "lib/ffi-tk/widget/canvas/item.rb", "lib/ffi-tk/widget/canvas/line.rb", "lib/ffi-tk/widget/canvas/oval.rb", "lib/ffi-tk/widget/canvas/polygon.rb", "lib/ffi-tk/widget/canvas/rectangle.rb", "lib/ffi-tk/widget/canvas/text.rb", "lib/ffi-tk/widget/canvas/window.rb", "lib/ffi-tk/widget/checkbutton.rb", "lib/ffi-tk/widget/entry.rb", "lib/ffi-tk/widget/frame.rb", "lib/ffi-tk/widget/label.rb", "lib/ffi-tk/widget/labelframe.rb", "lib/ffi-tk/widget/listbox.rb", "lib/ffi-tk/widget/menu.rb", "lib/ffi-tk/widget/menubutton.rb", "lib/ffi-tk/widget/message.rb", "lib/ffi-tk/widget/panedwindow.rb", "lib/ffi-tk/widget/radiobutton.rb", "lib/ffi-tk/widget/root.rb", "lib/ffi-tk/widget/scale.rb", "lib/ffi-tk/widget/scrollbar.rb", "lib/ffi-tk/widget/spinbox.rb", "lib/ffi-tk/widget/text.rb", "lib/ffi-tk/widget/text/peer.rb", "lib/ffi-tk/widget/tile.rb", "lib/ffi-tk/widget/tile/button.rb", "lib/ffi-tk/widget/tile/checkbutton.rb", "lib/ffi-tk/widget/tile/combobox.rb", "lib/ffi-tk/widget/tile/entry.rb", "lib/ffi-tk/widget/tile/frame.rb", "lib/ffi-tk/widget/tile/label.rb", "lib/ffi-tk/widget/tile/labelframe.rb", "lib/ffi-tk/widget/tile/menubutton.rb", "lib/ffi-tk/widget/tile/notebook.rb", "lib/ffi-tk/widget/tile/panedwindow.rb", "lib/ffi-tk/widget/tile/progressbar.rb", "lib/ffi-tk/widget/tile/radiobutton.rb", "lib/ffi-tk/widget/tile/scale.rb", "lib/ffi-tk/widget/tile/scrollbar.rb", "lib/ffi-tk/widget/tile/separator.rb", "lib/ffi-tk/widget/tile/sizegrip.rb", "lib/ffi-tk/widget/tile/style.rb", "lib/ffi-tk/widget/tile/treeview.rb", "lib/ffi-tk/widget/toplevel.rb", "spec/ffi-tk/command/bindtags.rb", "spec/ffi-tk/command/clipboard.rb", "spec/ffi-tk/command/font.rb", "spec/ffi-tk/command/grid.rb", "spec/ffi-tk/command/image.rb", "spec/ffi-tk/command/pack.rb", "spec/ffi-tk/command/place.rb", "spec/ffi-tk/command/selection.rb", "spec/ffi-tk/command/vars.rb", "spec/ffi-tk/command/winfo.rb", "spec/ffi-tk/command/wm.rb", "spec/ffi-tk/event.rb", "spec/ffi-tk/tile/button.rb", "spec/ffi-tk/tile/checkbutton.rb", "spec/ffi-tk/tile/combobox.rb", "spec/ffi-tk/tile/entry.rb", "spec/ffi-tk/tile/frame.rb", "spec/ffi-tk/tile/label.rb", "spec/ffi-tk/tile/labelframe.rb", "spec/ffi-tk/tile/menubutton.rb", "spec/ffi-tk/tile/notebook.rb", "spec/ffi-tk/tile/panedwindow.rb", "spec/ffi-tk/tile/progressbar.rb", "spec/ffi-tk/tile/radiobutton.rb", "spec/ffi-tk/tile/scale.rb", "spec/ffi-tk/tile/scrollbar.rb", "spec/ffi-tk/tile/separator.rb", "spec/ffi-tk/tile/sizegrip.rb", "spec/ffi-tk/tile/style.rb", "spec/ffi-tk/tile/treeview.rb", "spec/ffi-tk/variable.rb", "spec/ffi-tk/widget/button.rb", "spec/ffi-tk/widget/canvas.rb", "spec/ffi-tk/widget/checkbutton.rb", "spec/ffi-tk/widget/entry.rb", "spec/ffi-tk/widget/frame.rb", "spec/ffi-tk/widget/label.rb", "spec/ffi-tk/widget/labelframe.rb", "spec/ffi-tk/widget/listbox.rb", "spec/ffi-tk/widget/menu.rb", "spec/ffi-tk/widget/menubutton.rb", "spec/ffi-tk/widget/message.rb", "spec/ffi-tk/widget/panedwindow.rb", "spec/ffi-tk/widget/radiobutton.rb", "spec/ffi-tk/widget/root.rb", "spec/ffi-tk/widget/scale.rb", "spec/ffi-tk/widget/scrollbar.rb", "spec/ffi-tk/widget/spinbox.rb", "spec/ffi-tk/widget/text.rb", "spec/ffi-tk/widget/toplevel.rb", "spec/helper.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/ycov.rake"]
13
13
  s.homepage = %q{http://github.com/manveru/ffi-tk}
14
14
  s.require_paths = ["lib"]
15
15
  s.rubygems_version = %q{1.3.5}
@@ -169,9 +169,9 @@ module Tk
169
169
  end
170
170
  end
171
171
 
172
- name = "#{tag_or_id}_#{tag_name}".scan(/\w+/).join('_')
172
+ name = "#{tag_or_id}".scan(/\w+/).join('_')
173
173
  @events ||= {}
174
- unregister_event(name)
174
+ # unregister_event(name)
175
175
 
176
176
  Event::Handler.register_custom(script) do |id|
177
177
  code = "%s bind %s %s { ::RubyFFI::event %d '' %s }"
@@ -329,28 +329,28 @@ module Tk
329
329
  execute(:find, tag, :above, tag_or_id)
330
330
  end
331
331
 
332
- def find_all(tag)
333
- execute(:find, tag, :all)
332
+ def find_all
333
+ execute(:find, :all)
334
334
  end
335
335
 
336
- def find_below(tag, tag_or_id)
337
- execute(:find, tag, :below, tag_or_id)
336
+ def find_below(tag_or_id)
337
+ execute(:find, :below, tag_or_id)
338
338
  end
339
339
 
340
- def find_closest(tag, x, y, halo = None, start = None)
341
- execute(:find, tag, :closest, x, y, halo, start)
340
+ def find_closest(x, y, halo = None, start = None)
341
+ execute(:find, :closest, x, y, halo, start)
342
342
  end
343
343
 
344
- def find_enclosed(tag, x1, y1, x2, y2)
345
- execute(:find, tag, :enclosed, x1, y1, x2, y2)
344
+ def find_enclosed(x1, y1, x2, y2)
345
+ execute(:find, :enclosed, x1, y1, x2, y2)
346
346
  end
347
347
 
348
- def find_overlapping(tag, x1, y1, x2, y2)
349
- execute(:find, tag, :overlapping, x1, y1, x2, y2)
348
+ def find_overlapping(x1, y1, x2, y2)
349
+ execute(:find, :overlapping, x1, y1, x2, y2)
350
350
  end
351
351
 
352
- def find_withtag(tag, tag_or_id)
353
- execute(:find, tag, :withtag, tag_or_id)
352
+ def find_withtag(tag_or_id)
353
+ execute(:find, :withtag, tag_or_id)
354
354
  end
355
355
 
356
356
  # Set the keyboard focus for the canvas widget to the item given by
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-tk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2009.11.29
4
+ version: 2009.12.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael 'manveru' Fellinger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-29 00:00:00 +09:00
12
+ date: 2009-12-14 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -63,6 +63,7 @@ files:
63
63
  - example/tile/notebook.rb
64
64
  - example/tile/theme_hello.rb
65
65
  - example/tile/treeview.rb
66
+ - example/tkgo.rb
66
67
  - example/various.rb
67
68
  - example/wait.rb
68
69
  - ffi-tk.gemspec