ui/gtk/text.c

changeset 1068
1c79dbd248f4
parent 1067
4243fcc0aa5c
equal deleted inserted replaced
1067:4243fcc0aa5c 1068:1c79dbd248f4
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);

mercurial