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
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)))