[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