(* $Id$ *) open Gaux open Gtk open Tags open GtkBase module GammaCurve = struct let cast w : gamma_curve obj = Object.try_cast w "GtkGammaCurve" external create : unit -> gamma_curve obj = "ml_gtk_gamma_curve_new" external get_gamma : [>`gamma] obj -> float = "ml_gtk_gamma_curve_get_gamma" end module ColorSelection = struct let cast w : color_selection obj = Object.try_cast w "GtkColorSelection" external create : unit -> color_selection obj = "ml_gtk_color_selection_new" external create_dialog : string -> color_selection_dialog obj = "ml_gtk_color_selection_dialog_new" external set_update_policy : [>`colorsel] obj -> update_type -> unit = "ml_gtk_color_selection_set_update_policy" external set_opacity : [>`colorsel] obj -> bool -> unit = "ml_gtk_color_selection_set_opacity" let set ?update_policy ?opacity w = may update_policy ~f:(set_update_policy w); may opacity ~f:(set_opacity w) external set_color : [>`colorsel] obj -> red:float -> green:float -> blue:float -> ?opacity:float -> unit = "ml_gtk_color_selection_set_color" external get_color : [>`colorsel] obj -> color = "ml_gtk_color_selection_get_color" external ok_button : [>`colorseldialog] obj -> button obj = "ml_gtk_color_selection_dialog_ok_button" external cancel_button : [>`colorseldialog] obj -> button obj = "ml_gtk_color_selection_dialog_cancel_button" external help_button : [>`colorseldialog] obj -> button obj = "ml_gtk_color_selection_dialog_help_button" external colorsel : [>`colorseldialog] obj -> color_selection obj = "ml_gtk_color_selection_dialog_colorsel" module Signals = struct open GtkSignal let color_changed : ([>`colorsel],_) t = { name = "color_changed"; marshaller = marshal_unit } end end module Statusbar = struct let cast w : statusbar obj = Object.try_cast w "GtkStatusbar" external create : unit -> statusbar obj = "ml_gtk_statusbar_new" external get_context : [>`statusbar] obj -> string -> statusbar_context = "ml_gtk_statusbar_get_context_id" external push : [>`statusbar] obj -> statusbar_context -> text:string -> statusbar_message = "ml_gtk_statusbar_push" external pop : [>`statusbar] obj -> statusbar_context -> unit = "ml_gtk_statusbar_pop" external remove : [>`statusbar] obj -> statusbar_context -> statusbar_message -> unit = "ml_gtk_statusbar_remove" module Signals = struct open GtkSignal let text_pushed : ([>`statusbar],_) t = let marshal f _ = function | GtkArgv.INT ctx :: GtkArgv.STRING s :: _ -> f (Obj.magic ctx : statusbar_context) s | _ -> invalid_arg "GtkMisc.Statusbar.Signals.marshal_text" in { name = "text_pushed"; marshaller = marshal } end end module Calendar = struct let cast w : calendar obj = Object.try_cast w "GtkCalendar" external create : unit -> calendar obj = "ml_gtk_calendar_new" external select_month : [>`calendar] obj -> month:int -> year:int -> unit = "ml_gtk_calendar_select_month" external select_day : [>`calendar] obj -> int -> unit = "ml_gtk_calendar_select_day" external mark_day : [>`calendar] obj -> int -> unit = "ml_gtk_calendar_mark_day" external unmark_day : [>`calendar] obj -> int -> unit = "ml_gtk_calendar_unmark_day" external clear_marks : [>`calendar] obj -> unit = "ml_gtk_calendar_clear_marks" external display_options : [>`calendar] obj -> Tags.calendar_display_options list -> unit = "ml_gtk_calendar_display_options" external get_date : [>`calendar] obj -> int * int * int = "ml_gtk_calendar_get_date" (* year * month * day *) external freeze : [>`calendar] obj -> unit = "ml_gtk_calendar_freeze" external thaw : [>`calendar] obj -> unit = "ml_gtk_calendar_thaw" module Signals = struct open GtkSignal let month_changed : ([>`calendar],_) t = { name = "month_changed"; marshaller = marshal_unit } let day_selected : ([>`calendar],_) t = { name = "day_selected"; marshaller = marshal_unit } let day_selected_double_click : ([>`calendar],_) t = { name = "day_selected_double_click"; marshaller = marshal_unit } let prev_month : ([>`calendar],_) t = { name = "prev_month"; marshaller = marshal_unit } let next_month : ([>`calendar],_) t = { name = "next_month"; marshaller = marshal_unit } let prev_year : ([>`calendar],_) t = { name = "prev_year"; marshaller = marshal_unit } let next_year : ([>`calendar],_) t = { name = "next_year"; marshaller = marshal_unit } end end module DrawingArea = struct let cast w : drawing_area obj = Object.try_cast w "GtkDrawingArea" external create : unit -> drawing_area obj = "ml_gtk_drawing_area_new" external size : [>`drawing] obj -> width:int -> height:int -> unit = "ml_gtk_drawing_area_size" end (* Does not seem very useful ... module Curve = struct type t = [widget drawing curve] obj let cast w : t = Object.try_cast w "GtkCurve" external create : unit -> t = "ml_gtk_curve_new" external reset : [>`curve] obj -> unit = "ml_gtk_curve_reset" external set_gamma : [>`curve] obj -> float -> unit = "ml_gtk_curve_set_gamma" external set_range : [>`curve] obj -> min_x:float -> max_x:float -> min_y:float -> max_y:float -> unit = "ml_gtk_curve_set_gamma" end *) module Misc = struct let cast w : misc obj = Object.try_cast w "GtkMisc" external coerce : [>`misc] obj -> misc obj = "%identity" external set_alignment : [>`misc] obj -> x:float -> y:float -> unit = "ml_gtk_misc_set_alignment" external set_padding : [>`misc] obj -> x:int -> y:int -> unit = "ml_gtk_misc_set_padding" external get_xalign : [>`misc] obj -> float = "ml_gtk_misc_get_xalign" external get_yalign : [>`misc] obj -> float = "ml_gtk_misc_get_yalign" external get_xpad : [>`misc] obj -> int = "ml_gtk_misc_get_xpad" external get_ypad : [>`misc] obj -> int = "ml_gtk_misc_get_ypad" let set_alignment w ?x ?y () = set_alignment w ~x:(may_default get_xalign w ~opt:x) ~y:(may_default get_yalign w ~opt:y) let set_padding w ?x ?y () = set_padding w ~x:(may_default get_xpad w ~opt:x) ~y:(may_default get_ypad w ~opt:y) let set ?xalign ?yalign ?xpad ?ypad ?(width = -2) ?(height = -2) w = if xalign <> None || yalign <> None then set_alignment w ?x:xalign ?y:yalign (); if xpad <> None || ypad <> None then set_padding w ?x:xpad ?y:ypad (); if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height end module Arrow = struct let cast w : arrow obj = Object.try_cast w "GtkArrow" external create : kind:arrow_type -> shadow:shadow_type -> arrow obj = "ml_gtk_arrow_new" external set : [>`arrow] obj -> kind:arrow_type -> shadow:shadow_type -> unit = "ml_gtk_arrow_set" end module Image = struct let cast w : image obj = Object.try_cast w "GtkImage" external create : Gdk.image -> ?mask:Gdk.bitmap -> image obj = "ml_gtk_image_new" let create ?mask img = create img ?mask external set : [>`image] obj -> Gdk.image -> ?mask:Gdk.bitmap -> unit = "ml_gtk_image_set" end module Label = struct let cast w : label obj = Object.try_cast w "GtkLabel" external coerce : [>`label] obj -> label obj = "%identity" external create : string -> label obj = "ml_gtk_label_new" external set_text : [>`label] obj -> string -> unit = "ml_gtk_label_set_text" external set_justify : [>`label] obj -> justification -> unit = "ml_gtk_label_set_justify" external set_pattern : [>`label] obj -> string -> unit = "ml_gtk_label_set_pattern" external set_line_wrap : [>`label] obj -> bool -> unit = "ml_gtk_label_set_line_wrap" let set ?text ?justify ?line_wrap ?pattern w = may ~f:(set_text w) text; may ~f:(set_justify w) justify; may ~f:(set_line_wrap w) line_wrap; may ~f:(set_pattern w) pattern external get_text : [>`label] obj -> string = "ml_gtk_label_get_label" end module TipsQuery = struct let cast w : tips_query obj = Object.try_cast w "GtkTipsQuery" external create : unit -> tips_query obj = "ml_gtk_tips_query_new" external start : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_start_query" external stop : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_stop_query" external set_caller : [>`tipsquery] obj -> [>`widget] obj -> unit = "ml_gtk_tips_query_set_caller" external set_labels : [>`tipsquery] obj -> inactive:string -> no_tip:string -> unit = "ml_gtk_tips_query_set_labels" external set_emit_always : [>`tipsquery] obj -> bool -> unit = "ml_gtk_tips_query_set_emit_always" external get_caller : [>`tipsquery] obj -> widget obj = "ml_gtk_tips_query_get_caller" external get_label_inactive : [>`tipsquery] obj -> string = "ml_gtk_tips_query_get_label_inactive" external get_label_no_tip : [>`tipsquery] obj -> string = "ml_gtk_tips_query_get_label_no_tip" external get_emit_always : [>`tipsquery] obj -> bool = "ml_gtk_tips_query_get_emit_always" let set_labels ?inactive ?no_tip w = set_labels w ~inactive:(may_default get_label_inactive w ~opt:inactive) ~no_tip:(may_default get_label_no_tip w ~opt:no_tip) let set ?caller ?emit_always ?label_inactive ?label_no_tip w = may caller ~f:(set_caller w); may emit_always ~f:(set_emit_always w); if label_inactive <> None || label_no_tip <> None then set_labels w ?inactive:label_inactive ?no_tip:label_no_tip module Signals = struct open GtkArgv open GtkSignal let start_query : ([>`tipsquery],_) t = { name = "start_query"; marshaller = marshal_unit } let stop_query : ([>`tipsquery],_) t = { name = "stop_query"; marshaller = marshal_unit } let widget_entered : ([>`tipsquery], widget obj option -> text:string option -> privat:string option -> unit) t = let marshal f _ = function | OBJECT opt :: STRING text :: STRING privat :: _ -> f (may_map ~f:Widget.cast opt) ~text ~privat | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_entered" in { name = "widget_entered"; marshaller = marshal } let widget_selected : ([>`tipsquery], widget obj option -> text:string option -> privat:string option -> GdkEvent.Button.t option -> bool) t = let marshal f argv = function | OBJECT obj :: STRING text :: STRING privat :: POINTER p :: _ -> let stop = f (may_map ~f:Widget.cast obj) ~text ~privat (may_map ~f:GdkEvent.unsafe_copy p) in set_result argv (`BOOL stop) | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_selected" in { name = "widget_selected"; marshaller = marshal } end end module Pixmap = struct let cast w : pixmap obj = Object.try_cast w "GtkPixmap" external create : Gdk.pixmap -> ?mask:Gdk.bitmap -> pixmap obj = "ml_gtk_pixmap_new" let create ?mask img = create img ?mask external set : [>`pixmap] obj -> ?pixmap:Gdk.pixmap -> ?mask:Gdk.bitmap -> unit = "ml_gtk_pixmap_set" external pixmap : [>`pixmap] obj -> Gdk.pixmap = "ml_GtkPixmap_pixmap" external mask : [>`pixmap] obj -> Gdk.bitmap = "ml_GtkPixmap_mask" end module Separator = struct let cast w : separator obj = Object.try_cast w "GtkSeparator" external hseparator_new : unit -> separator obj = "ml_gtk_hseparator_new" external vseparator_new : unit -> separator obj = "ml_gtk_vseparator_new" let create (dir : Tags.orientation) = if dir = `HORIZONTAL then hseparator_new () else vseparator_new () end module FontSelection = struct type null_terminated let null_terminated arg : null_terminated = match arg with None -> Obj.magic Gpointer.raw_null | Some l -> let len = List.length l in let arr = Array.create (len + 1) "" in let rec loop i = function [] -> arr.(i) <- Obj.magic Gpointer.raw_null | s::l -> arr.(i) <- s; loop (i+1) l in loop 0 l; Obj.magic (arr : string array) let cast w : font_selection obj = Object.try_cast w "GtkFontSelection" external create : unit -> font_selection obj = "ml_gtk_font_selection_new" external get_font : [>`fontsel] obj -> Gdk.font = "ml_gtk_font_selection_get_font" let get_font w = try Some (get_font w) with Gpointer.Null -> None external get_font_name : [>`fontsel] obj -> string = "ml_gtk_font_selection_get_font_name" let get_font_name w = try Some (get_font_name w) with Gpointer.Null -> None external set_font_name : [>`fontsel] obj -> string -> unit = "ml_gtk_font_selection_set_font_name" external set_filter : [>`fontsel] obj -> font_filter_type -> font_type list -> null_terminated -> null_terminated -> null_terminated -> null_terminated -> null_terminated -> null_terminated -> unit = "ml_gtk_font_selection_set_filter_bc" "ml_gtk_font_selection_set_filter" let set_filter w ?kind:(tl=[`ALL]) ?foundry ?weight ?slant ?setwidth ?spacing ?charset filter = set_filter w filter tl (null_terminated foundry) (null_terminated weight) (null_terminated slant) (null_terminated setwidth) (null_terminated spacing) (null_terminated charset) external get_preview_text : [>`fontsel] obj -> string = "ml_gtk_font_selection_get_preview_text" external set_preview_text : [>`fontsel] obj -> string -> unit = "ml_gtk_font_selection_set_preview_text" end