static void do_find (PlumaSearchDialog *dialog, PlumaWindow *window) { PlumaView *active_view; PlumaDocument *doc; gchar *search_text; const gchar *entry_text; gboolean match_case; gboolean entire_word; gboolean wrap_around; gboolean search_backwards; guint flags = 0; guint old_flags = 0; gboolean found; /* TODO: make the dialog insensitive when all the tabs are closed * and assert here that the view is not NULL */ active_view = pluma_window_get_active_view (window); if (active_view == NULL) return; doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (active_view))); entry_text = pluma_search_dialog_get_search_text (dialog); match_case = pluma_search_dialog_get_match_case (dialog); entire_word = pluma_search_dialog_get_entire_word (dialog); search_backwards = pluma_search_dialog_get_backwards (dialog); wrap_around = pluma_search_dialog_get_wrap_around (dialog); PLUMA_SEARCH_SET_CASE_SENSITIVE (flags, match_case); PLUMA_SEARCH_SET_ENTIRE_WORD (flags, entire_word); search_text = pluma_document_get_search_text (doc, &old_flags); if ((search_text == NULL) || (strcmp (search_text, entry_text) != 0) || (flags != old_flags)) { pluma_document_set_search_text (doc, entry_text, flags); } g_free (search_text); found = run_search (active_view, wrap_around, search_backwards); if (found) text_found (window, 0); else text_not_found (window, entry_text); gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), PLUMA_SEARCH_DIALOG_REPLACE_RESPONSE, found); }
static void change_all_cb (PlumaSpellCheckerDialog *dlg, const gchar *word, const gchar *change, PlumaView *view) { PlumaDocument *doc; CheckRange *range; gchar *w = NULL; GtkTextIter start, end; gint flags = 0; pluma_debug (DEBUG_PLUGINS); g_return_if_fail (view != NULL); g_return_if_fail (word != NULL); g_return_if_fail (change != NULL); doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view))); g_return_if_fail (doc != NULL); range = get_check_range (doc); g_return_if_fail (range != NULL); gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (doc), &start, range->mw_start); if (range->mw_end < 0) gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (doc), &end); else gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (doc), &end, range->mw_end); w = gtk_text_buffer_get_slice (GTK_TEXT_BUFFER (doc), &start, &end, TRUE); g_return_if_fail (w != NULL); if (strcmp (w, word) != 0) { g_free (w); return; } g_free (w); PLUMA_SEARCH_SET_CASE_SENSITIVE (flags, TRUE); PLUMA_SEARCH_SET_ENTIRE_WORD (flags, TRUE); /* CHECK: currently this function does escaping etc */ pluma_document_replace_all (doc, word, change, flags); update_current (doc, range->mw_start + g_utf8_strlen (change, -1)); /* go to next misspelled word */ ignore_cb (dlg, word, view); }
static void do_replace_all (PlumaSearchDialog *dialog, PlumaWindow *window) { PlumaView *active_view; PlumaDocument *doc; const gchar *search_entry_text; const gchar *replace_entry_text; gboolean match_case; gboolean entire_word; guint flags = 0; gint count; active_view = pluma_window_get_active_view (window); if (active_view == NULL) return; doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (active_view))); search_entry_text = pluma_search_dialog_get_search_text (dialog); g_return_if_fail ((search_entry_text) != NULL); g_return_if_fail ((*search_entry_text) != '\0'); /* replace text may be "", we just delete all occurrencies */ replace_entry_text = pluma_search_dialog_get_replace_text (dialog); g_return_if_fail ((replace_entry_text) != NULL); match_case = pluma_search_dialog_get_match_case (dialog); entire_word = pluma_search_dialog_get_entire_word (dialog); PLUMA_SEARCH_SET_CASE_SENSITIVE (flags, match_case); PLUMA_SEARCH_SET_ENTIRE_WORD (flags, entire_word); count = pluma_document_replace_all (doc, search_entry_text, replace_entry_text, flags); if (count > 0) { text_found (window, count); } else { text_not_found (window, search_entry_text); } gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), PLUMA_SEARCH_DIALOG_REPLACE_RESPONSE, FALSE); }