diff options
Diffstat (limited to 'otherlibs/labltk/browser')
-rw-r--r-- | otherlibs/labltk/browser/jg_message.ml | 7 | ||||
-rw-r--r-- | otherlibs/labltk/browser/jg_message.mli | 2 | ||||
-rw-r--r-- | otherlibs/labltk/browser/shell.ml | 10 |
3 files changed, 14 insertions, 5 deletions
diff --git a/otherlibs/labltk/browser/jg_message.ml b/otherlibs/labltk/browser/jg_message.ml index efbc5bb83..08d0d8566 100644 --- a/otherlibs/labltk/browser/jg_message.ml +++ b/otherlibs/labltk/browser/jg_message.ml @@ -77,7 +77,7 @@ let formatted ~title ?on ?(ppf = Format.std_formatter) pack [Jg_text.add_scrollbar tw] ~before:tw ~side:`Right ~fill:`Y end -let ask ~title ?master ?(cancel=true) text = +let ask ~title ?master ?(no=true) ?(cancel=true) text = let tl = Jg_toplevel.titled title in begin match master with None -> () | Some master -> Wm.transient_set tl ~master @@ -87,7 +87,7 @@ let ask ~title ?master ?(cancel=true) text = and fw = Frame.create tl and sync = Textvariable.create ~on:tl () and r = ref (`cancel : [`yes|`no|`cancel]) in - let accept = Button.create fw ~text:"Yes" + let accept = Button.create fw ~text:(if no then "Yes" else "Dismiss") ~command:(fun () -> r := `yes; destroy tl) and refuse = Button.create fw ~text:"No" ~command:(fun () -> r := `no; destroy tl) @@ -96,7 +96,8 @@ let ask ~title ?master ?(cancel=true) text = in bind tl ~events:[`Destroy] ~extend:true ~action:(fun _ -> Textvariable.set sync "1"); - pack [accept; refuse] ~side:`Left ~fill:`X ~expand:true; + pack [accept] ~side:`Left ~fill:`X ~expand:true; + if no then pack [refuse] ~side:`Left ~fill:`X ~expand:true; if cancel then pack [cancelB] ~side:`Left ~fill:`X ~expand:true; pack [mw] ~side:`Top ~fill:`Both; pack [fw] ~side:`Bottom ~fill:`X ~expand:true; diff --git a/otherlibs/labltk/browser/jg_message.mli b/otherlibs/labltk/browser/jg_message.mli index 0aef59742..27cde48b9 100644 --- a/otherlibs/labltk/browser/jg_message.mli +++ b/otherlibs/labltk/browser/jg_message.mli @@ -26,4 +26,4 @@ val formatted : val ask : title:string -> ?master:toplevel widget -> - ?cancel:bool -> string -> [`cancel|`no|`yes] + ?no:bool -> ?cancel:bool -> string -> [`cancel|`no|`yes] diff --git a/otherlibs/labltk/browser/shell.ml b/otherlibs/labltk/browser/shell.ml index 2beab39ff..52fe68820 100644 --- a/otherlibs/labltk/browser/shell.ml +++ b/otherlibs/labltk/browser/shell.ml @@ -247,6 +247,12 @@ let path_sep = if Sys.os_type = "Win32" then ";" else ":" let warnings = ref "A" +let program_not_found prog = + ignore begin + Jg_message.ask ~cancel:false ~no:false ~title:"Error" + ("Program \"" ^ String.escaped prog ^ "\"\nwas not found in path") + end + let f ~prog ~title = let progargs = List.filter ~f:((<>) "") (Str.split ~!" " prog) in @@ -255,11 +261,13 @@ let f ~prog ~title = let path = try Sys.getenv "PATH" with Not_found -> "/bin" ^ path_sep ^ "/usr/bin" in let exec_path = Str.split ~!path_sep path in + let exec_path = + if Sys.os_type = "Win32" then "."::exec_path else exec_path in let exists = if not (Filename.is_implicit prog) then may_exec prog else List.exists exec_path ~f:(fun dir -> may_exec (Filename.concat dir prog)) in - if not exists then () else + if not exists then program_not_found prog else let tl = Jg_toplevel.titled title in let menus = Frame.create tl ~name:"menubar" in let file_menu = new Jg_menu.c "File" ~parent:menus |