aboutsummaryrefslogtreecommitdiff
path: root/ide/ideutils.ml
diff options
context:
space:
mode:
authormonate2003-03-24 19:17:04 +0000
committermonate2003-03-24 19:17:04 +0000
commit5217df6c2c79d4e6f7de8c926742f482223f9008 (patch)
tree1c5033f78eebae6c94b9d4e4238872861348fad4 /ide/ideutils.ml
parentd84551b17840a1dc4a13a84231a9bcf3bea73f2b (diff)
coqide: compact delete event-search start
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3787 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'ide/ideutils.ml')
-rw-r--r--ide/ideutils.ml29
1 files changed, 29 insertions, 0 deletions
diff --git a/ide/ideutils.ml b/ide/ideutils.ml
index bca97c7a72..cb018e842c 100644
--- a/ide/ideutils.ml
+++ b/ide/ideutils.ml
@@ -127,3 +127,32 @@ let read_stdout,clear_stdout =
Buffer.clear out_buff; r),
(fun () ->
Format.pp_print_flush !Pp_control.std_ft (); Buffer.clear out_buff)
+
+
+let last_dir = ref ""
+let select_file ~title ?(dir = last_dir) ?(filename="") () =
+ let fs =
+ if Filename.is_relative filename then begin
+ if !dir <> "" then
+ let filename = Filename.concat !dir filename in
+ GWindow.file_selection ~modal:true ~title ~filename ()
+ else
+ GWindow.file_selection ~modal:true ~title ()
+ end else begin
+ dir := Filename.dirname filename;
+ GWindow.file_selection ~modal:true ~title ~filename ()
+ end
+ in
+ fs#complete ~filter:"";
+ ignore (fs#connect#destroy ~callback: GMain.Main.quit);
+ let file = ref None in
+ ignore (fs#ok_button#connect#clicked ~callback:
+ begin fun () ->
+ file := Some fs#get_filename;
+ dir := Filename.dirname fs#get_filename;
+ fs#destroy ()
+ end);
+ ignore (fs # cancel_button # connect#clicked ~callback:fs#destroy);
+ fs # show ();
+ GMain.Main.main ();
+ !file