[gedit] Use the interactive search as main search.



commit 40077162bba47bf98f7d808e131ad241a2259e32
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Wed Sep 8 11:36:45 2010 +0200

    Use the interactive search as main search.
    
    Now the interactive search is the main way to search in a document
    if you want the dialog you can always use the replace dialog that provides
    also a way to search.

 gedit/dialogs/gedit-search-dialog.c |  157 ++---------------------------------
 gedit/dialogs/gedit-search-dialog.h |   14 +---
 gedit/gedit-commands-search.c       |   99 ++++------------------
 gedit/gedit-ui.h                    |    2 -
 gedit/gedit-ui.xml                  |    1 -
 gedit/gedit-window.c                |    6 --
 6 files changed, 27 insertions(+), 252 deletions(-)
---
diff --git a/gedit/dialogs/gedit-search-dialog.c b/gedit/dialogs/gedit-search-dialog.c
index 9729581..88da59a 100644
--- a/gedit/dialogs/gedit-search-dialog.c
+++ b/gedit/dialogs/gedit-search-dialog.c
@@ -46,19 +46,8 @@
 						GEDIT_TYPE_SEARCH_DIALOG,              \
 						GeditSearchDialogPrivate))
 
-/* Signals */
-enum
-{
-	SHOW_REPLACE,
-	LAST_SIGNAL
-};
-
-static guint dialog_signals [LAST_SIGNAL] = { 0 };
-
 struct _GeditSearchDialogPrivate 
 {
-	gboolean   show_replace;
-
 	GtkWidget *table;
 	GtkWidget *search_label;
 	GtkWidget *search_entry;
@@ -79,51 +68,6 @@ struct _GeditSearchDialogPrivate
 
 G_DEFINE_TYPE(GeditSearchDialog, gedit_search_dialog, GTK_TYPE_DIALOG)
 
-enum
-{
-	PROP_0,
-	PROP_SHOW_REPLACE
-};
-
-static void
-gedit_search_dialog_set_property (GObject      *object,
-				  guint         prop_id,
-				  const GValue *value,
-				  GParamSpec   *pspec)
-{
-	GeditSearchDialog *dlg = GEDIT_SEARCH_DIALOG (object);
-
-	switch (prop_id)
-	{
-		case PROP_SHOW_REPLACE:
-			gedit_search_dialog_set_show_replace (dlg,
-							      g_value_get_boolean (value));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-			break;
-	}
-}
-
-static void
-gedit_search_dialog_get_property (GObject    *object,
-				  guint       prop_id,
-				  GValue     *value,
-				  GParamSpec *pspec)
-{
-	GeditSearchDialog *dlg = GEDIT_SEARCH_DIALOG (object);
-
-	switch (prop_id)
-	{
-		case PROP_SHOW_REPLACE:
-			g_value_set_boolean (value, dlg->priv->show_replace);
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-			break;
-	}
-}
-
 void
 gedit_search_dialog_present_with_time (GeditSearchDialog *dialog,
 				       guint32            timestamp)
@@ -132,53 +76,15 @@ gedit_search_dialog_present_with_time (GeditSearchDialog *dialog,
 
 	gtk_window_present_with_time (GTK_WINDOW (dialog), timestamp);
 
-	gtk_widget_grab_focus (dialog->priv->search_text_entry);	
-}
-
-static gboolean
-show_replace (GeditSearchDialog *dlg)
-{
-	gedit_search_dialog_set_show_replace (dlg, TRUE);
-	
-	return TRUE;
+	gtk_widget_grab_focus (dialog->priv->search_text_entry);
 }
 
 static void 
 gedit_search_dialog_class_init (GeditSearchDialogClass *klass)
 {
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	GtkBindingSet *binding_set;
-	
-	object_class->set_property = gedit_search_dialog_set_property;
-	object_class->get_property = gedit_search_dialog_get_property;
-	
-	klass->show_replace = show_replace;
-	
-	dialog_signals[SHOW_REPLACE] =
-    		g_signal_new ("show_replace",
-		  	      G_TYPE_FROM_CLASS (object_class),
-		  	      G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-		  	      G_STRUCT_OFFSET (GeditSearchDialogClass, show_replace),
-			      NULL, NULL,
-			      gedit_marshal_BOOLEAN__NONE,
-			      G_TYPE_BOOLEAN, 0);
-			      
-	g_object_class_install_property (object_class, PROP_SHOW_REPLACE,
-					 g_param_spec_boolean ("show-replace",
-					 		       "Show Replace",
-					 		       "Whether the dialog is used for Search&Replace",
-					 		       FALSE,
-					 		       G_PARAM_READWRITE));
 
 	g_type_class_add_private (object_class, sizeof (GeditSearchDialogPrivate));
-
-	binding_set = gtk_binding_set_by_class (klass);
-	
-	/* Note: we cannot use the keyval/modifier associated with the 
-	 * GTK_STOCK_FIND_AND_REPLACE stock item since GNOME HIG suggests Ctrl+h
-	 * for Replace while gtk+ uses Ctrl+r */
-	gtk_binding_entry_add_signal (binding_set, GDK_h, GDK_CONTROL_MASK, "show_replace", 0);
-	gtk_binding_entry_add_signal (binding_set, GDK_H, GDK_CONTROL_MASK, "show_replace", 0);		
 }
 
 static void
@@ -285,31 +191,6 @@ response_handler (GeditSearchDialog *dialog,
 }
 
 static void
-show_replace_widgets (GeditSearchDialog *dlg,
-		      gboolean           show_replace)
-{
-	gtk_widget_set_visible (dlg->priv->replace_label, show_replace);
-	gtk_widget_set_visible (dlg->priv->replace_entry, show_replace);
-	gtk_widget_set_visible (dlg->priv->replace_all_button, show_replace);
-	gtk_widget_set_visible (dlg->priv->replace_button, show_replace);
-
-	if (show_replace)
-	{
-		gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 12);
-
-		gtk_window_set_title (GTK_WINDOW (dlg), _("Replace"));
-	}
-	else
-	{
-		gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 0);
-
-		gtk_window_set_title (GTK_WINDOW (dlg), _("Find"));
-	}
-
-	gtk_widget_show (dlg->priv->find_button);
-}
-
-static void
 gedit_search_dialog_init (GeditSearchDialog *dlg)
 {
 	GtkWidget *content;
@@ -325,6 +206,7 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
 
 	gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE);
 	gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE);
+	gtk_window_set_title (GTK_WINDOW (dlg), _("Replace"));
 
 	gtk_dialog_add_buttons (GTK_DIALOG (dlg),
 				GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
@@ -369,6 +251,8 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
 		return;
 	}
 
+	gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 12);
+
 	dlg->priv->search_entry = gedit_history_entry_new ("search-for-entry",
 							   TRUE);
 	gtk_widget_set_size_request (dlg->priv->search_entry, 300, -1);
@@ -380,7 +264,6 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
 			(GEDIT_HISTORY_ENTRY (dlg->priv->search_entry));
 	gtk_entry_set_activates_default (GTK_ENTRY (dlg->priv->search_text_entry),
 					 TRUE);
-	gtk_widget_show (dlg->priv->search_entry);
 	gtk_table_attach_defaults (GTK_TABLE (dlg->priv->table),
 				   dlg->priv->search_entry,
 				   1, 2, 0, 1);
@@ -395,7 +278,6 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
 			(GEDIT_HISTORY_ENTRY (dlg->priv->replace_entry));
 	gtk_entry_set_activates_default (GTK_ENTRY (dlg->priv->replace_text_entry),
 					 TRUE);
-	gtk_widget_show (dlg->priv->replace_entry);
 	gtk_table_attach_defaults (GTK_TABLE (dlg->priv->table),
 				   dlg->priv->replace_entry,
 				   1, 2, 1, 2);
@@ -459,16 +341,16 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
 			  "response",
 			  G_CALLBACK (response_handler),
 			  NULL);
+
+	gtk_widget_show_all (GTK_WIDGET (dlg));
 }
 
 GtkWidget *
-gedit_search_dialog_new (GtkWindow *parent,
-			 gboolean   show_replace)
+gedit_search_dialog_new (GtkWindow *parent)
 {
 	GeditSearchDialog *dlg;
 
 	dlg = g_object_new (GEDIT_TYPE_SEARCH_DIALOG,
-			    "show-replace", show_replace,
 			    NULL);
 
 	if (parent != NULL)
@@ -483,29 +365,6 @@ gedit_search_dialog_new (GtkWindow *parent,
 	return GTK_WIDGET (dlg);
 }
 
-gboolean
-gedit_search_dialog_get_show_replace (GeditSearchDialog *dialog)
-{
-	g_return_val_if_fail (GEDIT_IS_SEARCH_DIALOG (dialog), FALSE);
-
-	return dialog->priv->show_replace;
-}
-
-void
-gedit_search_dialog_set_show_replace (GeditSearchDialog *dialog,
-				      gboolean           show_replace)
-{
-	g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (dialog));
-
-	if (dialog->priv->ui_error)
-		return;
-
-	dialog->priv->show_replace = show_replace != FALSE;
-	show_replace_widgets (dialog, dialog->priv->show_replace);
-
-	g_object_notify (G_OBJECT (dialog), "show-replace");
-}
-
 void
 gedit_search_dialog_set_search_text (GeditSearchDialog *dialog,
 				     const gchar       *text)
@@ -522,7 +381,7 @@ gedit_search_dialog_set_search_text (GeditSearchDialog *dialog,
 					   
 	gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
 					   GEDIT_SEARCH_DIALOG_REPLACE_ALL_RESPONSE,
-					   (text != '\0'));					   
+					   (text != '\0'));
 }
 
 /*
diff --git a/gedit/dialogs/gedit-search-dialog.h b/gedit/dialogs/gedit-search-dialog.h
index 3b07e3d..4ebd3be 100644
--- a/gedit/dialogs/gedit-search-dialog.h
+++ b/gedit/dialogs/gedit-search-dialog.h
@@ -67,12 +67,9 @@ struct _GeditSearchDialog
  */
 typedef struct _GeditSearchDialogClass GeditSearchDialogClass;
 
-struct _GeditSearchDialogClass 
+struct _GeditSearchDialogClass
 {
 	GtkDialogClass parent_class;
-	
-	/* Key bindings */
-	gboolean (* show_replace) (GeditSearchDialog *dlg);
 };
 
 enum
@@ -87,18 +84,11 @@ enum
  */
 GType 		 gedit_search_dialog_get_type 		(void) G_GNUC_CONST;
 
-GtkWidget	*gedit_search_dialog_new		(GtkWindow         *parent,
-							 gboolean           show_replace);
+GtkWidget	*gedit_search_dialog_new		(GtkWindow         *parent);
 
 void		 gedit_search_dialog_present_with_time	(GeditSearchDialog *dialog,
 							 guint32            timestamp);
 
-gboolean	 gedit_search_dialog_get_show_replace	(GeditSearchDialog *dialog);
-
-void		 gedit_search_dialog_set_show_replace	(GeditSearchDialog *dialog,
-							 gboolean           show_replace);
-
-
 void		 gedit_search_dialog_set_search_text	(GeditSearchDialog *dialog,
 							 const gchar       *text);
 const gchar	*gedit_search_dialog_get_search_text	(GeditSearchDialog *dialog);
diff --git a/gedit/gedit-commands-search.c b/gedit/gedit-commands-search.c
index f267189..3ba8d6c 100644
--- a/gedit/gedit-commands-search.c
+++ b/gedit/gedit-commands-search.c
@@ -483,12 +483,11 @@ search_dialog_destroyed (GeditWindow       *window,
 }
 
 static GtkWidget *
-create_dialog (GeditWindow *window,
-	       gboolean     show_replace)
+create_dialog (GeditWindow *window)
 {
 	GtkWidget *dialog;
 
-	dialog = gedit_search_dialog_new (GTK_WINDOW (window), show_replace);
+	dialog = gedit_search_dialog_new (GTK_WINDOW (window));
 
 	g_signal_connect (dialog,
 			  "response",
@@ -514,57 +513,24 @@ void
 _gedit_cmd_search_find (GtkAction   *action,
 			GeditWindow *window)
 {
-	gpointer data;
-	GtkWidget *search_dialog;
-	GeditDocument *doc;
-	gboolean selection_exists;
-	gchar *find_text = NULL;
-	gint sel_len;
+	GeditView *active_view;
 
 	gedit_debug (DEBUG_COMMANDS);
 
-	data = g_object_get_data (G_OBJECT (window), GEDIT_SEARCH_DIALOG_KEY);
-
-	if (data == NULL)
-	{
-		search_dialog = create_dialog (window, FALSE);
-	}
-	else
-	{
-		g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (data));
-		
-		search_dialog = GTK_WIDGET (data);
-		
-		/* turn the dialog into a find dialog if needed */
-		if (gedit_search_dialog_get_show_replace (GEDIT_SEARCH_DIALOG (search_dialog)))
-		{
-			gedit_search_dialog_set_show_replace (GEDIT_SEARCH_DIALOG (search_dialog),
-							      FALSE);
-		}
-	}
-
-	doc = gedit_window_get_active_document (window);
-	g_return_if_fail (doc != NULL);
-
-	selection_exists = get_selected_text (GTK_TEXT_BUFFER (doc),
-					      &find_text,
-					      &sel_len);
-
-	if (selection_exists && find_text != NULL && sel_len < 80)
-	{
-		gedit_search_dialog_set_search_text (GEDIT_SEARCH_DIALOG (search_dialog),
-						     find_text);
-		g_free (find_text);
-	}
-	else
-	{
-		g_free (find_text);
-	}
+	active_view = gedit_window_get_active_view (window);
+	if (active_view == NULL)
+		return;
 
-	gtk_widget_show (search_dialog);
-	last_search_data_restore_position (GEDIT_SEARCH_DIALOG (search_dialog));
-	gedit_search_dialog_present_with_time (GEDIT_SEARCH_DIALOG (search_dialog),
-					       GDK_CURRENT_TIME);
+	/* Focus the view if needed: we need to focus the view otherwise 
+	   activating the binding for goto line has no effect */
+	gtk_widget_grab_focus (GTK_WIDGET (active_view));
+	
+	/* incremental search is builtin in GeditView, just activate
+	 * the corresponding binding.
+	 */
+	gtk_bindings_activate (GTK_OBJECT (active_view),
+			       GDK_k,
+			       GDK_CONTROL_MASK);
 }
 
 void
@@ -584,20 +550,13 @@ _gedit_cmd_search_replace (GtkAction   *action,
 
 	if (data == NULL)
 	{
-		replace_dialog = create_dialog (window, TRUE);
+		replace_dialog = create_dialog (window);
 	}
 	else
 	{
 		g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (data));
 		
 		replace_dialog = GTK_WIDGET (data);
-		
-		/* turn the dialog into a find dialog if needed */
-		if (!gedit_search_dialog_get_show_replace (GEDIT_SEARCH_DIALOG (replace_dialog)))
-		{
-			gedit_search_dialog_set_show_replace (GEDIT_SEARCH_DIALOG (replace_dialog),
-							      TRUE);
-		}
 	}
 
 	doc = gedit_window_get_active_document (window);
@@ -701,28 +660,4 @@ _gedit_cmd_search_goto_line (GtkAction   *action,
 			       GDK_CONTROL_MASK);
 }
 
-void
-_gedit_cmd_search_incremental_search (GtkAction   *action,
-				      GeditWindow *window)
-{
-	GeditView *active_view;
-
-	gedit_debug (DEBUG_COMMANDS);
-
-	active_view = gedit_window_get_active_view (window);
-	if (active_view == NULL)
-		return;
-
-	/* Focus the view if needed: we need to focus the view otherwise 
-	   activating the binding for goto line has no effect */
-	gtk_widget_grab_focus (GTK_WIDGET (active_view));
-	
-	/* incremental search is builtin in GeditView, just activate
-	 * the corresponding binding.
-	 */
-	gtk_bindings_activate (GTK_OBJECT (active_view),
-			       GDK_k,
-			       GDK_CONTROL_MASK);
-}
-
 /* ex:ts=8:noet: */
diff --git a/gedit/gedit-ui.h b/gedit/gedit-ui.h
index 3477e32..f9aa3d4 100644
--- a/gedit/gedit-ui.h
+++ b/gedit/gedit-ui.h
@@ -125,8 +125,6 @@ static const GtkActionEntry gedit_menu_entries[] =
 	  N_("Clear highlighting of search matches"), G_CALLBACK (_gedit_cmd_search_clear_highlight) },
 	{ "SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<control>I",
 	  N_("Go to a specific line"), G_CALLBACK (_gedit_cmd_search_goto_line) },
-	{ "SearchIncrementalSearch", GTK_STOCK_FIND, N_("_Incremental Search..."), "<control>K",
-	  N_("Incrementally search for text"), G_CALLBACK (_gedit_cmd_search_incremental_search) },
 
 	/* Documents menu */
 	{ "FileSaveAll", GTK_STOCK_SAVE, N_("_Save All"), "<shift><control>L",
diff --git a/gedit/gedit-ui.xml b/gedit/gedit-ui.xml
index a97e679..e8ff81c 100644
--- a/gedit/gedit-ui.xml
+++ b/gedit/gedit-ui.xml
@@ -93,7 +93,6 @@
       <menuitem name="SearchFindMenu" action="SearchFind"/>
       <menuitem name="SearchFindNextMenu" action="SearchFindNext"/>
       <menuitem name="SearchFindPreviousMenu" action="SearchFindPrevious"/>
-      <menuitem name="SearchIncrementalSearchMenu" action="SearchIncrementalSearch"/>
       <placeholder name="SearchOps_1" />
       <separator/>
       <placeholder name="SearchOps_2" />
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 765c306..6da3d66 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -932,12 +932,6 @@ set_sensitivity_according_to_tab (GeditWindow *window,
 				   state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
 
 	action = gtk_action_group_get_action (window->priv->action_group,
-					      "SearchIncrementalSearch");
-	gtk_action_set_sensitive (action,
-				  (state_normal ||
-				   state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
-
-	action = gtk_action_group_get_action (window->priv->action_group,
 					      "SearchReplace");
 	gtk_action_set_sensitive (action,
 				  state_normal &&



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]