[Aptitude-devel] r3038 - in branches/aptitude-0.3/aptitude: . src

Daniel Burrows dburrows@costa.debian.org
Fri, 22 Apr 2005 03:46:38 +0000


Author: dburrows
Date: Fri Apr 22 03:46:35 2005
New Revision: 3038

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/broken_indicator.cc
   branches/aptitude-0.3/aptitude/src/pkg_view.cc
Log:
Start trying to use the broken indicator; fix a guard against nullity.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Fri Apr 22 03:46:35 2005
@@ -1,5 +1,15 @@
 2005-04-21  Daniel Burrows  <dburrows@debian.org>
 
+	* src/broken_indicator.cc, src/pkg_view.cc:
+
+	  Hook up the broken indicator to the package-view class, and do
+	  some awful hacking to make it sort of update.  Needs work, such
+	  as actually getting the package_state_changed signal or
+	  something similar hooked up.
+
+	  Also, fix the guard against a NULL cache so we don't crash on
+	  startup (doh).
+
 	* src/Makefile.am, src/broken_indicator.cc, src/broken_indicator.h, src/generic/aptitude_resolver.h:
 
 	  Write a first draft of the widget to display information about

Modified: branches/aptitude-0.3/aptitude/src/broken_indicator.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/broken_indicator.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/broken_indicator.cc	Fri Apr 22 03:46:35 2005
@@ -46,10 +46,19 @@
  */
 class broken_indicator:public vs_text_layout
 {
+public:
+  broken_indicator()
+  {
+    update();
+  }
+
   void update()
   {
     if((!apt_cache_file) || !(*apt_cache_file)->resolver_exists())
-      set_fragment(NULL);
+      {
+	set_fragment(NULL);
+	return;
+      }
 
     string next=global_bindings.keyname("NextSolution");
     string prev=global_bindings.keyname("PrevSolution");
@@ -169,9 +178,19 @@
 			   "Error"));
       }
   }
-public:
-  broken_indicator()
+
+  /** \todo horribly inefficient. */
+  int width_request()
   {
     update();
+
+    return vs_text_layout::width_request();
   }
 };
+
+vscreen_widget *make_broken_indicator()
+{
+  // FIXME: this should really work by attaching to the
+  // package_state_changed signal, but that signal doesn't work...
+  return new broken_indicator;
+}

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	Fri Apr 22 03:46:35 2005
@@ -6,6 +6,7 @@
 
 #include "aptitude.h"
 
+#include "broken_indicator.h"
 #include "desc_parse.h"
 #include "edit_pkg_hier.h"
 #include "menu_redirect.h"
@@ -384,6 +385,9 @@
 	    wt->add_widget_opts(w, 0, 0, 1, 1, vs_table::EXPAND | vs_table::SHRINK, vs_table::EXPAND | vs_table::SHRINK);
 	    wt->add_widget_opts(ws, 0, 1, 1, 1, vs_table::ALIGN_RIGHT, vs_table::ALIGN_CENTER | vs_table::FILL);
 
+	    wt->add_widget_opts(make_broken_indicator(),
+				1, 0, 1, 2, vs_table::EXPAND, vs_table::EXPAND);
+
 	    lt->add_widget_opts(l, 0, 0, 1, 1, vs_table::EXPAND | vs_table::SHRINK, vs_table::EXPAND | vs_table::SHRINK);
 	    lt->add_widget_opts(ls, 0, 1, 1, 1, vs_table::ALIGN_RIGHT, vs_table::ALIGN_CENTER | vs_table::FILL);