[Aptitude-svn-commit] r4188 - in branches/aptitude-0.3/aptitude: .
src
Daniel Burrows
dburrows at costa.debian.org
Thu Sep 22 22:24:54 UTC 2005
Author: dburrows
Date: Thu Sep 22 22:24:51 2005
New Revision: 4188
Added:
branches/aptitude-0.3/aptitude/src/menu_redirect.cc
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/Makefile.am
branches/aptitude-0.3/aptitude/src/menu_redirect.h
branches/aptitude-0.3/aptitude/src/pkg_view.cc
Log:
Split the code that binds up a package view and the menu redirect object
into a separate .cc file and expose it in the header.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Thu Sep 22 22:24:51 2005
@@ -1,5 +1,10 @@
2005-09-22 Daniel Burrows <dburrows at debian.org>
+ * src/Makefile.am, src/menu_redirect.cc, src/menu_redirect.h, src/pkg_view.cc:
+
+ Split the code to bind up a menu_redirect object and the active
+ package view out into a separate .cc file.
+
* src/ui.cc:
Actually put the new items in the menu and define the signals.
Modified: branches/aptitude-0.3/aptitude/src/Makefile.am
==============================================================================
--- branches/aptitude-0.3/aptitude/src/Makefile.am (original)
+++ branches/aptitude-0.3/aptitude/src/Makefile.am Thu Sep 22 22:24:51 2005
@@ -51,6 +51,7 @@
load_pkgview.h \
load_sortpolicy.cc\
load_sortpolicy.h\
+ menu_redirect.cc\
menu_redirect.h\
pkg_columnizer.cc\
pkg_columnizer.h\
Added: branches/aptitude-0.3/aptitude/src/menu_redirect.cc
==============================================================================
--- (empty file)
+++ branches/aptitude-0.3/aptitude/src/menu_redirect.cc Thu Sep 22 22:24:51 2005
@@ -0,0 +1,186 @@
+// menu_redirect.cc -*-c++-*-
+//
+// Copyright (C) 2005 Daniel Burrows
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+#include "menu_redirect.h"
+
+#include "ui.h"
+
+#include <sigc++/bind.h>
+
+#include <vscreen/ref_ptr.h>
+
+static bool do_menu_test(vscreen_widget &viewBare,
+ menu_redirect *redirect,
+ bool (menu_redirect::* test)())
+{
+ vs_widget_ref view(&viewBare);
+
+ return active_main_widget()==view &&
+ (redirect->*test)();
+}
+
+static bool do_menu_action(vscreen_widget &viewBare,
+ menu_redirect *redirect,
+ bool (menu_redirect::* action)())
+{
+ vs_widget_ref view(&viewBare);
+
+ if(active_main_widget() == view)
+ return (redirect->*action)();
+ else
+ return false;
+}
+
+void create_menu_bindings(menu_redirect *menu_handler,
+ const ref_ptr<vscreen_widget> &valve)
+{
+ // Connect the appropriate signals..
+
+ // TODO: need to change the condition for enabling the menu to
+ // check whether the overall widget is visible...
+ package_menu_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_enabled));
+
+ package_install.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_install));
+
+ package_remove.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_remove));
+
+ package_purge.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_purge));
+
+ package_hold.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_hold));
+
+ package_keep.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_keep));
+
+ package_mark_auto.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_mark_auto));
+
+ package_unmark_auto.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_unmark_auto));
+
+ package_forbid_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_forbid_enabled));
+
+ package_forbid.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_forbid));
+
+ package_information_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_information_enabled));
+
+ package_information.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_information));
+
+ package_changelog_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_changelog_enabled));
+
+ package_changelog.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::package_changelog));
+
+ find_search_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_search_enabled));
+
+ find_search_back_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_search_back_enabled));
+
+ find_search.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_search));
+
+ find_search_back.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_search_back));
+
+ find_research_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_research_enabled));
+
+ find_research.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_research));
+
+ find_limit_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_limit_enabled));
+
+ find_limit.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_limit));
+
+ find_cancel_limit_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_reset_limit_enabled));
+
+ find_cancel_limit.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_reset_limit));
+
+ find_broken_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_broken_enabled));
+
+ find_broken.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
+ valve.weak_ref(),
+ menu_handler,
+ &menu_redirect::find_broken));
+}
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 Thu Sep 22 22:24:51 2005
@@ -123,4 +123,15 @@
virtual ~menu_redirect() {}
};
+template<typename T> class ref_ptr;
+class vscreen_widget;
+
+/** Bind up all the menu-related signals to the given menu handler.
+ * The resulting bindings will cause menu items to be enabled if (a)
+ * valve is the currently active widget, and (b) the underlying
+ * _enabled test returns \b true.
+ */
+void create_menu_bindings(menu_redirect *menu_handler,
+ const ref_ptr<vscreen_widget> &valve);
+
#endif
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 Thu Sep 22 22:24:51 2005
@@ -392,28 +392,6 @@
typedef ref_ptr<info_area_multiplex> info_area_multiplex_ref;
-static bool do_menu_test(vscreen_widget &viewBare,
- menu_redirect *redirect,
- bool (menu_redirect::* test)())
-{
- vs_widget_ref view(&viewBare);
-
- return active_main_widget()==view &&
- (redirect->*test)();
-}
-
-static bool do_menu_action(vscreen_widget &viewBare,
- menu_redirect *redirect,
- bool (menu_redirect::* action)())
-{
- vs_widget_ref view(&viewBare);
-
- if(active_main_widget()==view)
- return (redirect->*action)();
- else
- return false;
-}
-
vs_widget_ref make_package_view(list<package_view_item> &format,
const vs_widget_ref &mainwidget,
menu_redirect *menu_handler,
@@ -591,141 +569,7 @@
_error->Error(_("make_package_view: no main widget found"));
if(menu_handler)
- {
- // Connect the appropriate signals..
-
- // TODO: need to change the condition for enabling the menu to
- // check whether the overall widget is visible...
- package_menu_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_enabled));
-
- package_install.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_install));
-
- package_remove.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_remove));
-
- package_purge.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_purge));
-
- package_hold.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_hold));
-
- package_keep.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_keep));
-
- package_mark_auto.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_mark_auto));
-
- package_unmark_auto.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_unmark_auto));
-
- package_forbid_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_forbid_enabled));
-
- package_forbid.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_forbid));
-
- package_information_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_information_enabled));
-
- package_information.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_information));
-
- package_changelog_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_changelog_enabled));
-
- package_changelog.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::package_changelog));
-
- find_search_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- 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,
- &menu_redirect::find_research_enabled));
-
- find_research.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_research));
-
- find_limit_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_limit_enabled));
-
- find_limit.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_limit));
-
- find_cancel_limit_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_reset_limit_enabled));
-
- find_cancel_limit.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_reset_limit));
-
- find_broken_enabled.connect(sigc::bind(sigc::ptr_fun(do_menu_test),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_broken_enabled));
-
- find_broken.connect(sigc::bind(sigc::ptr_fun(do_menu_action),
- rval.weak_ref(),
- menu_handler,
- &menu_redirect::find_broken));
- }
+ create_menu_bindings(menu_handler, rval);
return rval;
}
More information about the Aptitude-svn-commit
mailing list