]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/lablgtksourceview/test/test.ml
ocaml 3.09 transition
[helm.git] / helm / DEVEL / lablgtksourceview / test / test.ml
index e0662a0f8520ee26e6d676500e67e72ed43d09b6..d0e140249b0ca9af99e1d6d009543c2e188e8124 100644 (file)
@@ -1,41 +1,99 @@
-(* Copyright (C) 2005:
- *     Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>,
- *     Stefano Zacchiroli     <zack@cs.unibo.it>
+(*
+ * lablgtksourceview, OCaml binding for the GtkSourceView text widget
  *
- * This file is part of lablgtksourceview, the OCaml binding for the
- * GtkSourceView widget.
+ * Copyright (C) 2005  Stefano Zacchiroli <zack@cs.unibo.it>
  * 
- * lablgtksourceview is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
  * License, or (at your option) any later version.
- *
- * lablgtksourceview is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * 
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with lablgtksourceview; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * Lesser General Public License for more details.
  * 
- * For details, send a mail to the authors.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
  *)
 
 open Printf
 
+let lang_mime_type = "text/x-c"
+let lang_file = "test.lang"
+let use_mime_type = false
+let font_name = "Monospace 10"
+
+let print_lang lang = prerr_endline (sprintf "language: %s" lang#get_name)
+
+let print_lang_dirs languages_manager =
+  let i = ref 0 in
+  prerr_endline "lang_dirs:";
+  List.iter
+    (fun dir -> incr i; prerr_endline (sprintf "%d: %s" !i dir))
+    languages_manager#lang_files_dirs
+
 let win = GWindow.window ~title:"LablGtkSourceView test" ()
 let vbox = GPack.vbox ~packing:win#add ()
+let hbox = GPack.hbox ~packing:vbox#add ()
+let bracket_button = GButton.button ~label:"( ... )" ~packing:hbox#add ()
+let scrolled_win = GBin.scrolled_window ~packing:vbox#add ()
 let source_view =
-  GSourceView.source_view ~packing:vbox#add ~height:400 ~width:300
+  GSourceView.source_view
+    ~auto_indent:true
+(*     ~insert_spaces_instead_of_tabs:true ~tabs_width:2 *)
     ~show_line_numbers:true
+    ~margin:80 ~show_margin:true
+    ~smart_home_end:true
+    ~packing:scrolled_win#add ~height:500 ~width:650
     ()
+(* let languages_manager =
+  GSourceView.source_languages_manager ~lang_files_dirs:["/etc"] () *)
+let languages_manager = GSourceView.source_languages_manager ()
+
+let lang =
+  if use_mime_type then
+    match languages_manager#get_language_from_mime_type lang_mime_type with 
+    | None -> failwith (sprintf "no language for %s" lang_mime_type)
+    | Some lang -> lang
+  else
+    match
+      GSourceView.source_language_from_file ~languages_manager lang_file
+    with
+    | None -> failwith (sprintf "can't load %s" lang_file)
+    | Some lang -> lang
+
+let matching_bracket () =
+  let iter = source_view#source_buffer#get_iter_at_mark `INSERT in
+  match GSourceView.find_matching_bracket iter with
+  | None -> prerr_endline "no matching bracket"
+  | Some iter ->
+      source_view#source_buffer#place_cursor iter;
+      source_view#misc#grab_focus ()
+
 let _ =
+  let text =
+    let ic = open_in "test.txt" in
+    let size = in_channel_length ic in
+    let buf = String.create size in
+    really_input ic buf 0 size;
+    close_in ic;
+    buf
+  in
+  win#set_allow_shrink true;
+  source_view#misc#modify_font_by_name font_name;
+  print_lang_dirs languages_manager;
+  print_lang lang;
+  source_view#source_buffer#set_language lang;
+  source_view#source_buffer#set_highlight true;
+  source_view#source_buffer#set_text text;
   ignore (win#connect#destroy (fun _ -> GMain.quit ()));
-  ignore (source_view#connect#move_cursor (fun _ _ ~extend ->
+  ignore (bracket_button#connect#clicked matching_bracket);
+(*   ignore (source_view#connect#move_cursor (fun _ _ ~extend ->
     prerr_endline "move_cursor"));
-  ignore (source_view#connect#undo (fun _ -> prerr_endline "undo"));
+  ignore (source_view#connect#undo (fun _ -> prerr_endline "undo")); *)
   win#show ();
   GMain.Main.main ()