ui/gtk/text.c

changeset 1114
388285e877fe
parent 1103
4ba6f75d8966
equal deleted inserted replaced
1113:2df0be42b5e0 1114:388285e877fe
219 219
220 void ui_textarea_scroll_to(UIWIDGET textarea, int pos) { 220 void ui_textarea_scroll_to(UIWIDGET textarea, int pos) {
221 GtkWidget *widget = ui_textarea_gettextwidget(textarea); 221 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
222 if(!widget) { 222 if(!widget) {
223 fprintf(stderr, "Error: ui_textarea_scroll_to: widget is not a textarea\n"); 223 fprintf(stderr, "Error: ui_textarea_scroll_to: widget is not a textarea\n");
224 return;
224 } 225 }
225 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); 226 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
226 227
227 GtkTextIter offset; 228 GtkTextIter offset;
228 gtk_text_buffer_get_iter_at_offset(buf, &offset, pos); 229 gtk_text_buffer_get_iter_at_offset(buf, &offset, pos);
229 230
230 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(widget), &offset, 0.2, FALSE, 0, 0); 231 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(widget), &offset, 0.2, FALSE, 0, 0);
232 }
233
234 void ui_textarea_focus(UIWIDGET textarea) {
235 gtk_widget_grab_focus(textarea);
236 }
237
238 void ui_textarea_set_selection(UIWIDGET textarea, int begin, int end) {
239 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
240 if(!widget) {
241 fprintf(stderr, "Error: ui_textarea_set_selection: widget is not a textarea\n");
242 return;
243 }
244
245 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
246 GtkTextIter ib;
247 GtkTextIter ie;
248 gtk_text_buffer_get_iter_at_offset(buf, &ib, begin);
249 gtk_text_buffer_get_iter_at_offset(buf, &ie, end);
250 gtk_text_buffer_select_range(buf, &ib, &ie);
251 }
252
253 void ui_textarea_select_all(UIWIDGET textarea) {
254 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
255 if(!widget) {
256 fprintf(stderr, "Error: ui_textarea_select_all: widget is not a textarea\n");
257 return;
258 }
259 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
260 GtkTextIter start;
261 GtkTextIter end;
262 gtk_text_buffer_get_bounds(buf, &start, &end);
263 gtk_text_buffer_select_range(buf, &start, &end);
264 }
265
266 void ui_textarea_set_editable(UIWIDGET textarea, UiBool editable) {
267 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
268 if(!widget) {
269 fprintf(stderr, "Error: ui_textarea_set_editable: widget is not a textarea\n");
270 return;
271 }
272 gtk_text_view_set_editable(GTK_TEXT_VIEW(widget), editable);
273 }
274
275 UiBool ui_textarea_is_editable(UIWIDGET textarea) {
276 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
277 if(!widget) {
278 fprintf(stderr, "Error: ui_textarea_is_editable: widget is not a textarea\n");
279 return 0;
280 }
281 return gtk_text_view_get_editable(GTK_TEXT_VIEW(widget));
282 }
283
284 void ui_textarea_set_position(UIWIDGET textarea, int pos) {
285 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
286 if(!widget) {
287 fprintf(stderr, "Error: ui_textarea_set_position: widget is not a textarea\n");
288 return;
289 }
290 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
291 GtkTextIter iter;
292 gtk_text_buffer_get_iter_at_offset(buf, &iter, pos);
293 gtk_text_buffer_place_cursor(buf, &iter);
294 }
295
296 int ui_textarea_get_position(UIWIDGET textarea) {
297 GtkWidget *widget = ui_textarea_gettextwidget(textarea);
298 if(!widget) {
299 fprintf(stderr, "Error: ui_textarea_get_position: widget is not a textarea\n");
300 return 0;
301 }
302 GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
303 GtkTextIter begin;
304 GtkTextIter end;
305 gtk_text_buffer_get_selection_bounds(buf, &begin, &end);
306 return gtk_text_iter_get_offset(&begin);
231 } 307 }
232 308
233 UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) { 309 UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) {
234 return g_object_get_data(G_OBJECT(textarea), "ui_textarea_widget"); 310 return g_object_get_data(G_OBJECT(textarea), "ui_textarea_widget");
235 } 311 }

mercurial