4 #include <caml/mlvalues.h>
5 #include <caml/alloc.h>
6 #include <caml/memory.h>
7 #include <caml/callback.h>
10 #include "../../wrappers.h"
11 #include "../../ml_glib.h"
12 #include "../../ml_gdk.h"
13 #include "../../ml_gtk.h"
14 #include "../../gtk_tags.h"
17 #include "gtktreeitem2.h"
21 value Val_GtkObject_sink (GtkObject *);
23 #define Val_GtkAny(w) Val_GtkObject((GtkObject*)w)
24 #define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w)
26 #define GtkWidget_val(val) check_cast(GTK_WIDGET,val)
31 #define Val_GtkWidget Val_GtkAny
32 #define Val_GtkWidget_sink Val_GtkAny_sink
37 #define GtkTreeItem2_val(val) check_cast(GTK_TREE_ITEM2,val)
38 ML_0 (gtk_tree_item2_new, Val_GtkWidget_sink)
39 ML_1 (gtk_tree_item2_new_with_label, String_val, Val_GtkWidget_sink)
40 ML_2 (gtk_tree_item2_set_subtree, GtkTreeItem2_val, GtkWidget_val, Unit)
41 ML_1 (gtk_tree_item2_remove_subtree, GtkTreeItem2_val, Unit)
42 ML_1 (gtk_tree_item2_expand, GtkTreeItem2_val, Unit)
43 ML_1 (gtk_tree_item2_collapse, GtkTreeItem2_val, Unit)
44 ML_1 (GTK_TREE_ITEM2_SUBTREE, GtkTreeItem2_val, Val_GtkWidget)
48 #define GtkTree2_val(val) check_cast(GTK_TREE2,val)
49 ML_0 (gtk_tree2_new, Val_GtkWidget_sink)
50 ML_3 (gtk_tree2_insert, GtkTree2_val, GtkWidget_val, Int_val, Unit)
51 ML_3 (gtk_tree2_clear_items, GtkTree2_val, Int_val, Int_val, Unit)
52 ML_2 (gtk_tree2_select_item, GtkTree2_val, Int_val, Unit)
53 ML_2 (gtk_tree2_unselect_item, GtkTree2_val, Int_val, Unit)
54 ML_2 (gtk_tree2_select_child, GtkTree2_val, GtkWidget_val, Unit)
55 ML_2 (gtk_tree2_unselect_child, GtkTree2_val, GtkWidget_val, Unit)
56 ML_2 (gtk_tree2_child_position, GtkTree2_val, GtkWidget_val, Val_int)
59 ML_2 (gtk_tree2_set_selection_mode, GtkTree2_val, Selection_mode_val, Unit)
60 ML_2 (gtk_tree2_set_view_mode, GtkTree2_val, Tree_view_mode_val, Unit)
63 ML_2 (gtk_tree2_set_view_lines, GtkTree2_val, Bool_val, Unit)
64 ML_2 (gtk_tree2_item_up, GtkTree2_val, Int_val, Unit)
65 ML_3 (gtk_tree2_select_next_child, GtkTree2_val, GtkWidget_val, Bool_val, Unit)
66 ML_2 (gtk_tree2_select_prev_child, GtkTree2_val, GtkWidget_val, Unit)
68 static value val_gtkany (gpointer p) { return Val_GtkAny(p); }
69 value ml_gtk_tree2_selection (value tree)
71 GList *selection = GTK_TREE2_SELECTION(GtkTree2_val(tree));
72 return Val_GList(selection, val_gtkany);
74 static gpointer gtkobject_val (value val) { return GtkObject_val(val); }
75 value ml_gtk_tree2_remove_items (value tree, value items)
77 GList *items_list = GList_val (items, gtkobject_val);
78 gtk_tree2_remove_items (GtkTree2_val(tree), items_list);
82 value ml_gtk_tree2_children (value tree)
84 GList *children = (GtkTree2_val(tree))->children;
85 return Val_GList(children, val_gtkany);
90 #define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val)
91 /* sets the text of the label of a button; creates the label
93 value ml_gtk_toolbar2_set_text (value toolbar, value text, value pos)
95 GtkToolbar *t = GtkToolbar_val(toolbar);
96 GtkToolbarChild *ch = (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos));
97 GtkWidget *label = ch->label;
100 gtk_label_set_text (GTK_LABEL(label), String_val(text));
102 label = ch->label = gtk_label_new (String_val(text));
103 gtk_box_pack_end (GTK_BOX (GTK_BIN(ch->widget)->child), label, FALSE, FALSE, 0);
104 if (t->style != GTK_TOOLBAR_ICONS)
105 gtk_widget_show (label);
111 value ml_gtk_toolbar2_set_icon (value toolbar, value icon, value pos)
113 GtkToolbar *t = GtkToolbar_val(toolbar);
114 GtkToolbarChild * ch =
115 (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos));
116 GtkWidget *vbox = GTK_BIN(ch->widget)->child;
117 gtk_container_remove (GTK_CONTAINER(vbox), ch->icon);
118 ch->icon = GtkWidget_val(icon);
119 gtk_box_pack_end (GTK_BOX (vbox), ch->icon, FALSE, FALSE, 0);
120 if (t->style != GTK_TOOLBAR_TEXT)
121 gtk_widget_show (ch->icon);