rubygoo 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/Manifest.txt +9 -0
- data/README.txt +84 -25
- data/Rakefile +36 -2
- data/TODO +5 -4
- data/lib/rubygoo/adapters/gosu_app_adapter.rb +216 -220
- data/lib/rubygoo/adapters/gosu_render_adapter.rb +45 -17
- data/lib/rubygoo/adapters/rubygame_render_adapter.rb +14 -7
- data/lib/rubygoo/app.rb +82 -24
- data/lib/rubygoo/button.rb +29 -10
- data/lib/rubygoo/check_box.rb +21 -11
- data/lib/rubygoo/container.rb +53 -33
- data/lib/rubygoo/dialog.rb +4 -9
- data/lib/rubygoo/label.rb +14 -9
- data/lib/rubygoo/radio_button.rb +29 -0
- data/lib/rubygoo/radio_group.rb +40 -0
- data/lib/rubygoo/tab_group.rb +67 -0
- data/lib/rubygoo/text_field.rb +49 -31
- data/lib/rubygoo/widget.rb +53 -7
- data/lib/rubygoo.rb +4 -0
- data/samples/create_gui.rb +67 -0
- data/samples/gosu_app.rb +8 -61
- data/samples/icon.png +0 -0
- data/samples/rubygame_app.rb +5 -56
- data/test/app_spec.rb +24 -0
- data/test/test_rubygoo.rb +1 -0
- data/test/test_setup.rb +4 -0
- data/test/widget_spec.rb +19 -0
- data/themes/default/config.yml +2 -0
- metadata +25 -5
data/History.txt
CHANGED
@@ -17,3 +17,11 @@
|
|
17
17
|
|
18
18
|
* Minor API tweaks
|
19
19
|
* fixing gem deps
|
20
|
+
|
21
|
+
=== 0.0.6 / 2008-11-13
|
22
|
+
|
23
|
+
* Getting closer to a 1.0 release
|
24
|
+
* Better TextField support for Gosu
|
25
|
+
* small rendering bugs fixed
|
26
|
+
* added relative positioning of widgets
|
27
|
+
* added RadioButton and RadioGroup
|
data/Manifest.txt
CHANGED
@@ -30,10 +30,19 @@ lib/rubygoo/goo_color.rb
|
|
30
30
|
lib/rubygoo/goo_event.rb
|
31
31
|
lib/rubygoo/label.rb
|
32
32
|
lib/rubygoo/mouse_cursor.rb
|
33
|
+
lib/rubygoo/radio_button.rb
|
34
|
+
lib/rubygoo/radio_group.rb
|
33
35
|
lib/rubygoo/rect.rb
|
36
|
+
lib/rubygoo/tab_group.rb
|
34
37
|
lib/rubygoo/text_field.rb
|
35
38
|
lib/rubygoo/widget.rb
|
39
|
+
samples/create_gui.rb
|
36
40
|
samples/gosu_app.rb
|
41
|
+
samples/icon.png
|
37
42
|
samples/rubygame_app.rb
|
43
|
+
test/app_spec.rb
|
44
|
+
test/test_rubygoo.rb
|
45
|
+
test/test_setup.rb
|
46
|
+
test/widget_spec.rb
|
38
47
|
themes/default/Vera.ttf
|
39
48
|
themes/default/config.yml
|
data/README.txt
CHANGED
@@ -10,19 +10,35 @@ Rubygoo is a theme-able gui framework for use with rubygame and soon gosu. It ha
|
|
10
10
|
|
11
11
|
* theme-able gui widgets
|
12
12
|
* named css colors
|
13
|
-
* works with rubygame
|
14
|
-
* containers, labels, buttons, checkboxes
|
13
|
+
* works with rubygame and gosu
|
14
|
+
* containers, labels, buttons, checkboxes, radio buttons, radio groups
|
15
15
|
* tabbing focus of widgets
|
16
16
|
* modal dialogs
|
17
17
|
|
18
18
|
== SYNOPSIS:
|
19
|
+
require 'rubygems'
|
20
|
+
$: << './lib'
|
21
|
+
$: << File.dirname(__FILE__)
|
22
|
+
require 'rubygoo'
|
23
|
+
require 'rubygame'
|
24
|
+
require 'create_gui'
|
25
|
+
include Rubygame
|
26
|
+
include Rubygoo
|
27
|
+
|
28
|
+
if $0 == __FILE__
|
29
|
+
|
30
|
+
screen = Screen.new [600,480]
|
31
|
+
screen.show_cursor = false
|
32
|
+
|
33
|
+
factory = AdapterFactory.new
|
34
|
+
render_adapter = factory.renderer_for :rubygame, screen
|
35
|
+
icon = Surface.load File.dirname(__FILE__) + "/icon.png"
|
19
36
|
|
20
|
-
def build_gui(renderer)
|
21
37
|
app = App.new :renderer => renderer
|
22
38
|
|
23
39
|
label = Label.new "click the button to set the time", :x=>20, :y=>30
|
24
40
|
|
25
|
-
button = Button.new "Click Me!", :x=>70, :y=>80, :x_pad=>20, :y_pad=>20
|
41
|
+
button = Button.new "Click Me!", :x=>70, :y=>80, :x_pad=>20, :y_pad=>20, :icon => icon
|
26
42
|
button.on :pressed do |*opts|
|
27
43
|
label.set_text(Time.now.to_s)
|
28
44
|
end
|
@@ -32,45 +48,88 @@ def build_gui(renderer)
|
|
32
48
|
label.set_text("CHECKED [#{check.checked?}]")
|
33
49
|
end
|
34
50
|
|
35
|
-
text_field = TextField.new "initial text", :x => 70, :y => 170
|
51
|
+
text_field = TextField.new "initial text", :x => 70, :y => 170, :max_length => 20, :min_length => 6
|
36
52
|
|
37
53
|
text_field.on_key K_RETURN, K_KP_ENTER do |evt|
|
38
54
|
puts "BOO-YAH"
|
39
55
|
end
|
40
|
-
|
56
|
+
|
57
|
+
modal_button = Button.new "Modal dialogs", :x=>270, :y=>280, :x_pad=>20, :y_pad=>20
|
58
|
+
modal_button.on :pressed do |*opts|
|
59
|
+
modal = Dialog.new :modal => app, :x=>60, :y=>110, :w=>250, :h=>250
|
60
|
+
|
61
|
+
modal.add Label.new("Message Here", :x=>20, :y=>70, :x_pad=>20, :y_pad=>20, :relative=>true)
|
62
|
+
|
63
|
+
ok_butt = Button.new("OK", :x=>70, :y=>180, :x_pad=>20, :y_pad=>20,:relative=>true)
|
64
|
+
ok_butt.on :pressed do |*opts|
|
65
|
+
app.remove_modal(modal)
|
66
|
+
end
|
67
|
+
modal.add ok_butt
|
68
|
+
|
69
|
+
modal.show
|
70
|
+
end
|
71
|
+
|
72
|
+
grp = RadioGroup.new :x=>10, :y=>380, :x_pad=>20, :y_pad=>20, :w=> 500, :h=>80
|
73
|
+
grp_label = Label.new "RadioGroups are fun!", :x=>40, :y=>10, :w=>20, :h=>20, :relative=>true
|
74
|
+
grp_radio_one = RadioButton.new :x=>40, :y=>40, :w=>20, :h=>20, :relative=>true
|
75
|
+
grp_radio_two = RadioButton.new :x=>90, :y=>40, :w=>20, :h=>20, :relative=>true
|
76
|
+
grp_radio_three = RadioButton.new :x=>140, :y=>40, :w=>20, :h=>20, :relative=>true
|
77
|
+
|
78
|
+
grp.add grp_label, grp_radio_one, grp_radio_two, grp_radio_three
|
79
|
+
|
41
80
|
# implicit tab ordering based on order of addition, can
|
42
81
|
# specify if you want on widget creation
|
43
82
|
|
44
83
|
# can add many or one at a time
|
45
|
-
app.add text_field, label, button
|
84
|
+
app.add text_field, label, button, modal_button, grp
|
46
85
|
app.add check
|
47
|
-
end
|
48
|
-
|
49
|
-
screen = Screen.new [600,480]
|
50
86
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
87
|
+
# pulldown = Pulldown.new {:x=>70, :y=>80}
|
88
|
+
# pulldown.on :changed do |*opts|
|
89
|
+
# label.set_text(opts.first)
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
# app.add pulldown
|
55
93
|
|
56
|
-
|
57
|
-
|
58
|
-
# rubygame
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
94
|
+
app_adapter = factory.app_for :rubygame, app
|
95
|
+
|
96
|
+
# rubygame standard stuff below here
|
97
|
+
queue = EventQueue.new
|
98
|
+
queue.ignore = [
|
99
|
+
ActiveEvent, JoyAxisEvent, JoyBallEvent, JoyDownEvent,
|
100
|
+
JoyHatEvent, JoyUpEvent, ResizeEvent
|
101
|
+
]
|
102
|
+
clock = Clock.new
|
103
|
+
clock.target_framerate = 20
|
104
|
+
|
105
|
+
catch(:rubygame_quit) do
|
106
|
+
loop do
|
107
|
+
queue.each do |event|
|
108
|
+
case event
|
109
|
+
when KeyDownEvent
|
110
|
+
case event.key
|
111
|
+
when K_ESCAPE
|
112
|
+
throw :rubygame_quit
|
113
|
+
end
|
114
|
+
when QuitEvent
|
115
|
+
throw :rubygame_quit
|
116
|
+
end
|
117
|
+
|
118
|
+
# pass on our events to the GUI
|
119
|
+
app_adapter.on_event event
|
120
|
+
end
|
121
|
+
|
122
|
+
app_adapter.update clock.tick
|
123
|
+
app_adapter.draw render_adapter
|
124
|
+
end
|
63
125
|
end
|
64
|
-
|
65
|
-
app_adapter.update clock.tick
|
66
|
-
app_adapter.draw render_adapter
|
67
126
|
end
|
68
127
|
|
69
128
|
== REQUIREMENTS:
|
70
129
|
|
71
130
|
* publisher gem
|
72
131
|
* constructor gem
|
73
|
-
* rubygame gem
|
132
|
+
* rubygame gem or gosu
|
74
133
|
|
75
134
|
== INSTALL:
|
76
135
|
|
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rubygems'
|
|
4
4
|
require 'hoe'
|
5
5
|
|
6
6
|
module Rubygoo
|
7
|
-
VERSION = '0.0.
|
7
|
+
VERSION = '0.0.6'
|
8
8
|
end
|
9
9
|
Hoe.new('rubygoo', Rubygoo::VERSION) do |p|
|
10
10
|
p.developer('Shawn Anderson', 'shawn42@gmail.com')
|
@@ -13,10 +13,11 @@ Hoe.new('rubygoo', Rubygoo::VERSION) do |p|
|
|
13
13
|
p.email = 'boss@topfunky.com'
|
14
14
|
p.summary = "Beautiful graphs for one or multiple datasets."
|
15
15
|
p.url = "http://rubygoo.googlecode.com"
|
16
|
-
p.changes = p.paragraphs_of('History.txt',
|
16
|
+
p.changes = p.paragraphs_of('History.txt', 6..7).join("\n\n")
|
17
17
|
p.remote_rdoc_dir = '' # Release to root
|
18
18
|
p.extra_deps << ['constructor']
|
19
19
|
p.extra_deps << ['publisher']
|
20
|
+
p.extra_deps << ['rspec']
|
20
21
|
end
|
21
22
|
|
22
23
|
# run rubygame_app
|
@@ -35,4 +36,37 @@ task :stats do
|
|
35
36
|
CodeStatistics.new(*STATS_DIRECTORIES).to_s
|
36
37
|
end
|
37
38
|
|
39
|
+
begin
|
40
|
+
require 'spec/rake/spectask'
|
41
|
+
|
42
|
+
desc "Run all specs (tests)"
|
43
|
+
Spec::Rake::SpecTask.new do |t|
|
44
|
+
t.spec_files = FileList['test/*_spec.rb']
|
45
|
+
t.spec_opts = ["--format", "specdoc"]
|
46
|
+
end
|
47
|
+
|
48
|
+
rule(/spec:.+/) do |t|
|
49
|
+
name = t.name.gsub("spec:","")
|
50
|
+
|
51
|
+
path = File.join( File.dirname(__FILE__),'test','%s_spec.rb'%name )
|
52
|
+
|
53
|
+
if File.exist? path
|
54
|
+
Spec::Rake::SpecTask.new(name) do |t|
|
55
|
+
t.spec_files = [path]
|
56
|
+
end
|
57
|
+
|
58
|
+
puts "\nRunning spec/%s_spec.rb"%[name]
|
59
|
+
Rake::Task[name].invoke
|
60
|
+
else
|
61
|
+
puts "File does not exist: %s"%path
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
rescue LoadError
|
66
|
+
task :spec do
|
67
|
+
puts "ERROR: RSpec is not installed?"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
38
72
|
# vim: syntax=Ruby
|
data/TODO
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
TODO
|
2
|
-
-
|
2
|
+
- KEYTOASCII in gosu adapter
|
3
|
+
- image icons for buttons
|
4
|
+
- create GooImage for agnostic access to image sizes, have renderer handle loading of images?
|
5
|
+
- double-check the tab focus stuff on modal dialogs (tab focus of containers?)
|
6
|
+
- can still tab through other widgets when modal dialog is up
|
3
7
|
- make clicking on a component focus it
|
4
8
|
- add more listener types (when mouse_enter, mouse_leave, mouse_click, focus, key_pressed...)
|
5
|
-
- image icons for buttons
|
6
|
-
|
7
|
-
- double-check the tab focus stuff on modal dialogs
|