| 184 value->destroy = ui_textarea_text_destroy; |
184 value->destroy = ui_textarea_text_destroy; |
| 185 value->get = ui_textarea_get; |
185 value->get = ui_textarea_get; |
| 186 value->set = ui_textarea_set; |
186 value->set = ui_textarea_set; |
| 187 value->getsubstr = ui_textarea_getsubstr; |
187 value->getsubstr = ui_textarea_getsubstr; |
| 188 value->insert = ui_textarea_insert; |
188 value->insert = ui_textarea_insert; |
| |
189 value->replace = ui_textarea_replace; |
| 189 value->setposition = ui_textarea_setposition; |
190 value->setposition = ui_textarea_setposition; |
| 190 value->position = ui_textarea_position; |
191 value->position = ui_textarea_position; |
| 191 value->showposition = ui_textarea_showposition; |
192 value->showposition = ui_textarea_showposition; |
| 192 value->setselection = ui_textarea_setselection; |
193 value->setselection = ui_textarea_setselection; |
| 193 value->selection = ui_textarea_selection; |
194 value->selection = ui_textarea_selection; |
| 285 text->value.ptr = g_strdup(str); |
286 text->value.ptr = g_strdup(str); |
| 286 text->value.free = (ui_freefunc)g_free; |
287 text->value.free = (ui_freefunc)g_free; |
| 287 return str; |
288 return str; |
| 288 } |
289 } |
| 289 |
290 |
| 290 void ui_textarea_insert(UiText *text, int pos, char *str) { |
291 void ui_textarea_insert(UiText *text, int pos, const char *str) { |
| 291 GtkTextIter offset; |
292 GtkTextIter offset; |
| 292 gtk_text_buffer_get_iter_at_offset(text->data1, &offset, pos); |
293 gtk_text_buffer_get_iter_at_offset(text->data1, &offset, pos); |
| 293 gtk_text_buffer_insert(text->data1, &offset, str, -1); |
294 gtk_text_buffer_insert(text->data1, &offset, str, -1); |
| 294 if(text->value.ptr) { |
295 if(text->value.ptr) { |
| 295 text->value.free(text->value.ptr); |
296 text->value.free(text->value.ptr); |
| 296 } |
297 } |
| 297 text->value.ptr = NULL; |
298 text->value.ptr = NULL; |
| 298 text->value.free = NULL; |
299 text->value.free = NULL; |
| |
300 } |
| |
301 |
| |
302 void ui_textarea_replace(UiText *text, int begin, int end, const char *replacement) { |
| |
303 GtkTextBuffer *buffer = text->data1; |
| |
304 GtkTextIter begin_offset; |
| |
305 GtkTextIter end_offset; |
| |
306 gtk_text_buffer_get_iter_at_offset(buffer, &begin_offset, begin); |
| |
307 gtk_text_buffer_get_iter_at_offset(buffer, &end_offset, end); |
| |
308 gtk_text_buffer_begin_user_action(buffer); |
| |
309 gtk_text_buffer_delete(buffer, &begin_offset, &end_offset); |
| |
310 if(replacement) { |
| |
311 gtk_text_buffer_insert(buffer, &begin_offset, replacement, -1); |
| |
312 } |
| |
313 gtk_text_buffer_end_user_action(buffer); |
| 299 } |
314 } |
| 300 |
315 |
| 301 void ui_textarea_setposition(UiText *text, int pos) { |
316 void ui_textarea_setposition(UiText *text, int pos) { |
| 302 GtkTextIter iter; |
317 GtkTextIter iter; |
| 303 gtk_text_buffer_get_iter_at_offset(text->data1, &iter, pos); |
318 gtk_text_buffer_get_iter_at_offset(text->data1, &iter, pos); |