# # patch "agraph.ml" # from [eae19057fcbb38e28ed2944db60bce98ab3a3329] # to [8dc92d0353dff544c9d4bd5b7f8e63013e480f1f] # # patch "agraph.mli" # from [698203dede829b9f5f3e5361c0cfec41ae91de74] # to [0ebe4d2e32b297856f7940c0e932bcc0891c984a] # # patch "ui.ml" # from [4d9b841fe24e698ecb885df064dd91e80a3c4320] # to [a76162c49e1b57c4df6465d1f868ab3d9ba729b5] # # patch "view.ml" # from [c9832d10fa8c7df2b6169cf5a6535b48bff583ad] # to [6b15dbfdf086880a588dd52f42bfbf76bd3f3975] # # patch "viz_style.ml" # from [0765e6a24c5c364c7e44b4e50b9b2620b60668d6] # to [6cf212b3f5a006c0e1272df3e0d8548e8bc2945d] # # patch "viz_style.mli" # from [a5e6bfa148131095d234037af0b52f2ba83e4c36] # to [1141a3e066bd93d8d5d275b8e35ae162aeec955f] # ======================================================================== --- agraph.ml eae19057fcbb38e28ed2944db60bce98ab3a3329 +++ agraph.ml 8dc92d0353dff544c9d4bd5b7f8e63013e480f1f @@ -6,6 +6,7 @@ box_w : float ; box_h : float ; lr_layout : bool ; + dot_program : string ; } type t = { db : Database.t ; @@ -200,13 +201,14 @@ (* Spawn dot *) let spawn_dot graph status done_cb = + let dot_prg = graph.layout_params.dot_program in let cmd = if Viz_misc.debug "dot" then [ "/bin/sh" ; "-c" ; Printf.sprintf "set -o pipefail ; \ - tee agraph.in.dot | dot -q -y -s%.0f | tee agraph.out.dot" ppi ] - else [ "dot" ; "-q" ; "-y" ; Printf.sprintf "-s%.0f" ppi ] in + tee agraph.in.dot | %s -q -y -s%.0f | tee agraph.out.dot" dot_prg ppi ] + else [ dot_prg ; "-q" ; "-y" ; Printf.sprintf "-s%.0f" ppi ] in if Viz_misc.debug "exec" then Printf.eprintf "### exec: Running '%s'\n%!" (String.concat " " cmd) ; let error fmt = ======================================================================== --- agraph.mli 698203dede829b9f5f3e5361c0cfec41ae91de74 +++ agraph.mli 0ebe4d2e32b297856f7940c0e932bcc0891c984a @@ -5,6 +5,7 @@ box_w : float ; box_h : float ; lr_layout : bool ; + dot_program : string ; } type t ======================================================================== --- ui.ml 4d9b841fe24e698ecb885df064dd91e80a3c4320 +++ ui.ml a76162c49e1b57c4df6465d1f868ab3d9ba729b5 @@ -233,7 +233,7 @@ al#misc#set_property "left-padding" (`INT 16) ; (GPack.vbox ~packing:al#add ())#pack - let make v () = + let make v = let prefs = ref v.View.prefs in let w = GWindow.dialog ~title:"Monotone-viz Preferences" @@ -273,24 +273,43 @@ end ; begin let packing = prefs_category "External Programs" w#vbox#pack in - let hb = GPack.hbox ~packing () in - let _ = GMisc.label ~text:"monotone:" ~packing:hb#pack () in - let e = GEdit.entry ~text:(!prefs.Viz_style.monotone_path) ~packing:(hb#pack ~expand:true) () in - ignore (e#connect#changed (fun () -> - prefs := { !prefs with Viz_style.monotone_path = e#text })) ; + let tb = GPack.table ~columns:2 ~rows:2 ~packing () in + begin + let _ = GMisc.label ~text:"monotone: " ~xalign:1. + ~packing:(tb#attach ~left:1 ~top:1) () in + let e = GEdit.entry ~text:(!prefs.Viz_style.monotone_path) + ~packing:(tb#attach ~left:2 ~top:1 ~expand:`X) () in + ignore (e#connect#changed (fun () -> + prefs := { !prefs with Viz_style.monotone_path = e#text })) + end ; + begin + let _ = GMisc.label ~text:"dot: " ~xalign:1. + ~packing:(tb#attach ~left:1 ~top:2) () in + let e = GEdit.entry ~text:(!prefs.Viz_style.dot_path) + ~packing:(tb#attach ~left:2 ~top:2 ~expand:`X) () in + ignore (e#connect#changed (fun () -> + prefs := { !prefs with Viz_style.dot_path = e#text })) + end ; end ; w#add_button_stock `CLOSE `CLOSE ; w#add_button_stock `SAVE `SAVE ; w#add_button_stock `APPLY `APPLY ; + ignore (w#connect#close w#misc#hide) ; + ignore (w#event#connect#delete (fun _ -> w#misc#hide () ; true)) ; ignore (w#connect#response (function | `APPLY -> View.set_prefs v !prefs | `SAVE -> Viz_style.save !prefs | `CLOSE | `DELETE_EVENT -> - w#destroy ())) ; - w#show () + w#misc#hide ())) ; + w + + let show v = + let p = lazy (make v) in + fun () -> (Lazy.force p)#present () + end type t = { @@ -364,7 +383,7 @@ (fun () -> View.reload v) ; action_connect "/toolbar/Prefs" - (Prefs.make v) ; + (Prefs.show v) ; action_connect "/popup/Certs" (fun () -> ======================================================================== --- view.ml c9832d10fa8c7df2b6169cf5a6535b48bff583ad +++ view.ml 6b15dbfdf086880a588dd52f42bfbf76bd3f3975 @@ -929,7 +929,8 @@ let (w, h) = Canvas.id_size v in { Agraph.box_w = float w ; Agraph.box_h = float h ; - Agraph.lr_layout = v.prefs.Viz_style.lr_layout } + Agraph.lr_layout = v.prefs.Viz_style.lr_layout ; + Agraph.dot_program = v.prefs.Viz_style.dot_path } let connect_event v f = Signal.connect v.event_signal f @@ -1062,6 +1063,7 @@ autocolor : autocolor ; lr_layout : bool ; monotone_path : string ; + dot_path : string ; style : Viz_style.style ; } ======================================================================== --- viz_style.ml 0765e6a24c5c364c7e44b4e50b9b2620b60668d6 +++ viz_style.ml 6cf212b3f5a006c0e1272df3e0d8548e8bc2945d @@ -74,6 +74,7 @@ autocolor : autocolor ; lr_layout : bool ; monotone_path : string ; + dot_path : string ; style : style ; } @@ -243,6 +244,7 @@ autocolor = BY_KEYID ; lr_layout = false ; monotone_path = "monotone" ; + dot_path = "dot" ; style = [] ; } @@ -252,6 +254,7 @@ autocolor = get autocolor_key "autocolor" ; lr_layout = get bool_key "lr_layout" ; monotone_path = get string_key "monotone" ; + dot_path = get string_key "dot" ; style = style ; } @@ -260,6 +263,7 @@ "autocolor", item_of_autocolor p.autocolor ; "lr_layout", `BOOL p.lr_layout ; "monotone", `STRING p.monotone_path ; + "dot", `STRING p.dot_path ; ], p.style let style_file_name = ======================================================================== --- viz_style.mli a5e6bfa148131095d234037af0b52f2ba83e4c36 +++ viz_style.mli 1141a3e066bd93d8d5d275b8e35ae162aeec955f @@ -8,6 +8,7 @@ autocolor : autocolor ; lr_layout : bool ; monotone_path : string ; + dot_path : string ; style : style ; }