rubygoo 0.0.5 → 0.0.6

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.
@@ -6,9 +6,9 @@ module Rubygoo
6
6
  super opts
7
7
  @text = text
8
8
 
9
- # TODO make widget respect these?
10
9
  @max_length = opts[:max_length]
11
10
  @min_length = opts[:min_length]
11
+ @min_length ||= 1
12
12
 
13
13
  @key_handlers = {}
14
14
  end
@@ -40,12 +40,17 @@ module Rubygoo
40
40
 
41
41
  @font_file = File.join(@app.theme_dir,font)
42
42
 
43
- if @w == 1
44
- # we have the default from widget, we want to set the
45
- # default to 6 chars wide and 1 char tall
46
- size = @app.renderer.size_text "MMMMMM", @font_file, @font_size
47
- @min_w = size[0]
48
- @min_h = size[1]
43
+ # we have the default from widget, we want to set the
44
+ # default to 6 chars wide and 1 char tall
45
+ # wow, this is REALLY bad, but I think M is the widest char
46
+ size = @app.renderer.size_text "M"*@min_length, @font_file, @font_size
47
+ @min_w = size[0]
48
+ @min_h = size[1]
49
+
50
+ if @max_length
51
+ size = @app.renderer.size_text "M"*@max_length, @font_file, @font_size
52
+ @max_w = size[0]
53
+ @max_h = size[1]
49
54
  end
50
55
 
51
56
  set_text @text
@@ -61,6 +66,10 @@ module Rubygoo
61
66
  @rendered_text = @app.renderer.render_text @text, @font_file, @font_size, @color
62
67
  w = [@rendered_text.width,@min_w].max + @x_pad
63
68
  h = [@rendered_text.height,@min_h].max + @y_pad
69
+ if @max_length
70
+ w = [w,@max_w].min
71
+ h = [h,@max_h].min
72
+ end
64
73
  @rect = Rect.new [@x,@y,w,h]
65
74
  end
66
75
  end
@@ -80,18 +89,19 @@ module Rubygoo
80
89
 
81
90
  end
82
91
 
83
- def draw(screen)
84
- screen.fill @fg_color, @rect
85
- screen.fill @bg_color, [@rect[0]-2,@rect[1]-2,@rect[2]+4,@rect[3]+4]
92
+ def draw(adapter)
93
+ x1 = @rect[0] - 2
94
+ y1 = @rect[1] - 2
95
+ x2 = @rect[2] + x1 + 4
96
+ y2 = @rect[3] + y1 + 4
97
+
98
+ adapter.fill x1, y1, x2, y2, @fg_color
99
+ adapter.fill x1-2, y1-2, x2+2, y2+2, @bg_color
86
100
  if @border_color
87
- x1 = @rect[0] - 2
88
- y1 = @rect[1] - 2
89
- x2 = @rect[2] + x1 + 4
90
- y2 = @rect[3] + y1 + 4
91
- screen.draw_box x1, y1, x2, y2, @border_color
101
+ adapter.draw_box x1, y1, x2, y2, @border_color
92
102
  end
93
103
  defaultY = @app.renderer.size_text(@text.slice(0,1),@font_file,@font_size)[1]
94
- x,y,w,h = @rect
104
+
95
105
  if @focussed
96
106
  caretX = @app.renderer.size_text(@text.slice(0,@caret_pos),@font_file,@font_size)[0]
97
107
  unless @select_pos.nil?
@@ -101,19 +111,23 @@ module Rubygoo
101
111
  selectX1 = [caretX, selectX].max
102
112
  if selectX0 < selectX1
103
113
  # TODO cache this height
104
- screen.fill(@bg_select_color, [x+1+selectX0, y+1, selectX1-selectX0, defaultY])
114
+ x = x1+1+selectX0
115
+ y = y1+1
116
+ adapter.fill x, y, x+selectX1-selectX0, y+defaultY, @bg_select_color
105
117
  end
106
118
  end
107
119
  end
108
120
 
109
121
  unless @text.nil? or @text.empty?
110
122
  @rendered_text = @app.renderer.render_text @text, @font_file, @font_size, @color
111
- screen.draw_image @rendered_text, x+1, y+1, @color
123
+ adapter.draw_image @rendered_text, x1+1, y1+1, @color
112
124
  end
113
125
 
114
126
  # draw caret
115
127
  if @focussed
116
- screen.fill(@fg_select_color, [x+1+caretX, y+1, 1, defaultY])
128
+ x = x1+1+caretX
129
+ y = y1+1
130
+ adapter.fill x, y, x+1, y+defaultY, @fg_select_color
117
131
  end
118
132
 
119
133
  # don't really need this??
@@ -161,18 +175,22 @@ module Rubygoo
161
175
  def mouse_down(event)
162
176
  x = event.data[:x]
163
177
  y = event.data[:y]
164
- return 0 unless contains?([x,y])
165
178
 
166
- # TODO rework focus and mouse events
167
- # getFocus()
179
+ self.app.focus self
180
+
168
181
  @caret_pos = find_mouse_position([x,y])
169
182
  @select_pos = @caret_pos
170
- @dragging = true
171
183
  render
172
184
  end
173
185
 
174
- def mouse_motion(event)
175
- return 0 unless @dragging
186
+ def mouse_dragging(event)
187
+ x = event.data[:x]
188
+ y = event.data[:y]
189
+ @caret_pos = find_mouse_position([x,y])
190
+ render
191
+ end
192
+
193
+ def mouse_drag(event)
176
194
  x = event.data[:x]
177
195
  y = event.data[:y]
178
196
  @caret_pos = find_mouse_position([x,y])
@@ -180,13 +198,9 @@ module Rubygoo
180
198
  end
181
199
 
182
200
  def mouse_up(event)
183
- if not @dragging
184
- return 0
185
- end
186
201
  x = event.data[:x]
187
202
  y = event.data[:y]
188
203
  @caret_pos = find_mouse_position([x,y])
189
- @dragging = false
190
204
  render
191
205
  end
192
206
 
@@ -282,9 +296,13 @@ module Rubygoo
282
296
 
283
297
  when *KEY2ASCII.keys
284
298
  # add regular text to the box
299
+ return if @text.size == @max_length
285
300
  if @caret_pos == @select_pos
286
- @text = @text.slice(0,@caret_pos) + event.data[:string] + @text.slice(@caret_pos,@text.length-@caret_pos)
287
- @caret_pos += 1
301
+ event_string = event.data[:string]
302
+ unless event_string.nil? or event_string == ""
303
+ @text = @text.slice(0,@caret_pos) + event_string + @text.slice(@caret_pos,@text.length-@caret_pos)
304
+ @caret_pos += 1
305
+ end
288
306
  else
289
307
  positions = [@caret_pos,@select_pos]
290
308
  min = positions.min
@@ -5,10 +5,13 @@ require 'rect'
5
5
  module Rubygoo
6
6
  class Widget
7
7
  extend Publisher
8
- can_fire :clicked
8
+
9
+ # fire resized whenever a dimensional variable changes
10
+ can_fire :clicked, :resized
11
+
9
12
  attr_accessor :enabled, :parent, :container,
10
13
  :x, :y, :w, :h, :app, :x_pad, :y_pad, :focussed,
11
- :focus_priority
14
+ :focus_priority, :relative
12
15
 
13
16
  DEFAULT_PARAMS = {
14
17
  :x => 0,
@@ -17,6 +20,7 @@ module Rubygoo
17
20
  :h => 1,
18
21
  :x_pad => 2,
19
22
  :y_pad => 2,
23
+ :relative => false,
20
24
  }
21
25
  def initialize(opts={})
22
26
  merged_opts = DEFAULT_PARAMS.merge opts
@@ -26,11 +30,12 @@ module Rubygoo
26
30
  @y_pad = merged_opts[:y_pad]
27
31
  @w = merged_opts[:w]
28
32
  @h = merged_opts[:h]
33
+ @relative = merged_opts[:relative]
29
34
  update_rect
30
35
  end
31
36
 
32
37
  def update_rect()
33
- @rect = Rect.new [@x,@y,@w+@x_pad,@h+@y_pad]
38
+ @rect = Rect.new [@x,@y,@w,@h]
34
39
  end
35
40
 
36
41
  # called when the widget is added to a container
@@ -60,14 +65,22 @@ module Rubygoo
60
65
  def mouse_down(event)
61
66
  end
62
67
 
63
- # called when there is a mouse motion
68
+ # called when there is a mouse motion and no button pressed
64
69
  def mouse_motion(event)
65
70
  end
71
+ #
72
+ # called when there is a mouse motion and a button pressed
73
+ def mouse_dragging(event)
74
+ end
66
75
 
67
- # called when there is a mouse release
76
+ # called when there is a mouse release w/o drag
68
77
  def mouse_up(event)
69
78
  end
70
79
 
80
+ # called when there is a mouse release at the end of a drag
81
+ def mouse_drag(event)
82
+ end
83
+
71
84
  # called when a key press is sent to us
72
85
  def key_pressed(event)
73
86
  end
@@ -142,11 +155,44 @@ module Rubygoo
142
155
 
143
156
  GooColor.new *new_color
144
157
  end
158
+
159
+ # does this widget want tabbed focus? Widget do usually
160
+ def tab_to?()
161
+ true
162
+ end
163
+
164
+ def modal?()
165
+ false
166
+ end
145
167
 
146
- # called each update cycle with the amount of time that has passed. useful
147
- # for animations, etc
168
+ # called each update cycle with the amount of time that has
169
+ # passed. useful for animations, etc
148
170
  def update(time)
149
171
  end
150
172
 
173
+ def x=(val)
174
+ @x = val
175
+ fire :resized, self
176
+ end
177
+ def y=(val)
178
+ @y = val
179
+ fire :resized, self
180
+ end
181
+ def w=(val)
182
+ @w = val
183
+ fire :resized, self
184
+ end
185
+ def h=(val)
186
+ @h = val
187
+ fire :resized, self
188
+ end
189
+ def x_pad=(val)
190
+ @x_pad = val
191
+ fire :resized, self
192
+ end
193
+ def y_pad=(val)
194
+ @y_pad = val
195
+ fire :resized, self
196
+ end
151
197
  end
152
198
  end
data/lib/rubygoo.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $: << File.dirname(__FILE__)
2
2
  $: << File.join(File.dirname(__FILE__),"rubygoo")
3
3
  $: << File.join(File.dirname(__FILE__),"rubygoo","adapters")
4
+ require 'rubygems'
4
5
  require 'rubygoo/goo_event'
5
6
  require 'rubygoo/goo_color'
6
7
  require 'rubygoo/adapters/adapter_factory'
@@ -8,9 +9,12 @@ require 'yaml'
8
9
  require 'rubygoo/widget'
9
10
  require 'rubygoo/container'
10
11
  require 'rubygoo/mouse_cursor'
12
+ require 'rubygoo/tab_group'
11
13
  require 'rubygoo/app'
12
14
  require 'rubygoo/label'
13
15
  require 'rubygoo/button'
14
16
  require 'rubygoo/check_box'
17
+ require 'rubygoo/radio_button'
18
+ require 'rubygoo/radio_group'
15
19
  require 'rubygoo/text_field'
16
20
  require 'rubygoo/dialog'
@@ -0,0 +1,67 @@
1
+ module CreateGui
2
+ def create_gui(renderer, icon)
3
+ app = App.new :renderer => renderer
4
+
5
+ label = Label.new "click the button to set the time", :x=>20, :y=>30
6
+
7
+ button = Button.new "Click Me!", :x=>70, :y=>80, :x_pad=>20, :y_pad=>20, :icon => icon
8
+ button.on :pressed do |*opts|
9
+ label.set_text(Time.now.to_s)
10
+ end
11
+
12
+ check = CheckBox.new :x=>370, :y=>70, :w=>20, :h=>20
13
+ check.on :checked do
14
+ label.set_text("CHECKED [#{check.checked?}]")
15
+ end
16
+
17
+ text_field = TextField.new "initial text", :x => 70, :y => 170, :max_length => 20, :min_length => 6
18
+
19
+ text_field.on_key K_RETURN, K_KP_ENTER do |evt|
20
+ puts "BOO-YAH"
21
+ end
22
+
23
+ modal_button = Button.new "Modal dialogs", :x=>270, :y=>280, :x_pad=>20, :y_pad=>20
24
+ modal_button.on :pressed do |*opts|
25
+ # TODO make some of this stuff relative and/or make Dialog's
26
+ # constructor take a layout to use
27
+ modal = Dialog.new :modal => app, :x=>60, :y=>110, :w=>250, :h=>250
28
+
29
+ modal.add Label.new("Message Here", :x=>20, :y=>70, :x_pad=>20, :y_pad=>20, :relative=>true)
30
+ resize_me = Button.new "resize", :relative=>true, :x=>170, :y=>180
31
+ resize_me.on :pressed do |*opts|
32
+ modal.resize opts.first
33
+ end
34
+
35
+ ok_butt = Button.new("OK", :x=>70, :y=>180, :x_pad=>20, :y_pad=>20,:relative=>true)
36
+ ok_butt.on :pressed do |*opts|
37
+ app.remove_modal(modal)
38
+ end
39
+ modal.add ok_butt, resize_me
40
+
41
+ modal.show
42
+ end
43
+
44
+ grp = RadioGroup.new :x=>10, :y=>380, :x_pad=>20, :y_pad=>20, :w=> 500, :h=>80
45
+ grp_label = Label.new "RadioGroups are fun!", :x=>40, :y=>10, :w=>20, :h=>20, :relative=>true
46
+ grp_radio_one = RadioButton.new :x=>40, :y=>40, :w=>20, :h=>20, :relative=>true
47
+ grp_radio_two = RadioButton.new :x=>90, :y=>40, :w=>20, :h=>20, :relative=>true
48
+ grp_radio_three = RadioButton.new :x=>140, :y=>40, :w=>20, :h=>20, :relative=>true
49
+
50
+ grp.add grp_label, grp_radio_one, grp_radio_two, grp_radio_three
51
+
52
+ # implicit tab ordering based on order of addition, can
53
+ # specify if you want on widget creation
54
+
55
+ # can add many or one at a time
56
+ app.add text_field, label, button, modal_button, grp
57
+ app.add check
58
+
59
+ # pulldown = Pulldown.new {:x=>70, :y=>80}
60
+ # pulldown.on :changed do |*opts|
61
+ # label.set_text(opts.first)
62
+ # end
63
+ #
64
+ # app.add pulldown
65
+ app
66
+ end
67
+ end
data/samples/gosu_app.rb CHANGED
@@ -1,98 +1,45 @@
1
1
  require 'rubygems'
2
2
  $: << './lib'
3
+ $: << File.dirname(__FILE__)
3
4
  require 'rubygoo'
4
-
5
5
  require 'gosu'
6
6
  include Gosu
7
7
  include Rubygoo
8
8
 
9
+ require 'create_gui'
9
10
  class RubygooWindow < Window
11
+ include CreateGui
10
12
  def initialize()
11
13
 
12
14
  super(640, 480, false)
13
15
 
14
- # TODO, how can I do this cleaner?
16
+ # TODO, how can I do this more cleanly?
15
17
  %w{a b c d e f g h i j k l m n o p q r s t u v w x y z}.each do |letter|
16
18
  eval "::Kb#{letter.upcase} = #{self.char_to_button_id(letter)}"
17
19
  end
20
+
18
21
  # how do I get rid of this?
19
22
  require 'gosu_app_adapter'
20
23
  factory = AdapterFactory.new
21
24
  @render_adapter = factory.renderer_for :gosu, self
22
- app = create_gui(@render_adapter)
25
+ icon = Image.new self, File.dirname(__FILE__) + "/icon.png"
26
+ app = create_gui(@render_adapter,icon)
23
27
  @app_adapter = factory.app_for :gosu, app, self
24
28
  self.caption = "Gosu Tutorial Game"
25
29
 
26
30
  end
27
31
 
28
- def create_gui(renderer)
29
- app = App.new :renderer => renderer
30
-
31
- label = Label.new "click the button to set the time", :x=>20, :y=>30
32
-
33
- button = Button.new "Click Me!", :x=>70, :y=>80, :x_pad=>20, :y_pad=>20
34
- button.on :pressed do |*opts|
35
- label.set_text(Time.now.to_s)
36
- end
37
-
38
- check = CheckBox.new :x=>370, :y=>70, :w=>20, :h=>20
39
- check.on :checked do
40
- label.set_text("CHECKED [#{check.checked?}]")
41
- end
42
-
43
- text_field = TextField.new "initial text", :x => 70, :y => 170
44
-
45
- text_field.on_key K_RETURN, K_KP_ENTER do |evt|
46
- puts "BOO-YAH"
47
- end
48
-
49
- modal_button = Button.new "Modal dialogs", :x=>270, :y=>280, :x_pad=>20, :y_pad=>20
50
- modal_button.on :pressed do |*opts|
51
- msg = "I AM MODAL"
52
- # TODO make some of this stuff relative and/or make Dialog's
53
- # constructor take a layout to use
54
- modal = Dialog.new :modal => app, :x=>10, :y=>110, :w=>250, :h=>250
55
-
56
- modal.add Label.new("Message Here", :x=>70, :y=>180, :x_pad=>20, :y_pad=>20)
57
- ok_butt = Button.new("OK", :x=>90, :y=>280, :x_pad=>20, :y_pad=>20)
58
- ok_butt.on :pressed do |*opts|
59
- # TODO not sure about this yet
60
- app.remove(modal)
61
- end
62
- modal.add ok_butt
63
-
64
- modal.show
65
- end
66
-
67
- # implicit tab ordering based on order of addition, can
68
- # specify if you want on widget creation
69
-
70
- # can add many or one at a time
71
- app.add text_field, label, button, modal_button
72
- app.add check
73
-
74
- # pulldown = Pulldown.new {:x=>70, :y=>80}
75
- # pulldown.on :changed do |*opts|
76
- # label.set_text(opts.first)
77
- # end
78
- #
79
- # app.add pulldown
80
- app
81
- end
82
-
83
32
  def update
84
33
  @app_adapter.update Gosu::milliseconds
85
34
  end
86
35
 
87
36
  def draw
88
- # possibly need to set something like GosuRenderer vs
89
- # RubygameRenderer that each know how to draw a textbox in
90
- # its own way?
91
37
  @app_adapter.draw @render_adapter
92
38
  end
93
39
 
94
40
  # in gosu this captures mouse and keyboard events
95
41
  def button_down(id)
42
+ close if id == Gosu::Button::KbEscape
96
43
  @app_adapter.button_down id
97
44
  end
98
45
 
data/samples/icon.png ADDED
Binary file
@@ -1,64 +1,12 @@
1
1
  require 'rubygems'
2
2
  $: << './lib'
3
+ $: << File.dirname(__FILE__)
3
4
  require 'rubygoo'
4
5
  require 'rubygame'
6
+ require 'create_gui'
5
7
  include Rubygame
6
8
  include Rubygoo
7
-
8
- def create_gui(renderer)
9
- app = App.new :renderer => renderer
10
-
11
- label = Label.new "click the button to set the time", :x=>20, :y=>30
12
-
13
- button = Button.new "Click Me!", :x=>70, :y=>80, :x_pad=>20, :y_pad=>20
14
- button.on :pressed do |*opts|
15
- label.set_text(Time.now.to_s)
16
- end
17
-
18
- check = CheckBox.new :x=>370, :y=>70, :w=>20, :h=>20
19
- check.on :checked do
20
- label.set_text("CHECKED [#{check.checked?}]")
21
- end
22
-
23
- text_field = TextField.new "initial text", :x => 70, :y => 170
24
-
25
- text_field.on_key K_RETURN, K_KP_ENTER do |evt|
26
- puts "BOO-YAH"
27
- end
28
-
29
- modal_button = Button.new "Modal dialogs", :x=>270, :y=>280, :x_pad=>20, :y_pad=>20
30
- modal_button.on :pressed do |*opts|
31
- msg = "I AM MODAL"
32
- # TODO make some of this stuff relative and/or make Dialog's
33
- # constructor take a layout to use
34
- modal = Dialog.new :modal => app, :x=>10, :y=>110, :w=>250, :h=>250
35
-
36
- modal.add Label.new("Message Here", :x=>70, :y=>180, :x_pad=>20, :y_pad=>20)
37
- ok_butt = Button.new("OK", :x=>90, :y=>280, :x_pad=>20, :y_pad=>20)
38
- ok_butt.on :pressed do |*opts|
39
- # TODO not sure about this yet
40
- app.remove(modal)
41
- end
42
- modal.add ok_butt
43
-
44
- modal.show
45
- end
46
-
47
- # implicit tab ordering based on order of addition, can
48
- # specify if you want on widget creation
49
-
50
- # can add many or one at a time
51
- app.add text_field, label, button, modal_button
52
- app.add check
53
-
54
- # pulldown = Pulldown.new {:x=>70, :y=>80}
55
- # pulldown.on :changed do |*opts|
56
- # label.set_text(opts.first)
57
- # end
58
- #
59
- # app.add pulldown
60
- app
61
- end
9
+ include CreateGui
62
10
 
63
11
  if $0 == __FILE__
64
12
 
@@ -67,7 +15,8 @@ if $0 == __FILE__
67
15
 
68
16
  factory = AdapterFactory.new
69
17
  render_adapter = factory.renderer_for :rubygame, screen
70
- app = create_gui(render_adapter)
18
+ icon = Surface.load File.dirname(__FILE__) + "/icon.png"
19
+ app = create_gui(render_adapter,icon)
71
20
  app_adapter = factory.app_for :rubygame, app
72
21
 
73
22
  # rubygame standard stuff below here
data/test/app_spec.rb ADDED
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__)+"/test_setup.rb"
2
+
3
+ describe App do
4
+
5
+ describe "basic app behavior" do
6
+ before :each do
7
+ # @widget = Map.new
8
+ end
9
+
10
+ it "should merge in defaults for any options not given" do
11
+ @app = App.new
12
+ for k,v in App::DEFAULT_PARAMS.dup.delete(:theme)
13
+ @app.instance_variable_get("@#{k}").should == v
14
+ end
15
+
16
+ theme_dir = File.join(App::DEFAULT_PARAMS[:data_dir],
17
+ App::DEFAULT_PARAMS[:theme])
18
+ exp_theme = YAML::load_file(File.join(theme_dir,"config.yml"))
19
+ @app.theme.should == exp_theme
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1 @@
1
+ # TODO change this to include/run all specs in this directory
@@ -0,0 +1,4 @@
1
+ $: << File.dirname(__FILE__) + "/../lib"
2
+ $: << File.dirname(__FILE__) + "/../lib/rubygoo"
3
+ require 'rubygoo'
4
+ include Rubygoo
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__)+"/test_setup.rb"
2
+
3
+ describe Widget do
4
+
5
+ describe "basic widget behavior" do
6
+ before :each do
7
+ # @widget = Map.new
8
+ end
9
+
10
+ it "should merge in defaults for any options not given" do
11
+ @widget = Widget.new
12
+ for k,v in Widget::DEFAULT_PARAMS
13
+ @widget.instance_variable_get("@#{k}").should == v
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  Rubygoo::App:
3
3
  :bg_color: :Black
4
+ Rubygoo::Container:
5
+ :bg_color: :DarkGray
4
6
  Rubygoo::Widget:
5
7
  :font: Vera.ttf
6
8
  :font_size: 20
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Anderson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-13 00:00:00 -07:00
12
+ date: 2008-11-13 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,6 +32,16 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
35
45
  - !ruby/object:Gem::Dependency
36
46
  name: hoe
37
47
  type: :development
@@ -40,7 +50,7 @@ dependencies:
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
43
- version: 1.7.0
53
+ version: 1.8.2
44
54
  version:
45
55
  description: GUI library for use with Gosu or Rubygame
46
56
  email: boss@topfunky.com
@@ -85,11 +95,20 @@ files:
85
95
  - lib/rubygoo/goo_event.rb
86
96
  - lib/rubygoo/label.rb
87
97
  - lib/rubygoo/mouse_cursor.rb
98
+ - lib/rubygoo/radio_button.rb
99
+ - lib/rubygoo/radio_group.rb
88
100
  - lib/rubygoo/rect.rb
101
+ - lib/rubygoo/tab_group.rb
89
102
  - lib/rubygoo/text_field.rb
90
103
  - lib/rubygoo/widget.rb
104
+ - samples/create_gui.rb
91
105
  - samples/gosu_app.rb
106
+ - samples/icon.png
92
107
  - samples/rubygame_app.rb
108
+ - test/app_spec.rb
109
+ - test/test_rubygoo.rb
110
+ - test/test_setup.rb
111
+ - test/widget_spec.rb
93
112
  - themes/default/Vera.ttf
94
113
  - themes/default/config.yml
95
114
  has_rdoc: true
@@ -119,5 +138,6 @@ rubygems_version: 1.2.0
119
138
  signing_key:
120
139
  specification_version: 2
121
140
  summary: Beautiful graphs for one or multiple datasets.
122
- test_files: []
123
-
141
+ test_files:
142
+ - test/test_rubygoo.rb
143
+ - test/test_setup.rb