summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/gtk2/src/gtk+/gtk/gtktreemodel.inc
blob: 42db28bc147ad8e8f274cbb977ca65de32e3ee75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
// included by gtk2.pas

{$IFDEF read_forward_definitions}
   // internal type
   PPGtkTreeModel = ^PGtkTreeModel;
   PGtkTreeModel = pointer;
   // internal type
   PGtkTreePath = pointer;

   PGtkTreeIter = ^TGtkTreeIter;

{$ENDIF read_forward_definitions}

//------------------------------------------------------------------------------

{$IFDEF read_interface_types}
   TGtkTreeModelForeachFunc = function (model:PGtkTreeModel; path:PGtkTreePath;
                              iter:PGtkTreeIter; data:gpointer):gboolean; cdecl;

   PGtkTreeModelFlags = ^TGtkTreeModelFlags;
   TGtkTreeModelFlags = longint;

   TGtkTreeIter = record
        stamp : gint;
        user_data : gpointer;
        user_data2 : gpointer;
        user_data3 : gpointer;
     end;

{ Signals  }
{ Virtual Table  }
   PGtkTreeModelIface = ^TGtkTreeModelIface;
   TGtkTreeModelIface = record
        g_iface : TGTypeInterface;
        row_changed : procedure (tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl;
        row_inserted : procedure (tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl;
        row_has_child_toggled : procedure (tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl;
        row_deleted : procedure (tree_model:PGtkTreeModel; path:PGtkTreePath); cdecl;
        rows_reordered : procedure (tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter; new_order:Pgint); cdecl;
        get_flags : function (tree_model:PGtkTreeModel):TGtkTreeModelFlags; cdecl;
        get_n_columns : function (tree_model:PGtkTreeModel):gint; cdecl;
        get_column_type : function (tree_model:PGtkTreeModel; index:gint):GType; cdecl;
        get_iter : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter; path:PGtkTreePath):gboolean; cdecl;
        get_path : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter):PGtkTreePath; cdecl;
        get_value : procedure (tree_model:PGtkTreeModel; iter:PGtkTreeIter; column:gint; value:PGValue); cdecl;
        iter_next : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean; cdecl;
        iter_children : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter; parent:PGtkTreeIter):gboolean; cdecl;
        iter_has_child : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean; cdecl;
        iter_n_children : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter):gint; cdecl;
        iter_nth_child : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter; parent:PGtkTreeIter; n:gint):gboolean; cdecl;
        iter_parent : function (tree_model:PGtkTreeModel; iter:PGtkTreeIter; child:PGtkTreeIter):gboolean; cdecl;
        ref_node : procedure (tree_model:PGtkTreeModel; iter:PGtkTreeIter); cdecl;
        unref_node : procedure (tree_model:PGtkTreeModel; iter:PGtkTreeIter); cdecl;
     end;

{$ENDIF read_interface_types}

//------------------------------------------------------------------------------

{$IFDEF read_interface_rest}
const
   GTK_TREE_MODEL_ITERS_PERSIST = 1 shl 0;
   GTK_TREE_MODEL_LIST_ONLY = 1 shl 1;


function GTK_TYPE_TREE_MODEL : GType;
function GTK_TREE_MODEL(obj: pointer) : PGtkTreeModel;
function GTK_IS_TREE_MODEL(obj: pointer) : boolean;
function GTK_TREE_MODEL_GET_IFACE(obj: pointer) : PGtkTreeModelIface;
function GTK_TYPE_TREE_ITER : GType;
function GTK_TYPE_TREE_PATH : GType;
    { return type might be wrong }

{ GtkTreePath operations  }

function gtk_tree_path_new:PGtkTreePath; cdecl; external gtklib;
function gtk_tree_path_new_from_string(path:Pgchar):PGtkTreePath; cdecl; external gtklib;
function gtk_tree_path_to_string(path:PGtkTreePath):Pgchar; cdecl; external gtklib;
function gtk_tree_path_new_root : PGtkTreePath;

function gtk_tree_path_new_first:PGtkTreePath; cdecl; external gtklib;
procedure gtk_tree_path_append_index(path:PGtkTreePath; index:gint); cdecl; external gtklib;
procedure gtk_tree_path_prepend_index(path:PGtkTreePath; index:gint); cdecl; external gtklib;
function gtk_tree_path_get_depth(path:PGtkTreePath):gint; cdecl; external gtklib;
function gtk_tree_path_get_indices(path:PGtkTreePath):Pgint; cdecl; external gtklib;
procedure gtk_tree_path_free(path:PGtkTreePath); cdecl; external gtklib;
function gtk_tree_path_copy(path:PGtkTreePath):PGtkTreePath; cdecl; external gtklib;
function gtk_tree_path_get_type:GType; cdecl; external gtklib;
function gtk_tree_path_compare(a:PGtkTreePath; b:PGtkTreePath):gint; cdecl; external gtklib;
procedure gtk_tree_path_next(path:PGtkTreePath); cdecl; external gtklib;
function gtk_tree_path_prev(path:PGtkTreePath):gboolean; cdecl; external gtklib;
function gtk_tree_path_up(path:PGtkTreePath):gboolean; cdecl; external gtklib;
procedure gtk_tree_path_down(path:PGtkTreePath); cdecl; external gtklib;
function gtk_tree_path_is_ancestor(path:PGtkTreePath; descendant:PGtkTreePath):gboolean; cdecl; external gtklib;
function gtk_tree_path_is_descendant(path:PGtkTreePath; ancestor:PGtkTreePath):gboolean; cdecl; external gtklib;
{ Row reference (an anObject that tracks model changes so it refers to the same
   row always; a path refers to a position, not a fixed row).  You almost always
   want to call gtk_tree_row_reference_new.
  }
function gtk_tree_row_reference_new(model:PGtkTreeModel; path:PGtkTreePath):PGtkTreeRowReference; cdecl; external gtklib;
function gtk_tree_row_reference_new_proxy(proxy:PGObject; model:PGtkTreeModel; path:PGtkTreePath):PGtkTreeRowReference; cdecl; external gtklib;
function gtk_tree_row_reference_get_path(reference:PGtkTreeRowReference):PGtkTreePath; cdecl; external gtklib;
function gtk_tree_row_reference_valid(reference:PGtkTreeRowReference):gboolean; cdecl; external gtklib;
procedure gtk_tree_row_reference_free(reference:PGtkTreeRowReference); cdecl; external gtklib;
{ These two functions are only needed if you created the row reference with a
   proxy anObject  }
procedure gtk_tree_row_reference_inserted(proxy:PGObject; path:PGtkTreePath); cdecl; external gtklib;
procedure gtk_tree_row_reference_deleted(proxy:PGObject; path:PGtkTreePath); cdecl; external gtklib;
procedure gtk_tree_row_reference_reordered(proxy:PGObject; path:PGtkTreePath; iter:PGtkTreeIter; new_order:Pgint); cdecl; external gtklib;
{ GtkTreeIter operations  }
function gtk_tree_iter_copy(iter:PGtkTreeIter):PGtkTreeIter; cdecl; external gtklib;
procedure gtk_tree_iter_free(iter:PGtkTreeIter); cdecl; external gtklib;
function gtk_tree_iter_get_type:GType; cdecl; external gtklib;
function gtk_tree_model_get_type:TGtkType; cdecl; external gtklib;
function gtk_tree_model_get_flags(tree_model:PGtkTreeModel):TGtkTreeModelFlags; cdecl; external gtklib;
function gtk_tree_model_get_n_columns(tree_model:PGtkTreeModel):gint; cdecl; external gtklib;
function gtk_tree_model_get_column_type(tree_model:PGtkTreeModel; index:gint):GType; cdecl; external gtklib;
{ Iterator movement  }
function gtk_tree_model_get_iter(tree_model:PGtkTreeModel; iter:PGtkTreeIter; path:PGtkTreePath):gboolean; cdecl; external gtklib;
function gtk_tree_model_get_iter_from_string(tree_model:PGtkTreeModel; iter:PGtkTreeIter; path_string:Pgchar):gboolean; cdecl; external gtklib;
function gtk_tree_model_get_iter_root(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean;

function gtk_tree_model_get_iter_first(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean; cdecl; external gtklib;
function gtk_tree_model_get_path(tree_model:PGtkTreeModel; iter:PGtkTreeIter):PGtkTreePath; cdecl; external gtklib;
procedure gtk_tree_model_get_value(tree_model:PGtkTreeModel; iter:PGtkTreeIter; column:gint; value:PGValue); cdecl; external gtklib;
function gtk_tree_model_iter_next(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean; cdecl; external gtklib;
function gtk_tree_model_iter_children(tree_model:PGtkTreeModel; iter:PGtkTreeIter; parent:PGtkTreeIter):gboolean; cdecl; external gtklib;
function gtk_tree_model_iter_has_child(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean; cdecl; external gtklib;
function gtk_tree_model_iter_n_children(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gint; cdecl; external gtklib;
function gtk_tree_model_iter_nth_child(tree_model:PGtkTreeModel; iter:PGtkTreeIter; parent:PGtkTreeIter; n:gint):gboolean; cdecl; external gtklib;
function gtk_tree_model_iter_parent(tree_model:PGtkTreeModel; iter:PGtkTreeIter; child:PGtkTreeIter):gboolean; cdecl; external gtklib;
procedure gtk_tree_model_ref_node(tree_model:PGtkTreeModel; iter:PGtkTreeIter); cdecl; external gtklib;
procedure gtk_tree_model_unref_node(tree_model:PGtkTreeModel; iter:PGtkTreeIter); cdecl; external gtklib;
{$IFNDEF KYLIX}
procedure gtk_tree_model_get(tree_model:PGtkTreeModel; iter:PGtkTreeIter; args:array of const); cdecl; overload; external gtklib;
procedure gtk_tree_model_get(tree_model:PGtkTreeModel; iter:PGtkTreeIter); cdecl; overload; varargs; external gtklib;
procedure gtk_tree_model_get_valist(tree_model:PGtkTreeModel; iter:PGtkTreeIter; var_args: array of const); cdecl; varargs; external gtklib;
{$ELSE}
procedure gtk_tree_model_get(tree_model:PGtkTreeModel; iter:PGtkTreeIter); varargs; cdecl; external gtklib;
procedure gtk_tree_model_get_valist(tree_model:PGtkTreeModel; iter:PGtkTreeIter); varargs; cdecl; external gtklib;
{$ENDIF}
procedure gtk_tree_model_foreach(model:PGtkTreeModel; func:TGtkTreeModelForeachFunc; user_data:gpointer); cdecl; external gtklib;
{ Signals  }
procedure gtk_tree_model_row_changed(tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl; external gtklib;
procedure gtk_tree_model_row_inserted(tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl; external gtklib;
procedure gtk_tree_model_row_has_child_toggled(tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter); cdecl; external gtklib;
procedure gtk_tree_model_row_deleted(tree_model:PGtkTreeModel; path:PGtkTreePath); cdecl; external gtklib;
procedure gtk_tree_model_rows_reordered(tree_model:PGtkTreeModel; path:PGtkTreePath; iter:PGtkTreeIter; new_order:Pgint); cdecl; external gtklib;

{$IFDEF HasGTK2_2}
function gtk_tree_model_get_string_from_iter(tree_model:PGtkTreeModel; iter:PGtkTreeIter):Pgchar; cdecl; external gtklib;
function gtk_tree_path_new_from_indices(first_index: gint): PGtkTreePath; cdecl; varargs; external gtklib;
function gtk_tree_row_reference_copy(reference:PGtkTreeRowReference):PGtkTreeRowReference; cdecl; external gtklib;
{$ENDIF}
{$ENDIF read_interface_rest}

//------------------------------------------------------------------------------

{$IFDEF read_implementation}
function GTK_TYPE_TREE_MODEL : GType;
begin
   GTK_TYPE_TREE_MODEL:=gtk_tree_model_get_type;
end;

function GTK_TREE_MODEL(obj: pointer) : PGtkTreeModel;
begin
   GTK_TREE_MODEL:=PGtkTreeModel(G_TYPE_CHECK_INSTANCE_CAST(obj,GTK_TYPE_TREE_MODEL));
end;

function GTK_IS_TREE_MODEL(obj: pointer) : boolean;
begin
   GTK_IS_TREE_MODEL:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GTK_TYPE_TREE_MODEL);
end;

function GTK_TREE_MODEL_GET_IFACE(obj: pointer) : PGtkTreeModelIface;
begin
   GTK_TREE_MODEL_GET_IFACE:=PGtkTreeModelIface(G_TYPE_INSTANCE_GET_INTERFACE(obj,GTK_TYPE_TREE_MODEL));
end;

function GTK_TYPE_TREE_ITER : GType;
begin
   GTK_TYPE_TREE_ITER:=gtk_tree_iter_get_type;
end;

function GTK_TYPE_TREE_PATH : GType;
begin
   GTK_TYPE_TREE_PATH:=gtk_tree_path_get_type;
end;

function gtk_tree_path_new_root : PGtkTreePath;
begin
   gtk_tree_path_new_root:=gtk_tree_path_new_first;
end;

function gtk_tree_model_get_iter_root(tree_model:PGtkTreeModel; iter:PGtkTreeIter):gboolean;
begin
   gtk_tree_model_get_iter_root:=gtk_tree_model_get_iter_first(tree_model,iter);
end;

{$ENDIF read_implementation}
// included by gtk2.pas