fidgit 0.2.4 → 0.2.5

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.
Files changed (85) hide show
  1. data/.gitignore +7 -7
  2. data/.rspec +2 -2
  3. data/CHANGELOG.md +30 -30
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +19 -19
  6. data/README.textile +139 -139
  7. data/Rakefile +37 -37
  8. data/config/default_schema.yml +216 -216
  9. data/examples/_all_examples.rb +9 -9
  10. data/examples/align_example.rb +55 -55
  11. data/examples/button_and_toggle_button_example.rb +37 -37
  12. data/examples/color_picker_example.rb +16 -16
  13. data/examples/color_well_example.rb +24 -24
  14. data/examples/combo_box_example.rb +23 -23
  15. data/examples/file_dialog_example.rb +41 -41
  16. data/examples/grid_packer_example.rb +28 -28
  17. data/examples/helpers/example_window.rb +16 -16
  18. data/examples/label_example.rb +22 -22
  19. data/examples/list_example.rb +22 -22
  20. data/examples/menu_pane_example.rb +26 -26
  21. data/examples/message_dialog_example.rb +64 -64
  22. data/examples/radio_button_example.rb +36 -36
  23. data/examples/readme_example.rb +31 -31
  24. data/examples/scroll_window_example.rb +48 -48
  25. data/examples/slider_example.rb +33 -33
  26. data/examples/splash_example.rb +41 -41
  27. data/examples/text_area_example.rb +32 -32
  28. data/fidgit.gemspec +35 -35
  29. data/lib/fidgit.rb +50 -50
  30. data/lib/fidgit/chingu_ext/window.rb +5 -5
  31. data/lib/fidgit/cursor.rb +37 -37
  32. data/lib/fidgit/elements/button.rb +112 -112
  33. data/lib/fidgit/elements/color_picker.rb +62 -62
  34. data/lib/fidgit/elements/color_well.rb +38 -38
  35. data/lib/fidgit/elements/combo_box.rb +113 -113
  36. data/lib/fidgit/elements/composite.rb +16 -16
  37. data/lib/fidgit/elements/container.rb +208 -208
  38. data/lib/fidgit/elements/element.rb +297 -297
  39. data/lib/fidgit/elements/file_browser.rb +151 -151
  40. data/lib/fidgit/elements/grid.rb +226 -226
  41. data/lib/fidgit/elements/group.rb +64 -64
  42. data/lib/fidgit/elements/horizontal.rb +11 -11
  43. data/lib/fidgit/elements/image_frame.rb +64 -64
  44. data/lib/fidgit/elements/label.rb +84 -84
  45. data/lib/fidgit/elements/list.rb +46 -46
  46. data/lib/fidgit/elements/main_packer.rb +24 -24
  47. data/lib/fidgit/elements/menu_pane.rb +160 -160
  48. data/lib/fidgit/elements/packer.rb +41 -41
  49. data/lib/fidgit/elements/radio_button.rb +85 -85
  50. data/lib/fidgit/elements/scroll_area.rb +67 -67
  51. data/lib/fidgit/elements/scroll_bar.rb +127 -127
  52. data/lib/fidgit/elements/scroll_window.rb +82 -82
  53. data/lib/fidgit/elements/slider.rb +124 -124
  54. data/lib/fidgit/elements/text_area.rb +493 -493
  55. data/lib/fidgit/elements/text_line.rb +91 -91
  56. data/lib/fidgit/elements/toggle_button.rb +66 -66
  57. data/lib/fidgit/elements/tool_tip.rb +34 -34
  58. data/lib/fidgit/elements/vertical.rb +11 -11
  59. data/lib/fidgit/event.rb +158 -158
  60. data/lib/fidgit/gosu_ext/color.rb +135 -135
  61. data/lib/fidgit/gosu_ext/gosu_module.rb +24 -24
  62. data/lib/fidgit/history.rb +90 -90
  63. data/lib/fidgit/redirector.rb +82 -82
  64. data/lib/fidgit/schema.rb +123 -123
  65. data/lib/fidgit/selection.rb +105 -105
  66. data/lib/fidgit/standard_ext/hash.rb +20 -20
  67. data/lib/fidgit/states/dialog_state.rb +51 -51
  68. data/lib/fidgit/states/file_dialog.rb +24 -24
  69. data/lib/fidgit/states/gui_state.rb +329 -329
  70. data/lib/fidgit/states/message_dialog.rb +60 -60
  71. data/lib/fidgit/version.rb +4 -4
  72. data/lib/fidgit/window.rb +19 -19
  73. data/spec/fidgit/elements/helpers/helper.rb +2 -2
  74. data/spec/fidgit/elements/helpers/tex_play_helper.rb +8 -8
  75. data/spec/fidgit/elements/image_frame_spec.rb +68 -68
  76. data/spec/fidgit/elements/label_spec.rb +36 -36
  77. data/spec/fidgit/event_spec.rb +209 -209
  78. data/spec/fidgit/gosu_ext/color_spec.rb +129 -129
  79. data/spec/fidgit/gosu_ext/helpers/helper.rb +2 -2
  80. data/spec/fidgit/helpers/helper.rb +3 -3
  81. data/spec/fidgit/history_spec.rb +153 -153
  82. data/spec/fidgit/redirector_spec.rb +77 -77
  83. data/spec/fidgit/schema_spec.rb +66 -66
  84. data/spec/fidgit/schema_test.yml +32 -32
  85. metadata +67 -22
@@ -1,27 +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
-
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
27
  ExampleWindow.new.show
@@ -1,65 +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
-
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
65
  ExampleWindow.new.show
@@ -1,37 +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
-
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
37
  ExampleWindow.new.show
@@ -1,32 +1,32 @@
1
- require_relative "../lib/fidgit"
2
-
3
- # Normally, you'd load this from the gem using:
4
- # require 'fidgit'
5
-
6
- class MyGame < Chingu::Window
7
- def initialize
8
- super(640, 480, false)
9
-
10
- # To use the Fidgit features, a Fidgit::GuiState must be active.
11
- push_game_state MyGuiState
12
- end
13
- end
14
-
15
- class MyGuiState < Fidgit::GuiState
16
- def initialize
17
- super
18
-
19
- # Create a vertically packed section, centred on the window.
20
- vertical align: :center do
21
- # Create a label with a dark green background.
22
- my_label = label "Hello world!", background_color: Gosu::Color.rgb(0, 100, 0)
23
-
24
- # Create a button that, when clicked, changes the label text.
25
- button("Goodbye", align_h: :center, tip: "Press me and be done with it!") do
26
- my_label.text = "Goodbye cruel world!"
27
- end
28
- end
29
- end
30
- end
31
-
1
+ require_relative "../lib/fidgit"
2
+
3
+ # Normally, you'd load this from the gem using:
4
+ # require 'fidgit'
5
+
6
+ class MyGame < Chingu::Window
7
+ def initialize
8
+ super(640, 480, false)
9
+
10
+ # To use the Fidgit features, a Fidgit::GuiState must be active.
11
+ push_game_state MyGuiState
12
+ end
13
+ end
14
+
15
+ class MyGuiState < Fidgit::GuiState
16
+ def initialize
17
+ super
18
+
19
+ # Create a vertically packed section, centred on the window.
20
+ vertical align: :center do
21
+ # Create a label with a dark green background.
22
+ my_label = label "Hello world!", background_color: Gosu::Color.rgb(0, 100, 0)
23
+
24
+ # Create a button that, when clicked, changes the label text.
25
+ button("Goodbye", align_h: :center, tip: "Press me and be done with it!") do
26
+ my_label.text = "Goodbye cruel world!"
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
32
  MyGame.new.show
@@ -1,49 +1,49 @@
1
- require_relative 'helpers/example_window'
2
-
3
- # Example for Button and ToggleButton
4
- class ExampleState < Fidgit::GuiState
5
- HEIGHT = 225
6
- WIDTH = 140
7
- def initialize
8
- super
9
-
10
- vertical do
11
- horizontal do
12
- [
13
- [20, "All cheer the ascendancy of number "], # Should have both scrollers
14
- [20, "#"], # Only has v-scroller.
15
- [4, "#"], # No scrollers.
16
- [4, "All cheer the ascendancy of number "], # Only has h-scroller
17
- ].each do |num_labels, text|
18
- vertical do
19
- scroll_window(width: WIDTH, height: HEIGHT, background_color: Gosu::Color.rgb(0, 100, 0)) do
20
- vertical do
21
- (1..num_labels).each do |i|
22
- label "#{text}#{i}!"
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
29
-
30
- horizontal padding: 0 do
31
- vertical do
32
- scroll_window(width: 300, height: 150) do
33
- text_area(text: "Hello world! " * 19, width: 284)
34
- end
35
- end
36
-
37
- vertical do
38
- scroll_window(width: 300, height: 150) do
39
- %w[One Two Three Four Five Six].each do |name|
40
- toggle_button(name)
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
-
1
+ require_relative 'helpers/example_window'
2
+
3
+ # Example for Button and ToggleButton
4
+ class ExampleState < Fidgit::GuiState
5
+ HEIGHT = 225
6
+ WIDTH = 140
7
+ def initialize
8
+ super
9
+
10
+ vertical do
11
+ horizontal do
12
+ [
13
+ [20, "All cheer the ascendancy of number "], # Should have both scrollers
14
+ [20, "#"], # Only has v-scroller.
15
+ [4, "#"], # No scrollers.
16
+ [4, "All cheer the ascendancy of number "], # Only has h-scroller
17
+ ].each do |num_labels, text|
18
+ vertical do
19
+ scroll_window(width: WIDTH, height: HEIGHT, background_color: Gosu::Color.rgb(0, 100, 0)) do
20
+ vertical do
21
+ (1..num_labels).each do |i|
22
+ label "#{text}#{i}!"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ horizontal padding: 0 do
31
+ vertical do
32
+ scroll_window(width: 300, height: 150) do
33
+ text_area(text: "Hello world! " * 19, width: 284)
34
+ end
35
+ end
36
+
37
+ vertical do
38
+ scroll_window(width: 300, height: 150) do
39
+ %w[One Two Three Four Five Six].each do |name|
40
+ toggle_button(name)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
49
  ExampleWindow.new.show
@@ -1,34 +1,34 @@
1
- require_relative 'helpers/example_window'
2
-
3
- class ExampleState < Fidgit::GuiState
4
- def initialize
5
- super
6
-
7
- vertical do
8
- horizontal do
9
- # Discrete values (0..100)
10
- slider = slider(width: 100, range: 0..5, value: 3, tip: "Discrete value is") do |sender, value|
11
- @discrete_label.text = "Discrete slider is at #{value}"
12
- end
13
-
14
- @discrete_label = label "Discrete slider is at #{slider.value}"
15
- end
16
-
17
- horizontal do
18
- # Continuous values (0.0..1.0)
19
-
20
- slider = slider(width: 100, range: 0.0..100.0, value: 77.2, tip: "Continuous value is") do |sender, value|
21
- @continuous_label.text = "Continuous slider is at #{"%.03f" % value}%"
22
- end
23
-
24
- @continuous_label = label "Continuous slider is at #{"%.03f" % slider.value}%"
25
- end
26
-
27
- horizontal do
28
- slider(width: 100, range: 0.0..100.0, value: 77.2, tip: "Disabled slider value is", enabled: false)
29
- end
30
- end
31
- end
32
- end
33
-
1
+ require_relative 'helpers/example_window'
2
+
3
+ class ExampleState < Fidgit::GuiState
4
+ def initialize
5
+ super
6
+
7
+ vertical do
8
+ horizontal do
9
+ # Discrete values (0..100)
10
+ slider = slider(width: 100, range: 0..5, value: 3, tip: "Discrete value is") do |sender, value|
11
+ @discrete_label.text = "Discrete slider is at #{value}"
12
+ end
13
+
14
+ @discrete_label = label "Discrete slider is at #{slider.value}"
15
+ end
16
+
17
+ horizontal do
18
+ # Continuous values (0.0..1.0)
19
+
20
+ slider = slider(width: 100, range: 0.0..100.0, value: 77.2, tip: "Continuous value is") do |sender, value|
21
+ @continuous_label.text = "Continuous slider is at #{"%.03f" % value}%"
22
+ end
23
+
24
+ @continuous_label = label "Continuous slider is at #{"%.03f" % slider.value}%"
25
+ end
26
+
27
+ horizontal do
28
+ slider(width: 100, range: 0.0..100.0, value: 77.2, tip: "Disabled slider value is", enabled: false)
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
34
  ExampleWindow.new.show