dialogs.rkt
#lang racket
(require
 ffi/unsafe
 "base.rkt")

(define libiup
  (case (system-type 'os)
    [(windows)
     (ffi-lib "iup")]
    [else
     (ffi-lib "libiup")]))

;; Standard dialogs

(define file-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupFileDlg" libiup
    (_fun -> [handle : _ihandle]))))

(define message-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupMessageDlg" libiup
    (_fun -> [handle : _ihandle]))))

(define color-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupColorDlg" libiup
    (_fun -> [handle : _ihandle]))))

(define font-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupFontDlg" libiup
    (_fun -> [handle : _ihandle]))))

(define layout-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupLayoutDialog" libiup
    (_fun ([dialog #f]) :: [dialog : _ihandle/null] -> [handle : _ihandle]))))

(define element-properties-dialog
  (make-constructor-procedure
   (get-ffi-obj
    "IupElementPropertiesDialog" libiup
    (_fun [element : _ihandle] -> [handle : _ihandle]))))

(provide
 file-dialog message-dialog color-dialog font-dialog
 layout-dialog element-properties-dialog)