colstrom-fidgit 0.2.7
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.
- 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
|