[Aptitude-svn-commit] r3891 - in branches/aptitude-0.3/aptitude: . src src/vscreen

Daniel Burrows dburrows at costa.debian.org
Wed Aug 17 17:34:42 UTC 2005


Author: dburrows
Date: Wed Aug 17 17:34:38 2005
New Revision: 3891

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/menu_redirect.h
   branches/aptitude-0.3/aptitude/src/pkg_tree.cc
   branches/aptitude-0.3/aptitude/src/pkg_tree.h
   branches/aptitude-0.3/aptitude/src/pkg_view.cc
   branches/aptitude-0.3/aptitude/src/ui.cc
   branches/aptitude-0.3/aptitude/src/ui.h
   branches/aptitude-0.3/aptitude/src/vscreen/vscreen.cc
Log:
Hook up the backwards search method to the UI.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Wed Aug 17 17:34:38 2005
@@ -1,5 +1,9 @@
 2005-08-17  Daniel Burrows  <dburrows at debian.org>
 
+	* src/menu_redirect.h, src/pkg_tree.cc, src/pkg_tree.h, src/pkg_view.cc, src/ui.cc, src/ui.h, src/vscreen/vscreen.cc:
+
+	  Add UI hooks to support reverse searching.
+
 	* src/vscreen/vs_tree.cc, src/vscreen/vs_tree.h:
 
 	  Add widget support (untested) for reverse searching.

Modified: branches/aptitude-0.3/aptitude/src/menu_redirect.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/menu_redirect.h	(original)
+++ branches/aptitude-0.3/aptitude/src/menu_redirect.h	Wed Aug 17 17:34:38 2005
@@ -68,6 +68,12 @@
   /** Execute the 'search' menu command. */
   virtual bool find_search()=0;
 
+  /** \return \b true if this view knows how to search back. */
+  virtual bool find_search_back_enabled() = 0;
+
+  /** Execute the 'search back' menu command. */
+  virtual bool find_search_back() = 0;
+
   /** \return \b true if this view knows how to search and there is
    *  a "previous search".
    */

Modified: branches/aptitude-0.3/aptitude/src/pkg_tree.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_tree.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/pkg_tree.cc	Wed Aug 17 17:34:38 2005
@@ -49,6 +49,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/algorithms.h>
 
+#include <sigc++/adaptors/bind.h>
 #include <sigc++/adaptors/retype_return.h>
 #include <sigc++/functors/mem_fun.h>
 
@@ -324,9 +325,26 @@
 {
   prompt_string(_("Search for: "),
 		"",
-		arg(sigc::mem_fun(*this, &pkg_tree::do_search)),
+		arg(sigc::bind(sigc::mem_fun(*this, &pkg_tree::do_search), false)),
 		arg(sigc::mem_fun(*this, &pkg_tree::do_cancel_incsearch)),
-		arg(sigc::mem_fun(*this, &pkg_tree::do_incsearch)),
+		arg(sigc::bind(sigc::mem_fun(*this, &pkg_tree::do_incsearch), false)),
+		&search_history);
+
+  return true;
+}
+
+bool pkg_menu_tree::find_search_back_enabled()
+{
+  return get_visible();
+}
+
+bool pkg_menu_tree::find_search_back()
+{
+  prompt_string(_("Search back for: "),
+		"",
+		arg(sigc::bind(sigc::mem_fun(*this, &pkg_tree::do_search), true)),
+		arg(sigc::mem_fun(*this, &pkg_tree::do_cancel_incsearch)),
+		arg(sigc::bind(sigc::mem_fun(*this, &pkg_tree::do_incsearch), true)),
 		&search_history);
 
   return true;
@@ -342,7 +360,10 @@
   if(last_search_matcher)
     {
       pkg_matcher_search searcher(last_search_matcher);
-      search_for(searcher);
+      if(last_search_backwards)
+	search_back_for(searcher);
+      else
+	search_for(searcher);
 
       return true;
     }
@@ -351,6 +372,7 @@
       beep();
       return true;
     }
+
 }
 
 bool pkg_menu_tree::find_limit_enabled()
@@ -383,12 +405,12 @@
   if(!get_visible())
     return false;
 
-  do_search(L"~b");
+  do_search(L"~b", false);
 
   return true;
 }
 
-void pkg_menu_tree::do_search(std::wstring s)
+void pkg_menu_tree::do_search(std::wstring s, bool backward)
 {
   if(s.size()!=0)
     {
@@ -403,15 +425,20 @@
     {
       if(last_search_term.size()!=0 && last_search_matcher)
 	{
+	  last_search_backwards = backward;
+
 	  pkg_matcher_search searcher(last_search_matcher);
-	  search_for(searcher);
+	  if(backward)
+	    search_back_for(searcher);
+	  else
+	    search_for(searcher);
 	}
       else
 	beep();
     }
 }
 
-void pkg_menu_tree::do_incsearch(std::wstring s)
+void pkg_menu_tree::do_incsearch(std::wstring s, bool backward)
 {
   if(!aptcfg->FindB(PACKAGE "::UI::Incremental-Search", true))
     return;
@@ -429,7 +456,10 @@
   if(m)
     {
       pkg_matcher_search searcher(m);
-      search_for(searcher);
+      if(backward)
+	search_back_for(searcher);
+      else
+	search_for(searcher);
     }
 
   delete m;
@@ -455,6 +485,8 @@
   // ick -- but having our own bindings is also ugly. hm.
   if(pkg_tree::bindings->key_matches(k, "Search"))
     find_search();
+  else if(pkg_tree::bindings->key_matches(k, "SearchBack"))
+    find_search_back();
   else if(pkg_tree::bindings->key_matches(k, "ReSearch"))
     find_research();
   else if(pkg_tree::bindings->key_matches(k, "SearchBroken"))

Modified: branches/aptitude-0.3/aptitude/src/pkg_tree.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_tree.h	(original)
+++ branches/aptitude-0.3/aptitude/src/pkg_tree.h	Wed Aug 17 17:34:38 2005
@@ -53,14 +53,17 @@
   /** The string that was compiled to produce the above matcher. */
   std::wstring last_search_term;
 
+  /** If \b true, the last search was a backwards search. */
+  bool last_search_backwards;
+
   /** \b true if an incremental search is in progress. */
   bool doing_incsearch;
 
   /** The iterator that was selected prior to the incremental search. */
   vs_treeiterator pre_incsearch_selected;
 
-  void do_search(std::wstring s);
-  void do_incsearch(std::wstring s);
+  void do_search(std::wstring s, bool backward);
+  void do_incsearch(std::wstring s, bool backward);
   void do_cancel_incsearch();
 
   /** Execute the given action; this is needed because some "wrapper"
@@ -134,9 +137,15 @@
   /** \return \b true; all package trees know how to search. */
   bool find_search_enabled();
 
+  /** \return \b true; all package trees know how to search. */
+  bool find_search_back_enabled();
+
   /** Execute the 'search' menu command. */
   bool find_search();
 
+  /** Execute the 'search backwards' menu command. */
+  bool find_search_back();
+
   /** \return \b true if there is a "previous search". */
   bool find_research_enabled();
 

Modified: branches/aptitude-0.3/aptitude/src/pkg_view.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_view.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/pkg_view.cc	Wed Aug 17 17:34:38 2005
@@ -652,11 +652,21 @@
 					     menu_handler,
 					     &menu_redirect::find_search_enabled));
 
+      find_search_back_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+						  rval.weak_ref(),
+						  menu_handler,
+						  &menu_redirect::find_search_back_enabled));
+
       find_search.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
 				     rval.weak_ref(),
 				     menu_handler,
 				     &menu_redirect::find_search));
 
+      find_search_back.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+					  rval.weak_ref(),
+					  menu_handler,
+					  &menu_redirect::find_search_back));
+
       find_research_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
 					       rval.weak_ref(),
 					       menu_handler,

Modified: branches/aptitude-0.3/aptitude/src/ui.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/ui.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/ui.cc	Wed Aug 17 17:34:38 2005
@@ -138,6 +138,7 @@
 sigc::signal0<bool, accumulate_or> package_changelog_enabled;
 
 sigc::signal0<bool, accumulate_or> find_search_enabled;
+sigc::signal0<bool, accumulate_or> find_search_back_enabled;
 sigc::signal0<bool, accumulate_or> find_research_enabled;
 sigc::signal0<bool, accumulate_or> find_limit_enabled;
 sigc::signal0<bool, accumulate_or> find_cancel_limit_enabled;
@@ -155,6 +156,7 @@
 sigc::signal0<bool, accumulate_or> package_changelog;
 
 sigc::signal0<bool, accumulate_or> find_search;
+sigc::signal0<bool, accumulate_or> find_search_back;
 sigc::signal0<bool, accumulate_or> find_research;
 sigc::signal0<bool, accumulate_or> find_limit;
 sigc::signal0<bool, accumulate_or> find_cancel_limit;
@@ -1540,6 +1542,10 @@
 	       N_("Search for a package"),
 	       sigc::hide_return(find_search.make_slot()),
 	       find_search_enabled.make_slot()),
+  vs_menu_info(vs_menu_info::VS_MENU_ITEM, N_("^Find Backwards"), "SearchBack",
+	       N_("Search backwards for a package"),
+	       sigc::hide_return(find_search_back.make_slot()),
+	       find_search_back_enabled.make_slot()),
   vs_menu_info(vs_menu_info::VS_MENU_ITEM, N_("Find ^Again"), "ReSearch",
 	       N_("Repeat the last search"),
 	       sigc::hide_return(find_research.make_slot()),

Modified: branches/aptitude-0.3/aptitude/src/ui.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/ui.h	(original)
+++ branches/aptitude-0.3/aptitude/src/ui.h	Wed Aug 17 17:34:38 2005
@@ -92,6 +92,9 @@
 /** Tests whether Search -> Find is enabled. */
 extern sigc::signal0<bool, accumulate_or> find_search_enabled;
 
+/** Tests whether Search -> Find Backwards is enabled. */
+extern sigc::signal0<bool, accumulate_or> find_search_back_enabled;
+
 /** Tests whether Search -> Find Again is enabled. */
 extern sigc::signal0<bool, accumulate_or> find_research_enabled;
 
@@ -107,6 +110,9 @@
 /** Emitted for Search -> Find. */
 extern sigc::signal0<bool, accumulate_or> find_search;
 
+/** Emitted for Search -> Find Backwards. */
+extern sigc::signal0<bool, accumulate_or> find_search_back;
+
 /** Emitted for Search -> Find Again. */
 extern sigc::signal0<bool, accumulate_or> find_research;
 

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vscreen.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vscreen.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vscreen.cc	Wed Aug 17 17:34:38 2005
@@ -244,7 +244,6 @@
   cancelkey.push_back(key(L'\e', true));
   cancelkey.push_back(KEY_CTRL(L'['));
 
-  researchkey.push_back(key(L'\\', false));
   researchkey.push_back(key(L'n', true));
 
   init_curses();
@@ -273,6 +272,7 @@
   global_bindings.set("Begin", homekey);
   global_bindings.set("End", endkey);
   global_bindings.set("Search", key(L'/', false));
+  global_bindings.set("SearchBack", key(L'\\', false));
   global_bindings.set("ReSearch", researchkey);
   global_bindings.set("DelBack", delbkey);
   global_bindings.set("DelForward", delfkey);



More information about the Aptitude-svn-commit mailing list