aboutsummaryrefslogtreecommitdiffhomepage
path: root/ide/wg_Notebook.ml
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-04-20 11:38:44 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-04-20 11:38:44 +0000
commita2e44a2dbe77c5ce227ea7e12d2cfce903221254 (patch)
treed8012b21b9ec5d535e923cff601c1b39827331b0 /ide/wg_Notebook.ml
parentb75888541f65b577b83a4ef669e3f5d29a220953 (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.ml67
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)))
+