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.
- data/README.rdoc +9 -5
- data/bin/sweet +3 -1
- data/examples/fox/hello_world.rb +12 -0
- data/examples/gtk2/hello_world.rb +14 -0
- data/examples/swing/hello_world.rb +12 -0
- data/examples/swt/components.rb +112 -0
- data/examples/swt/components/buttons.rb +35 -0
- data/examples/{hello_world.rb → swt/hello_world.rb} +2 -2
- data/examples/{snippet108.rb → swt/snippet108.rb} +2 -2
- data/examples/{snippet128.rb → swt/snippet128.rb} +7 -8
- data/examples/{snippet169.rb → swt/snippet169.rb} +2 -2
- data/examples/{snippet82.rb → swt/snippet82.rb} +2 -2
- data/examples/wx/hello_world.rb +12 -0
- data/lib/sweet.rb +22 -1
- data/lib/sweet/base.rb +151 -177
- data/lib/sweet/fox.rb +47 -0
- data/lib/sweet/fox/application.rb +9 -0
- data/lib/sweet/fox/object.rb +19 -0
- data/lib/sweet/gtk2.rb +56 -0
- data/lib/sweet/gtk2/application.rb +11 -0
- data/lib/sweet/gtk2/widget.rb +5 -0
- data/lib/sweet/hacks.rb +0 -17
- data/lib/sweet/swing.rb +97 -0
- data/lib/sweet/swing/application.rb +9 -0
- data/lib/sweet/swing/component.rb +23 -0
- data/lib/sweet/swing/frame.rb +13 -0
- data/lib/sweet/swt.rb +193 -0
- data/lib/sweet/swt/application.rb +17 -0
- data/lib/sweet/{composite.rb → swt/composite.rb} +5 -2
- data/lib/sweet/{dialog.rb → swt/dialog.rb} +0 -0
- data/lib/sweet/{downloader.rb → swt/downloader.rb} +1 -1
- data/lib/sweet/swt/shell.rb +22 -0
- data/lib/sweet/swt/src.zip +0 -0
- data/lib/sweet/swt/swt.jar +0 -0
- data/lib/sweet/swt/widget.rb +89 -0
- data/lib/sweet/wx.rb +57 -0
- data/lib/sweet/wx/application.rb +9 -0
- data/lib/sweet/wx/object.rb +19 -0
- data/spec/api_spec.rb +15 -0
- data/spec/downloader_spec.rb +28 -26
- data/spec/fox_spec.rb +15 -0
- data/spec/gtk2_spec.rb +15 -0
- data/spec/sweet_spec.rb +15 -0
- data/spec/swing_spec.rb +15 -0
- data/spec/swt_spec.rb +15 -0
- data/spec/wx_spec.rb +15 -0
- metadata +44 -17
- data/lib/sweet/shell.rb +0 -53
- 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
|
-
|