#! /bin/sh # -*- mode: scheme; coding: utf-8 -*- exec guile -e main -s "$0" "$@" !# (eval-when (expand load eval) (use-modules (oop goops)) (default-duplicate-binding-handler '(merge-generics replace warn-override-core warn last)) (use-modules (g-golf)) (g-irepository-require "Gtk" #:version "4.0") (for-each (lambda (name) (gi-import-by-name "Gtk" name)) '("ApplicationWindow" "Application" "DrawingArea"))) (define (activate app) (let* ((window (make #:application app #:default-width 960 #:default-height 540 #:title "Title")) (drawing-area (make ))) (set-child window drawing-area) (set-draw-func drawing-area (lambda (area cr w h d) (display "I'm in!") (force-output)) #f #f) (show window))) (define (main args) (letrec ((debug? (or (member "-d" args) (member "--debug" args))) (animate (lambda () (let ((app (make #:application-id "org.gnu.g-golf.set-draw-func"))) (connect app 'activate activate) (let ((status (g-application-run app '()))) #;(exit status) (dimfi 'status status)))))) (if debug? (parameterize ((%debug #t)) (animate)) (animate))))