diff options
author | ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2012-04-20 11:38:44 +0000 |
---|---|---|
committer | ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2012-04-20 11:38:44 +0000 |
commit | a2e44a2dbe77c5ce227ea7e12d2cfce903221254 (patch) | |
tree | d8012b21b9ec5d535e923cff601c1b39827331b0 /ide/wg_Notebook.ml | |
parent | b75888541f65b577b83a4ef669e3f5d29a220953 (diff) |
Cleaning up widget code and using a naming convention for such files.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15232 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'ide/wg_Notebook.ml')
-rw-r--r-- | ide/wg_Notebook.ml | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/ide/wg_Notebook.ml b/ide/wg_Notebook.ml new file mode 100644 index 000000000..499d56bd9 --- /dev/null +++ b/ide/wg_Notebook.ml @@ -0,0 +1,67 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) + +class ['a] typed_notebook make_page kill_page nb = +object(self) + inherit GPack.notebook nb as super + val mutable term_list = [] + + method append_term (term:'a) = + let tab_label,menu_label,page = make_page term in + (* XXX - Temporary hack to compile with archaic lablgtk *) + ignore (super#append_page ?tab_label ?menu_label page); + let real_pos = super#page_num page in + let lower,higher = Minilib.list_chop real_pos term_list in + term_list <- lower@[term]@higher; + real_pos +(* XXX - Temporary hack to compile with archaic lablgtk + method insert_term ?(build=default_build) ?pos (term:'a) = + let tab_label,menu_label,page = build term in + let real_pos = super#insert_page ?tab_label ?menu_label ?pos page in + let lower,higher = Minilib.list_chop real_pos term_list in + term_list <- lower@[term]@higher; + real_pos + *) + method prepend_term (term:'a) = + let tab_label,menu_label,page = make_page term in + (* XXX - Temporary hack to compile with archaic lablgtk *) + ignore (super#prepend_page ?tab_label ?menu_label page); + let real_pos = super#page_num page in + let lower,higher = Minilib.list_chop real_pos term_list in + term_list <- lower@[term]@higher; + real_pos + + method set_term (term:'a) = + let tab_label,menu_label,page = make_page term in + let real_pos = super#current_page in + term_list <- Minilib.list_map_i (fun i x -> if i = real_pos then term else x) 0 term_list; + super#set_page ?tab_label ?menu_label page + + method get_nth_term i = + List.nth term_list i + + method term_num p = + Minilib.list_index0 p term_list + + method pages = term_list + + method remove_page index = + term_list <- Minilib.list_filter_i (fun i x -> if i = index then kill_page x; i <> index) term_list; + super#remove_page index + + method current_term = + List.nth term_list super#current_page +end + +let create make kill = + GtkPack.Notebook.make_params [] + ~cont:(GContainer.pack_container + ~create:(fun pl -> + let nb = GtkPack.Notebook.create pl in + (new typed_notebook make kill nb))) + |