[Aptitude-svn-commit] r4197 - in branches/aptitude-0.3/aptitude: .
src
Daniel Burrows
dburrows at costa.debian.org
Fri Sep 23 01:42:59 UTC 2005
Author: dburrows
Date: Fri Sep 23 01:42:55 2005
New Revision: 4197
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/menu_tree.cc
branches/aptitude-0.3/aptitude/src/menu_tree.h
branches/aptitude-0.3/aptitude/src/pkg_item.cc
branches/aptitude-0.3/aptitude/src/pkg_item.h
branches/aptitude-0.3/aptitude/src/pkg_node.cc
branches/aptitude-0.3/aptitude/src/pkg_node.h
branches/aptitude-0.3/aptitude/src/pkg_ver_item.cc
branches/aptitude-0.3/aptitude/src/pkg_ver_item.h
branches/aptitude-0.3/aptitude/src/solution_item.cc
branches/aptitude-0.3/aptitude/src/solution_item.h
Log:
Split up the monstrosity of menu_tree and make it much saner.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Fri Sep 23 01:42:55 2005
@@ -1,5 +1,12 @@
2005-09-22 Daniel Burrows <dburrows at debian.org>
+ * src/menu_tree.cc, src/menu_tree.h, src/pkg_item.cc, src/pkg_item.h, src/pkg_node.cc, src/pkg_node.h, src/pkg_ver_item.cc, src/pkg_ver_item.h, src/solution_item.cc, src/solution_item.h:
+
+ Split up the menu_tree monstrosity and eliminate most of the
+ dynamic_casts. Now it just does a single dynamic_cast of the
+ currently selected item to the menu_redirect interface; if the
+ cast succeeds, it just proxies for the result.
+
* src/solution_screen.cc:
D'oh, connect up the bindings to the examiner, not the info
Modified: branches/aptitude-0.3/aptitude/src/menu_tree.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/menu_tree.cc (original)
+++ branches/aptitude-0.3/aptitude/src/menu_tree.cc Fri Sep 23 01:42:55 2005
@@ -75,304 +75,124 @@
delete last_search_matcher;
}
-pkg_tree_node *menu_tree::pkg_node_selection()
+bool menu_tree::proxy_redirect(bool (menu_redirect::*call)())
{
- vs_treeiterator i=get_selected();
-
- if(i==get_end())
- return NULL;
- else
- return dynamic_cast<pkg_tree_node *>(&*i);
-}
-
-solution_item *menu_tree::solution_selection()
-{
- vs_treeiterator i = get_selected();
-
- if(i == get_end())
- return NULL;
- else
- return dynamic_cast<solution_item *>(&*i);
-}
+ if(!get_visible())
+ return false;
-bool menu_tree::pkg_or_ver_selected()
-{
- pkg_tree_node *curr = pkg_node_selection();
+ vs_treeiterator curr = get_selected();
+ if(curr == get_end())
+ return false;
- if(curr && (dynamic_cast<pkg_item*>(curr) ||
- dynamic_cast<pkg_ver_item*>(curr)))
- return true;
- else
+ menu_redirect *proxied = dynamic_cast<menu_redirect *>(&*curr);
+ if(proxied == NULL)
return false;
+
+ return (proxied->*call)();
}
bool menu_tree::package_enabled()
{
- return get_visible() && pkg_node_selection()!=NULL;
-}
-
-bool menu_tree::package_action(void (pkg_tree_node::* action)(undo_group *))
-{
- if(!get_visible())
- return false;
-
- pkg_tree_node *curr = pkg_node_selection();
-
- if(curr)
- {
- undo_group *grp=new apt_undo_group;
-
- (curr->*action)(grp);
-
- if(!grp->empty())
- apt_undos->add_item(grp);
- else
- delete grp;
-
- if(aptcfg->FindB(PACKAGE "::UI::Advance-On-Action", false))
- level_line_down();
-
- package_states_changed();
-
- return true;
- }
- else
- return false;
+ return proxy_redirect(&menu_redirect::package_enabled);
}
bool menu_tree::package_install()
{
- return package_action(&pkg_tree_node::select);
+ return proxy_redirect(&menu_redirect::package_install);
}
bool menu_tree::package_remove()
{
- return package_action(&pkg_tree_node::remove);
+ return proxy_redirect(&menu_redirect::package_remove);
}
bool menu_tree::package_purge()
{
- return package_action(&pkg_tree_node::purge);
+ return proxy_redirect(&menu_redirect::package_purge);
}
bool menu_tree::package_keep()
{
- return package_action(&pkg_tree_node::keep);
+ return proxy_redirect(&menu_redirect::package_keep);
}
bool menu_tree::package_hold()
{
- return package_action(&pkg_tree_node::hold);
+ return proxy_redirect(&menu_redirect::package_hold);
}
bool menu_tree::package_mark_auto()
{
- return package_action(&pkg_tree_node::mark_auto);
+ return proxy_redirect(&menu_redirect::package_mark_auto);
}
bool menu_tree::package_unmark_auto()
{
- return package_action(&pkg_tree_node::unmark_auto);
+ return proxy_redirect(&menu_redirect::package_unmark_auto);
}
bool menu_tree::package_forbid_enabled()
{
- return get_visible() && pkg_or_ver_selected();
+ return proxy_redirect(&menu_redirect::package_forbid_enabled);
}
bool menu_tree::package_forbid()
{
- if(!get_visible())
- return false;
-
- pkg_tree_node *curr = pkg_node_selection();
-
- if(!curr)
- return false;
-
- pkg_item *pitem=dynamic_cast<pkg_item*>(curr);
- if(pitem)
- {
- undo_group *grp=new apt_undo_group;
-
- pitem->forbid_upgrade(grp);
-
- if(!grp->empty())
- apt_undos->add_item(grp);
- else
- delete grp;
-
- if(aptcfg->FindB(PACKAGE "::UI::Advance-On-Action", false))
- level_line_down();
-
- package_states_changed();
-
- return true;
- }
- else
- {
- pkg_ver_item *pvitem=dynamic_cast<pkg_ver_item*>(curr);
-
- if(pvitem)
- {
- undo_group *grp=new apt_undo_group;
-
- pvitem->forbid_version(grp);
-
- if(!grp->empty())
- apt_undos->add_item(grp);
- else
- delete grp;
-
- if(aptcfg->FindB(PACKAGE "::UI::Advance-On-Action", false))
- level_line_down();
-
- package_states_changed();
-
- return true;
- }
- else
- return false;
- }
+ return proxy_redirect(&menu_redirect::package_forbid);
}
bool menu_tree::package_changelog_enabled()
{
- return get_visible() && pkg_or_ver_selected();
+ return proxy_redirect(&menu_redirect::package_changelog_enabled);
}
bool menu_tree::package_changelog()
{
- if(!get_visible())
- return false;
-
- pkg_tree_node *curr = pkg_node_selection();
-
- if(!curr)
- return false;
-
- pkg_item *pitem=dynamic_cast<pkg_item*>(curr);
- if(pitem)
- {
- pitem->show_changelog();
- return true;
- }
- else
- {
- pkg_ver_item *pvitem=dynamic_cast<pkg_ver_item*>(curr);
-
- if(pvitem)
- {
- view_changelog(pvitem->get_version());
- return true;
- }
- else
- return false;
- }
+ return proxy_redirect(&menu_redirect::package_changelog);
}
bool menu_tree::package_information_enabled()
{
- return get_visible() && pkg_or_ver_selected();
+ return proxy_redirect(&menu_redirect::package_information_enabled);
}
bool menu_tree::package_information()
{
- if(!get_visible())
- return false;
-
- pkg_tree_node *curr = pkg_node_selection();
-
- if(!curr)
- return false;
-
- pkg_item *pitem=dynamic_cast<pkg_item*>(curr);
- if(pitem)
- {
- pitem->show_information();
- return true;
- }
- else
- {
- pkg_ver_item *pvitem=dynamic_cast<pkg_ver_item*>(curr);
-
- if(pvitem)
- {
- pvitem->show_information();
- return true;
- }
- else
- return false;
- }
+ return proxy_redirect(&menu_redirect::package_information);
}
-
bool menu_tree::resolver_toggle_rejected()
{
- if(!get_visible())
- return false;
-
- solution_item *item = solution_selection();
- if(item == NULL)
- return false;
-
- item->toggle_rejected();
- return true;
+ return proxy_redirect(&menu_redirect::resolver_toggle_rejected);
}
bool menu_tree::resolver_toggle_rejected_enabled()
{
- return get_visible() && solution_selection() != NULL;
+ return proxy_redirect(&menu_redirect::resolver_toggle_rejected_enabled);
}
bool menu_tree::resolver_toggle_approved()
{
- if(!get_visible())
- return false;
-
- solution_item *item = solution_selection();
- if(item == NULL)
- return false;
-
- item->toggle_mandated();
- return true;
+ return proxy_redirect(&menu_redirect::resolver_toggle_approved);
}
-/// \todo eliminate casts as described in the .h
bool menu_tree::resolver_toggle_approved_enabled()
{
- return get_visible() && solution_selection() != NULL;
+ return proxy_redirect(&menu_redirect::resolver_toggle_approved_enabled);
}
bool menu_tree::resolver_view_target()
{
- vs_treeiterator i = get_selected();
-
- if(i == get_end())
- return false;
-
- solution_act_item *item = dynamic_cast<solution_act_item *>(&*i);
-
- if(item == NULL)
- return false;
-
- item->show_target_info();
- return true;
+ return proxy_redirect(&menu_redirect::resolver_view_target);
}
bool menu_tree::resolver_view_target_enabled()
{
- vs_treeiterator i = get_selected();
-
- if(i == get_end())
- return false;
-
- solution_act_item *item = dynamic_cast<solution_act_item *>(&*i);
-
- return item != NULL;
+ return proxy_redirect(&menu_redirect::resolver_view_target_enabled);
}
+
bool menu_tree::find_search_enabled()
{
return get_visible();
Modified: branches/aptitude-0.3/aptitude/src/menu_tree.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/menu_tree.h (original)
+++ branches/aptitude-0.3/aptitude/src/menu_tree.h Fri Sep 23 01:42:55 2005
@@ -46,6 +46,11 @@
*/
class menu_tree:public vs_tree, public menu_redirect
{
+ /** Proxy the given call to the currently selected item, if it
+ * implements the menu_redirect interface.
+ */
+ bool proxy_redirect(bool (menu_redirect::*)());
+
/** Return the selected node, if any, or \b NULL if no node is selected. */
pkg_tree_node *pkg_node_selection();
Modified: branches/aptitude-0.3/aptitude/src/pkg_item.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_item.cc (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_item.cc Fri Sep 23 01:42:55 2005
@@ -524,3 +524,48 @@
{
return visible_version(package);
}
+
+//////////////////////// Menu redirections: /////////////////////////////
+
+bool pkg_item::package_forbid_enabled()
+{
+ return true;
+}
+
+bool pkg_item::package_forbid()
+{
+ undo_group *grp=new apt_undo_group;
+
+ forbid_upgrade(grp);
+
+ if(!grp->empty())
+ apt_undos->add_item(grp);
+ else
+ delete grp;
+
+ package_states_changed();
+
+ return true;
+}
+
+bool pkg_item::package_changelog_enabled()
+{
+ return true;
+}
+
+bool pkg_item::package_changelog()
+{
+ show_changelog();
+ return true;
+}
+
+bool pkg_item::package_information_enabled()
+{
+ return true;
+}
+
+bool pkg_item::package_information()
+{
+ show_information();
+ return true;
+}
Modified: branches/aptitude-0.3/aptitude/src/pkg_item.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_item.h (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_item.h Fri Sep 23 01:42:55 2005
@@ -88,6 +88,14 @@
* \param highlighted if \b true, the package is highlighted
*/
static style pkg_style(pkgCache::PkgIterator package, bool highlighted);
+
+ // Menu redirections:
+ bool package_forbid_enabled();
+ bool package_forbid();
+ bool package_changelog_enabled();
+ bool package_changelog();
+ bool package_information_enabled();
+ bool package_information();
};
#endif
Modified: branches/aptitude-0.3/aptitude/src/pkg_node.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_node.cc (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_node.cc Fri Sep 23 01:42:55 2005
@@ -80,3 +80,180 @@
return true;
}
+
+//////////////////////////// Menu Redirections //////////////////////////
+
+bool pkg_tree_node::package_action(void (pkg_tree_node::* action)(undo_group *))
+{
+ undo_group *grp = new apt_undo_group;
+ (this->*action)(grp);
+ if(!grp->empty())
+ apt_undos->add_item(grp);
+ else
+ delete grp;
+
+ package_states_changed();
+
+ return true;
+}
+
+bool pkg_tree_node::package_enabled()
+{
+ return true;
+}
+
+bool pkg_tree_node::package_install()
+{
+ return package_action(&pkg_tree_node::select);
+
+}
+
+bool pkg_tree_node::package_remove()
+{
+ return package_action(&pkg_tree_node::remove);
+}
+
+bool pkg_tree_node::package_purge()
+{
+ return package_action(&pkg_tree_node::purge);
+}
+
+bool pkg_tree_node::package_keep()
+{
+ return package_action(&pkg_tree_node::keep);
+}
+
+bool pkg_tree_node::package_hold()
+{
+ return package_action(&pkg_tree_node::hold);
+}
+
+bool pkg_tree_node::package_mark_auto()
+{
+ return package_action(&pkg_tree_node::mark_auto);
+}
+
+bool pkg_tree_node::package_unmark_auto()
+{
+ return package_action(&pkg_tree_node::unmark_auto);
+}
+
+bool pkg_tree_node::package_forbid_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::package_forbid()
+{
+ return false;
+}
+
+bool pkg_tree_node::package_changelog_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::package_changelog()
+{
+ return false;
+}
+
+bool pkg_tree_node::package_information_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::package_information()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_toggle_rejected()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_toggle_rejected_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_toggle_approved()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_toggle_approved_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_view_target()
+{
+ return false;
+}
+
+bool pkg_tree_node::resolver_view_target_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_search_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_search()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_search_back_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_search_back()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_research_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_research()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_limit_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_limit()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_reset_limit_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_reset_limit()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_broken_enabled()
+{
+ return false;
+}
+
+bool pkg_tree_node::find_broken()
+{
+ return false;
+}
Modified: branches/aptitude-0.3/aptitude/src/pkg_node.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_node.h (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_node.h Fri Sep 23 01:42:55 2005
@@ -23,15 +23,21 @@
#ifndef PKG_NODE_H
#define PKG_NODE_H
+#include "menu_redirect.h"
+
#include <vscreen/vs_treeitem.h>
#include <generic/undo.h>
class undo_group;
class keybindings;
-class pkg_tree_node:virtual public vs_treeitem
+class pkg_tree_node:virtual public vs_treeitem, public menu_redirect
// Provides some extra package-related interfaces.
{
+ /** Used to convert calls via the menu interface to wrapped
+ * invocations of the low-level action methods.
+ */
+ bool package_action(void (pkg_tree_node::* action)(undo_group *));
public:
virtual void select(undo_group *undo)=0;
virtual void hold(undo_group *undo)=0;
@@ -51,6 +57,40 @@
static keybindings *bindings;
static void init_bindings();
+
+ // Menu redirections:
+ bool package_enabled();
+ bool package_install();
+ bool package_remove();
+ bool package_purge();
+ bool package_hold();
+ bool package_keep();
+ bool package_mark_auto();
+ bool package_unmark_auto();
+ bool package_forbid_enabled();
+ bool package_forbid();
+ bool package_information_enabled();
+ bool package_information();
+ bool package_changelog_enabled();
+ bool package_changelog();
+ bool resolver_toggle_approved();
+ bool resolver_toggle_approved_enabled();
+ bool resolver_toggle_rejected();
+ bool resolver_toggle_rejected_enabled();
+ bool resolver_view_target();
+ bool resolver_view_target_enabled();
+ bool find_search_enabled();
+ bool find_search();
+ bool find_search_back_enabled();
+ bool find_search_back();
+ bool find_research_enabled();
+ bool find_research();
+ bool find_limit_enabled();
+ bool find_limit();
+ bool find_reset_limit_enabled();
+ bool find_reset_limit();
+ bool find_broken_enabled();
+ bool find_broken();
};
#endif
Modified: branches/aptitude-0.3/aptitude/src/pkg_ver_item.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_ver_item.cc (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_ver_item.cc Fri Sep 23 01:42:55 2005
@@ -753,3 +753,49 @@
else
return pkg_tree_node::dispatch_key(k, owner);
}
+
+
+////////////////////////// Menu redirections: ////////////////////////////
+
+bool pkg_ver_item::package_forbid_enabled()
+{
+ return true;
+}
+
+bool pkg_ver_item::package_forbid()
+{
+ undo_group *grp = new apt_undo_group;
+
+ forbid_version(grp);
+
+ if(!grp->empty())
+ apt_undos->add_item(grp);
+ else
+ delete grp;
+
+ package_states_changed();
+ return true;
+}
+
+bool pkg_ver_item::package_changelog_enabled()
+{
+ return true;
+}
+
+bool pkg_ver_item::package_changelog()
+{
+ view_changelog(get_version());
+ return true;
+}
+
+bool pkg_ver_item::package_information_enabled()
+{
+ return true;
+}
+
+bool pkg_ver_item::package_information()
+{
+ show_information();
+ return true;
+}
+
Modified: branches/aptitude-0.3/aptitude/src/pkg_ver_item.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_ver_item.h (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_ver_item.h Fri Sep 23 01:42:55 2005
@@ -79,6 +79,15 @@
pkg_ver_item *get_sig();
static style ver_style(pkgCache::VerIterator version);
+
+
+ // Menu redirections:
+ bool package_forbid_enabled();
+ bool package_forbid();
+ bool package_changelog_enabled();
+ bool package_changelog();
+ bool package_information_enabled();
+ bool package_information();
};
class versort:public sortpolicy
Modified: branches/aptitude-0.3/aptitude/src/solution_item.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/solution_item.cc (original)
+++ branches/aptitude-0.3/aptitude/src/solution_item.cc Fri Sep 23 01:42:55 2005
@@ -169,6 +169,72 @@
return true;
}
+
+//////////////////////////// Menu Redirections //////////////////////////
+
+bool solution_item::package_enabled() { return false; }
+bool solution_item::package_install() { return false; }
+bool solution_item::package_remove() { return false; }
+bool solution_item::package_purge() { return false; }
+bool solution_item::package_hold() { return false; }
+bool solution_item::package_keep() { return false; }
+bool solution_item::package_mark_auto() { return false; }
+bool solution_item::package_unmark_auto() { return false; }
+bool solution_item::package_forbid_enabled() { return false; }
+bool solution_item::package_forbid() { return false; }
+bool solution_item::package_information_enabled() { return false; }
+bool solution_item::package_information() { return false; }
+bool solution_item::package_changelog_enabled() { return false; }
+bool solution_item::package_changelog() { return false; }
+
+bool solution_item::resolver_toggle_approved()
+{
+ toggle_mandated();
+ return true;
+}
+
+bool solution_item::resolver_toggle_approved_enabled()
+{
+ return true;
+}
+
+bool solution_item::resolver_toggle_rejected()
+{
+ toggle_rejected();
+ return true;
+}
+
+bool solution_item::resolver_toggle_rejected_enabled()
+{
+ return true;
+}
+
+bool solution_item::resolver_view_target()
+{
+ return false;
+}
+
+bool solution_item::resolver_view_target_enabled()
+{
+ return false;
+}
+
+bool solution_item::find_search_enabled() { return false; }
+bool solution_item::find_search() { return false; }
+bool solution_item::find_search_back_enabled() { return false; }
+bool solution_item::find_search_back() { return false; }
+bool solution_item::find_research_enabled() { return false; }
+bool solution_item::find_research() { return false; }
+bool solution_item::find_limit_enabled() { return false; }
+bool solution_item::find_limit() { return false; }
+bool solution_item::find_reset_limit_enabled() { return false; }
+bool solution_item::find_reset_limit() { return false; }
+bool solution_item::find_broken_enabled() { return false; }
+bool solution_item::find_broken() { return false; }
+
+
+/////////////////////////////////////////////////////////////////////////
+
bool solution_act_item::is_rejected()
{
assert(resman->resolver_exists());
@@ -336,6 +402,20 @@
}
}
+bool solution_act_item::view_target_enabled()
+{
+ return true;
+}
+
+bool solution_act_item::view_target()
+{
+ show_target_info();
+ return true;
+}
+
+
+
+
void solution_act_item_bare::paint(vs_tree *win, int y, bool hierarchical, const style &st)
{
unsigned int basex = hierarchical ? 2*get_depth() : 0;
Modified: branches/aptitude-0.3/aptitude/src/solution_item.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/solution_item.h (original)
+++ branches/aptitude-0.3/aptitude/src/solution_item.h Fri Sep 23 01:42:55 2005
@@ -22,6 +22,8 @@
#ifndef SOLUTION_ITEM_H
#define SOLUTION_ITEM_H
+#include "menu_redirect.h"
+
#include <sigc++/slot.h>
#include <generic/aptitude_resolver_universe.h>
@@ -31,7 +33,7 @@
class fragment;
-class solution_item : public vs_treeitem
+class solution_item : public vs_treeitem, public menu_redirect
{
public:
const wchar_t *tag();
@@ -75,6 +77,40 @@
style get_normal_style();
bool dispatch_key(const key &k, vs_tree *owner);
+
+ // Menu redirections:
+ bool package_enabled();
+ bool package_install();
+ bool package_remove();
+ bool package_purge();
+ bool package_hold();
+ bool package_keep();
+ bool package_mark_auto();
+ bool package_unmark_auto();
+ bool package_forbid_enabled();
+ bool package_forbid();
+ bool package_information_enabled();
+ bool package_information();
+ bool package_changelog_enabled();
+ bool package_changelog();
+ bool resolver_toggle_approved();
+ bool resolver_toggle_approved_enabled();
+ bool resolver_toggle_rejected();
+ bool resolver_toggle_rejected_enabled();
+ bool resolver_view_target();
+ bool resolver_view_target_enabled();
+ bool find_search_enabled();
+ bool find_search();
+ bool find_search_back_enabled();
+ bool find_search_back();
+ bool find_research_enabled();
+ bool find_research();
+ bool find_limit_enabled();
+ bool find_limit();
+ bool find_reset_limit_enabled();
+ bool find_reset_limit();
+ bool find_broken_enabled();
+ bool find_broken();
};
class solution_act_item : public solution_item
@@ -135,6 +171,11 @@
bool dispatch_key(const key &k, vs_tree *owner);
void paint(vs_tree *win, int y, bool hierarchical, const style &st);
+
+
+ // Menu redirections.
+ bool view_target_enabled();
+ bool view_target();
};
/** Like a solution_act_item, but the display doesn't include the
More information about the Aptitude-svn-commit
mailing list