Blame builtin/canvas_bind.ml

Packit bd2e5d
##ifdef CAMLTK
Packit bd2e5d
Packit bd2e5d
let bind widget tag eventsequence action =
Packit bd2e5d
  tkCommand [|
Packit bd2e5d
    cCAMLtoTKwidget widget_canvas_table widget;
Packit bd2e5d
    TkToken "bind";
Packit bd2e5d
    cCAMLtoTKtagOrId tag;
Packit bd2e5d
    cCAMLtoTKeventSequence eventsequence;
Packit bd2e5d
    begin match action with
Packit bd2e5d
    | BindRemove -> TkToken ""
Packit bd2e5d
    | BindSet (what, f) ->
Packit bd2e5d
        let cbId = register_callback widget (wrapeventInfo f what) in
Packit bd2e5d
        TkToken ("camlcb " ^ cbId ^ (writeeventField what))
Packit bd2e5d
    | BindSetBreakable (what, f) ->
Packit bd2e5d
        let cbId = register_callback widget (wrapeventInfo f what) in
Packit bd2e5d
        TkToken ("camlcb " ^ cbId ^ (writeeventField what)^
Packit bd2e5d
                 " ; if { $BreakBindingsSequence == 1 } then { break ;} ; \
Packit bd2e5d
                   set BreakBindingsSequence 0")
Packit bd2e5d
    | BindExtend (what, f) ->
Packit bd2e5d
        let cbId = register_callback widget (wrapeventInfo f what) in
Packit bd2e5d
        TkToken ("+camlcb " ^ cbId ^ (writeeventField what))
Packit bd2e5d
    end
Packit bd2e5d
 |]
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
##else
Packit bd2e5d
Packit bd2e5d
let bind ~events
Packit bd2e5d
    ?(extend = false) ?(breakable = false) ?(fields = [])
Packit bd2e5d
    ?action widget tag =
Packit bd2e5d
  tkCommand
Packit bd2e5d
    [| cCAMLtoTKwidget widget;
Packit bd2e5d
       TkToken "bind";
Packit bd2e5d
       cCAMLtoTKtagOrId tag;
Packit bd2e5d
       cCAMLtoTKeventSequence events;
Packit bd2e5d
       begin match action with None -> TkToken ""
Packit bd2e5d
       | Some f ->
Packit bd2e5d
           let cbId =
Packit bd2e5d
             register_callback widget ~callback: (wrapeventInfo f fields) in
Packit bd2e5d
           let cb = if extend then "+camlcb " else "camlcb " in
Packit bd2e5d
           let cb = cb ^ cbId ^ writeeventField fields in
Packit bd2e5d
           let cb =
Packit bd2e5d
             if breakable then
Packit bd2e5d
               cb ^ " ; if { $BreakBindingsSequence == 1 } then { break ;}"
Packit bd2e5d
               ^ " ; set BreakBindingsSequence 0"
Packit bd2e5d
             else cb in
Packit bd2e5d
           TkToken cb
Packit bd2e5d
       end
Packit bd2e5d
     |]
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
##endif