Blame builtin/text_tag_bind.ml

Packit bd2e5d
##ifdef CAMLTK
Packit bd2e5d
Packit bd2e5d
let tag_bind widget tag eventsequence action =
Packit bd2e5d
  check_class widget widget_text_table;
Packit bd2e5d
  tkCommand [|
Packit bd2e5d
    cCAMLtoTKwidget widget_text_table widget;
Packit bd2e5d
    TkToken "tag";
Packit bd2e5d
    TkToken "bind";
Packit bd2e5d
    cCAMLtoTKtextTag 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 tag_bind ~tag ~events ?(extend = false) ?(breakable = false)
Packit bd2e5d
    ?(fields = []) ?action widget =
Packit bd2e5d
  tkCommand [|
Packit bd2e5d
    cCAMLtoTKwidget widget;
Packit bd2e5d
    TkToken "tag";
Packit bd2e5d
    TkToken "bind";
Packit bd2e5d
    cCAMLtoTKtextTag tag;
Packit bd2e5d
    cCAMLtoTKeventSequence events;
Packit bd2e5d
    begin match action with
Packit bd2e5d
    | 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