]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/lablgtksourceview/gSourceView.ml
snapshot
[helm.git] / helm / DEVEL / lablgtksourceview / gSourceView.ml
index 372493c815978b8fb79d3996ae9829cd9840d942..ec449377bffe141c676cc839d2184030110b8438 100644 (file)
@@ -36,11 +36,55 @@ let get_bool = function `BOOL b -> b | _ -> assert false
 let bool b = `BOOL b
 let get_uint = function `INT i -> i | _ -> assert false
 let uint i = `INT i
+let get_int = function `INT i -> i | _ -> assert false
+let int i = `INT i
 
-class source_view_signals obj_param =
+(** {2 GtkSourceBuffer} *)
+
+class source_buffer_signals obj_arg =
+object
+  inherit ['a] gobject_signals (obj_arg : [> Gtk_sourceview.source_buffer] obj)
+  inherit GText.buffer_signals obj_arg
+  inherit source_buffer_sigs
+end
+
+class source_buffer (obj: Gtk_sourceview.source_buffer obj) =
+object (self)
+  inherit GText.buffer_skel obj
+  method connect = new source_buffer_signals obj
+  method misc = new gobject_ops obj
+  method check_brackets = get_bool (self#misc#get_property "check-brackets")
+  method set_check_brackets x = self#misc#set_property "check-brackets" (bool x)
+  method highlight = get_bool (self#misc#get_property "highlight")
+  method set_highlight x = self#misc#set_property "highlight" (bool x)
+  method max_undo_levels = get_int (self#misc#get_property "max-undo-levels")
+  method set_max_undo_levels x =
+    self#misc#set_property "max-undo-levels" (int x)
+  method escape_char = get_uint (self#misc#get_property "escape-char")
+  method set_escape_char x = self#misc#set_property "escape-char" (uint x)
+  method can_undo = SourceBuffer.can_undo obj
+  method can_redo = SourceBuffer.can_redo obj
+  method undo () = SourceBuffer.undo obj
+  method redo () = SourceBuffer.redo obj
+  method begin_not_undoable_action () =
+    SourceBuffer.begin_not_undoable_action obj
+  method end_not_undoable_action () =
+    SourceBuffer.end_not_undoable_action obj
+end
+
+let source_buffer =
+  SourceBuffer.make_params [] ~cont:(fun pl () ->
+    new source_buffer (SourceBuffer.create pl))
+
+  (* alias used below, needed because "source_buffer" is a name in scope *)
+let source_buffer' = source_buffer
+
+(** {2 GtkSourceView} *)
+
+class source_view_signals obj_arg =
 object
-  inherit widget_signals_impl (obj_param : [> Gtk_sourceview.source_view] obj)
-  inherit GText.view_signals obj_param
+  inherit widget_signals_impl (obj_arg : [> Gtk_sourceview.source_view] obj)
+  inherit GText.view_signals obj_arg
   inherit source_view_sigs
 end
 
@@ -72,9 +116,16 @@ object (self)
   method smart_home_end = get_bool (self#misc#get_property "smart_home_end")
 end
 
-let source_view =
+let source_view ?source_buffer =
   SourceView.make_params [] ~cont:(
     GtkText.View.make_params ~cont:(
       GContainer.pack_container ~create:(fun pl ->
-        new source_view (SourceView.create pl))))
+        let buf =
+          match source_buffer with
+          | None -> source_buffer' ()
+          | Some source_buffer -> source_buffer
+        in
+        let obj = SourceView.create pl in
+        GtkText.View.set_buffer obj buf#as_buffer;
+        new source_view obj)))