defs.scm 1.7 KB

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