void on_delete1_activate(GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *focusw = gtk_window_get_focus(GTK_WINDOW(main_widgets.window)); if (GTK_IS_EDITABLE(focusw)) gtk_editable_delete_selection(GTK_EDITABLE(focusw)); else if (IS_SCINTILLA(focusw) && sci_has_selection(SCINTILLA(focusw))) sci_clear(SCINTILLA(focusw)); else if (GTK_IS_TEXT_VIEW(focusw)) { GtkTextBuffer *buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(focusw)); gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); } }
static void replace_selected_text (GtkTextBuffer *buffer, const gchar *replace) { g_return_if_fail (gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL)); g_return_if_fail (replace != NULL); gtk_text_buffer_begin_user_action (buffer); gtk_text_buffer_delete_selection (buffer, FALSE, TRUE); gtk_text_buffer_insert_at_cursor (buffer, replace, strlen (replace)); gtk_text_buffer_end_user_action (buffer); }
//================================================================ int GUI_edi_sel_del (MemObj *mo) { //================================================================ /// GUI_edi_sel_del delete selected text // printf("GUI_Ed_sel_del \n"); if(mo) { // for internal call: mo=NULL if(GUI_ed1_decode(mo)) return -1; } gtk_text_buffer_delete_selection (GUI_ed1_buff, TRUE, TRUE); return 0; }
static void on_command_insert_button_clicked(G_GNUC_UNUSED GtkButton *button, gpointer gdata) { const char *prefix, *id; GString *text = g_string_new("--"); switch (GPOINTER_TO_INT(gdata)) { case 't' : prefix = "thread"; id = thread_id; break; case 'g' : prefix = "group"; id = thread_group_id(); break; default : prefix = "frame"; id = frame_id; } g_string_append_printf(text, "%s ", prefix); if (id) g_string_append_printf(text, "%s ", id); gtk_text_buffer_delete_selection(command_text, FALSE, TRUE); gtk_text_buffer_insert_at_cursor(command_text, text->str, -1); g_string_free(text, TRUE); gtk_widget_grab_focus(command_view); }
void indent_real(GtkWidget *text_view) { GtkTextIter iter; gchar *ind, *str; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view)); g_signal_emit_by_name(G_OBJECT(buffer), "begin-user-action"); gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer)); ind = compute_indentation(buffer, &iter, gtk_text_iter_get_line(&iter)); str = g_strconcat("\n", ind, NULL); gtk_text_buffer_insert(buffer, &iter, str, -1); g_signal_emit_by_name(G_OBJECT(buffer), "end-user-action"); g_free(str); g_free(ind); gtk_text_view_scroll_mark_onscreen( GTK_TEXT_VIEW(text_view), gtk_text_buffer_get_insert(buffer)); }
static void gimp_text_tool_backspace (GimpTextTool *text_tool) { GtkTextBuffer *buffer = GTK_TEXT_BUFFER (text_tool->buffer); gimp_text_tool_reset_im_context (text_tool); if (gtk_text_buffer_get_has_selection (buffer)) { gtk_text_buffer_delete_selection (buffer, TRUE, TRUE); } else { GtkTextIter cursor; gtk_text_buffer_get_iter_at_mark (buffer, &cursor, gtk_text_buffer_get_insert (buffer)); gtk_text_buffer_backspace (buffer, &cursor, TRUE, TRUE); } }
bool Gobby::FindDialog::replace() { SessionView* view = m_folder->get_current_document(); TextSessionView* text_view = dynamic_cast<TextSessionView*>(view); g_assert(text_view != NULL); // Get selected string Glib::ustring sel_str = text_view->get_selected_text(); Glib::ustring find_str = get_find_text(); // Lowercase both if we are comparing insensitive if(!m_check_case->get_active() ) { sel_str = sel_str.casefold(); find_str = find_str.casefold(); } // Replace them if they are the same if(sel_str == find_str) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER(text_view->get_text_buffer()); // Replace occurrence Glib::ustring replace_text = get_replace_text(); gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); gtk_text_buffer_insert_at_cursor(buffer, replace_text.c_str(), replace_text.bytes()); // and find the next find_and_select(NULL, get_direction()); return true; } else { // Search the first occurrence return find(); } }
static void do_lower_case (GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end) { GString *s = g_string_new (NULL); while (!gtk_text_iter_is_end (start) && !gtk_text_iter_equal (start, end)) { gunichar c, nc; c = gtk_text_iter_get_char (start); nc = g_unichar_tolower (c); g_string_append_unichar (s, nc); gtk_text_iter_forward_char (start); } gtk_text_buffer_delete_selection (buffer, TRUE, TRUE); gtk_text_buffer_insert_at_cursor (buffer, s->str, s->len); g_string_free (s, TRUE); }
void doSpellCheckDoc(GtkWidget* widget,gpointer data) { GtkTextIter start; GtkTextIter end; AspellCanHaveError* ret; AspellDocumentChecker* checker; AspellToken token; int diff; unsigned int goodwordlen; char* word_begin; char* badword; GtkTextIter startiter; GtkTextIter enditer; char* line; pageStruct* page=getPageStructPtr(-1); gtk_text_buffer_get_start_iter((GtkTextBuffer*)page->buffer,&startiter); gtk_text_buffer_get_end_iter((GtkTextBuffer*)page->buffer,&enditer); line=gtk_text_buffer_get_text((GtkTextBuffer*)page->buffer,&startiter,&enditer,false); /* Set up the document checker */ ret=new_aspell_document_checker(spellChecker); if (aspell_error(ret)!=0) { printf("Error: %s\n",aspell_error_message(ret)); return; } checker=to_aspell_document_checker(ret); /* First process the line */ aspell_document_checker_process(checker,line,-1); diff=0; /* Now find the misspellings in the line */ while(token=aspell_document_checker_next_misspelling(checker),token.len!=0) { /* Pay particular attention to how token.offset and diff is used */ asprintf(&badword,"%.*s",token.len,(char*)&line[token.offset+diff]); goodWord=NULL; checkTheWord(badword,1); if(cancelCheck==true) { delete_aspell_document_checker(checker); return; } word_begin=line+token.offset+diff; if(goodWord!=NULL) { goodwordlen=strlen(goodWord); /* Replace the misspelled word with the replacement */ diff+=goodwordlen-token.len; memmove(word_begin+goodwordlen,word_begin+token.len,strlen(word_begin+token.len)+1); memcpy(word_begin,goodWord,goodwordlen); } } delete_aspell_document_checker(checker); gtk_text_buffer_get_bounds((GtkTextBuffer*)page->buffer,&start,&end); gtk_text_buffer_select_range((GtkTextBuffer*)page->buffer,&start,&end); gtk_text_buffer_delete_selection((GtkTextBuffer*)page->buffer,true,true); gtk_text_buffer_get_start_iter((GtkTextBuffer*)page->buffer,&start); gtk_text_buffer_insert((GtkTextBuffer*)page->buffer,&start,line,-1); if(spellCheckWord!=NULL) { gtk_widget_destroy(spellCheckWord); spellCheckWord=NULL; } }
static gint document_replace_real(GtkWidget *textview) { GtkTextIter iter, match_start, match_end, rep_start; GtkTextMark *mark_init = NULL; gboolean res; gint num = 0, offset; GtkWidget *q_dialog = NULL; GtkSourceSearchFlags search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; GtkTextBuffer *textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); if (!match_case) search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; if (replace_all) { gtk_text_buffer_get_iter_at_mark(textbuffer, &iter, gtk_text_buffer_get_insert(textbuffer)); mark_init = gtk_text_buffer_create_mark(textbuffer, NULL, &iter, FALSE); gtk_text_buffer_get_start_iter(textbuffer, &iter); gtk_text_buffer_get_end_iter(textbuffer, &match_end); // gtk_text_buffer_remove_tag_by_name(textbuffer, // "replaced", &iter, &match_end); gtk_text_buffer_remove_all_tags(textbuffer, &iter, &match_end); } else { hlight_searched_strings(textbuffer, string_find); hlight_toggle_searched(textbuffer); } do { if (replace_all) { res = gtk_source_iter_forward_search( &iter, string_find, search_flags, &match_start, &match_end, NULL); if (res) { gtk_text_buffer_place_cursor(textbuffer, &match_start); gtk_text_buffer_move_mark_by_name(textbuffer, "insert", &match_end); gtk_text_buffer_get_iter_at_mark( textbuffer, &iter, gtk_text_buffer_get_insert(textbuffer)); } } else // res = document_search_real(textview, 0); res = document_search_real(textview, 2); if (res) { if (!replace_all) { if (num == 0 && q_dialog == NULL) q_dialog = create_dialog_message_question( gtk_widget_get_toplevel(textview), _("Replace?")); #if GTK_CHECK_VERSION(2, 10, 0) GtkTextIter ins,bou; gtk_text_buffer_get_selection_bounds(textbuffer, &ins, &bou); #endif switch (gtk_dialog_run(GTK_DIALOG(q_dialog))) { case GTK_RESPONSE_YES: #if GTK_CHECK_VERSION(2, 10, 0) gtk_text_buffer_select_range(textbuffer, &ins, &bou); #endif break; case GTK_RESPONSE_NO: continue; // case GTK_RESPONSE_CANCEL: default: res = 0; if (num == 0) num = -1; continue; } } gtk_text_buffer_delete_selection(textbuffer, TRUE, TRUE); if (strlen(string_replace)) { gtk_text_buffer_get_iter_at_mark( textbuffer, &rep_start, gtk_text_buffer_get_insert(textbuffer)); offset = gtk_text_iter_get_offset(&rep_start); undo_set_sequency(TRUE); g_signal_emit_by_name(G_OBJECT(textbuffer), "begin-user-action"); gtk_text_buffer_insert_at_cursor(textbuffer, string_replace, strlen(string_replace)); g_signal_emit_by_name(G_OBJECT(textbuffer), "end-user-action"); gtk_text_buffer_get_iter_at_mark( textbuffer, &iter, gtk_text_buffer_get_insert(textbuffer)); gtk_text_buffer_get_iter_at_offset(textbuffer, &rep_start, offset); gtk_text_buffer_apply_tag_by_name(textbuffer, "replaced", &rep_start, &iter); } else gtk_text_buffer_get_iter_at_mark( textbuffer, &iter, gtk_text_buffer_get_insert(textbuffer)); num++; /* if (replace_all) undo_set_sequency(TRUE); else undo_set_sequency(FALSE);*/ undo_set_sequency(replace_all); } } while (res); if (!hlight_check_searched()) hlight_toggle_searched(textbuffer); if (q_dialog) gtk_widget_destroy(q_dialog); /* if (strlen(string_replace)) { replace_mode = TRUE; hlight_searched_strings(textbuffer, string_replace); } */ if (replace_all) { gtk_text_buffer_get_iter_at_mark(textbuffer, &iter, mark_init); gtk_text_buffer_place_cursor(textbuffer, &iter); run_dialog_message(gtk_widget_get_toplevel(textview), GTK_MESSAGE_INFO, _("%d strings replaced"), num); undo_set_sequency(FALSE); } return num; }
G_MODULE_EXPORT void on_menu_delete_activate(GtkWidget *widget, void *user) { gtk_text_buffer_delete_selection(g_e_buffer, FALSE, TRUE); }
static void gimp_text_tool_delete_from_cursor (GimpTextTool *text_tool, GtkDeleteType type, gint count) { GtkTextBuffer *buffer = GTK_TEXT_BUFFER (text_tool->buffer); GtkTextIter cursor; GtkTextIter end; GIMP_LOG (TEXT_EDITING, "%s count = %d", g_enum_get_value (g_type_class_ref (GTK_TYPE_DELETE_TYPE), type)->value_name, count); gimp_text_tool_reset_im_context (text_tool); gtk_text_buffer_get_iter_at_mark (buffer, &cursor, gtk_text_buffer_get_insert (buffer)); end = cursor; switch (type) { case GTK_DELETE_CHARS: if (gtk_text_buffer_get_has_selection (buffer)) { gtk_text_buffer_delete_selection (buffer, TRUE, TRUE); return; } else { gtk_text_iter_forward_cursor_positions (&end, count); } break; case GTK_DELETE_WORD_ENDS: if (count < 0) { if (! gtk_text_iter_starts_word (&cursor)) gtk_text_iter_backward_visible_word_starts (&cursor, 1); } else if (count > 0) { if (! gtk_text_iter_ends_word (&end) && ! gtk_text_iter_forward_visible_word_ends (&end, 1)) gtk_text_iter_forward_to_line_end (&end); } break; case GTK_DELETE_WORDS: if (! gtk_text_iter_starts_word (&cursor)) gtk_text_iter_backward_visible_word_starts (&cursor, 1); if (! gtk_text_iter_ends_word (&end) && ! gtk_text_iter_forward_visible_word_ends (&end, 1)) gtk_text_iter_forward_to_line_end (&end); break; case GTK_DELETE_DISPLAY_LINES: break; case GTK_DELETE_DISPLAY_LINE_ENDS: break; case GTK_DELETE_PARAGRAPH_ENDS: if (count < 0) { gtk_text_iter_set_line_offset (&cursor, 0); } else if (count > 0) { if (! gtk_text_iter_ends_line (&end)) gtk_text_iter_forward_to_line_end (&end); else gtk_text_iter_forward_cursor_positions (&end, 1); } break; case GTK_DELETE_PARAGRAPHS: break; case GTK_DELETE_WHITESPACE: find_whitepace_region (&cursor, &cursor, &end); break; } if (! gtk_text_iter_equal (&cursor, &end)) { gtk_text_buffer_delete_interactive (buffer, &cursor, &end, TRUE); } }
//選択された範囲を削除する void delete_text(void) { gtk_text_buffer_delete_selection(GTK_TEXT_BUFFER(buffer), TRUE, TRUE); }