Revision: 914 http://svn.sourceforge.net/geany/?rev=914&view=rev Author: ntrel Date: 2006-10-22 07:56:05 -0700 (Sun, 22 Oct 2006)
Log Message: ----------- Add separate Replace button, rename old button Replace & Find. Add expander to group Replace All options for Replace dialog. Use Replace All In Session button instead of checkbox. Add border, update packing for all dialogs in search.c. Add ui_dialog_vbox_new() for consistent dialog borders.
Modified Paths: -------------- trunk/ChangeLog trunk/src/dialogs.c trunk/src/document.c trunk/src/document.h trunk/src/search.c trunk/src/ui_utils.c trunk/src/ui_utils.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/ChangeLog 2006-10-22 14:56:05 UTC (rev 914) @@ -1,3 +1,14 @@ +2006-10-22 Nick Treleaven nick.treleaven@btinternet.com + + * src/ui_utils.h, src/search.c, src/document.c, src/dialogs.c, + src/document.h, src/ui_utils.c: + Add separate Replace button, rename old button Replace & Find. + Add expander to group Replace All options for Replace dialog. + Use Replace All In Session button instead of checkbox. + Add border, update packing for all dialogs in search.c. + Add ui_dialog_vbox_new() for consistent dialog borders. + + 2006-10-21 Nick Treleaven nick.treleaven@btinternet.com
* src/document.c:
Modified: trunk/src/dialogs.c =================================================================== --- trunk/src/dialogs.c 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/dialogs.c 2006-10-22 14:56:05 UTC (rev 914) @@ -52,18 +52,6 @@ #endif
-/* common convenience function for getting a fixed border for dialogs - * that doesn't increase the button box border */ -static GtkWidget *dialog_vbox_new(GtkDialog *dialog) -{ - GtkWidget *vbox = gtk_vbox_new(FALSE, 12); // need child vbox to set a separate border. - - gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox); - return vbox; -} - - /* This shows the file selection dialog to open a file. */ void dialogs_show_open_file () { @@ -451,7 +439,7 @@ dialog = gtk_dialog_new_with_buttons(_("Word Count"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
if (sci_can_copy(doc_list[idx].sci)) { @@ -530,7 +518,7 @@ dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog)); gtk_box_set_spacing(GTK_BOX(vbox), 6);
label = gtk_label_new(label_text); @@ -562,7 +550,7 @@ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
label = gtk_label_new(_("Enter the line you want to go to:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); @@ -592,7 +580,7 @@ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
label = gtk_label_new(_("Set programs and options for compiling and viewing (La)TeX files.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); @@ -707,7 +695,7 @@ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
label = gtk_label_new(_("Set the commands for building and running programs.")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); @@ -874,7 +862,7 @@ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, NULL); g_free(title); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); g_signal_connect(dialog, "delete_event", G_CALLBACK(gtk_widget_destroy), NULL); @@ -1245,7 +1233,7 @@
dialog = gtk_dialog_new_with_buttons(_("Keyboard shortcuts"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, NULL); - vbox = dialog_vbox_new(GTK_DIALOG(dialog)); + vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog)); gtk_box_set_spacing(GTK_BOX(vbox), 6);
height = GEANY_WINDOW_MINIMAL_HEIGHT;
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/document.c 2006-10-22 14:56:05 UTC (rev 914) @@ -972,24 +972,26 @@ }
-/* Replaces the selection if it matches, otherwise just finds the next match */ -void document_replace_text(gint idx, const gchar *find_text, const gchar *replace_text, - gint flags, gboolean search_backwards) +/* Replaces the selection if it matches, otherwise just finds the next match. + * Returns: start of replaced text, or -1 if no replacement was made */ +gint document_replace_text(gint idx, const gchar *find_text, const gchar *replace_text, + gint flags, gboolean search_backwards) { gint selection_end, selection_start, search_pos;
- g_return_if_fail(find_text != NULL && replace_text != NULL); - if (idx == -1 || ! *find_text) return; + g_return_val_if_fail(find_text != NULL && replace_text != NULL, -1); + if (idx == -1 || ! *find_text) return -1; + // Sci doesn't support searching backwards with a regex if (flags & SCFIND_REGEXP) search_backwards = FALSE;
- selection_start = sci_get_selection_start(doc_list[idx].sci); - selection_end = sci_get_selection_end(doc_list[idx].sci); + selection_start = sci_get_selection_start(doc_list[idx].sci); + selection_end = sci_get_selection_end(doc_list[idx].sci); if (selection_end == selection_start) { // no selection so just find the next match document_find_text(idx, find_text, flags, search_backwards); - return; + return -1; } // there's a selection so go to the start before finding to search through it // this ensures there is a match @@ -1000,7 +1002,7 @@
search_pos = document_find_text(idx, find_text, flags, search_backwards); // return if the original selected text did not match (at the start of the selection) - if (search_pos != selection_start) return; + if (search_pos != selection_start) return -1;
if (search_pos != -1) { @@ -1011,13 +1013,13 @@ // select the replacement - find text will skip past the selected text sci_set_selection_start(doc_list[idx].sci, search_pos); sci_set_selection_end(doc_list[idx].sci, search_pos + replace_len); - document_find_text(idx, find_text, flags, search_backwards); } else { // no match in the selection utils_beep(); } + return search_pos; }
Modified: trunk/src/document.h =================================================================== --- trunk/src/document.h 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/document.h 2006-10-22 14:56:05 UTC (rev 914) @@ -143,7 +143,8 @@ * Returns -1 on failure or the start position of the matching text. */ gint document_find_text(gint idx, const gchar *text, gint flags, gboolean search_backwards);
-void document_replace_text(gint, const gchar*, const gchar*, gint, gboolean); +gint document_replace_text(gint idx, const gchar *find_text, const gchar *replace_text, + gint flags, gboolean search_backwards);
void document_replace_all(gint, const gchar*, const gchar*, gint, gboolean);
Modified: trunk/src/search.c =================================================================== --- trunk/src/search.c 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/search.c 2006-10-22 14:56:05 UTC (rev 914) @@ -30,6 +30,7 @@ #include "msgwindow.h" #include "document.h" #include "sciwrappers.h" +#include "ui_utils.h"
#include <unistd.h> #include <string.h> @@ -42,9 +43,11 @@
enum { GEANY_RESPONSE_REPLACE = 1, - GEANY_RESPONSE_REPLACE_ALL, - GEANY_RESPONSE_REPLACE_SEL, - GEANY_RESPONSE_FIND + GEANY_RESPONSE_REPLACE_AND_FIND, + GEANY_RESPONSE_FIND, + GEANY_RESPONSE_REPLACE_IN_SESSION, + GEANY_RESPONSE_REPLACE_IN_FILE, + GEANY_RESPONSE_REPLACE_IN_SEL };
@@ -84,8 +87,6 @@ static GSList *search_get_file_list(const gchar *path, guint *length);
-static void add_find_checkboxes(GtkDialog *dialog); - static void on_find_replace_checkbutton_toggled(GtkToggleButton *togglebutton, gpointer user_data);
@@ -135,7 +136,7 @@ }
-static void add_find_checkboxes(GtkDialog *dialog) +static GtkWidget *add_find_checkboxes(GtkDialog *dialog) { GtkWidget *checkbox1, *checkbox2, *check_regexp, *checkbox4, *checkbox5, *checkbox7, *hbox, *fbox, *mbox; @@ -193,10 +194,18 @@ hbox = gtk_hbox_new(TRUE, 6); gtk_container_add(GTK_CONTAINER(hbox), fbox); gtk_container_add(GTK_CONTAINER(hbox), mbox); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, TRUE, TRUE, 6); + return hbox; }
+#if 0 +static void send_find_dialog_response(GtkButton *button, gpointer user_data) +{ + gtk_dialog_response(GTK_DIALOG(widgets.find_dialog), GPOINTER_TO_INT(user_data)); +} +#endif + + void search_show_find_dialog() { gint idx = document_get_cur_idx(); @@ -212,12 +221,14 @@
if (widgets.find_dialog == NULL) { - GtkWidget *label, *entry, *sbox, *align; + GtkWidget *label, *entry, *sbox, *vbox;
widgets.find_dialog = gtk_dialog_new_with_buttons(_("Find"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, GTK_STOCK_FIND, GTK_RESPONSE_ACCEPT, NULL); + vbox = ui_dialog_vbox_new(GTK_DIALOG(widgets.find_dialog)); + gtk_box_set_spacing(GTK_BOX(vbox), 9);
label = gtk_label_new(_("Search for:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); @@ -239,15 +250,11 @@ sbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(sbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(sbox), entry, TRUE, TRUE, 0); - align = gtk_alignment_new(0, 0, 1, 0); - gtk_alignment_set_padding(GTK_ALIGNMENT(align), 6, 0, 0, 0); - gtk_container_add(GTK_CONTAINER(align), sbox); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(widgets.find_dialog)->vbox), align); + gtk_container_add(GTK_CONTAINER(vbox), sbox);
- add_find_checkboxes(GTK_DIALOG(widgets.find_dialog)); + gtk_container_add(GTK_CONTAINER(vbox), + add_find_checkboxes(GTK_DIALOG(widgets.find_dialog)));
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(widgets.find_dialog)->vbox), 3); - gtk_widget_show_all(widgets.find_dialog); } else @@ -261,6 +268,12 @@ }
+static void send_replace_dialog_response(GtkButton *button, gpointer user_data) +{ + gtk_dialog_response(GTK_DIALOG(widgets.replace_dialog), GPOINTER_TO_INT(user_data)); +} + + void search_show_replace_dialog() { gint idx = document_get_cur_idx(); @@ -277,33 +290,30 @@ if (widgets.replace_dialog == NULL) { GtkWidget *label_find, *label_replace, *entry_find, *entry_replace, - *checkbox6, *checkbox8, *button, *align, *rbox, *fbox, *hbox; - GtkSizeGroup *size_group; + *check_close, *button, *rbox, *fbox, *vbox, *exp, *bbox; + GtkSizeGroup *label_size, *button_size; GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
widgets.replace_dialog = gtk_dialog_new_with_buttons(_("Replace"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, NULL); + vbox = ui_dialog_vbox_new(GTK_DIALOG(widgets.replace_dialog)); + gtk_box_set_spacing(GTK_BOX(vbox), 9);
- button = gtk_button_new_with_mnemonic(_("_In Selection")); - gtk_tooltips_set_tip(tooltips, button, - _("Replace all matches found in the currently selected text"), NULL); - gtk_widget_show(button); - gtk_dialog_add_action_widget(GTK_DIALOG(widgets.replace_dialog), button, - GEANY_RESPONSE_REPLACE_SEL); - button = gtk_button_new_with_mnemonic(_("Replace _All")); - gtk_widget_show(button); - gtk_dialog_add_action_widget(GTK_DIALOG(widgets.replace_dialog), button, - GEANY_RESPONSE_REPLACE_ALL); button = gtk_button_new_from_stock(GTK_STOCK_FIND); - gtk_widget_show(button); gtk_dialog_add_action_widget(GTK_DIALOG(widgets.replace_dialog), button, GEANY_RESPONSE_FIND); button = gtk_button_new_with_mnemonic(_("_Replace")); - gtk_widget_show(button); gtk_dialog_add_action_widget(GTK_DIALOG(widgets.replace_dialog), button, GEANY_RESPONSE_REPLACE); + button = gtk_button_new_with_mnemonic(_("Re_place & Find")); + gtk_dialog_add_action_widget(GTK_DIALOG(widgets.replace_dialog), button, + GEANY_RESPONSE_REPLACE_AND_FIND);
+ button_size = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + gtk_size_group_add_widget(GTK_SIZE_GROUP(button_size), button); + g_object_unref(G_OBJECT(button_size)); + label_find = gtk_label_new(_("Search for:")); gtk_misc_set_alignment(GTK_MISC(label_find), 0, 0.5);
@@ -335,46 +345,60 @@ fbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(fbox), label_find, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(fbox), entry_find, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(widgets.replace_dialog)->vbox), fbox, - FALSE, FALSE, 6);
rbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(rbox), label_replace, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(rbox), entry_replace, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(widgets.replace_dialog)->vbox), rbox, - FALSE, FALSE, 3);
- size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - gtk_size_group_add_widget(size_group, label_find); - gtk_size_group_add_widget(size_group, label_replace); - g_object_unref(G_OBJECT(size_group)); // auto destroy the size group + label_size = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + gtk_size_group_add_widget(label_size, label_find); + gtk_size_group_add_widget(label_size, label_replace); + g_object_unref(G_OBJECT(label_size)); // auto destroy the size group
- add_find_checkboxes(GTK_DIALOG(widgets.replace_dialog)); + gtk_box_pack_start(GTK_BOX(vbox), fbox, TRUE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox), rbox, TRUE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(vbox), + add_find_checkboxes(GTK_DIALOG(widgets.replace_dialog)));
- checkbox6 = gtk_check_button_new_with_mnemonic(_("Replace in all _open files")); - g_object_set_data_full(G_OBJECT(widgets.replace_dialog), "check_all_buffers", - gtk_widget_ref(checkbox6), (GDestroyNotify)gtk_widget_unref); - gtk_tooltips_set_tip(tooltips, checkbox6, - _("Replaces the search text in all opened files. This option is only useful(and used) if you click on "Replace All"."), NULL); - gtk_button_set_focus_on_click(GTK_BUTTON(checkbox6), FALSE); + // Now add the multiple replace options + exp = gtk_expander_new(_("Replace All")); + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 10);
+ button = gtk_button_new_with_mnemonic(_("In Se_lection")); + gtk_tooltips_set_tip(tooltips, button, + _("Replace all matches found in the currently selected text"), NULL); + gtk_container_add(GTK_CONTAINER(bbox), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(send_replace_dialog_response), + GINT_TO_POINTER(GEANY_RESPONSE_REPLACE_IN_SEL)); + + button = gtk_button_new_with_mnemonic(_("In F_ile")); + gtk_container_add(GTK_CONTAINER(bbox), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(send_replace_dialog_response), + GINT_TO_POINTER(GEANY_RESPONSE_REPLACE_IN_FILE)); + + button = gtk_button_new_with_mnemonic(_("In Sessi_on")); + gtk_container_add(GTK_CONTAINER(bbox), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(send_replace_dialog_response), + GINT_TO_POINTER(GEANY_RESPONSE_REPLACE_IN_SESSION)); + + gtk_size_group_add_widget(GTK_SIZE_GROUP(button_size), button); + // Don't close window checkbox - checkbox8 = gtk_check_button_new_with_mnemonic(_("_Don't close this dialog")); - g_object_set_data_full(G_OBJECT(widgets.replace_dialog), "check_dont_close_window", - gtk_widget_ref(checkbox8), (GDestroyNotify) gtk_widget_unref); - gtk_button_set_focus_on_click(GTK_BUTTON(checkbox8), FALSE); - gtk_tooltips_set_tip(tooltips, checkbox8, + check_close = gtk_check_button_new_with_mnemonic(_("Close _dialog")); + g_object_set_data_full(G_OBJECT(widgets.replace_dialog), "check_close", + gtk_widget_ref(check_close), (GDestroyNotify) gtk_widget_unref); + gtk_button_set_focus_on_click(GTK_BUTTON(check_close), FALSE); + gtk_tooltips_set_tip(tooltips, check_close, _("The dialog window won't be closed when you start the operation."), NULL); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_close), TRUE); + gtk_container_add(GTK_CONTAINER(bbox), check_close); + gtk_button_box_set_child_secondary(GTK_BUTTON_BOX(bbox), check_close, TRUE);
- hbox = gtk_hbox_new(TRUE, 6); - gtk_container_add(GTK_CONTAINER(hbox), checkbox6); - gtk_container_add(GTK_CONTAINER(hbox), checkbox8); + gtk_container_add(GTK_CONTAINER(exp), bbox); + gtk_container_add(GTK_CONTAINER(vbox), exp);
- align = gtk_alignment_new(0, 0, 1, 1); - gtk_alignment_set_padding(GTK_ALIGNMENT(align), 0, 9, 0, 0); - gtk_container_add(GTK_CONTAINER(align), hbox); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(widgets.replace_dialog)->vbox), align); - gtk_widget_show_all(widgets.replace_dialog); } else @@ -405,13 +429,15 @@ if (widgets.find_in_files_dialog == NULL) { GtkWidget *label, *label1, *checkbox1, *checkbox2, *check_wholeword; - GtkWidget *dbox, *sbox, *cbox, *rbox, *rbtn, *hbox; + GtkWidget *dbox, *sbox, *cbox, *rbox, *rbtn, *hbox, *vbox; GtkSizeGroup *size_group; GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
widgets.find_in_files_dialog = gtk_dialog_new_with_buttons( _("Find in files"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); + vbox = ui_dialog_vbox_new(GTK_DIALOG(widgets.find_in_files_dialog)); + gtk_box_set_spacing(GTK_BOX(vbox), 9);
gtk_dialog_add_button(GTK_DIALOG(widgets.find_in_files_dialog), "gtk-find", GTK_RESPONSE_ACCEPT); gtk_dialog_set_default_response(GTK_DIALOG(widgets.find_in_files_dialog), @@ -507,15 +533,10 @@ gtk_container_add(GTK_CONTAINER(hbox), rbox); gtk_container_add(GTK_CONTAINER(hbox), cbox);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(widgets.find_in_files_dialog)->vbox), - dbox, TRUE, FALSE, 6); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(widgets.find_in_files_dialog)->vbox), - sbox, TRUE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(widgets.find_in_files_dialog)->vbox), - hbox, TRUE, TRUE, 6); + gtk_container_add(GTK_CONTAINER(vbox), dbox); + gtk_container_add(GTK_CONTAINER(vbox), sbox); + gtk_container_add(GTK_CONTAINER(vbox), hbox);
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(widgets.find_in_files_dialog)->vbox), 6); - g_signal_connect((gpointer) entry1, "key-press-event", G_CALLBACK(on_combo_entry_key_pressed), gtk_bin_get_child(GTK_BIN(combo))); g_signal_connect((gpointer) widgets.find_in_files_dialog, "response", @@ -673,7 +694,7 @@ GtkWidget *entry_find = lookup_widget(GTK_WIDGET(widgets.replace_dialog), "entry_find"); GtkWidget *entry_replace = lookup_widget(GTK_WIDGET(widgets.replace_dialog), "entry_replace"); gint search_flags_re; - gboolean search_backwards_re, search_replace_escape_re, search_in_all_buffers_re; + gboolean search_backwards_re, search_replace_escape_re; gboolean fl1, fl2, fl3, fl4; gboolean close_window; gchar *find, *replace; @@ -692,14 +713,12 @@ lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_regexp"))); fl4 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_wordstart"))); - close_window = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( - lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_dont_close_window"))); + close_window = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( + lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_close"))); search_backwards_re = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_back"))); search_replace_escape_re = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_escape"))); - search_in_all_buffers_re = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( - lookup_widget(GTK_WIDGET(widgets.replace_dialog), "check_all_buffers"))); find = g_strdup(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(entry_find))))); replace = g_strdup(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(entry_replace)))));
@@ -726,45 +745,53 @@ (fl3 ? SCFIND_REGEXP | SCFIND_POSIX : 0) | (fl4 ? SCFIND_WORDSTART : 0);
- if (search_in_all_buffers_re && response == GEANY_RESPONSE_REPLACE_ALL) + switch (response) { - guint i; - for (i = 0; i < doc_array->len; i++) + case GEANY_RESPONSE_REPLACE_AND_FIND: { - if (! doc_list[i].is_valid) continue; - - document_replace_all(i, find, replace, search_flags_re, search_replace_escape_re); + gint rep = document_replace_text(idx, find, replace, search_flags_re, + search_backwards_re); + if (rep != -1) + document_find_text(idx, find, search_flags_re, search_backwards_re); + break; } - if (close_window) gtk_widget_hide(widgets.replace_dialog); - } - else - { - switch (response) + case GEANY_RESPONSE_REPLACE: { - case GEANY_RESPONSE_REPLACE: + document_replace_text(idx, find, replace, search_flags_re, + search_backwards_re); + break; + } + case GEANY_RESPONSE_FIND: + { + document_find_text(idx, find, search_flags_re, search_backwards_re); + break; + } + case GEANY_RESPONSE_REPLACE_IN_FILE: + { + document_replace_all(idx, find, replace, search_flags_re, search_replace_escape_re); + if (close_window) gtk_widget_hide(widgets.replace_dialog); + break; + } + case GEANY_RESPONSE_REPLACE_IN_SESSION: + { + guint i; + for (i = 0; i < doc_array->len; i++) { - document_replace_text(idx, find, replace, search_flags_re, - search_backwards_re); - break; + if (! doc_list[i].is_valid) continue; + + document_replace_all(i, find, replace, search_flags_re, search_replace_escape_re); } - case GEANY_RESPONSE_FIND: - { - document_find_text(idx, find, search_flags_re, search_backwards_re); - break; - } - case GEANY_RESPONSE_REPLACE_ALL: - { - document_replace_all(idx, find, replace, search_flags_re, search_replace_escape_re); - if (close_window) gtk_widget_hide(widgets.replace_dialog); - break; - } - case GEANY_RESPONSE_REPLACE_SEL: - { - document_replace_sel(idx, find, replace, search_flags_re, search_replace_escape_re); - if (close_window) gtk_widget_hide(widgets.replace_dialog); - break; - } + if (close_window) gtk_widget_hide(widgets.replace_dialog); + break; } + case GEANY_RESPONSE_REPLACE_IN_SEL: + { + document_replace_sel(idx, find, replace, search_flags_re, search_replace_escape_re); + if (close_window) gtk_widget_hide(widgets.replace_dialog); + break; + } + default: + geany_debug("Missing reponse in %s.", G_GNUC_FUNCTION); } g_free(find); g_free(replace);
Modified: trunk/src/ui_utils.c =================================================================== --- trunk/src/ui_utils.c 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/ui_utils.c 2006-10-22 14:56:05 UTC (rev 914) @@ -1014,4 +1014,18 @@ }
+const gint BUTTON_BOX_BORDER = 5;
+/* common convenience function for getting a fixed border for dialogs + * that doesn't increase the button box border */ +GtkWidget *ui_dialog_vbox_new(GtkDialog *dialog) +{ + GtkWidget *vbox = gtk_vbox_new(FALSE, 12); // need child vbox to set a separate border. + + gtk_container_set_border_width(GTK_CONTAINER(vbox), BUTTON_BOX_BORDER); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox); + return vbox; +} + + +
Modified: trunk/src/ui_utils.h =================================================================== --- trunk/src/ui_utils.h 2006-10-21 11:34:18 UTC (rev 913) +++ trunk/src/ui_utils.h 2006-10-22 14:56:05 UTC (rev 914) @@ -95,4 +95,6 @@
GtkContainer *ui_frame_new(GtkContainer *parent, const gchar *label_text);
+GtkWidget *ui_dialog_vbox_new(GtkDialog *dialog); + #endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.