sweet 0.0.2 → 0.0.3

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 (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
-