1(require <gnu.kawa.android.utils>)
2(export Button EditText ImageView LinearLayout ScrollView TextView View
3        current-activity activity
4        {gnu.kawa.reflect/ObjectBuilder}:android.view.View)
5
6;; FIXME add more
7(define-alias Button android.widget.Button)
8(define-alias EditText android.widget.EditText)
9;(define-alias GridLayout android.widget.GridLayout)
10(define-alias ImageView android.widget.ImageView)
11(define-alias LinearLayout android.widget.LinearLayout)
12(define-alias ScrollView android.widget.ScrollView)
13(define-alias TextView android.widget.TextView)
14(define-alias View android.view.View)
15
16(define (%process-activity form)
17  (syntax-case form (on-create on-create-view)
18    (((on-create stmt ...) . rest)
19     (cons #`( (onCreate (savedInstanceState :: android.os.Bundle)):: void
20	       (invoke-special android.app.Activity (this) 'onCreate savedInstanceState)
21               (parameterize ((current-activity (this)))
22                             stmt ...))
23	   (%process-activity #`rest)))
24    (((on-create-view stmt ... view) . rest)
25     (cons #`( (onCreate (savedInstanceState :: android.os.Bundle)):: void
26	       (invoke-special android.app.Activity (this) 'onCreate savedInstanceState)
27               (parameterize ((current-activity (this)))
28                             stmt ...
29                             ((this):setContentView view)))
30	   (%process-activity #`rest)))
31    ((first . rest)
32     (cons #`first (%process-activity #`rest)))
33    (()
34     '())))
35
36(define-syntax-case activity (on-create on-create-view)
37  ((activity name . parts)
38   #`(define-simple-class name (android.app.Activity)
39       #,@(%process-activity #`parts))))
40
41(define-constant {gnu.kawa.reflect/ObjectBuilder}:android.view.View
42  "gnu.kawa.android.ViewBuilder")
43