aboutsummaryrefslogtreecommitdiffhomepage
path: root/ide/ideutils.ml
diff options
context:
space:
mode:
authorGravatar jnarboux <jnarboux@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-05-28 10:42:45 +0000
committerGravatar jnarboux <jnarboux@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-05-28 10:42:45 +0000
commitbfa77b2469d33955c01139389be998d262085cda (patch)
tree09e93e5a1f4adbb4355a6856547785e3ca688fdc /ide/ideutils.ml
parent82953966601e6369b912529fe24f779704411c3d (diff)
add support for pdf in coqdoc, add export to pdf in coqide, port open and save as dialogs of coqide to a not deprecated widget, add filtering of *.v files in these dialogs
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11006 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'ide/ideutils.ml')
-rw-r--r--ide/ideutils.ml79
1 files changed, 53 insertions, 26 deletions
diff --git a/ide/ideutils.ml b/ide/ideutils.ml
index dfcf61ef5..b2773d541 100644
--- a/ide/ideutils.ml
+++ b/ide/ideutils.ml
@@ -167,33 +167,60 @@ let init_stdout,read_stdout,clear_stdout =
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 ~show_fileops:true ~modal:true ~title ~filename ()
- else
- GWindow.file_selection ~show_fileops:true ~modal:true ~title ()
- end else begin
- dir := Filename.dirname filename;
- GWindow.file_selection ~show_fileops:true ~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#filename;
- dir := Filename.dirname fs#filename;
- fs#destroy ()
- end);
- ignore (fs # cancel_button # connect#clicked ~callback:fs#destroy);
- fs # show ();
- GMain.Main.main ();
- !file
+let filter_all_files () = GFile.filter
+ ~name:"All"
+ ~patterns:["*"] ()
+
+let filter_coq_files () = GFile.filter
+ ~name:"Coq source code"
+ ~patterns:[ "*.v"] ()
+
+let select_file_for_open ~title ?(dir = last_dir) ?(filename="") () =
+ let file = ref None in
+ let file_chooser = GWindow.file_chooser_dialog ~action:`OPEN ~modal:true ~title () in
+ file_chooser#add_button_stock `CANCEL `CANCEL ;
+ file_chooser#add_select_button_stock `OPEN `OPEN ;
+ file_chooser#add_filter (filter_coq_files ());
+ file_chooser#add_filter (filter_all_files ());
+ ignore (file_chooser#set_current_folder !dir);
+ begin match file_chooser#run () with
+ | `OPEN ->
+ begin
+ file := file_chooser#filename;
+ match !file with
+ None -> ()
+ | Some s -> dir := Filename.dirname s;
+ end
+ | `DELETE_EVENT | `CANCEL -> ()
+ end ;
+ file_chooser#destroy ();
+ !file
+
+
+let select_file_for_save ~title ?(dir = last_dir) ?(filename="") () =
+ let file = ref None in
+ let file_chooser = GWindow.file_chooser_dialog ~action:`SAVE ~modal:true ~title () in
+ file_chooser#add_button_stock `CANCEL `CANCEL ;
+ file_chooser#add_select_button_stock `SAVE `SAVE ;
+ file_chooser#add_filter (filter_coq_files ());
+ file_chooser#add_filter (filter_all_files ());
+ file_chooser#set_do_overwrite_confirmation true;
+ ignore (file_chooser#set_current_folder !dir);
+ ignore (file_chooser#set_current_name filename);
+
+ begin match file_chooser#run () with
+ | `SAVE ->
+ begin
+ file := file_chooser#filename;
+ match !file with
+ None -> ()
+ | Some s -> dir := Filename.dirname s;
+ end
+ | `DELETE_EVENT | `CANCEL -> ()
+ end ;
+ file_chooser#destroy ();
+ !file
let find_tag_start (tag :GText.tag) (it:GText.iter) =
let it = it#copy in