ffi-tk 2009.11.29
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 +748 -0
- data/MANIFEST +188 -0
- data/README.md +85 -0
- data/Rakefile +47 -0
- data/TODO.md +62 -0
- data/bin/rwish +33 -0
- data/doc/MIT_LICENSE +18 -0
- data/doc/TCL_LICENSE +39 -0
- data/example/choose_color.rb +22 -0
- data/example/choose_directory.rb +22 -0
- data/example/dialog.rb +37 -0
- data/example/hello.rb +11 -0
- data/example/message_box.rb +26 -0
- data/example/option_menu.rb +17 -0
- data/example/popup.rb +24 -0
- data/example/set_palette.rb +32 -0
- data/example/text.rb +47 -0
- data/example/tile/kroc_demo_small.rb +123 -0
- data/example/tile/kroc_rb_demo.rb +135 -0
- data/example/tile/notebook.rb +48 -0
- data/example/tile/theme_hello.rb +38 -0
- data/example/tile/treeview.rb +71 -0
- data/example/various.rb +25 -0
- data/example/wait.rb +16 -0
- data/ffi-tk.gemspec +33 -0
- data/lib/ffi-tk.rb +76 -0
- data/lib/ffi-tk/command.rb +39 -0
- data/lib/ffi-tk/command/after.rb +36 -0
- data/lib/ffi-tk/command/bell.rb +34 -0
- data/lib/ffi-tk/command/bind.rb +11 -0
- data/lib/ffi-tk/command/bindtags.rb +69 -0
- data/lib/ffi-tk/command/cget.rb +92 -0
- data/lib/ffi-tk/command/choose_color.rb +29 -0
- data/lib/ffi-tk/command/choose_directory.rb +45 -0
- data/lib/ffi-tk/command/clipboard.rb +102 -0
- data/lib/ffi-tk/command/configure.rb +88 -0
- data/lib/ffi-tk/command/destroy.rb +12 -0
- data/lib/ffi-tk/command/dialog.rb +54 -0
- data/lib/ffi-tk/command/event.rb +79 -0
- data/lib/ffi-tk/command/focus.rb +70 -0
- data/lib/ffi-tk/command/font.rb +124 -0
- data/lib/ffi-tk/command/get_open_file.rb +85 -0
- data/lib/ffi-tk/command/get_save_file.rb +83 -0
- data/lib/ffi-tk/command/grab.rb +141 -0
- data/lib/ffi-tk/command/grid.rb +246 -0
- data/lib/ffi-tk/command/image.rb +79 -0
- data/lib/ffi-tk/command/lower.rb +23 -0
- data/lib/ffi-tk/command/message_box.rb +65 -0
- data/lib/ffi-tk/command/option_menu.rb +8 -0
- data/lib/ffi-tk/command/pack.rb +99 -0
- data/lib/ffi-tk/command/place.rb +91 -0
- data/lib/ffi-tk/command/popup.rb +14 -0
- data/lib/ffi-tk/command/raise.rb +25 -0
- data/lib/ffi-tk/command/scrollable.rb +151 -0
- data/lib/ffi-tk/command/selection.rb +132 -0
- data/lib/ffi-tk/command/set_palette.rb +9 -0
- data/lib/ffi-tk/command/tk_cmd.rb +155 -0
- data/lib/ffi-tk/command/vars.rb +82 -0
- data/lib/ffi-tk/command/wait.rb +39 -0
- data/lib/ffi-tk/command/winfo.rb +668 -0
- data/lib/ffi-tk/command/wm.rb +1025 -0
- data/lib/ffi-tk/core_extensions.rb +154 -0
- data/lib/ffi-tk/event/data.rb +60 -0
- data/lib/ffi-tk/event/handler.rb +44 -0
- data/lib/ffi-tk/ffi/tcl.rb +92 -0
- data/lib/ffi-tk/ffi/tcl/cmd_proc.rb +10 -0
- data/lib/ffi-tk/ffi/tcl/eval_result.rb +148 -0
- data/lib/ffi-tk/ffi/tcl/interp.rb +95 -0
- data/lib/ffi-tk/ffi/tcl/obj.rb +89 -0
- data/lib/ffi-tk/ffi/tcl/time.rb +36 -0
- data/lib/ffi-tk/ffi/tk.rb +35 -0
- data/lib/ffi-tk/geometry.rb +32 -0
- data/lib/ffi-tk/thread_sender.rb +26 -0
- data/lib/ffi-tk/tk.rb +222 -0
- data/lib/ffi-tk/variable.rb +46 -0
- data/lib/ffi-tk/widget.rb +68 -0
- data/lib/ffi-tk/widget/button.rb +41 -0
- data/lib/ffi-tk/widget/canvas.rb +806 -0
- data/lib/ffi-tk/widget/canvas/arc.rb +18 -0
- data/lib/ffi-tk/widget/canvas/bitmap.rb +13 -0
- data/lib/ffi-tk/widget/canvas/image.rb +10 -0
- data/lib/ffi-tk/widget/canvas/item.rb +170 -0
- data/lib/ffi-tk/widget/canvas/line.rb +16 -0
- data/lib/ffi-tk/widget/canvas/oval.rb +15 -0
- data/lib/ffi-tk/widget/canvas/polygon.rb +16 -0
- data/lib/ffi-tk/widget/canvas/rectangle.rb +15 -0
- data/lib/ffi-tk/widget/canvas/text.rb +15 -0
- data/lib/ffi-tk/widget/canvas/window.rb +11 -0
- data/lib/ffi-tk/widget/checkbutton.rb +63 -0
- data/lib/ffi-tk/widget/entry.rb +208 -0
- data/lib/ffi-tk/widget/frame.rb +12 -0
- data/lib/ffi-tk/widget/label.rb +26 -0
- data/lib/ffi-tk/widget/labelframe.rb +7 -0
- data/lib/ffi-tk/widget/listbox.rb +192 -0
- data/lib/ffi-tk/widget/menu.rb +318 -0
- data/lib/ffi-tk/widget/menubutton.rb +7 -0
- data/lib/ffi-tk/widget/message.rb +36 -0
- data/lib/ffi-tk/widget/panedwindow.rb +164 -0
- data/lib/ffi-tk/widget/radiobutton.rb +43 -0
- data/lib/ffi-tk/widget/root.rb +8 -0
- data/lib/ffi-tk/widget/scale.rb +44 -0
- data/lib/ffi-tk/widget/scrollbar.rb +114 -0
- data/lib/ffi-tk/widget/spinbox.rb +198 -0
- data/lib/ffi-tk/widget/text.rb +893 -0
- data/lib/ffi-tk/widget/text/peer.rb +10 -0
- data/lib/ffi-tk/widget/tile.rb +70 -0
- data/lib/ffi-tk/widget/tile/button.rb +8 -0
- data/lib/ffi-tk/widget/tile/checkbutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/combobox.rb +43 -0
- data/lib/ffi-tk/widget/tile/entry.rb +8 -0
- data/lib/ffi-tk/widget/tile/frame.rb +13 -0
- data/lib/ffi-tk/widget/tile/label.rb +9 -0
- data/lib/ffi-tk/widget/tile/labelframe.rb +8 -0
- data/lib/ffi-tk/widget/tile/menubutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/notebook.rb +93 -0
- data/lib/ffi-tk/widget/tile/panedwindow.rb +9 -0
- data/lib/ffi-tk/widget/tile/progressbar.rb +59 -0
- data/lib/ffi-tk/widget/tile/radiobutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/scale.rb +8 -0
- data/lib/ffi-tk/widget/tile/scrollbar.rb +41 -0
- data/lib/ffi-tk/widget/tile/separator.rb +23 -0
- data/lib/ffi-tk/widget/tile/sizegrip.rb +24 -0
- data/lib/ffi-tk/widget/tile/style.rb +114 -0
- data/lib/ffi-tk/widget/tile/treeview.rb +414 -0
- data/lib/ffi-tk/widget/toplevel.rb +14 -0
- data/spec/ffi-tk/command/bindtags.rb +18 -0
- data/spec/ffi-tk/command/clipboard.rb +18 -0
- data/spec/ffi-tk/command/font.rb +67 -0
- data/spec/ffi-tk/command/grid.rb +6 -0
- data/spec/ffi-tk/command/image.rb +26 -0
- data/spec/ffi-tk/command/pack.rb +20 -0
- data/spec/ffi-tk/command/place.rb +20 -0
- data/spec/ffi-tk/command/selection.rb +13 -0
- data/spec/ffi-tk/command/vars.rb +32 -0
- data/spec/ffi-tk/command/winfo.rb +233 -0
- data/spec/ffi-tk/command/wm.rb +185 -0
- data/spec/ffi-tk/event.rb +95 -0
- data/spec/ffi-tk/tile/button.rb +51 -0
- data/spec/ffi-tk/tile/checkbutton.rb +13 -0
- data/spec/ffi-tk/tile/combobox.rb +65 -0
- data/spec/ffi-tk/tile/entry.rb +61 -0
- data/spec/ffi-tk/tile/frame.rb +65 -0
- data/spec/ffi-tk/tile/label.rb +17 -0
- data/spec/ffi-tk/tile/labelframe.rb +13 -0
- data/spec/ffi-tk/tile/menubutton.rb +13 -0
- data/spec/ffi-tk/tile/notebook.rb +103 -0
- data/spec/ffi-tk/tile/panedwindow.rb +13 -0
- data/spec/ffi-tk/tile/progressbar.rb +78 -0
- data/spec/ffi-tk/tile/radiobutton.rb +13 -0
- data/spec/ffi-tk/tile/scale.rb +13 -0
- data/spec/ffi-tk/tile/scrollbar.rb +43 -0
- data/spec/ffi-tk/tile/separator.rb +22 -0
- data/spec/ffi-tk/tile/sizegrip.rb +13 -0
- data/spec/ffi-tk/tile/style.rb +161 -0
- data/spec/ffi-tk/tile/treeview.rb +101 -0
- data/spec/ffi-tk/variable.rb +24 -0
- data/spec/ffi-tk/widget/button.rb +22 -0
- data/spec/ffi-tk/widget/canvas.rb +169 -0
- data/spec/ffi-tk/widget/checkbutton.rb +44 -0
- data/spec/ffi-tk/widget/entry.rb +155 -0
- data/spec/ffi-tk/widget/frame.rb +8 -0
- data/spec/ffi-tk/widget/label.rb +16 -0
- data/spec/ffi-tk/widget/labelframe.rb +12 -0
- data/spec/ffi-tk/widget/listbox.rb +19 -0
- data/spec/ffi-tk/widget/menu.rb +12 -0
- data/spec/ffi-tk/widget/menubutton.rb +12 -0
- data/spec/ffi-tk/widget/message.rb +12 -0
- data/spec/ffi-tk/widget/panedwindow.rb +12 -0
- data/spec/ffi-tk/widget/radiobutton.rb +12 -0
- data/spec/ffi-tk/widget/root.rb +9 -0
- data/spec/ffi-tk/widget/scale.rb +12 -0
- data/spec/ffi-tk/widget/scrollbar.rb +12 -0
- data/spec/ffi-tk/widget/spinbox.rb +12 -0
- data/spec/ffi-tk/widget/text.rb +246 -0
- data/spec/ffi-tk/widget/toplevel.rb +12 -0
- data/spec/helper.rb +3 -0
- data/tasks/authors.rake +21 -0
- data/tasks/bacon.rake +66 -0
- data/tasks/changelog.rake +18 -0
- data/tasks/gem.rake +22 -0
- data/tasks/gem_setup.rake +113 -0
- data/tasks/grancher.rake +12 -0
- data/tasks/manifest.rake +4 -0
- data/tasks/rcov.rake +17 -0
- data/tasks/release.rake +65 -0
- data/tasks/reversion.rake +8 -0
- data/tasks/setup.rake +12 -0
- data/tasks/ycov.rake +84 -0
- metadata +261 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type arc appear on the display as arc-shaped regions.
|
|
4
|
+
# An arc is a section of an oval delimited by two angles (specified by the
|
|
5
|
+
# :start and :extent options) and displayed in one of several ways
|
|
6
|
+
# (specified by the :style option).
|
|
7
|
+
class Arc < Item
|
|
8
|
+
options(
|
|
9
|
+
:dash, :activedash, :disableddash, :dashoffset, :fill, :activefill,
|
|
10
|
+
:disabledfill, :offset, :outline, :activeoutline, :disabledoutline,
|
|
11
|
+
:outlineoffset, :outlinestipple, :activeoutlinestipple,
|
|
12
|
+
:disabledoutlinestipple, :stipple, :activestipple, :disabledstipple,
|
|
13
|
+
:state, :tags, :width, :activewidth, :disabledwidth, :extent, :start,
|
|
14
|
+
:style
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type bitmap appear on the display as images with two colors,
|
|
4
|
+
# foreground and background.
|
|
5
|
+
class Bitmap < Item
|
|
6
|
+
options(
|
|
7
|
+
:state, :tags, :anchor, :background, :activebackground,
|
|
8
|
+
:disabledbackground, :bitmap, :activebitmap, :disabledbitmap,
|
|
9
|
+
:foreground, :activeforeground, :disabledforeground
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
class Item < Struct.new(:canvas, :id)
|
|
4
|
+
OPTION_MAP = {
|
|
5
|
+
activebackground: :bitmap,
|
|
6
|
+
activebitmap: :bitmap,
|
|
7
|
+
activedash: :integer,
|
|
8
|
+
activefill: :color,
|
|
9
|
+
activeforeground: :bitmap,
|
|
10
|
+
activeimage: :string,
|
|
11
|
+
activeoutline: :color,
|
|
12
|
+
activeoutlinestipple: :bitmap,
|
|
13
|
+
activestipple: :bitmap,
|
|
14
|
+
activewidth: :integer,
|
|
15
|
+
anchor: :string,
|
|
16
|
+
arrow: :symbol,
|
|
17
|
+
arrowshape: :list,
|
|
18
|
+
background: :color,
|
|
19
|
+
bitmap: :bitmap,
|
|
20
|
+
capstyle: :symbol,
|
|
21
|
+
dash: :integer,
|
|
22
|
+
dashoffset: :integer,
|
|
23
|
+
disabledbackground: :bitmap,
|
|
24
|
+
disabledbitmap: :bitmap,
|
|
25
|
+
disableddash: :integer,
|
|
26
|
+
disabledfill: :color,
|
|
27
|
+
disabledforeground: :bitmap,
|
|
28
|
+
disabledimage: :string,
|
|
29
|
+
disabledoutline: :color,
|
|
30
|
+
disabledoutlinestipple: :bitmap,
|
|
31
|
+
disabledstipple: :bitmap,
|
|
32
|
+
disabledwidth: :integer,
|
|
33
|
+
extent: :float,
|
|
34
|
+
fill: :color,
|
|
35
|
+
font: :font,
|
|
36
|
+
foreground: :color,
|
|
37
|
+
height: :integer,
|
|
38
|
+
image: :string,
|
|
39
|
+
joinstyle: :symbol,
|
|
40
|
+
justify: :symbol,
|
|
41
|
+
offset: :string,
|
|
42
|
+
outline: :color,
|
|
43
|
+
outlineoffset: :integer,
|
|
44
|
+
outlinestipple: :bitmap,
|
|
45
|
+
smooth: :boolean,
|
|
46
|
+
splinesteps: :integer,
|
|
47
|
+
start: :float,
|
|
48
|
+
state: :symbol,
|
|
49
|
+
stipple: :bitmap,
|
|
50
|
+
style: :symbol,
|
|
51
|
+
tags: :list,
|
|
52
|
+
text: :string,
|
|
53
|
+
underline: :integer,
|
|
54
|
+
width: :integer,
|
|
55
|
+
width: :integer,
|
|
56
|
+
window: :pathname
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
def self.create(canvas, type, id)
|
|
60
|
+
klass = Canvas.const_get(type.to_s.capitalize)
|
|
61
|
+
klass.new(canvas, id)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
OPTIONS_CODE = <<-RUBY
|
|
65
|
+
def %s
|
|
66
|
+
Cget.type_to_ruby(%p, canvas.itemcget(id, %p))
|
|
67
|
+
end
|
|
68
|
+
RUBY
|
|
69
|
+
|
|
70
|
+
def self.options(*names)
|
|
71
|
+
names.each do |name|
|
|
72
|
+
type = OPTION_MAP.fetch(name)
|
|
73
|
+
class_eval(OPTIONS_CODE % [name, type, name], __FILE__, __LINE__)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def to_tcl
|
|
78
|
+
TclString.new(id.to_s)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def inspect
|
|
82
|
+
"#<%s %d>" % [self.class.name, id]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def cget(option)
|
|
86
|
+
canvas.itemcget(self, option)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def addtag(tag)
|
|
90
|
+
canvas.addtag_withtag(tag, self)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def bbox
|
|
94
|
+
canvas.bbox(self)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def bind(sequence = None, &command)
|
|
98
|
+
canvas.bind(self, sequence, &command)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def coords(*coord_list)
|
|
102
|
+
canvas.coords(self, *coord_list)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def dchars(first, last = None)
|
|
106
|
+
canvas.dchars(self, first, last)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def delete
|
|
110
|
+
canvas.delete(self)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def dtag(tag)
|
|
114
|
+
canvas.dtag(self, tag)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def focus
|
|
118
|
+
canvas.focus(self)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def gettags
|
|
122
|
+
canvas.gettags(self)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def icursor(index)
|
|
126
|
+
canvas.icursor(self, index)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def index(index)
|
|
130
|
+
canvas.index(self, index)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def configure(options = None)
|
|
134
|
+
canvas.itemconfigure(self, options)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def lower(below = None)
|
|
138
|
+
canvas.lower(self, below)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def move(x_amount, y_amount)
|
|
142
|
+
canvas.move(self, x_amount, y_amount)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def raise(above = None)
|
|
146
|
+
canvas.raise(self, above)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def scale(x_origin, y_origin, x_scale, y_scale)
|
|
150
|
+
canvas.scale(self, x_origin, y_origin, x_scale, y_scale)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def select_adjust(index)
|
|
154
|
+
canvas.select_adjust(self, index)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def select_from(index)
|
|
158
|
+
canvas.select_from(self, index)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def select_to(index)
|
|
162
|
+
canvas.select_to(self, index)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def type
|
|
166
|
+
canvas.type(self)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type line appear on the display as one or more connected line
|
|
4
|
+
# segments or curves.
|
|
5
|
+
# Line items support coordinate indexing operations using the Canvas
|
|
6
|
+
# methods: [Canvas.dchars], [Canvas.index], and [Canvas.insert].
|
|
7
|
+
class Line < Item
|
|
8
|
+
options(
|
|
9
|
+
:dash, :activedash, :disableddash, :dashoffset, :fill, :activefill,
|
|
10
|
+
:disabledfill, :stipple, :activestipple, :disabledstipple, :state,
|
|
11
|
+
:tags, :width, :activewidth, :disabledwidth, :arrow, :arrowshape,
|
|
12
|
+
:capstyle, :joinstyle, :smooth, :splinesteps
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type oval appear as circular or oval regions on the display.
|
|
4
|
+
# Each oval may have an outline, a fill, or both.
|
|
5
|
+
class Oval < Item
|
|
6
|
+
options(
|
|
7
|
+
:dash, :activedash, :disableddash, :dashoffset, :fill, :activefill,
|
|
8
|
+
:disabledfill, :offset, :outline, :activeoutline, :disabledoutline,
|
|
9
|
+
:outlineoffset, :outlinestipple, :activeoutlinestipple,
|
|
10
|
+
:disabledoutlinestipple, :stipple, :activestipple, :disabledstipple,
|
|
11
|
+
:state, :tags, :width, :activewidth, :disabledwidth
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type polygon appear as polygonal or curved filled regions on the
|
|
4
|
+
# display. [Polygon] supports coordinate indexing operations using the
|
|
5
|
+
# [Canvas] methods: [Canvas.dchars], [Canvas.index], and [Canvas.insert].
|
|
6
|
+
class Polygon < Item
|
|
7
|
+
options(
|
|
8
|
+
:dash, :activedash, :disableddash, :dashoffset, :fill, :activefill,
|
|
9
|
+
:disabledfill, :offset, :outline, :activeoutline, :disabledoutline,
|
|
10
|
+
:outlinestipple, :activeoutlinestipple, :disabledoutlinestipple,
|
|
11
|
+
:stipple, :activestipple, :disabledstipple, :state, :tags, :width,
|
|
12
|
+
:activewidth, :disabledwidth, :joinstyle, :smooth, :splinesteps
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# Items of type rectangle appear as rectangular regions on the display.
|
|
4
|
+
# Each rectangle may have an outline, a fill, or both.
|
|
5
|
+
class Rectangle < Item
|
|
6
|
+
options(
|
|
7
|
+
:dash, :activedash, :disableddash, :dashoffset, :fill, :activefill,
|
|
8
|
+
:disabledfill, :offset, :outline, :activeoutline, :disabledoutline,
|
|
9
|
+
:outlineoffset, :outlinestipple, :activeoutlinestipple,
|
|
10
|
+
:disabledoutlinestipple, :stipple, :activestipple, :disabledstipple,
|
|
11
|
+
:state, :tags, :width, :activewidth, :disabledwidth
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Canvas
|
|
3
|
+
# A text item displays a string of characters on the screen in one or more
|
|
4
|
+
# lines. [Canvas::Text] items support indexing and selection, along with the
|
|
5
|
+
# following text-related [Canvas] methods: [Canvas.dchars], [Canvas.focus],
|
|
6
|
+
# [Canvas.icursor], and [Canvas.index].
|
|
7
|
+
class Text < Item
|
|
8
|
+
options(
|
|
9
|
+
:activefill, :activestipple, :anchor, :disabledfill, :disabledstipple,
|
|
10
|
+
:fill, :font, :justify, :state, :stipple, :tags, :text, :underline,
|
|
11
|
+
:width
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
# Create and manipulate checkbutton widgets
|
|
3
|
+
class CheckButton < Button
|
|
4
|
+
include Cget, Configure
|
|
5
|
+
|
|
6
|
+
def self.tk_command; 'checkbutton'; end
|
|
7
|
+
|
|
8
|
+
def initialize(parent = Tk.root, options = None)
|
|
9
|
+
if block_given?
|
|
10
|
+
super do |options|
|
|
11
|
+
options[:command] = register_command(:command, &Proc.new)
|
|
12
|
+
end
|
|
13
|
+
else
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Deselects the checkbutton and sets the associated variable to its “off”
|
|
19
|
+
# value.
|
|
20
|
+
def deselect
|
|
21
|
+
execute_only(:deselect)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Flashes the checkbutton.
|
|
25
|
+
# This is accomplished by redisplaying the checkbutton several times,
|
|
26
|
+
# alternating between active and normal colors.
|
|
27
|
+
# At the end of the flash the checkbutton is left in the same normal/active
|
|
28
|
+
# state as when the command was invoked.
|
|
29
|
+
# This command is ignored if the checkbutton's state is disabled.
|
|
30
|
+
def flash
|
|
31
|
+
execute_only(:flash)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Does just what would have happened if the user invoked the checkbutton
|
|
35
|
+
# with the mouse: toggle the selection state of the button and invoke the
|
|
36
|
+
# Tcl command associated with the checkbutton, if there is one.
|
|
37
|
+
# The return value is the return value from the Tcl command, or an empty
|
|
38
|
+
# string if there is no command associated with the checkbutton.
|
|
39
|
+
# This command is ignored if the checkbut‐ ton's state is disabled.
|
|
40
|
+
def invoke
|
|
41
|
+
execute_only(:invoke)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Selects the checkbutton and sets the associated variable to its “on”
|
|
45
|
+
# value.
|
|
46
|
+
def select
|
|
47
|
+
execute_only(:select)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Toggles the selection state of the button, redisplaying it and modifying
|
|
51
|
+
# its associated variable to reflect the new state.
|
|
52
|
+
# pressed over a checkbutton, the button activates whenever the mouse
|
|
53
|
+
# pointer is inside the button, and deactivates whenever the mouse pointer
|
|
54
|
+
# leaves the button.
|
|
55
|
+
# minus (-) deselects the button.
|
|
56
|
+
# labelframe .lbl -text "Steps:" checkbutton .c1 -text Lights -variable
|
|
57
|
+
# lights checkbutton .c2 -text Cameras -variable cameras checkbutton .c3
|
|
58
|
+
# -text Action! -variable action pack .c1 .c2 .c3 -in .lbl pack .lbl
|
|
59
|
+
def toggle
|
|
60
|
+
execute_only(:toggle)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
# An entry is a widget that displays a one-line text string and allows that
|
|
3
|
+
# string to be edited using widget methods described below, which are
|
|
4
|
+
# typically bound to keystrokes and mouse actions.
|
|
5
|
+
# When first created, an entry's string is empty.
|
|
6
|
+
# A portion of the entry may be selected as described below.
|
|
7
|
+
# If an entry is exporting its selection (see the exportSelection option),
|
|
8
|
+
# then it will observe the standard X11 protocols for handling the selection;
|
|
9
|
+
# entry selections are available as type STRING.
|
|
10
|
+
# Entries also observe the standard Tk rules for dealing with the input focus.
|
|
11
|
+
# When an entry has the input focus it displays an insertion cursor to
|
|
12
|
+
# indicate where new characters will be inserted.
|
|
13
|
+
#
|
|
14
|
+
# Entries are capable of displaying strings that are too long to fit entirely
|
|
15
|
+
# within the widget's window.
|
|
16
|
+
# In this case, only a portion of the string will be displayed; methods
|
|
17
|
+
# described below may be used to change the view in the window.
|
|
18
|
+
# Entries use the standard xScrollCommand mechanism for interacting with
|
|
19
|
+
# scrollbars (see the description of the xScrollCommand option for details).
|
|
20
|
+
# They also support scanning, as described below.
|
|
21
|
+
class Entry < Widget
|
|
22
|
+
include Cget, Configure
|
|
23
|
+
|
|
24
|
+
def self.tk_command; 'entry'; end
|
|
25
|
+
|
|
26
|
+
def value
|
|
27
|
+
get
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def value=(string)
|
|
31
|
+
delete 0, :end
|
|
32
|
+
insert 0, string
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def clear
|
|
36
|
+
delete 0, :end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def cursor
|
|
40
|
+
index(:insert)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def cursor=(index)
|
|
44
|
+
icursor(index)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns a list of four numbers describing the bounding box of the
|
|
48
|
+
# character given by index.
|
|
49
|
+
# The first two elements of the list give the x and y coordinates of the
|
|
50
|
+
# upper-left corner of the screen area covered by the character (in pixels
|
|
51
|
+
# relative to the widget) and the last two elements give the width and
|
|
52
|
+
# height of the character, in pixels.
|
|
53
|
+
# The bounding box may refer to a region outside the visible area of the
|
|
54
|
+
# window.
|
|
55
|
+
def bbox(index)
|
|
56
|
+
execute(:bbox, index).to_a(&:to_i)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Delete one or more elements of the entry.
|
|
60
|
+
# First is the index of the first character to delete, and last is the index
|
|
61
|
+
# of the character just after the last one to delete.
|
|
62
|
+
# If last is not specified it defaults to first+1, i.e. a single character
|
|
63
|
+
# is deleted.
|
|
64
|
+
def delete(first, last = None)
|
|
65
|
+
execute(:delete, first, last)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Returns the entry's string.
|
|
69
|
+
def get
|
|
70
|
+
execute(:get).to_s
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Arrange for the insertion cursor to be displayed just before the character
|
|
74
|
+
# given by index.
|
|
75
|
+
def icursor(index)
|
|
76
|
+
execute_only(:icursor, index)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Returns the numerical index corresponding to index.
|
|
80
|
+
def index(index)
|
|
81
|
+
execute(:index, index)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Insert the characters of string just before the character indicated by
|
|
85
|
+
# index.
|
|
86
|
+
def insert(index, string)
|
|
87
|
+
execute_only(:insert, index, string)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Records x and the current view in the entry window; used in conjunction
|
|
91
|
+
# with later scan dragto commands.
|
|
92
|
+
# Typically this command is associated with a mouse button press in the
|
|
93
|
+
# widget.
|
|
94
|
+
def scan_mark(x)
|
|
95
|
+
execute_only(:scan, :mark, x)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# This command computes the difference between its x argument and the x
|
|
99
|
+
# argument to the last scan mark command for the widget.
|
|
100
|
+
# It then adjusts the view left or right by 10 times the difference in
|
|
101
|
+
# x-coordinates.
|
|
102
|
+
# This command is typically associated with mouse motion events in the
|
|
103
|
+
# widget, to produce the effect of dragging the entry at high speed through
|
|
104
|
+
# the window.
|
|
105
|
+
def scan_dragto(x)
|
|
106
|
+
execute_only(:scan, :dragto, x)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Locate the end of the selection nearest to the character given by index,
|
|
110
|
+
# and adjust that end of the selection to be at index (i.e. including but
|
|
111
|
+
# not going beyond index).
|
|
112
|
+
# The other end of the selection is made the anchor point for future select
|
|
113
|
+
# to commands.
|
|
114
|
+
# If the selection is not currently in the entry, then a new selection is
|
|
115
|
+
# created to include the characters between index and the most recent
|
|
116
|
+
# selection anchor point, inclusive.
|
|
117
|
+
def selection_adjust(index)
|
|
118
|
+
execute_only(:selection, :adjust, index)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Clear the selection if it is currently in this widget.
|
|
122
|
+
# If the selection is not in this widget then the command has no effect.
|
|
123
|
+
def selection_clear
|
|
124
|
+
execute_only(:selection, :clear)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Set the selection anchor point to just before the character given by
|
|
128
|
+
# index.
|
|
129
|
+
# Does not change the selection.
|
|
130
|
+
def selection_from(index)
|
|
131
|
+
execute_only(:selection, :from, index)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Returns true if there is are characters selected in the entry, false if
|
|
135
|
+
# nothing is selected.
|
|
136
|
+
def selection_present
|
|
137
|
+
execute(:selection, :present) == 1
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Sets the selection to include the characters starting with the one indexed
|
|
141
|
+
# by start and ending with the one just before end.
|
|
142
|
+
# If end refers to the same character as start or an earlier one, then the
|
|
143
|
+
# entry's selection is cleared.
|
|
144
|
+
def selection_range(from, to)
|
|
145
|
+
execute_only(:selection, :range, from, to)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# If index is before the anchor point, set the selection to the characters
|
|
149
|
+
# from index up to but not including the anchor point.
|
|
150
|
+
# If index is the same as the anchor point, do nothing.
|
|
151
|
+
# If index is after the anchor point, set the selection to the characters
|
|
152
|
+
# from the anchor point up to but not including index.
|
|
153
|
+
# The anchor point is determined by the most recent select from or select
|
|
154
|
+
# adjust command in this widget.
|
|
155
|
+
# If the selection is not in this widget then a new selection is created
|
|
156
|
+
# using the most recent anchor point specified for the widget.
|
|
157
|
+
def selection_to(index)
|
|
158
|
+
execute_only(:selection, :to, index)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# This command is used to force an evaluation of the validateCommand
|
|
162
|
+
# independent of the conditions specified by the validate option.
|
|
163
|
+
# This is done by temporarily setting the validate option to all.
|
|
164
|
+
# It returns true or false.
|
|
165
|
+
def validate
|
|
166
|
+
execute(:validate) == 1
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Adjusts the view in the window so that the character given by index is
|
|
170
|
+
# displayed at the left edge of the window.
|
|
171
|
+
#
|
|
172
|
+
# If no index is given, it returns a list containing two elements.
|
|
173
|
+
# Each element is a real fraction between 0 and 1; together they describe
|
|
174
|
+
# the horizontal span that is visible in the window.
|
|
175
|
+
# For example, if the first element is 0.2 and the second element is 0.6,
|
|
176
|
+
# 20% of the entry's text is off-screen to the left, the middle 40% is
|
|
177
|
+
# visible in the window, and 40% of the text is off-screen to the right.
|
|
178
|
+
# These are the same values passed to scrollbars via the :xscrollcommand
|
|
179
|
+
# option.
|
|
180
|
+
def xview(index = None)
|
|
181
|
+
if index == None
|
|
182
|
+
execute(:xview)
|
|
183
|
+
else
|
|
184
|
+
execute_only(:xview, index)
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Adjusts the view in the window so that the character fraction of the way
|
|
189
|
+
# through the text appears at the left edge of the window.
|
|
190
|
+
# Fraction must be a fraction between 0 and 1.
|
|
191
|
+
def xview_moveto(fraction)
|
|
192
|
+
execute_only(:xview, :moveto, fraction)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# This command shifts the view in the window left or right according to
|
|
196
|
+
# number and what.
|
|
197
|
+
# Number must be an integer.
|
|
198
|
+
# What must be either units or pages or an abbreviation of one of these.
|
|
199
|
+
# If what is units, the view adjusts left or right by number average-width
|
|
200
|
+
# characters on the display; if it is pages then the view adjusts by number
|
|
201
|
+
# screenfuls.
|
|
202
|
+
# If number is negative then characters farther to the left become visible;
|
|
203
|
+
# if it is positive then characters farther to the right become visible.
|
|
204
|
+
def xview_scroll(number, what)
|
|
205
|
+
execute_only(:xview, :scroll, number, what)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|