method add_tab pos c =
let label = label_of_contents c in
let wlabel = GMisc.label ~text: label() in
tabs <-
(match pos with
None -> tabs @ [wlabel,c]
| Some pos -> insert_in_pos (wlabel,c) pos tabs
);
let w = match c with
`View gv ->
gv#set_on_label_change (self#set_tab_label c);
gv#set_on_destroy (self#on_view_destroy gv);
gv#box
| `Notebook gn ->
gn#set_on_label_change (self#set_tab_label c);
gn#set_on_destroy (self#on_tab_destroy c);
gn#notebook#coerce
| `Paned gp ->
gp#set_on_label_change (self#set_tab_label c);
gp#set_on_destroy (self#on_tab_destroy c);
gp#paned#coerce
in
let n =
match pos with
None ->
ignore(nb#append_page ~tab_label: wlabel#coerce w);
List.length tabs - 1
| Some pos ->
ignore(nb#insert_page ~pos ~tab_label: wlabel#coerce w);
pos
in
self#goto_page n;
contents_grab_focus c