Guest User

Untitled

a guest
Feb 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. (**************************************************************************)
  2. (* Lablgtk - Examples *)
  3. (* *)
  4. (* There is no specific licensing policy, but you may freely *)
  5. (* take inspiration from the code, and copy parts of it in your *)
  6. (* application. *)
  7. (* *)
  8. (**************************************************************************)
  9.  
  10. (* $Id: tree.ml 1353 2007-07-17 13:27:23Z ben_99_9 $ *)
  11.  
  12. open StdLabels
  13. open Gobject.Data
  14.  
  15. let cols = new GTree.column_list
  16. let title = cols#add string
  17. let author = cols#add string
  18. let checked = cols#add boolean
  19.  
  20. let create_model () =
  21. let store = GTree.tree_store cols in
  22. let row = store#append () in
  23. store#set ~row ~column:title "The Art of Computer Programming";
  24. store#set ~row ~column:author "Donald E. Knuth";
  25. store#set ~row ~column:checked false;
  26. store#set ~row:(store#append ~parent:row ())
  27. ~column:title "Volume 1: Fundamental Algorithms";
  28. store#set ~row:(store#append ~parent:row ())
  29. ~column:title "Volume 2: Seminumerical Algorithms";
  30. store#set ~row:(store#append ~parent:row ())
  31. ~column:title "Volume 3: Sorting and Searching Algorithms";
  32. store
  33.  
  34. let main () =
  35. let model = create_model () in
  36. let window = GWindow.window () in
  37. window#connect#destroy ~callback:GMain.quit;
  38. let view = GTree.view ~model ~packing:window#add () in
  39. let col = GTree.view_column ~title:"Title" ()
  40. ~renderer:(GTree.cell_renderer_text[], ["text",title]) in
  41. view#append_column col;
  42. let col = GTree.view_column ~title:"Author" ()
  43. ~renderer:(GTree.cell_renderer_text[], ["text",author]) in
  44. view#append_column col;
  45. let col = GTree.view_column ~title:"Checked-out" ()
  46. ~renderer:(GTree.cell_renderer_text[], ["text",checked]) in
  47. view#append_column col;
  48. view#selection#connect#after#changed ~callback:
  49. begin fun () ->
  50. prerr_endline "selection changed";
  51. List.iter view#selection#get_selected_rows ~f:
  52. (fun p -> prerr_endline (GtkTree.TreePath.to_string p));
  53. end;
  54. view#connect#after#row_activated ~callback:
  55. (fun path vcol ->
  56. prerr_endline "Row activated";
  57. let it = model#get_iter path in
  58. assert (model#iter_is_valid it);
  59. model#clear ();
  60. );
  61.  
  62. (* Seems to be inverted *)
  63. let allow_expand = ref true in
  64. view#connect#test_expand_row ~callback:
  65. (fun _ _ ->
  66. if !allow_expand then (Format.printf "Expansion allowed@.";
  67. allow_expand := false;
  68. true)
  69. else (Format.printf "Expansion NOT allowed@.";
  70. allow_expand := true;
  71. false));
  72.  
  73. let allow_collapse = ref true in
  74. view#connect#test_collapse_row ~callback:
  75. (fun _ _ ->
  76. if !allow_collapse then (Format.printf "Collapse allowed@.";
  77. allow_collapse := false;
  78. true)
  79. else (Format.printf "Collapse NOT allowed@.";
  80. allow_collapse := true;
  81. false));
  82. window#show ();
  83. GMain.main ()
  84.  
  85. let () = main ()
Add Comment
Please, Sign In to add comment