sig
  val cast : 'Gobject.obj -> Gtk.notebook Gtk.obj
  module P :
    sig
      val enable_popup : ([> `notebook ], bool) Gobject.property
      val group_name : ([> `notebook ], string) Gobject.property
      val page : ([> `notebook ], int) Gobject.property
      val scrollable : ([> `notebook ], bool) Gobject.property
      val show_border : ([> `notebook ], bool) Gobject.property
      val show_tabs : ([> `notebook ], bool) Gobject.property
      val tab_pos : ([> `notebook ], GtkEnums.position_type) Gobject.property
    end
  module S :
    sig
      val switch_page :
        ([> `notebook ], Gtk.widget Gtk.obj -> int -> unit) GtkSignal.t
      val select_page : ([> `notebook ], bool -> unit) GtkSignal.t
      val reorder_tab :
        ([> `notebook ], GtkEnums.direction_type -> bool -> unit) GtkSignal.t
      val change_current_page : ([> `notebook ], int -> unit) GtkSignal.t
      val move_focus_out :
        ([> `notebook ], GtkEnums.direction_type -> unit) GtkSignal.t
      val page_added :
        ([> `notebook ], Gtk.widget Gtk.obj -> int -> unit) GtkSignal.t
      val page_removed :
        ([> `notebook ], Gtk.widget Gtk.obj -> int -> unit) GtkSignal.t
      val page_reordered :
        ([> `notebook ], Gtk.widget Gtk.obj -> int -> unit) GtkSignal.t
      val create_window :
        ([> `notebook ], page:Gtk.widget Gtk.obj -> x:int -> y:int -> unit)
        GtkSignal.t
    end
  val create : Gtk.notebook Gobject.param list -> Gtk.notebook Gtk.obj
  external insert_page_menu :
    [> `notebook ] Gtk.obj ->
    [> `widget ] Gtk.obj ->
    tab_label:[> `widget ] Gtk.optobj ->
    menu_label:[> `widget ] Gtk.optobj -> ?pos:int -> int
    = "ml_gtk_notebook_insert_page_menu"
  external remove_page : [> `notebook ] Gtk.obj -> int -> unit
    = "ml_gtk_notebook_remove_page"
  external get_current_page : [> `notebook ] Gtk.obj -> int
    = "ml_gtk_notebook_get_current_page"
  external get_nth_page : [> `notebook ] Gtk.obj -> int -> Gtk.widget Gtk.obj
    = "ml_gtk_notebook_get_nth_page"
  external page_num : [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> int
    = "ml_gtk_notebook_page_num"
  external next_page : [> `notebook ] Gtk.obj -> unit
    = "ml_gtk_notebook_next_page"
  external prev_page : [> `notebook ] Gtk.obj -> unit
    = "ml_gtk_notebook_prev_page"
  external get_tab_label :
    [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> Gtk.widget Gtk.obj
    = "ml_gtk_notebook_get_tab_label"
  external set_tab_label :
    [> `notebook ] Gtk.obj ->
    [> `widget ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_notebook_set_tab_label"
  external get_menu_label :
    [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> Gtk.widget Gtk.obj
    = "ml_gtk_notebook_get_menu_label"
  external set_menu_label :
    [> `notebook ] Gtk.obj ->
    [> `widget ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_notebook_set_menu_label"
  external reorder_child :
    [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> int -> unit
    = "ml_gtk_notebook_reorder_child"
  external set_tab_reorderable :
    [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> bool -> unit
    = "ml_gtk_notebook_set_tab_reorderable"
  external get_tab_reorderable :
    [> `notebook ] Gtk.obj -> [> `widget ] Gtk.obj -> bool
    = "ml_gtk_notebook_get_tab_reorderable"
  val make_params :
    cont:(([> `notebook ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?enable_popup:bool ->
    ?group_name:string ->
    ?scrollable:bool ->
    ?show_border:bool ->
    ?show_tabs:bool -> ?tab_pos:GtkEnums.position_type -> 'b
end