chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] iup cells draw callback


From: Martin DeMello
Subject: Re: [Chicken-users] iup cells draw callback
Date: Wed, 14 Oct 2015 19:04:01 -0700

This is the code from which the error message was thrown:

(define-values (callback-set! callback)
  (letrec ([signature/raw
            (foreign-lambda* c-string ([nonnull-ihandle handle] [iname/upcase name])
              "C_return(iupClassCallbackGetFormat(handle->iclass, name));")]
           [set/pointer!
            (foreign-lambda c-pointer "IupSetCallback" nonnull-ihandle iname/upcase c-pointer)]
           [get/pointer
            (foreign-lambda c-pointer "IupGetCallback" nonnull-ihandle iname/upcase)]
           [sigils
            (irregex "([bifdsvh]*)(?:=([bifdvh]))?")]
           [callback-set!
            (lambda (handle name proc)
              (let* ([sig
                      (cond
                        [(irregex-match sigils (or (signature/raw handle name) ""))
                         => (lambda (groups)
                              (string-append
                                (or (irregex-match-substring groups 2) "i")
                                (irregex-match-substring groups 1)))]
                        [else
                         (error 'callback-set! "callback has bad signature" handle name)])]

Looking up iupClassCallbackGetFormat here:

http://webserver2.tecgraf.puc-rio.br/iup/doxygen/group__iclass.html#ga5733bfa0e0889ec4e4293c2a57205650

it looks like the cb-draw callback has format "iiiiiiC", which doesn't match the sigil regex. I take it that means callbacks with a Canvas* argument are unsupported in chicken-iup?

martin

On Wed, Oct 14, 2015 at 12:51 AM, Martin DeMello <address@hidden> wrote:
Hi,

I'm trying to port the chessboard example from IUP to chicken. The C code is here:

http://webserver2.tecgraf.puc-rio.br/iup/examples/C/cells_checkboard.c

I'm stuck when trying to add a draw callback - it crashes with 

Error: (callback-set!) callback has bad signature

The code is here: https://gist.github.com/martindemello/2f8ba4ccfebed3bd4650 or below:

(use iup)

(define (nlines self) 8)
(define (ncols self) 8)
(define (height self line) 50)
(define (width self col) 50)

(define (draw self i j xmin xmax ymin ymax canvas) 'default)

(define dlg
  (dialog
    (vbox
      (cells name: "Chessboard"
             height-cb: height
             width-cb: width
             nlines-cb: nlines
             ncols-cb: ncols
             draw-cb: draw)
      (button title: 'E&xit
              expand: 'Yes
              tip: "Close button"
              action: (lambda (self) 'close)))
    title: 'IUP))

(show dlg)
(main-loop)
(destroy! dlg)
(exit 0)

martin


reply via email to

[Prev in Thread] Current Thread [Next in Thread]