sweet 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/README.rdoc +9 -5
  2. data/bin/sweet +3 -1
  3. data/examples/fox/hello_world.rb +12 -0
  4. data/examples/gtk2/hello_world.rb +14 -0
  5. data/examples/swing/hello_world.rb +12 -0
  6. data/examples/swt/components.rb +112 -0
  7. data/examples/swt/components/buttons.rb +35 -0
  8. data/examples/{hello_world.rb → swt/hello_world.rb} +2 -2
  9. data/examples/{snippet108.rb → swt/snippet108.rb} +2 -2
  10. data/examples/{snippet128.rb → swt/snippet128.rb} +7 -8
  11. data/examples/{snippet169.rb → swt/snippet169.rb} +2 -2
  12. data/examples/{snippet82.rb → swt/snippet82.rb} +2 -2
  13. data/examples/wx/hello_world.rb +12 -0
  14. data/lib/sweet.rb +22 -1
  15. data/lib/sweet/base.rb +151 -177
  16. data/lib/sweet/fox.rb +47 -0
  17. data/lib/sweet/fox/application.rb +9 -0
  18. data/lib/sweet/fox/object.rb +19 -0
  19. data/lib/sweet/gtk2.rb +56 -0
  20. data/lib/sweet/gtk2/application.rb +11 -0
  21. data/lib/sweet/gtk2/widget.rb +5 -0
  22. data/lib/sweet/hacks.rb +0 -17
  23. data/lib/sweet/swing.rb +97 -0
  24. data/lib/sweet/swing/application.rb +9 -0
  25. data/lib/sweet/swing/component.rb +23 -0
  26. data/lib/sweet/swing/frame.rb +13 -0
  27. data/lib/sweet/swt.rb +193 -0
  28. data/lib/sweet/swt/application.rb +17 -0
  29. data/lib/sweet/{composite.rb → swt/composite.rb} +5 -2
  30. data/lib/sweet/{dialog.rb → swt/dialog.rb} +0 -0
  31. data/lib/sweet/{downloader.rb → swt/downloader.rb} +1 -1
  32. data/lib/sweet/swt/shell.rb +22 -0
  33. data/lib/sweet/swt/src.zip +0 -0
  34. data/lib/sweet/swt/swt.jar +0 -0
  35. data/lib/sweet/swt/widget.rb +89 -0
  36. data/lib/sweet/wx.rb +57 -0
  37. data/lib/sweet/wx/application.rb +9 -0
  38. data/lib/sweet/wx/object.rb +19 -0
  39. data/spec/api_spec.rb +15 -0
  40. data/spec/downloader_spec.rb +28 -26
  41. data/spec/fox_spec.rb +15 -0
  42. data/spec/gtk2_spec.rb +15 -0
  43. data/spec/sweet_spec.rb +15 -0
  44. data/spec/swing_spec.rb +15 -0
  45. data/spec/swt_spec.rb +15 -0
  46. data/spec/wx_spec.rb +15 -0
  47. metadata +44 -17
  48. data/lib/sweet/shell.rb +0 -53
  49. data/lib/sweet/widget.rb +0 -151
data/lib/sweet/shell.rb DELETED
@@ -1,53 +0,0 @@
1
- # TODO pack into WIDGETS
2
- class Java::OrgEclipseSwtWidgets::Shell
3
- attr_reader :display
4
- alias_property :title => :text
5
-
6
- def sweeten(display, name, opts = {}, &block)
7
- @display = display
8
-
9
- self.text = opts.delete(:title) || name
10
- w, h = opts.delete(:width), opts.delete(:height)
11
-
12
- super(self, opts, &block)
13
-
14
- pack
15
- size = (w || width), (h || height)
16
- end
17
-
18
- def sweet_containers
19
- @sweet_containers ||= [self]
20
- end
21
-
22
- def perform(&block)
23
- display.syncExec block
24
- end
25
-
26
- def busy(&block)
27
- Thread.new do
28
- perform do
29
- custom::BusyIndicator.showWhile(display) do
30
- block.call
31
- end
32
- end
33
- end
34
- end
35
-
36
- def menubar(&block)
37
- self.menu_bar = make_menu(:menubar, &block)
38
- end
39
-
40
- def popup(&block)
41
- self.menu = make_menu(:popup, &block)
42
- end
43
-
44
- def method_missing(name, *args, &block)
45
- Sweet.create_widget(sweet_containers.last, name, *args, &block) || super
46
- end
47
-
48
- private
49
- def make_menu(type, &block)
50
- Sweet.create_widget(sweet_containers.last, type, &block)
51
- end
52
-
53
- end
data/lib/sweet/widget.rb DELETED
@@ -1,151 +0,0 @@
1
- require 'forwardable'
2
-
3
- class Java::OrgEclipseSwtWidgets::Widget
4
- extend Forwardable
5
- attr_reader :app
6
-
7
- def sweeten(app, opts, &block)
8
- @app = app
9
- self.options = opts
10
-
11
- if block
12
- case handler = @block_handler
13
- when nil
14
- handle_container &block
15
- when Symbol
16
- send handler, &block
17
- when Numeric
18
- addListener handler, &block
19
- when Proc
20
- instance_eval do
21
- handler.call self, opts, block
22
- end
23
- else
24
- raise "Invalid :block_handler ",handler
25
- end
26
- end
27
-
28
- puts "Unknown properties for class #{self.class}: #{opts.keys.inspect}" unless opts.empty?
29
- end
30
-
31
- def app(&block)
32
- block ? @app.instance_eval(&block) : @app
33
- end
34
-
35
- def append(&block)
36
- raise "Append called without block" unless block
37
- handle_container &block
38
- end
39
-
40
- def meta(&block)
41
- @meta ||= class << self
42
- self
43
- end
44
- block ? @meta.class_eval(&block) : @meta
45
- end
46
-
47
- def self.alias_property(aliases = {})
48
- aliases.each do |from, to|
49
- alias_method from, to unless "to"
50
- alias_method "#{from}=", "#{to}=" unless "#{to}="
51
- end
52
- end
53
-
54
- def options=(opts)
55
- # TODO reader method
56
- opts.each_pair do |k, v|
57
- case k
58
- when :hidden
59
- setVisible !v
60
- else
61
- name = k.to_s + "="
62
- if respond_to?(name)
63
- if v
64
- Sweet.debug "#{self.java_class.simple_name}.#{k} = #{v.inspect}"
65
- send name, *v
66
- end
67
- opts.delete(k)
68
- end
69
- end
70
- end
71
- end
72
-
73
-
74
- # TODO unify this layout mess somehow
75
- # TODO hierarchical hash for nicer client code
76
- def grid_data=(*opts)
77
- opts = Hash[opts]
78
- ax, ay = opts[:align]
79
- gx, gy = opts[:grab]
80
- sx, sy = opts[:span]
81
- args = [ax || swt::BEGINNING, ay || swt::CENTER,
82
- gx || false, gy || false, sx || 1, sy || 1]
83
- args.map!{|v| v.is_a?(Symbol) ? v.swt_const : v}
84
- Sweet.debug args.inspect
85
- l = layouts::GridData.new(*args)
86
- self.layout_data = l
87
- end
88
- def row_data=(x, y = nil)
89
- self.layout_data = layouts::RowData.new(x || swt::DEFAULT, y || swt::DEFAULT)
90
- end
91
-
92
- def perform(&block)
93
- app.perform &block
94
- end
95
-
96
- def hide
97
- self.visible = false
98
- end
99
- def show
100
- self.visible = true
101
- end
102
-
103
- def width
104
- size.x
105
- end
106
- def width=(value)
107
- self.size = value, nil
108
- end
109
-
110
- def height
111
- size.y
112
- end
113
- def height=(value)
114
- self.size = nil, value
115
- end
116
-
117
- def size=(*s)
118
- nw, nh = s.flatten
119
- nw ||= width
120
- nh ||= height
121
- setSize(nw, nh)
122
- end
123
-
124
- # TODO replace via import?
125
- def swt
126
- org.eclipse.swt.SWT
127
- end
128
- def widgets
129
- org.eclipse.swt.widgets
130
- end
131
- def layouts
132
- org.eclipse.swt.layout
133
- end
134
- def custom
135
- org.eclipse.swt.custom
136
- end
137
-
138
- def method_missing(name, *args, &block)
139
- handle_container(&block) rescue super
140
- end
141
-
142
- private
143
- def handle_container(&block)
144
- app.sweet_containers.push self
145
- app &block
146
- ensure
147
- app.sweet_containers.pop
148
- end
149
-
150
- end
151
-