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,65 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
Tk.init
|
|
4
|
+
|
|
5
|
+
describe Tk::Tile::Frame do
|
|
6
|
+
Style = Tk::Tile::Style
|
|
7
|
+
Frame = Tk::Tile::Frame
|
|
8
|
+
|
|
9
|
+
it 'creates a new frame with layout_style' do
|
|
10
|
+
layout_style = [
|
|
11
|
+
'Button.button', {:children=>[
|
|
12
|
+
'Button.focus', {:children=>[
|
|
13
|
+
'Button.padding', {:children=>[
|
|
14
|
+
'Button.label', {:expand=>true, :sticky=>''}
|
|
15
|
+
]}
|
|
16
|
+
]}
|
|
17
|
+
]}
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
frame = Frame.new(Tk.root)
|
|
21
|
+
frame.style(layout_style).should == true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'sets borderwidth default 0' do
|
|
25
|
+
frame = Frame.new(Tk.root)
|
|
26
|
+
frame.cget(:borderwidth).should == 0
|
|
27
|
+
|
|
28
|
+
frame = Frame.new(Tk.root, borderwidth: 10)
|
|
29
|
+
frame.cget(:borderwidth).should == 10
|
|
30
|
+
|
|
31
|
+
frame.configure borderwidth: 20
|
|
32
|
+
frame.cget(:borderwidth).should == 20
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# One of the standard Tk border styles:
|
|
36
|
+
# flat, groove, raised, ridge, solid, or sunken. Defaults to flat.
|
|
37
|
+
it 'sets relief default :flat' do
|
|
38
|
+
frame = Frame.new(Tk.root)
|
|
39
|
+
frame.cget(:relief).should == :flat
|
|
40
|
+
|
|
41
|
+
frame = Frame.new(Tk.root, relief: 'groove')
|
|
42
|
+
frame.cget(:relief).should == :groove
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'sets cursor' do
|
|
46
|
+
frame = Frame.new(Tk.root)
|
|
47
|
+
frame.cget(:cursor).should == nil
|
|
48
|
+
|
|
49
|
+
lambda {
|
|
50
|
+
Frame.new(Tk.root, cursor: '.s.s.s.s')
|
|
51
|
+
}.should.raise RuntimeError
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'sets additional padding to include inside the border' do
|
|
55
|
+
frame = Frame.new(Tk.root)
|
|
56
|
+
frame.cget(:padding).should == []
|
|
57
|
+
|
|
58
|
+
frame = Frame.new(Tk.root, padding: 10)
|
|
59
|
+
frame.cget(:padding).should == [ '10' ]
|
|
60
|
+
|
|
61
|
+
frame.configure padding: [10, 20]
|
|
62
|
+
frame.cget(:padding).should == ['10', '20']
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::Label do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::Label.new
|
|
6
|
+
instance.class.should == Tk::Tile::Label
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'assigns a value' do
|
|
11
|
+
label = Tk::Tile::Label.new
|
|
12
|
+
label.value.should == nil
|
|
13
|
+
label.value = 'Hello, World!'
|
|
14
|
+
label.value.should == 'Hello, World!'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::LabelFrame do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::LabelFrame.new
|
|
6
|
+
instance.class.should == Tk::Tile::LabelFrame
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'needs more specs' do
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::MenuButton do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::MenuButton.new
|
|
6
|
+
instance.class.should == Tk::Tile::MenuButton
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'needs more specs' do
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
Tk.init
|
|
4
|
+
|
|
5
|
+
describe Tk::Tile::Notebook do
|
|
6
|
+
it 'initializes' do
|
|
7
|
+
instance = Tk::Tile::Notebook.new
|
|
8
|
+
instance.class.should == Tk::Tile::Notebook
|
|
9
|
+
instance.tk_parent.should == Tk.root
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'adds a new tab' do
|
|
13
|
+
f0 = Tk::Tile::Frame.new
|
|
14
|
+
nb = Tk::Tile::Notebook.new
|
|
15
|
+
|
|
16
|
+
nb.add( f0, text: 'first tab' ).should == true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'selects the specified tab' do
|
|
20
|
+
f0 = Tk::Tile::Frame.new
|
|
21
|
+
f1 = Tk::Tile::Frame.new
|
|
22
|
+
|
|
23
|
+
nb = Tk::Tile::Notebook.new
|
|
24
|
+
nb.add( f0, text: 'first tab' ).should == true
|
|
25
|
+
nb.add( f1, text: 'second tab' ).should == true
|
|
26
|
+
|
|
27
|
+
nb.select(f1).should == f1.tk_pathname
|
|
28
|
+
nb.select(f0).should == f0.tk_pathname
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'return index of tabs' do
|
|
32
|
+
f0 = Tk::Tile::Frame.new
|
|
33
|
+
f1 = Tk::Tile::Frame.new
|
|
34
|
+
|
|
35
|
+
nb = Tk::Tile::Notebook.new
|
|
36
|
+
nb.add( f0, text: 'first tab' ).should == true
|
|
37
|
+
nb.add( f1, text: 'second tab' ).should == true
|
|
38
|
+
|
|
39
|
+
nb.index(f1).should == 1
|
|
40
|
+
nb.index(f0).should == 0
|
|
41
|
+
nb.index('end').should == 2 # total number of tabs
|
|
42
|
+
nb.index('current').should == 0
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'return a list of managed tabs' do
|
|
46
|
+
f2 = Tk::Tile::Frame.new
|
|
47
|
+
nb = Tk::Tile::Notebook.new
|
|
48
|
+
|
|
49
|
+
nb.tabs.should == []
|
|
50
|
+
nb.add( f2, text: 'first tab' ).should == true
|
|
51
|
+
nb.tabs.should == [ f2.tk_pathname ]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'inserts a new tab at position' do
|
|
55
|
+
f0 = Tk::Tile::Frame.new
|
|
56
|
+
f1 = Tk::Tile::Frame.new
|
|
57
|
+
nb = Tk::Tile::Notebook.new
|
|
58
|
+
|
|
59
|
+
nb.add( f0, text: 'first tab' ).should == true
|
|
60
|
+
nb.insert( 0, f1, text: 'first tab' ).should == true
|
|
61
|
+
|
|
62
|
+
nb.tabs.should == [ f1.tk_pathname, f0.tk_pathname ]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'set tab options' do
|
|
66
|
+
f2 = Tk::Tile::Frame.new
|
|
67
|
+
nb = Tk::Tile::Notebook.new
|
|
68
|
+
|
|
69
|
+
nb.add(f2, text: 'first tab' ).should == true
|
|
70
|
+
|
|
71
|
+
nb.tab(f2, state: :disabled ).should == true
|
|
72
|
+
nb.tab(f2).should.include 'disabled'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it 'forgets the specified tab' do
|
|
76
|
+
f2 = Tk::Tile::Frame.new
|
|
77
|
+
nb = Tk::Tile::Notebook.new
|
|
78
|
+
|
|
79
|
+
nb.add( f2, text: 'first tab' ).should == true
|
|
80
|
+
nb.tabs.should == [ f2.tk_pathname ]
|
|
81
|
+
|
|
82
|
+
nb.forget(f2).should == true
|
|
83
|
+
nb.tabs.should == [ ]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'hides a specified tab' do
|
|
87
|
+
f2 = Tk::Tile::Frame.new
|
|
88
|
+
nb = Tk::Tile::Notebook.new
|
|
89
|
+
|
|
90
|
+
nb.add( f2, text: 'first tab' ).should == true
|
|
91
|
+
|
|
92
|
+
nb.hide(f2).should == true
|
|
93
|
+
nb.tabs.should == [ f2.tk_pathname ]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it 'enables traversal' do
|
|
97
|
+
nb = Tk::Tile::Notebook.new
|
|
98
|
+
nb.enable_traversal.should == true
|
|
99
|
+
|
|
100
|
+
Tk::Tile::Notebook.enable_traversal(nb).should == true
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::PanedWindow do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::PanedWindow.new
|
|
6
|
+
instance.class.should == Tk::Tile::PanedWindow
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'needs more specs' do
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::Progressbar do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::Progressbar.new
|
|
6
|
+
instance.class.should == Tk::Tile::Progressbar
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'start progress step with interval' do
|
|
11
|
+
pbar = Tk::Tile::Progressbar.new
|
|
12
|
+
pbar.start.should == true
|
|
13
|
+
pbar.start(12).should == true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'stop progress stepping' do
|
|
17
|
+
pbar = Tk::Tile::Progressbar.new
|
|
18
|
+
pbar.stop.should == true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it '#step increments value' do
|
|
22
|
+
var = Tk::Variable.new('somevar')
|
|
23
|
+
var.set 0.0
|
|
24
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root, variable: var)
|
|
25
|
+
|
|
26
|
+
3.times { pbar.step.should == true }
|
|
27
|
+
var.to_f.should == 3.0
|
|
28
|
+
|
|
29
|
+
pbar.step(10).should == true
|
|
30
|
+
var.to_f.should == 13.0
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'get progress value' do
|
|
34
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root)
|
|
35
|
+
pbar.step
|
|
36
|
+
pbar.value.should == 1.0
|
|
37
|
+
pbar.step(98)
|
|
38
|
+
pbar.value.should == 99.0
|
|
39
|
+
pbar.step(1)
|
|
40
|
+
pbar.value.should == 0.0
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'sets mode' do
|
|
44
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root)
|
|
45
|
+
pbar.cget(:mode).should == :determinate
|
|
46
|
+
|
|
47
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root, mode: :indeterminate)
|
|
48
|
+
pbar.cget(:mode).should == :indeterminate
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'sets length' do
|
|
52
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root)
|
|
53
|
+
pbar.cget(:length).should == 100
|
|
54
|
+
|
|
55
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root, length: 200)
|
|
56
|
+
pbar.cget(:length).should == 200
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'sets maximum' do
|
|
60
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root)
|
|
61
|
+
pbar.cget(:maximum).should == 100
|
|
62
|
+
|
|
63
|
+
pbar = Tk::Tile::Progressbar.new(Tk.root, maximum: 90)
|
|
64
|
+
pbar.cget(:maximum).should == 90
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'gets phase value' do
|
|
68
|
+
Tk::Tile::Progressbar.new(Tk.root).phase.should == 0
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it 'sets orientation' do
|
|
72
|
+
pbar = Tk::Tile::Progressbar.new
|
|
73
|
+
pbar.orient.should == :horizontal
|
|
74
|
+
pbar.orient :vertical
|
|
75
|
+
pbar.orient.should == :vertical
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::RadioButton do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::RadioButton.new
|
|
6
|
+
instance.class.should == Tk::Tile::RadioButton
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'needs more specs' do
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::Scrollbar do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::Scrollbar.new
|
|
6
|
+
instance.class.should == Tk::Tile::Scrollbar
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'sets orientation' do
|
|
11
|
+
s = Tk::Tile::YScrollbar.new
|
|
12
|
+
s.orient.should == :vertical
|
|
13
|
+
s.orient :horizontal
|
|
14
|
+
s.orient.should == :horizontal
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe Tk::Tile::YScrollbar do
|
|
19
|
+
it 'initializes' do
|
|
20
|
+
instance = Tk::Tile::YScrollbar.new
|
|
21
|
+
instance.class.should == Tk::Tile::YScrollbar
|
|
22
|
+
instance.tk_parent.should == Tk.root
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'sets orientation' do
|
|
26
|
+
s = Tk::Tile::YScrollbar.new
|
|
27
|
+
s.cget(:orient).should == :vertical
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe Tk::Tile::XScrollbar do
|
|
32
|
+
it 'initializes' do
|
|
33
|
+
instance = Tk::Tile::XScrollbar.new
|
|
34
|
+
instance.class.should == Tk::Tile::XScrollbar
|
|
35
|
+
instance.tk_parent.should == Tk.root
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'sets orientation' do
|
|
39
|
+
s = Tk::Tile::XScrollbar.new
|
|
40
|
+
s.cget(:orient).should == :horizontal
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::Separator do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::Separator.new
|
|
6
|
+
instance.class.should == Tk::Tile::Separator
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'sets orientation' do
|
|
11
|
+
s = Tk::Tile::Separator.new
|
|
12
|
+
s.orient.should == :horizontal
|
|
13
|
+
s.orient :vertical
|
|
14
|
+
s.orient.should == :vertical
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'sets identify' do
|
|
18
|
+
s = Tk::Tile::Separator.new
|
|
19
|
+
s.identify(0,0).should == true
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
describe Tk::Tile::Sizegrip do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
instance = Tk::Tile::Sizegrip.new
|
|
6
|
+
instance.class.should == Tk::Tile::Sizegrip
|
|
7
|
+
instance.tk_parent.should == Tk.root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'needs more specs' do
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
require_relative '../../helper'
|
|
2
|
+
|
|
3
|
+
Tk.init
|
|
4
|
+
|
|
5
|
+
describe Tk::Tile::Style do
|
|
6
|
+
Style = Tk::Tile::Style
|
|
7
|
+
|
|
8
|
+
it '#theme_names returns a list of all known themes' do
|
|
9
|
+
names = Style.theme_names
|
|
10
|
+
|
|
11
|
+
names.should.kind_of? Array
|
|
12
|
+
names.should.not.be.empty?
|
|
13
|
+
names.all?{|i| i.kind_of?(String) }
|
|
14
|
+
names.should == ["clam", "alt", "default", "classic"]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it '#theme_use sets the current theme' do
|
|
18
|
+
Style.theme_use('default').should == 'default'
|
|
19
|
+
Style.theme_use('unkown-theme-').should.be.nil?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it '#element_names returns the list of elements defined in the current theme' do
|
|
23
|
+
names = Style.element_names
|
|
24
|
+
|
|
25
|
+
names.should.kind_of? Array
|
|
26
|
+
names.should.not.be.empty?
|
|
27
|
+
names.all?{|i| i.kind_of?(String) }
|
|
28
|
+
%w{label focus image text textarea}.each {|i| names.should.include? i }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it '#element_options returns the list of elements options' do
|
|
32
|
+
name = 'text'
|
|
33
|
+
options = %w{-text -font -foreground -underline -width -anchor -justify -wraplength -embossed}
|
|
34
|
+
|
|
35
|
+
Style.element_options(name).should.kind_of? Array
|
|
36
|
+
Style.element_options(name).should.not.be.empty?
|
|
37
|
+
Style.element_options(name).should == options
|
|
38
|
+
|
|
39
|
+
Style.element_options('unkown-element').should == nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it '#lookup returns the value specified for -option in style style' do
|
|
43
|
+
Style.lookup('label', 'font').should == 'TkDefaultFont'
|
|
44
|
+
Style.lookup('label', 'foreground').should == 'black'
|
|
45
|
+
Style.lookup('label', :foreground).should == 'black'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it '#configure sets the default value of the specified option(s) in style' do
|
|
49
|
+
# configure one element option
|
|
50
|
+
Style.configure('label', foreground: 'gray' ).should == true
|
|
51
|
+
Style.lookup('label', 'foreground').should == 'gray'
|
|
52
|
+
|
|
53
|
+
# configure a hash of element options
|
|
54
|
+
Style.configure('label', {foreground: 'gray', background: 'blue'} ).should == true
|
|
55
|
+
Style.lookup('label', 'foreground').should == 'gray'
|
|
56
|
+
Style.lookup('label', 'background').should == 'blue'
|
|
57
|
+
|
|
58
|
+
Style.configure('label', foreground: 'black').should == true
|
|
59
|
+
|
|
60
|
+
# configure other element..
|
|
61
|
+
Style.configure('Button.label', foreground: :red ).should == true
|
|
62
|
+
Style.lookup('Button.label', 'foreground').should == 'red'
|
|
63
|
+
|
|
64
|
+
Style.configure('Button.label', foreground: :blue ).should == true
|
|
65
|
+
Style.lookup('Button.label', 'foreground').should == 'blue'
|
|
66
|
+
|
|
67
|
+
# element origin is still black
|
|
68
|
+
Style.lookup('label', 'foreground').should == 'black'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it '#map sets dynamic values of the specified option(s) in style' do
|
|
72
|
+
Style.map('label', :background=>[:active, '#694418']).should == true
|
|
73
|
+
Style.map(:foreground=>[:disabled, '#B2B2B2', :active, '#FFE7CB']).should == true
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it '#layout defines the widget layout for style' do
|
|
77
|
+
Style.layout('TButton', [
|
|
78
|
+
'Button.button', {:children=>[
|
|
79
|
+
'Button.focus', {:children=>[
|
|
80
|
+
'Button.padding', {:children=>[
|
|
81
|
+
'Button.label', {:expand=>true, :sticky=>''}
|
|
82
|
+
]}
|
|
83
|
+
]}
|
|
84
|
+
]}
|
|
85
|
+
]).should == true
|
|
86
|
+
|
|
87
|
+
module Tk::Tile::TScrollbar; end
|
|
88
|
+
style_name = Tk::Tile.style('Vertical', Tk::Tile::TScrollbar)
|
|
89
|
+
style_name.should == 'Vertical.TScrollbar'
|
|
90
|
+
|
|
91
|
+
Style.layout(style_name, [
|
|
92
|
+
'Checkbutton.background', # this is not needed in tile 0.5 or later
|
|
93
|
+
'Checkbutton.border', {:children=>[
|
|
94
|
+
'Checkbutton.padding', {:children=>[
|
|
95
|
+
'Checkbutton.indicator', {:side=>:left},
|
|
96
|
+
'Checkbutton.focus', {:side=>:left, :children=>[
|
|
97
|
+
'Checkbutton.label'
|
|
98
|
+
]}
|
|
99
|
+
]}
|
|
100
|
+
]}
|
|
101
|
+
]).should == true
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
it '#element_create creates a new element in the current theme' do
|
|
106
|
+
Style.element_create('someElement','label').should == nil
|
|
107
|
+
Style.element_names.should.not.include? "someElement"
|
|
108
|
+
|
|
109
|
+
assets = {}
|
|
110
|
+
assets['button-n'] = Tk::Image.create('photo').to_s
|
|
111
|
+
assets['button-p'] = Tk::Image.create('photo').to_s
|
|
112
|
+
assets['button-h'] = Tk::Image.create('photo').to_s
|
|
113
|
+
|
|
114
|
+
Style.element_create('Button.button', :image,
|
|
115
|
+
[ assets['button-n'],
|
|
116
|
+
:pressed, assets['button-p'],
|
|
117
|
+
:active, assets['button-h'],
|
|
118
|
+
], :border=>3, :sticky=>:ew)
|
|
119
|
+
|
|
120
|
+
Tk::Image.delete *assets.each_value
|
|
121
|
+
Tk::Image.names.size.should == 0
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it '#theme_settings configure in the context of a theme' do
|
|
125
|
+
|
|
126
|
+
res = Style.theme_settings 'alt' do
|
|
127
|
+
Style.configure('label', foreground: :green ).should == true
|
|
128
|
+
Style.lookup('label', 'foreground').should == 'green'
|
|
129
|
+
end
|
|
130
|
+
res.should == 'alt'
|
|
131
|
+
|
|
132
|
+
# current theme stays untouched
|
|
133
|
+
Style.lookup('label', 'foreground').should == 'black'
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it '#theme_create creates a new theme' do
|
|
137
|
+
# Creates a new theme. It is an error if themeName already exists.
|
|
138
|
+
lambda { Style.theme_create('default') }.should.raise ArgumentError
|
|
139
|
+
|
|
140
|
+
#
|
|
141
|
+
Style.theme_create('spec-theme').should == true
|
|
142
|
+
Style.theme_names.should.include? 'spec-theme'
|
|
143
|
+
|
|
144
|
+
# If -parent is specified, the new theme will inherit styles, elements, and
|
|
145
|
+
# layouts from the parent theme basedon.
|
|
146
|
+
Style.theme_create('spec-theme2', parent: 'default').should == true
|
|
147
|
+
|
|
148
|
+
# If -settings is present, script is evaluated in the context of the new theme
|
|
149
|
+
res = Style.theme_create('spec-theme-block', parent: 'default') do
|
|
150
|
+
Style.configure('.', :background=>'#FCB64F',
|
|
151
|
+
:troughcolor=>'#F8C278', :borderwidth=>1)
|
|
152
|
+
Style.configure(:font=>Tk::Tile::Font::Default, :borderwidth=>1)
|
|
153
|
+
|
|
154
|
+
Style.map('.', :background=>[:active, '#694418'])
|
|
155
|
+
Style.map(:foreground=>[:disabled, '#B2B2B2', :active, '#FFE7CB'])
|
|
156
|
+
end
|
|
157
|
+
res.should == true
|
|
158
|
+
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
end
|