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