]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/ml_gtk2.c
- the mathql interpreter is not helm-dependent any more
[helm.git] / helm / DEVEL / lablgtk / lablgtk_20000829-0.1.0 / applications / radtest / ml_gtk2.c
1 /* $Id$ */
2
3 #include <gtk/gtk.h>
4 #include <caml/mlvalues.h>
5 #include <caml/alloc.h>
6 #include <caml/memory.h>
7 #include <caml/callback.h>
8 #include <caml/fail.h>
9
10 #include "../../wrappers.h"
11 #include "../../ml_glib.h"
12 #include "../../ml_gdk.h"
13 #include "../../ml_gtk.h"
14 #include "../../gtk_tags.h"
15
16 #include "gtktree2.h"
17 #include "gtktreeitem2.h"
18
19 #include <stdio.h>
20
21 value Val_GtkObject_sink (GtkObject *);
22
23 #define Val_GtkAny(w) Val_GtkObject((GtkObject*)w)
24 #define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w)
25
26 #define GtkWidget_val(val) check_cast(GTK_WIDGET,val)
27
28 /* gtkwidget.h */
29
30
31 #define Val_GtkWidget Val_GtkAny
32 #define Val_GtkWidget_sink Val_GtkAny_sink
33
34
35 /* gtktreeitem2.h */
36
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)
45
46 /* gtktree2.h */
47
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)
57
58 /*
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)
61 */
62
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)
67
68 static value val_gtkany (gpointer p) { return Val_GtkAny(p); }
69 value ml_gtk_tree2_selection (value tree)
70 {
71   GList *selection = GTK_TREE2_SELECTION(GtkTree2_val(tree));
72   return Val_GList(selection, val_gtkany);
73 }
74 static gpointer gtkobject_val (value val) { return GtkObject_val(val); }
75 value ml_gtk_tree2_remove_items (value tree, value items)
76 {
77   GList *items_list = GList_val (items, gtkobject_val);
78   gtk_tree2_remove_items (GtkTree2_val(tree), items_list);
79   return Val_unit;
80 }
81
82 value ml_gtk_tree2_children (value tree)
83 {
84   GList *children = (GtkTree2_val(tree))->children;
85   return Val_GList(children, val_gtkany);
86 }
87
88
89
90 #define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val)
91 /* sets the text of the label of a button; creates the label
92    if necessary */
93 value ml_gtk_toolbar2_set_text (value toolbar, value text, value pos)
94 {
95   GtkToolbar *t = GtkToolbar_val(toolbar);
96   GtkToolbarChild *ch = (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos));
97   GtkWidget *label = ch->label;
98
99   if (label)
100     gtk_label_set_text (GTK_LABEL(label), String_val(text));
101   else {
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);
106   }
107
108   return Val_unit;
109 }
110
111 value ml_gtk_toolbar2_set_icon (value toolbar, value icon, value pos)
112 {
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);
122   
123   return Val_unit;
124 }