[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