atk 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +225 -0
- data/README +30 -0
- data/Rakefile +67 -0
- data/extconf.rb +59 -0
- data/src/lib/atk.rb +2 -0
- data/src/makeinits.rb +39 -0
- data/src/rbatk.c +27 -0
- data/src/rbatk.h +36 -0
- data/src/rbatkaction.c +81 -0
- data/src/rbatkcomponent.c +184 -0
- data/src/rbatkdocument.c +95 -0
- data/src/rbatkeditabletext.c +102 -0
- data/src/rbatkgobjectaccessible.c +37 -0
- data/src/rbatkhyperlink.c +92 -0
- data/src/rbatkhypertext.c +44 -0
- data/src/rbatkimage.c +62 -0
- data/src/rbatkimplementor.c +27 -0
- data/src/rbatkinits.c +55 -0
- data/src/rbatknoopobject.c +30 -0
- data/src/rbatknoopobjectfactory.c +30 -0
- data/src/rbatkobject.c +178 -0
- data/src/rbatkobjectfactory.c +44 -0
- data/src/rbatkregistry.c +55 -0
- data/src/rbatkrelation.c +104 -0
- data/src/rbatkrelationset.c +94 -0
- data/src/rbatkselection.c +82 -0
- data/src/rbatkstate.c +41 -0
- data/src/rbatkstateset.c +143 -0
- data/src/rbatkstreamablecontent.c +50 -0
- data/src/rbatktable.c +292 -0
- data/src/rbatktext.c +364 -0
- data/src/rbatktextrange.c +91 -0
- data/src/rbatktextrectangle.c +156 -0
- data/src/rbatkutil.c +125 -0
- data/src/rbatkvalue.c +74 -0
- data/src/rbatkversion.h +24 -0
- metadata +125 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbatkstreamablecontent.c -
|
5
|
+
|
6
|
+
$Author: mutoh $
|
7
|
+
$Date: 2005/09/15 17:30:46 $
|
8
|
+
|
9
|
+
Copyright (C) 2003 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbatk.h"
|
13
|
+
|
14
|
+
#define _SELF(s) (ATK_STREAMABLE_CONTENT(RVAL2GOBJ(s)))
|
15
|
+
|
16
|
+
static VALUE
|
17
|
+
rbatkst_get_n_mime_types(self)
|
18
|
+
VALUE self;
|
19
|
+
{
|
20
|
+
return INT2NUM(atk_streamable_content_get_n_mime_types(_SELF(self)));
|
21
|
+
}
|
22
|
+
|
23
|
+
static VALUE
|
24
|
+
rbatkst_get_mime_type(self, i)
|
25
|
+
VALUE self, i;
|
26
|
+
{
|
27
|
+
return CSTR2RVAL(atk_streamable_content_get_mime_type(_SELF(self), NUM2INT(i)));
|
28
|
+
}
|
29
|
+
|
30
|
+
static VALUE
|
31
|
+
rbatkst_get_stream(self, mime_type)
|
32
|
+
VALUE self, mime_type;
|
33
|
+
{
|
34
|
+
GIOChannel* io = atk_streamable_content_get_stream(_SELF(self), RVAL2CSTR(mime_type));
|
35
|
+
if (!io)
|
36
|
+
rb_raise(rb_eRuntimeError, "Couldn't get the stream.");
|
37
|
+
|
38
|
+
return BOXED2RVAL(io, G_TYPE_IO_CHANNEL);
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
void
|
43
|
+
Init_atk_streamable_content()
|
44
|
+
{
|
45
|
+
VALUE mContent = G_DEF_INTERFACE(ATK_TYPE_STREAMABLE_CONTENT, "StreamableContent", mAtk);
|
46
|
+
|
47
|
+
rb_define_method(mContent, "n_mime_types", rbatkst_get_n_mime_types, 0);
|
48
|
+
rb_define_method(mContent, "mime_type", rbatkst_get_mime_type, 1);
|
49
|
+
rb_define_method(mContent, "get_stream", rbatkst_get_stream, 1);
|
50
|
+
}
|
data/src/rbatktable.c
ADDED
@@ -0,0 +1,292 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbatktable.c -
|
5
|
+
|
6
|
+
$Author: mutoh $
|
7
|
+
$Date: 2004/03/05 15:33:48 $
|
8
|
+
|
9
|
+
Copyright (C) 2003,2004 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbatk.h"
|
13
|
+
|
14
|
+
#define _SELF(s) (ATK_TABLE(RVAL2GOBJ(s)))
|
15
|
+
|
16
|
+
static VALUE
|
17
|
+
rbatk_table_ref_at(self, row, column)
|
18
|
+
VALUE self, row, column;
|
19
|
+
{
|
20
|
+
return GOBJ2RVAL(atk_table_ref_at(_SELF(self), NUM2INT(row), NUM2INT(column)));
|
21
|
+
}
|
22
|
+
|
23
|
+
static VALUE
|
24
|
+
rbatk_table_get_index_at(self, row, column)
|
25
|
+
VALUE self, row, column;
|
26
|
+
{
|
27
|
+
return INT2NUM(atk_table_get_index_at(_SELF(self), NUM2INT(row), NUM2INT(column)));
|
28
|
+
}
|
29
|
+
|
30
|
+
static VALUE
|
31
|
+
rbatk_table_get_column_at_index(self, index_)
|
32
|
+
VALUE self, index_;
|
33
|
+
{
|
34
|
+
return INT2NUM(atk_table_get_column_at_index(_SELF(self), NUM2INT(index_)));
|
35
|
+
}
|
36
|
+
|
37
|
+
static VALUE
|
38
|
+
rbatk_table_get_row_at_index(self, index_)
|
39
|
+
VALUE self, index_;
|
40
|
+
{
|
41
|
+
return INT2NUM(atk_table_get_row_at_index(_SELF(self), NUM2INT(index_)));
|
42
|
+
}
|
43
|
+
|
44
|
+
static VALUE
|
45
|
+
rbatk_table_get_n_columns(self)
|
46
|
+
VALUE self;
|
47
|
+
{
|
48
|
+
return INT2NUM(atk_table_get_n_columns(_SELF(self)));
|
49
|
+
}
|
50
|
+
|
51
|
+
static VALUE
|
52
|
+
rbatk_table_get_n_rows(self)
|
53
|
+
VALUE self;
|
54
|
+
{
|
55
|
+
return INT2NUM(atk_table_get_n_rows(_SELF(self)));
|
56
|
+
}
|
57
|
+
|
58
|
+
static VALUE
|
59
|
+
rbatk_table_get_column_extent_at(self, row, column)
|
60
|
+
VALUE self, row, column;
|
61
|
+
{
|
62
|
+
return INT2NUM(atk_table_get_column_extent_at(_SELF(self), NUM2INT(row), NUM2INT(column)));
|
63
|
+
}
|
64
|
+
|
65
|
+
static VALUE
|
66
|
+
rbatk_table_get_row_extent_at(self, row, column)
|
67
|
+
VALUE self, row, column;
|
68
|
+
{
|
69
|
+
return INT2NUM(atk_table_get_row_extent_at(_SELF(self), NUM2INT(row), NUM2INT(column)));
|
70
|
+
}
|
71
|
+
|
72
|
+
static VALUE
|
73
|
+
rbatk_table_get_caption(self)
|
74
|
+
VALUE self;
|
75
|
+
{
|
76
|
+
return GOBJ2RVAL(atk_table_get_caption(_SELF(self)));
|
77
|
+
}
|
78
|
+
|
79
|
+
static VALUE
|
80
|
+
rbatk_table_get_column_description(self, column)
|
81
|
+
VALUE self, column;
|
82
|
+
{
|
83
|
+
return CSTR2RVAL(atk_table_get_column_description(_SELF(self), NUM2INT(column)));
|
84
|
+
}
|
85
|
+
|
86
|
+
static VALUE
|
87
|
+
rbatk_table_get_row_description(self, row)
|
88
|
+
VALUE self, row;
|
89
|
+
{
|
90
|
+
return CSTR2RVAL(atk_table_get_row_description(_SELF(self), NUM2INT(row)));
|
91
|
+
}
|
92
|
+
|
93
|
+
static VALUE
|
94
|
+
rbatk_table_get_column_header(self, column)
|
95
|
+
VALUE self, column;
|
96
|
+
{
|
97
|
+
return GOBJ2RVAL(atk_table_get_column_header(_SELF(self), NUM2INT(column)));
|
98
|
+
}
|
99
|
+
|
100
|
+
static VALUE
|
101
|
+
rbatk_table_get_row_header(self, row)
|
102
|
+
VALUE self, row;
|
103
|
+
{
|
104
|
+
return GOBJ2RVAL(atk_table_get_row_header(_SELF(self), NUM2INT(row)));
|
105
|
+
}
|
106
|
+
|
107
|
+
static VALUE
|
108
|
+
rbatk_table_get_summary(self)
|
109
|
+
VALUE self;
|
110
|
+
{
|
111
|
+
return GOBJ2RVAL(atk_table_get_summary(_SELF(self)));
|
112
|
+
}
|
113
|
+
|
114
|
+
static VALUE
|
115
|
+
rbatk_table_set_caption(self, caption)
|
116
|
+
VALUE self, caption;
|
117
|
+
{
|
118
|
+
atk_table_set_caption(_SELF(self), ATK_OBJECT(RVAL2GOBJ(caption)));
|
119
|
+
return self;
|
120
|
+
}
|
121
|
+
|
122
|
+
static VALUE
|
123
|
+
rbatk_table_set_row_description(self, row, description)
|
124
|
+
VALUE self, row, description;
|
125
|
+
{
|
126
|
+
atk_table_set_row_description(_SELF(self), NUM2INT(row), RVAL2CSTR(description));
|
127
|
+
return self;
|
128
|
+
}
|
129
|
+
|
130
|
+
static VALUE
|
131
|
+
rbatk_table_set_column_description(self, column, description)
|
132
|
+
VALUE self, column, description;
|
133
|
+
{
|
134
|
+
atk_table_set_column_description(_SELF(self), NUM2INT(column), RVAL2CSTR(description));
|
135
|
+
return self;
|
136
|
+
}
|
137
|
+
|
138
|
+
static VALUE
|
139
|
+
rbatk_table_set_row_header(self, row, header)
|
140
|
+
VALUE self, row, header;
|
141
|
+
{
|
142
|
+
atk_table_set_row_header(_SELF(self), NUM2INT(row), ATK_OBJECT(RVAL2GOBJ(header)));
|
143
|
+
return self;
|
144
|
+
}
|
145
|
+
|
146
|
+
static VALUE
|
147
|
+
rbatk_table_set_column_header(self, column, header)
|
148
|
+
VALUE self, column, header;
|
149
|
+
{
|
150
|
+
atk_table_set_column_header(_SELF(self), NUM2INT(column), ATK_OBJECT(RVAL2GOBJ(header)));
|
151
|
+
return self;
|
152
|
+
}
|
153
|
+
|
154
|
+
static VALUE
|
155
|
+
rbatk_table_set_summary(self, accessible)
|
156
|
+
VALUE self, accessible;
|
157
|
+
{
|
158
|
+
atk_table_set_summary(_SELF(self), ATK_OBJECT(RVAL2GOBJ(accessible)));
|
159
|
+
return self;
|
160
|
+
}
|
161
|
+
|
162
|
+
static VALUE
|
163
|
+
rbatk_table_get_selected_columns(self)
|
164
|
+
VALUE self;
|
165
|
+
{
|
166
|
+
gint ret;
|
167
|
+
gint* selected;
|
168
|
+
VALUE result = Qnil;
|
169
|
+
ret = atk_table_get_selected_columns(_SELF(self), &selected);
|
170
|
+
if (ret > 0){
|
171
|
+
gint i;
|
172
|
+
result = rb_ary_new2(ret);
|
173
|
+
for (i = 0; i < ret; i++){
|
174
|
+
rb_ary_push(result, INT2NUM(selected[i]));
|
175
|
+
}
|
176
|
+
}
|
177
|
+
return result;
|
178
|
+
}
|
179
|
+
|
180
|
+
static VALUE
|
181
|
+
rbatk_table_get_selected_rows(self)
|
182
|
+
VALUE self;
|
183
|
+
{
|
184
|
+
gint ret;
|
185
|
+
gint* selected;
|
186
|
+
VALUE result = Qnil;
|
187
|
+
ret = atk_table_get_selected_rows(_SELF(self), &selected);
|
188
|
+
if (ret > 0){
|
189
|
+
gint i;
|
190
|
+
result = rb_ary_new2(ret);
|
191
|
+
for (i = 0; i < ret; i++){
|
192
|
+
rb_ary_push(result, INT2NUM(selected[i]));
|
193
|
+
}
|
194
|
+
}
|
195
|
+
return result;
|
196
|
+
}
|
197
|
+
|
198
|
+
static VALUE
|
199
|
+
rbatk_table_is_column_selected(self, column)
|
200
|
+
VALUE self, column;
|
201
|
+
{
|
202
|
+
return CBOOL2RVAL(atk_table_is_column_selected(_SELF(self), NUM2INT(column)));
|
203
|
+
}
|
204
|
+
|
205
|
+
static VALUE
|
206
|
+
rbatk_table_is_row_selected(self, row)
|
207
|
+
VALUE self, row;
|
208
|
+
{
|
209
|
+
return CBOOL2RVAL(atk_table_is_row_selected(_SELF(self), NUM2INT(row)));
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE
|
213
|
+
rbatk_table_is_selected(self, row, column)
|
214
|
+
VALUE self, row, column;
|
215
|
+
{
|
216
|
+
return CBOOL2RVAL(atk_table_is_selected(_SELF(self), NUM2INT(row), NUM2INT(column)));
|
217
|
+
}
|
218
|
+
|
219
|
+
static VALUE
|
220
|
+
rbatk_table_add_column_selection(self, column)
|
221
|
+
VALUE self, column;
|
222
|
+
{
|
223
|
+
gboolean ret = atk_table_add_column_selection(_SELF(self), NUM2INT(column));
|
224
|
+
if (! ret) rb_raise(rb_eRuntimeError, "not implement this interface");
|
225
|
+
return self;
|
226
|
+
}
|
227
|
+
|
228
|
+
static VALUE
|
229
|
+
rbatk_table_add_row_selection(self, row)
|
230
|
+
VALUE self, row;
|
231
|
+
{
|
232
|
+
gboolean ret = atk_table_add_row_selection(_SELF(self), NUM2INT(row));
|
233
|
+
if (! ret) rb_raise(rb_eRuntimeError, "not implement this interface");
|
234
|
+
return self;
|
235
|
+
}
|
236
|
+
|
237
|
+
static VALUE
|
238
|
+
rbatk_table_remove_column_selection(self, column)
|
239
|
+
VALUE self, column;
|
240
|
+
{
|
241
|
+
gboolean ret = atk_table_remove_column_selection(_SELF(self), NUM2INT(column));
|
242
|
+
if (! ret) rb_raise(rb_eRuntimeError, "not implement this interface");
|
243
|
+
return self;
|
244
|
+
}
|
245
|
+
|
246
|
+
static VALUE
|
247
|
+
rbatk_table_remove_row_selection(self, row)
|
248
|
+
VALUE self, row;
|
249
|
+
{
|
250
|
+
gboolean ret = atk_table_remove_row_selection(_SELF(self), NUM2INT(row));
|
251
|
+
if (! ret) rb_raise(rb_eRuntimeError, "not implement this interface");
|
252
|
+
return self;
|
253
|
+
}
|
254
|
+
|
255
|
+
void
|
256
|
+
Init_atk_table()
|
257
|
+
{
|
258
|
+
VALUE mTable = G_DEF_INTERFACE(ATK_TYPE_TABLE, "Table", mAtk);
|
259
|
+
|
260
|
+
rb_define_method(mTable, "set_caption", rbatk_table_set_caption, 1);
|
261
|
+
rb_define_method(mTable, "ref_at", rbatk_table_ref_at, 2);
|
262
|
+
rb_define_method(mTable, "get_index_at", rbatk_table_get_index_at, 2);
|
263
|
+
rb_define_method(mTable, "get_column_at_index", rbatk_table_get_column_at_index, 1);
|
264
|
+
rb_define_method(mTable, "get_row_at_index", rbatk_table_get_row_at_index, 1);
|
265
|
+
rb_define_method(mTable, "n_columns", rbatk_table_get_n_columns, 0);
|
266
|
+
rb_define_method(mTable, "n_rows", rbatk_table_get_n_rows, 0);
|
267
|
+
rb_define_method(mTable, "get_column_extent_at", rbatk_table_get_column_extent_at, 2);
|
268
|
+
rb_define_method(mTable, "get_row_extent_at", rbatk_table_get_row_extent_at, 2);
|
269
|
+
rb_define_method(mTable, "caption", rbatk_table_get_caption, 0);
|
270
|
+
rb_define_method(mTable, "get_column_description", rbatk_table_get_column_description, 1);
|
271
|
+
rb_define_method(mTable, "get_row_description", rbatk_table_get_row_description, 1);
|
272
|
+
rb_define_method(mTable, "get_column_header", rbatk_table_get_column_header, 1);
|
273
|
+
rb_define_method(mTable, "get_row_header", rbatk_table_get_row_header, 1);
|
274
|
+
rb_define_method(mTable, "summary", rbatk_table_get_summary, 0);
|
275
|
+
rb_define_method(mTable, "set_caption", rbatk_table_set_caption, 1);
|
276
|
+
rb_define_method(mTable, "set_row_description", rbatk_table_set_row_description, 2);
|
277
|
+
rb_define_method(mTable, "set_column_description", rbatk_table_set_column_description, 2);
|
278
|
+
rb_define_method(mTable, "set_row_header", rbatk_table_set_row_header, 2);
|
279
|
+
rb_define_method(mTable, "set_column_header", rbatk_table_set_column_header, 2);
|
280
|
+
rb_define_method(mTable, "set_summary", rbatk_table_set_summary, 1);
|
281
|
+
rb_define_method(mTable, "selected_columns", rbatk_table_get_selected_columns, 0);
|
282
|
+
rb_define_method(mTable, "selected_rows", rbatk_table_get_selected_rows, 0);
|
283
|
+
rb_define_method(mTable, "column_selected?", rbatk_table_is_column_selected, 1);
|
284
|
+
rb_define_method(mTable, "row_selected?", rbatk_table_is_row_selected, 1);
|
285
|
+
rb_define_method(mTable, "selected?", rbatk_table_is_selected, 2);
|
286
|
+
rb_define_method(mTable, "add_column_selection", rbatk_table_add_column_selection, 1);
|
287
|
+
rb_define_method(mTable, "add_row_selection", rbatk_table_add_row_selection, 1);
|
288
|
+
rb_define_method(mTable, "remove_column_selection", rbatk_table_remove_column_selection, 1);
|
289
|
+
rb_define_method(mTable, "remove_row_selection", rbatk_table_remove_row_selection, 1);
|
290
|
+
|
291
|
+
G_DEF_SETTERS(mTable);
|
292
|
+
}
|
data/src/rbatktext.c
ADDED
@@ -0,0 +1,364 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbatktext.c -
|
5
|
+
|
6
|
+
$Author: sakai $
|
7
|
+
$Date: 2006/05/26 14:12:06 $
|
8
|
+
|
9
|
+
Copyright (C) 2004 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbatk.h"
|
13
|
+
|
14
|
+
#define _SELF(s) (ATK_TEXT(RVAL2GOBJ(s)))
|
15
|
+
|
16
|
+
static VALUE
|
17
|
+
rbatk_text_get_text(self, start_offset, end_offset)
|
18
|
+
VALUE self, start_offset, end_offset;
|
19
|
+
{
|
20
|
+
VALUE ret;
|
21
|
+
gchar* text = atk_text_get_text(_SELF(self),
|
22
|
+
NUM2INT(start_offset),
|
23
|
+
NUM2INT(end_offset));
|
24
|
+
ret = CSTR2RVAL(text);
|
25
|
+
g_free(text);
|
26
|
+
return ret;
|
27
|
+
}
|
28
|
+
|
29
|
+
static VALUE
|
30
|
+
rbatk_text_get_character_at_offset(self, offset)
|
31
|
+
VALUE self, offset;
|
32
|
+
{
|
33
|
+
gchar buf[10];
|
34
|
+
gint len = g_unichar_to_utf8(atk_text_get_character_at_offset
|
35
|
+
(_SELF(self), NUM2INT(offset)), buf);
|
36
|
+
buf[len] = '\0';
|
37
|
+
return rb_str_new2(buf);
|
38
|
+
}
|
39
|
+
|
40
|
+
static VALUE
|
41
|
+
rbatk_text_get_text_after_offset(self, offset, boundary_type)
|
42
|
+
VALUE self, offset, boundary_type;
|
43
|
+
{
|
44
|
+
gchar* ret;
|
45
|
+
VALUE result;
|
46
|
+
gint start_offset, end_offset;
|
47
|
+
|
48
|
+
ret = atk_text_get_text_after_offset(_SELF(self), NUM2INT(offset),
|
49
|
+
RVAL2GENUM(boundary_type, ATK_TYPE_TEXT_BOUNDARY),
|
50
|
+
&start_offset, &end_offset);
|
51
|
+
result = rb_ary_new3(3, CSTR2RVAL(ret),
|
52
|
+
INT2NUM(start_offset), INT2NUM(end_offset));
|
53
|
+
g_free(ret);
|
54
|
+
|
55
|
+
return result;
|
56
|
+
}
|
57
|
+
|
58
|
+
static VALUE
|
59
|
+
rbatk_text_get_text_at_offset(self, offset, boundary_type)
|
60
|
+
VALUE self, offset, boundary_type;
|
61
|
+
{
|
62
|
+
gchar* ret;
|
63
|
+
VALUE result;
|
64
|
+
gint start_offset, end_offset;
|
65
|
+
|
66
|
+
ret = atk_text_get_text_at_offset(_SELF(self), NUM2INT(offset),
|
67
|
+
RVAL2GENUM(boundary_type, ATK_TYPE_TEXT_BOUNDARY),
|
68
|
+
&start_offset, &end_offset);
|
69
|
+
result = rb_ary_new3(3, CSTR2RVAL(ret),
|
70
|
+
INT2NUM(start_offset), INT2NUM(end_offset));
|
71
|
+
g_free(ret);
|
72
|
+
|
73
|
+
return result;
|
74
|
+
}
|
75
|
+
|
76
|
+
static VALUE
|
77
|
+
rbatk_text_get_text_before_offset(self, offset, boundary_type)
|
78
|
+
VALUE self, offset, boundary_type;
|
79
|
+
{
|
80
|
+
gchar* ret;
|
81
|
+
VALUE result;
|
82
|
+
gint start_offset, end_offset;
|
83
|
+
|
84
|
+
ret = atk_text_get_text_before_offset(_SELF(self), NUM2INT(offset),
|
85
|
+
RVAL2GENUM(boundary_type, ATK_TYPE_TEXT_BOUNDARY),
|
86
|
+
&start_offset, &end_offset);
|
87
|
+
result = rb_ary_new3(3, CSTR2RVAL(ret),
|
88
|
+
INT2NUM(start_offset), INT2NUM(end_offset));
|
89
|
+
g_free(ret);
|
90
|
+
|
91
|
+
return result;
|
92
|
+
}
|
93
|
+
|
94
|
+
static VALUE
|
95
|
+
rbatk_text_get_caret_offset(self)
|
96
|
+
VALUE self;
|
97
|
+
{
|
98
|
+
return INT2NUM(atk_text_get_caret_offset(_SELF(self)));
|
99
|
+
}
|
100
|
+
|
101
|
+
static VALUE
|
102
|
+
rbatk_text_get_character_extents(self, offset, coords)
|
103
|
+
VALUE self, offset, coords;
|
104
|
+
{
|
105
|
+
gint x, y, width, height;
|
106
|
+
atk_text_get_character_extents(_SELF(self), NUM2INT(offset),
|
107
|
+
&x, &y, &width, &height,
|
108
|
+
RVAL2GENUM(coords, ATK_TYPE_COORD_TYPE));
|
109
|
+
return rb_ary_new3(4, INT2NUM(x), INT2NUM(y), INT2NUM(width), INT2NUM(height));
|
110
|
+
}
|
111
|
+
|
112
|
+
static VALUE
|
113
|
+
rbatk_text_get_run_attributes(self, offset)
|
114
|
+
VALUE self, offset;
|
115
|
+
{
|
116
|
+
gint start_offset, end_offset;
|
117
|
+
AtkAttributeSet* list;
|
118
|
+
VALUE ary;
|
119
|
+
|
120
|
+
list = atk_text_get_run_attributes(_SELF(self), NUM2INT(offset),
|
121
|
+
&start_offset, &end_offset);
|
122
|
+
|
123
|
+
ary = rb_ary_new();
|
124
|
+
|
125
|
+
while (list) {
|
126
|
+
AtkAttribute* data = (AtkAttribute*)list->data;
|
127
|
+
rb_ary_push(ary, rb_assoc_new(CSTR2RVAL(data->name),
|
128
|
+
CSTR2RVAL(data->value)));
|
129
|
+
list = list->next;
|
130
|
+
}
|
131
|
+
atk_attribute_set_free(list);
|
132
|
+
return ary;
|
133
|
+
}
|
134
|
+
|
135
|
+
static VALUE
|
136
|
+
rbatk_text_get_default_attributes(self)
|
137
|
+
VALUE self;
|
138
|
+
{
|
139
|
+
AtkAttributeSet* list;
|
140
|
+
VALUE ary;
|
141
|
+
|
142
|
+
list = atk_text_get_default_attributes(_SELF(self));
|
143
|
+
ary = rb_ary_new();
|
144
|
+
|
145
|
+
while (list) {
|
146
|
+
AtkAttribute* data = (AtkAttribute*)list->data;
|
147
|
+
rb_ary_push(ary, rb_assoc_new(CSTR2RVAL(data->name),
|
148
|
+
CSTR2RVAL(data->value)));
|
149
|
+
list = list->next;
|
150
|
+
}
|
151
|
+
atk_attribute_set_free(list);
|
152
|
+
return ary;
|
153
|
+
}
|
154
|
+
|
155
|
+
static VALUE
|
156
|
+
rbatk_text_get_character_count(self)
|
157
|
+
VALUE self;
|
158
|
+
{
|
159
|
+
return INT2NUM(atk_text_get_character_count(_SELF(self)));
|
160
|
+
}
|
161
|
+
|
162
|
+
static VALUE
|
163
|
+
rbatk_text_get_offset_at_point(self, x, y, coords)
|
164
|
+
VALUE self, x, y, coords;
|
165
|
+
{
|
166
|
+
return INT2NUM(atk_text_get_offset_at_point(_SELF(self),
|
167
|
+
NUM2INT(x), NUM2INT(y),
|
168
|
+
RVAL2GENUM(coords, ATK_TYPE_COORD_TYPE)));
|
169
|
+
}
|
170
|
+
|
171
|
+
#ifdef HAVE_ATK_TEXT_GET_BOUNDED_RANGES
|
172
|
+
#ifdef HAVE_ATK_TEXT_CLIP_TYPE_GET_TYPE
|
173
|
+
static VALUE
|
174
|
+
rbatk_text_get_bounded_ranges(self, rect, coord_type, x_clip_type, y_clip_type)
|
175
|
+
VALUE self, rect, coord_type, x_clip_type, y_clip_type;
|
176
|
+
{
|
177
|
+
AtkTextRange** ranges;
|
178
|
+
int i = 0;
|
179
|
+
VALUE ary;
|
180
|
+
ranges = atk_text_get_bounded_ranges(_SELF(self),
|
181
|
+
RVAL2BOXED(rect, ATK_TYPE_TEXT_RECTANGLE),
|
182
|
+
RVAL2GENUM(coord_type, ATK_TYPE_COORD_TYPE),
|
183
|
+
RVAL2GENUM(x_clip_type, ATK_TYPE_TEXT_CLIP_TYPE),
|
184
|
+
RVAL2GENUM(y_clip_type, ATK_TYPE_TEXT_CLIP_TYPE));
|
185
|
+
ary = rb_ary_new();
|
186
|
+
while(ranges[i]){
|
187
|
+
rb_ary_push(ary, BOXED2RVAL(ranges[i], ATK_TYPE_TEXT_RANGE));
|
188
|
+
i++;
|
189
|
+
}
|
190
|
+
#ifdef HAVE_ATK_TEXT_FREE_RANGES
|
191
|
+
atk_text_free_ranges(ranges);
|
192
|
+
#endif
|
193
|
+
return ary;
|
194
|
+
}
|
195
|
+
#endif
|
196
|
+
|
197
|
+
static VALUE
|
198
|
+
rbatk_text_get_range_extents(self, start_offset, end_offset, coord_type)
|
199
|
+
VALUE self, start_offset, end_offset, coord_type;
|
200
|
+
{
|
201
|
+
AtkTextRectangle rect;
|
202
|
+
atk_text_get_range_extents(_SELF(self), NUM2INT(start_offset),
|
203
|
+
NUM2INT(end_offset),
|
204
|
+
RVAL2GENUM(coord_type, ATK_TYPE_COORD_TYPE),
|
205
|
+
&rect);
|
206
|
+
return BOXED2RVAL(&rect, ATK_TYPE_TEXT_RECTANGLE);
|
207
|
+
}
|
208
|
+
|
209
|
+
/* Don't need this
|
210
|
+
void atk_text_free_ranges (AtkTextRange **ranges);
|
211
|
+
*/
|
212
|
+
#endif
|
213
|
+
|
214
|
+
static VALUE
|
215
|
+
rbatk_text_get_n_selections(self)
|
216
|
+
VALUE self;
|
217
|
+
{
|
218
|
+
return INT2NUM(atk_text_get_n_selections(_SELF(self)));
|
219
|
+
}
|
220
|
+
|
221
|
+
static VALUE
|
222
|
+
rbatk_text_get_selection(self, selection_num)
|
223
|
+
VALUE self, selection_num;
|
224
|
+
{
|
225
|
+
gint start_offset, end_offset;
|
226
|
+
VALUE ret;
|
227
|
+
gchar* text = atk_text_get_selection(_SELF(self), NUM2INT(selection_num),
|
228
|
+
&start_offset, &end_offset);
|
229
|
+
ret = CSTR2RVAL(text);
|
230
|
+
g_free(text);
|
231
|
+
|
232
|
+
return ret;
|
233
|
+
}
|
234
|
+
|
235
|
+
static VALUE
|
236
|
+
rbatk_text_add_selection(self, start_offset, end_offset)
|
237
|
+
VALUE self, start_offset, end_offset;
|
238
|
+
{
|
239
|
+
gboolean ret = atk_text_add_selection(_SELF(self), NUM2INT(start_offset),
|
240
|
+
NUM2INT(end_offset));
|
241
|
+
if (! ret) rb_raise(rb_eRuntimeError, "Can't add selection");
|
242
|
+
return self;
|
243
|
+
}
|
244
|
+
|
245
|
+
static VALUE
|
246
|
+
rbatk_text_remove_selection(self, selection_num)
|
247
|
+
VALUE self, selection_num;
|
248
|
+
{
|
249
|
+
gint num;
|
250
|
+
gboolean ret;
|
251
|
+
|
252
|
+
num = NUM2INT(selection_num);
|
253
|
+
ret = atk_text_remove_selection(_SELF(self), num);
|
254
|
+
if (! ret)
|
255
|
+
rb_raise(rb_eRuntimeError, "Can't remove selection. num = %d", num);
|
256
|
+
return self;
|
257
|
+
}
|
258
|
+
|
259
|
+
static VALUE
|
260
|
+
rbatk_text_set_selection(self, selection_num, start_offset, end_offset)
|
261
|
+
VALUE self, selection_num, start_offset, end_offset;
|
262
|
+
{
|
263
|
+
gboolean ret = atk_text_set_selection(_SELF(self), NUM2INT(selection_num),
|
264
|
+
NUM2INT(start_offset),
|
265
|
+
NUM2INT(end_offset));
|
266
|
+
if (! ret) rb_raise(rb_eRuntimeError, "Can't set selection");
|
267
|
+
return self;
|
268
|
+
}
|
269
|
+
|
270
|
+
static VALUE
|
271
|
+
rbatk_text_set_caret_offset(self, offset)
|
272
|
+
VALUE self, offset;
|
273
|
+
{
|
274
|
+
gboolean ret = atk_text_set_caret_offset(_SELF(self), NUM2INT(offset));
|
275
|
+
if (! ret) rb_raise(rb_eRuntimeError, "Can't set caret offset");
|
276
|
+
return self;
|
277
|
+
}
|
278
|
+
|
279
|
+
|
280
|
+
/* We don't need them.
|
281
|
+
void atk_attribute_set_free (AtkAttributeSet *attrib_set);
|
282
|
+
*/
|
283
|
+
|
284
|
+
/*
|
285
|
+
* Atk::TextAttribute
|
286
|
+
*/
|
287
|
+
static VALUE
|
288
|
+
rbatk_tattr_s_register(self, name)
|
289
|
+
VALUE self, name;
|
290
|
+
{
|
291
|
+
return GENUM2RVAL(atk_text_attribute_register(RVAL2CSTR(name)), ATK_TYPE_TEXT_ATTRIBUTE);
|
292
|
+
}
|
293
|
+
|
294
|
+
/* We don't need this.
|
295
|
+
G_CONST_RETURN gchar* atk_textattribute_type_get_name
|
296
|
+
(AtkTextattributeType type);
|
297
|
+
*/
|
298
|
+
|
299
|
+
static VALUE
|
300
|
+
rbatk_tattr_s_for_name(self, name)
|
301
|
+
VALUE self, name;
|
302
|
+
{
|
303
|
+
return GENUM2RVAL(atk_text_attribute_for_name(RVAL2CSTR(name)), ATK_TYPE_TEXT_ATTRIBUTE);
|
304
|
+
}
|
305
|
+
|
306
|
+
static VALUE
|
307
|
+
rbatk_tattr_get_value(self, index)
|
308
|
+
VALUE self, index;
|
309
|
+
{
|
310
|
+
return CSTR2RVAL(atk_text_attribute_get_value(RVAL2GENUM(self, ATK_TYPE_TEXT_ATTRIBUTE),
|
311
|
+
NUM2INT(index)));
|
312
|
+
}
|
313
|
+
void
|
314
|
+
Init_atk_text()
|
315
|
+
{
|
316
|
+
VALUE tattr;
|
317
|
+
VALUE mText = G_DEF_INTERFACE(ATK_TYPE_TEXT, "Text", mAtk);
|
318
|
+
|
319
|
+
rb_define_method(mText, "get_text", rbatk_text_get_text, 2);
|
320
|
+
rb_define_method(mText, "get_character_at_offset", rbatk_text_get_character_at_offset, 1);
|
321
|
+
rb_define_method(mText, "get_text_after_offset", rbatk_text_get_text_after_offset, 2);
|
322
|
+
rb_define_method(mText, "get_text_at_offset", rbatk_text_get_text_at_offset, 2);
|
323
|
+
rb_define_method(mText, "get_text_before_offset", rbatk_text_get_text_before_offset, 2);
|
324
|
+
rb_define_method(mText, "caret_offset", rbatk_text_get_caret_offset, 0);
|
325
|
+
rb_define_method(mText, "get_character_extents", rbatk_text_get_character_extents, 2);
|
326
|
+
rb_define_method(mText, "get_run_attributes", rbatk_text_get_run_attributes, 1);
|
327
|
+
rb_define_method(mText, "default_attributes", rbatk_text_get_default_attributes, 0);
|
328
|
+
rb_define_method(mText, "character_count", rbatk_text_get_character_count, 0);
|
329
|
+
rb_define_method(mText, "get_offset_at_point", rbatk_text_get_offset_at_point, 3);
|
330
|
+
#ifdef HAVE_ATK_TEXT_GET_BOUNDED_RANGES
|
331
|
+
#ifdef HAVE_ATK_TEXT_CLIP_TYPE_GET_TYPE
|
332
|
+
rb_define_method(mText, "get_bounded_ranges", rbatk_text_get_bounded_ranges, 4);
|
333
|
+
rb_define_method(mText, "get_range_extents", rbatk_text_get_range_extents, 3);
|
334
|
+
#endif
|
335
|
+
#endif
|
336
|
+
rb_define_method(mText, "n_selections", rbatk_text_get_n_selections, 0);
|
337
|
+
rb_define_method(mText, "get_selection", rbatk_text_get_selection, 1);
|
338
|
+
rb_define_method(mText, "add_selection", rbatk_text_add_selection, 2);
|
339
|
+
rb_define_method(mText, "remove_selection", rbatk_text_remove_selection, 1);
|
340
|
+
rb_define_method(mText, "set_selection", rbatk_text_set_selection, 3);
|
341
|
+
rb_define_method(mText, "set_caret_offset", rbatk_text_set_caret_offset, 1);
|
342
|
+
|
343
|
+
G_DEF_SETTERS(mText);
|
344
|
+
|
345
|
+
/* AtkTextBoundary */
|
346
|
+
#ifdef ATK_TYPE_TEXT_BOUNDARY
|
347
|
+
G_DEF_CLASS(ATK_TYPE_TEXT_BOUNDARY, "Boundary", mText);
|
348
|
+
G_DEF_CONSTANTS(mText, ATK_TYPE_TEXT_BOUNDARY, "ATK_TEXT_");
|
349
|
+
#endif
|
350
|
+
/* AtkTextClipType */
|
351
|
+
#ifdef HAVE_ATK_TEXT_GET_BOUNDED_RANGES
|
352
|
+
#ifdef HAVE_ATK_TEXT_CLIP_TYPE_GET_TYPE
|
353
|
+
G_DEF_CLASS(ATK_TYPE_TEXT_CLIP_TYPE, "ClipType", mText);
|
354
|
+
G_DEF_CONSTANTS(mText, ATK_TYPE_TEXT_CLIP_TYPE, "ATK_TEXT_");
|
355
|
+
#endif
|
356
|
+
#endif
|
357
|
+
|
358
|
+
tattr = G_DEF_CLASS(ATK_TYPE_TEXT_ATTRIBUTE, "Attribute", mText);
|
359
|
+
G_DEF_CONSTANTS(mText, ATK_TYPE_TEXT_ATTRIBUTE, "ATK_TEXT_");
|
360
|
+
|
361
|
+
rb_define_singleton_method(tattr, "type_register", rbatk_tattr_s_register, 1);
|
362
|
+
rb_define_singleton_method(tattr, "for_name", rbatk_tattr_s_for_name, 1);
|
363
|
+
rb_define_method(tattr, "get_value", rbatk_tattr_get_value, 1);
|
364
|
+
}
|