summaryrefslogtreecommitdiffstats
path: root/otherlibs/labltk/browser
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/labltk/browser')
-rw-r--r--otherlibs/labltk/browser/jg_message.ml7
-rw-r--r--otherlibs/labltk/browser/jg_message.mli2
-rw-r--r--otherlibs/labltk/browser/shell.ml10
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