diff options
author | 2008-05-28 10:42:45 +0000 | |
---|---|---|
committer | 2008-05-28 10:42:45 +0000 | |
commit | bfa77b2469d33955c01139389be998d262085cda (patch) | |
tree | 09e93e5a1f4adbb4355a6856547785e3ca688fdc /ide/ideutils.ml | |
parent | 82953966601e6369b912529fe24f779704411c3d (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.ml | 79 |
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 |