colstrom-fidgit 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +20 -0
- data/README.md +154 -0
- data/Rakefile +38 -0
- data/config/default_schema.yml +216 -0
- data/examples/_all_examples.rb +9 -0
- data/examples/align_example.rb +56 -0
- data/examples/button_and_toggle_button_example.rb +38 -0
- data/examples/color_picker_example.rb +17 -0
- data/examples/color_well_example.rb +25 -0
- data/examples/combo_box_example.rb +24 -0
- data/examples/file_dialog_example.rb +42 -0
- data/examples/grid_packer_example.rb +29 -0
- data/examples/helpers/example_window.rb +17 -0
- data/examples/label_example.rb +23 -0
- data/examples/list_example.rb +23 -0
- data/examples/media/images/head_icon.png +0 -0
- data/examples/menu_pane_example.rb +27 -0
- data/examples/message_dialog_example.rb +65 -0
- data/examples/radio_button_example.rb +37 -0
- data/examples/readme_example.rb +32 -0
- data/examples/scroll_window_example.rb +49 -0
- data/examples/slider_example.rb +34 -0
- data/examples/splash_example.rb +42 -0
- data/examples/text_area_example.rb +33 -0
- data/fidgit.gemspec +35 -0
- data/lib/fidgit.rb +51 -0
- data/lib/fidgit/chingu_ext/window.rb +6 -0
- data/lib/fidgit/cursor.rb +38 -0
- data/lib/fidgit/elements/button.rb +113 -0
- data/lib/fidgit/elements/color_picker.rb +63 -0
- data/lib/fidgit/elements/color_well.rb +39 -0
- data/lib/fidgit/elements/combo_box.rb +115 -0
- data/lib/fidgit/elements/composite.rb +17 -0
- data/lib/fidgit/elements/container.rb +210 -0
- data/lib/fidgit/elements/element.rb +298 -0
- data/lib/fidgit/elements/file_browser.rb +152 -0
- data/lib/fidgit/elements/grid.rb +227 -0
- data/lib/fidgit/elements/group.rb +64 -0
- data/lib/fidgit/elements/horizontal.rb +12 -0
- data/lib/fidgit/elements/image_frame.rb +65 -0
- data/lib/fidgit/elements/label.rb +85 -0
- data/lib/fidgit/elements/list.rb +47 -0
- data/lib/fidgit/elements/main_packer.rb +25 -0
- data/lib/fidgit/elements/menu_pane.rb +163 -0
- data/lib/fidgit/elements/packer.rb +42 -0
- data/lib/fidgit/elements/radio_button.rb +86 -0
- data/lib/fidgit/elements/scroll_area.rb +68 -0
- data/lib/fidgit/elements/scroll_bar.rb +128 -0
- data/lib/fidgit/elements/scroll_window.rb +83 -0
- data/lib/fidgit/elements/slider.rb +125 -0
- data/lib/fidgit/elements/text_area.rb +494 -0
- data/lib/fidgit/elements/text_line.rb +92 -0
- data/lib/fidgit/elements/toggle_button.rb +67 -0
- data/lib/fidgit/elements/tool_tip.rb +35 -0
- data/lib/fidgit/elements/vertical.rb +12 -0
- data/lib/fidgit/event.rb +159 -0
- data/lib/fidgit/gosu_ext/color.rb +136 -0
- data/lib/fidgit/gosu_ext/gosu_module.rb +25 -0
- data/lib/fidgit/history.rb +91 -0
- data/lib/fidgit/redirector.rb +83 -0
- data/lib/fidgit/schema.rb +123 -0
- data/lib/fidgit/selection.rb +106 -0
- data/lib/fidgit/standard_ext/hash.rb +21 -0
- data/lib/fidgit/states/dialog_state.rb +52 -0
- data/lib/fidgit/states/file_dialog.rb +24 -0
- data/lib/fidgit/states/gui_state.rb +331 -0
- data/lib/fidgit/states/message_dialog.rb +61 -0
- data/lib/fidgit/version.rb +5 -0
- data/lib/fidgit/window.rb +19 -0
- data/media/images/arrow.png +0 -0
- data/media/images/combo_arrow.png +0 -0
- data/media/images/file_directory.png +0 -0
- data/media/images/file_file.png +0 -0
- data/media/images/pixel.png +0 -0
- data/spec/fidgit/elements/helpers/helper.rb +3 -0
- data/spec/fidgit/elements/helpers/tex_play_helper.rb +9 -0
- data/spec/fidgit/elements/image_frame_spec.rb +69 -0
- data/spec/fidgit/elements/label_spec.rb +37 -0
- data/spec/fidgit/event_spec.rb +210 -0
- data/spec/fidgit/gosu_ext/color_spec.rb +130 -0
- data/spec/fidgit/gosu_ext/helpers/helper.rb +3 -0
- data/spec/fidgit/helpers/helper.rb +4 -0
- data/spec/fidgit/history_spec.rb +153 -0
- data/spec/fidgit/redirector_spec.rb +78 -0
- data/spec/fidgit/schema_spec.rb +67 -0
- data/spec/fidgit/schema_test.yml +32 -0
- metadata +320 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
# Run all examples, one after the other
|
2
|
+
require_relative 'helpers/example_window'
|
3
|
+
|
4
|
+
|
5
|
+
examples = Dir.glob(File.join(File.dirname(__FILE__), "*.rb")) - [__FILE__]
|
6
|
+
examples.each_with_index do |file_name, index|
|
7
|
+
ENV['FIDGIT_EXAMPLES_TEXT'] = "[#{index + 1} of #{examples.size + 1}]"
|
8
|
+
`ruby #{file_name}`
|
9
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Change font and labels in the schema.
|
4
|
+
Fidgit::Element.schema.merge_elements!(Element: { font_height: 24 }, Label: { background_color: "?dark_blue" })
|
5
|
+
|
6
|
+
class ExampleState < Fidgit::GuiState
|
7
|
+
ROW_BACKGROUND = Gosu::Color.rgb(0, 100, 0)
|
8
|
+
CELL_BACKGROUND = Gosu::Color.rgb(100, 0, 0)
|
9
|
+
OUTER_BACKGROUND = Gosu::Color.rgb(100, 0, 100)
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super
|
13
|
+
|
14
|
+
vertical align: :center, background_color: OUTER_BACKGROUND do
|
15
|
+
label "h => align_h, v => align_v", align_h: :center
|
16
|
+
|
17
|
+
grid num_columns: 4, align: :center, cell_background_color: CELL_BACKGROUND, background_color: ROW_BACKGROUND do
|
18
|
+
label "xxx"
|
19
|
+
label "h fill", align_h: :fill
|
20
|
+
label "h right", align_h: :right
|
21
|
+
label "h center", align_h: :center
|
22
|
+
|
23
|
+
|
24
|
+
vertical do
|
25
|
+
label "xxx"
|
26
|
+
label "xxx"
|
27
|
+
end
|
28
|
+
label "v fill", align_v: :fill
|
29
|
+
label "v center", align_v: :center
|
30
|
+
label "v bottom", align_v: :bottom
|
31
|
+
|
32
|
+
vertical align_h: :center do
|
33
|
+
label "h center"
|
34
|
+
label "h center"
|
35
|
+
end
|
36
|
+
label "top right", align: [:top, :left]
|
37
|
+
label "bottom left", align_h: :left, align_v: :bottom
|
38
|
+
label "h/v fill", align: :fill
|
39
|
+
|
40
|
+
label ""
|
41
|
+
label "bottom right", align_h: :right, align_v: :bottom
|
42
|
+
label "bottom center", align_h: :center, align_v: :bottom
|
43
|
+
vertical align_h: :right do
|
44
|
+
label "h right"
|
45
|
+
label "h right"
|
46
|
+
end
|
47
|
+
|
48
|
+
label "Blah, bleh!"
|
49
|
+
label "Yada, yada, yada"
|
50
|
+
label "Bazingo by jingo!"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Example for Button and ToggleButton
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical do
|
9
|
+
my_label = label "Label", tip: "I'm a label"
|
10
|
+
|
11
|
+
buttons = []
|
12
|
+
|
13
|
+
# A plain button, with some text on it.
|
14
|
+
buttons << button("Button", tip: "I'm a button; press me!", shortcut: :auto) do
|
15
|
+
my_label.text = "Pressed the button!"
|
16
|
+
end
|
17
|
+
|
18
|
+
# Buttons with icons in each possible positions.
|
19
|
+
[:left, :right, :top, :bottom].each do |position|
|
20
|
+
buttons << button("Icon at #{position}", icon: Gosu::Image["head_icon.png"], icon_position: position, icon_options: { factor: 2 }, tip: "I'm a button; press me!", shortcut: :auto) do
|
21
|
+
my_label.text = "Pressed the button (icon to #{position})!"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# A toggling button.
|
26
|
+
buttons << toggle_button("ToggleButton", tip: "I'm a button that toggles", shortcut: :o) do |sender, value|
|
27
|
+
my_label.text = "Turned the toggle button #{value ? "on" : "off"}!"
|
28
|
+
end
|
29
|
+
|
30
|
+
# A toggle-button that controls whether all the other buttons are enabled.
|
31
|
+
toggle_button("Enable other two buttons", value: true) do |sender, value|
|
32
|
+
buttons.each {|button| button.enabled = value }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
class ExampleState < Fidgit::GuiState
|
4
|
+
def initialize
|
5
|
+
super
|
6
|
+
|
7
|
+
vertical do
|
8
|
+
my_label = label 'No color picked'
|
9
|
+
|
10
|
+
color_picker(width: 100) do |sender, color|
|
11
|
+
my_label.text = color.to_s
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
class ExampleState < Fidgit::GuiState
|
4
|
+
def initialize
|
5
|
+
super
|
6
|
+
|
7
|
+
vertical do
|
8
|
+
my_label = label "No color selected."
|
9
|
+
|
10
|
+
group do
|
11
|
+
grid num_columns: 15, padding: 0, spacing: 4 do
|
12
|
+
150.times do
|
13
|
+
color_well(color: Gosu::Color.rgb(rand(255), rand(255), rand(255)))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
subscribe :changed do |sender, color|
|
18
|
+
my_label.text = color.to_s
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Example for Button and ToggleButton
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical do
|
9
|
+
my_label = label "Label", tip: "I'm a label"
|
10
|
+
|
11
|
+
combo_box(value: 1, tip: "I'm a combo box; press me and make a selection!") do
|
12
|
+
subscribe :changed do |sender, value|
|
13
|
+
my_label.text = "Chose #{value}!"
|
14
|
+
end
|
15
|
+
|
16
|
+
item "One", 1
|
17
|
+
item "Two", 2
|
18
|
+
item "Three", 3
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
|
4
|
+
Fidgit::Element.schema.merge_elements!(Element: { font_height: 15 })
|
5
|
+
|
6
|
+
class ExampleState < Fidgit::GuiState
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
|
10
|
+
container.background_color = Gosu::Color.rgb(50, 50, 50)
|
11
|
+
vertical align: :center do
|
12
|
+
full_base_directory = ''
|
13
|
+
restricted_base_directory = File.expand_path(File.join(__FILE__, '..', '..'))
|
14
|
+
directory = File.join(restricted_base_directory, 'media', 'images')
|
15
|
+
|
16
|
+
my_label = label "No files are actually loaded or saved by this example"
|
17
|
+
button("Load...(limited path access)") do
|
18
|
+
file_dialog(:open, base_directory: restricted_base_directory, directory: directory, pattern: "*.png") do |result, file|
|
19
|
+
case result
|
20
|
+
when :open
|
21
|
+
my_label.text = "Loaded #{file}"
|
22
|
+
when :cancel
|
23
|
+
my_label.text = "Loading cancelled"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
button("Save...(unrestricted path access)") do
|
29
|
+
file_dialog(:save, base_directory: full_base_directory, directory: directory, pattern: "*.png") do |result, file|
|
30
|
+
case result
|
31
|
+
when :save
|
32
|
+
my_label.text = "Saved #{file}"
|
33
|
+
when :cancel
|
34
|
+
my_label.text = "Save cancelled"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
class ExampleState < Fidgit::GuiState
|
4
|
+
BORDER_COLOR = Gosu::Color.rgb(255, 0, 0)
|
5
|
+
FIXED_NUM = 5
|
6
|
+
NUM_CELLS = 17
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
|
11
|
+
vertical do
|
12
|
+
label "Grid with #{FIXED_NUM} columns"
|
13
|
+
grid num_columns: FIXED_NUM, border_color: BORDER_COLOR, cell_border_color: Gosu::Color.rgba(0, 255, 0, 255), cell_border_thickness: 1 do
|
14
|
+
NUM_CELLS.times do |i|
|
15
|
+
label "Cell #{i}", font_height: rand(15) + 15, border_color: BORDER_COLOR, border_thickness: 1
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
label "Grid with #{FIXED_NUM} rows"
|
20
|
+
grid num_rows: FIXED_NUM, border_color: BORDER_COLOR, cell_background_color: Gosu::Color.rgba(0, 100, 100, 255) do
|
21
|
+
NUM_CELLS.times do |i|
|
22
|
+
label "Cell #{i}", font_height: rand(15) + 15, border_color: BORDER_COLOR, border_thickness: 1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../../lib/fidgit'
|
2
|
+
|
3
|
+
media_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'media'))
|
4
|
+
Gosu::Image.autoload_dirs << File.join(media_dir, 'images')
|
5
|
+
Gosu::Sample.autoload_dirs << File.join(media_dir, 'samples')
|
6
|
+
Gosu::Font.autoload_dirs << File.join(media_dir, 'fonts')
|
7
|
+
|
8
|
+
class ExampleWindow < Chingu::Window
|
9
|
+
def initialize(options = {})
|
10
|
+
super(640, 480, false)
|
11
|
+
|
12
|
+
on_input(:escape) { close }
|
13
|
+
|
14
|
+
caption = "#{File.basename($0).chomp(".rb").tr('_', ' ')} #{ENV['FIDGIT_EXAMPLES_TEXT']}"
|
15
|
+
push_game_state ExampleState
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Labels can have text and/or icons.
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical background_color: Gosu::Color.rgb(255, 0, 0) do
|
9
|
+
label "Hello!", tip: 'A label with text'
|
10
|
+
label "Hello!", icon: Gosu::Image["head_icon.png"], tip: 'A label with text & icon'
|
11
|
+
label '', icon: Gosu::Image["head_icon.png"], tip: 'A label with just icon'
|
12
|
+
label '', background_color: Gosu::Color.rgb(0, 255, 0), tip: 'No text or icon'
|
13
|
+
end
|
14
|
+
|
15
|
+
vertical do
|
16
|
+
label ":left justification", width: 400, background_color: Gosu::Color.rgb(0, 100, 0), justify: :left, tip: 'A label with text'
|
17
|
+
label ":right justification", width: 400, background_color: Gosu::Color.rgb(0, 100, 0), justify: :right, tip: 'A label with text'
|
18
|
+
label ":center justification", width: 400, background_color: Gosu::Color.rgb(0, 100, 0), justify: :center, tip: 'A label with text'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Labels can have text and/or icons.
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical do
|
9
|
+
my_label = label "No clicky"
|
10
|
+
|
11
|
+
list do
|
12
|
+
item "chunky bacon", :CHUNKYBACON, tip: "You prefer Chunky Bacon, don't you?"
|
13
|
+
item "lentils", :LENTILS, tip: "Lentils? Well, I suppose someone has to like them"
|
14
|
+
|
15
|
+
subscribe :changed do |sender, value|
|
16
|
+
my_label.text = "I like #{value} more than anything in the world!"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
ExampleWindow.new.show
|
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Labels can have text and/or icons.
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical do
|
9
|
+
my_label = label "Right click to open context menu"
|
10
|
+
|
11
|
+
my_label.subscribe :released_right_mouse_button do
|
12
|
+
menu do
|
13
|
+
item "Chunky bacon", :CHUNKY_BACON, shortcut_text: "Ctrl-^-*"
|
14
|
+
separator
|
15
|
+
item "Lentils", :LENTILS, shortcut_text: "Alt-F15"
|
16
|
+
item "Tepid gruel", :GRUEL, shortcut_text: "CenterMeta"
|
17
|
+
|
18
|
+
subscribe :selected do |sender, value|
|
19
|
+
my_label.text = "I like #{value} more than anything. Mmmm!"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
# Example for Button and ToggleButton
|
4
|
+
class ExampleState < Fidgit::GuiState
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
|
8
|
+
vertical do
|
9
|
+
my_label = label "Why not open a dialog? You know you want to!", tip: "I'm a label"
|
10
|
+
|
11
|
+
button("Open an ok message dialog") do
|
12
|
+
message "System shutdown immanent"
|
13
|
+
end
|
14
|
+
|
15
|
+
button("Open an ok/cancel message dialog") do
|
16
|
+
message("Really 'rm -rf .'?", type: :ok_cancel) do |result|
|
17
|
+
my_label.text = case result
|
18
|
+
when :ok then "All your base are belong to us!"
|
19
|
+
when :cancel then "Cancelled"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
button("Open a yes/no message dialog") do
|
25
|
+
message("Do you like any sorts of cheese? Even Government cheese counts, you know!", type: :yes_no, yes_text: "Yay!", no_text: "Nay!") do |result|
|
26
|
+
my_label.text = case result
|
27
|
+
when :yes then "You like cheese"
|
28
|
+
when :no then "You don't like cheese"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
button("Open a yes/no/cancel message dialog") do
|
34
|
+
message("Do you know what you are doing?", type: :yes_no_cancel) do |result|
|
35
|
+
my_label.text = case result
|
36
|
+
when :yes then "I'm not convinced you know what you are doing"
|
37
|
+
when :no then "At least you are aware of your own shortcomings"
|
38
|
+
when :cancel then "Don't avoid the question!"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
button("Open quit/cancel message dialog") do
|
44
|
+
message("Really leave us?", type: :quit_cancel) do |result|
|
45
|
+
my_label.text = case result
|
46
|
+
when :quit then "Quit! Bye!"
|
47
|
+
when :cancel then "Oh, you are staying? Yay!"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
button("Open quit/save/cancel message dialog") do
|
53
|
+
message("You have unsaved data.\nSave before quitting?", type: :quit_save_cancel) do |result|
|
54
|
+
my_label.text = case result
|
55
|
+
when :quit then "File discarded and quit"
|
56
|
+
when :save then "File saved and quit"
|
57
|
+
when :cancel then "Nothing happened. You should be more committed"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
ExampleWindow.new.show
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'helpers/example_window'
|
2
|
+
|
3
|
+
class ExampleState < Fidgit::GuiState
|
4
|
+
def initialize
|
5
|
+
super
|
6
|
+
|
7
|
+
vertical do
|
8
|
+
my_label = label "No button selected"
|
9
|
+
|
10
|
+
button("Deselect") do
|
11
|
+
@group.value = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
button("Select #7") do
|
15
|
+
@group.value = 7
|
16
|
+
end
|
17
|
+
|
18
|
+
@group = group do
|
19
|
+
grid num_columns: 5, padding: 0 do
|
20
|
+
15.times do |i|
|
21
|
+
radio_button "##{i}", i, width: 60
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
subscribe :changed do |sender, value|
|
26
|
+
my_label.text = if value
|
27
|
+
"Button #{value.to_s} selected"
|
28
|
+
else
|
29
|
+
"No button selected"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
ExampleWindow.new.show
|