[SCM] Development fot GoFind! branch, master, updated. d29b66d38521f2f4b904b0c33a146bde19bb01a9

Miriam Ruiz miriam at debian.org
Wed Apr 29 02:07:32 UTC 2009


The following commit has been merged in the master branch:
commit d29b66d38521f2f4b904b0c33a146bde19bb01a9
Author: Miriam Ruiz <miriam at debian.org>
Date:   Wed Apr 29 04:13:19 2009 +0200

    Show filtered colour for packages in FLTK GUI

diff --git a/filter.cpp b/filter.cpp
index 00ca54f..a1a246f 100644
--- a/filter.cpp
+++ b/filter.cpp
@@ -87,6 +87,8 @@ bool PackageFilter::Load(const char *filename)
 	if (!version) return false;
 	if (atoi(version->value()) != 1) return false;
 
+	Type type = PackageFilter::Unknown;
+
 	for (rapidxml::xml_node<> *filter = data->first_node("filter");
 			filter; filter = filter->next_sibling("filter"))
 	{
@@ -94,6 +96,15 @@ bool PackageFilter::Load(const char *filename)
 		if (!target) break;
 		std::cout << target->name() << " = " << target->value() << std::endl;
 
+		if (strcasecmp(target->value(), "black") == 0)       type = PackageFilter::Black;
+		else if (strcasecmp(target->value(), "red") == 0)    type = PackageFilter::Red;
+		else if (strcasecmp(target->value(), "yellow") == 0) type = PackageFilter::Yellow;
+		else if (strcasecmp(target->value(), "green") == 0)  type = PackageFilter::Green;
+		else if (strcasecmp(target->value(), "white") == 0)  type = PackageFilter::White;
+		else if (strcasecmp(target->value(), "blue") == 0)   type = PackageFilter::Blue;
+		else if (strcasecmp(target->value(), "hidden") == 0) type = PackageFilter::Hidden;
+		else type = PackageFilter::Unknown;
+
 		rapidxml::xml_attribute<> *tid = filter->first_attribute("id");
 		if (tid)
 			std::cout << tid->name() << " = " << tid->value() << std::endl;
@@ -109,7 +120,7 @@ bool PackageFilter::Load(const char *filename)
 			std::cout << condition->name() << " = " << condition->value() << std::endl;
 			if (!AddLast(
 				rid ? rid->value() : tid ? tid->value() : "?" ,
-				PackageFilter::Unknown,
+				type,
 				condition->value()
 			))
 				std::cerr << "Error Adding '"<< condition->value() << "'" << std::endl;
@@ -132,7 +143,10 @@ int PackageFilter::TagValue(const Tag &tag)
 	PackageFilter::ResultList *item = list;
 	while (item != NULL) {
 		if (tagdata.CheckTag(&item->positive, name))
+		{
+			//std::cout << "ITEM = " << item->name << std::endl;
 			return item->type;
+		}
 		item = item->next;
 	}
 
@@ -163,8 +177,11 @@ int PackageFilter::TagsValue(const TagSet &tags)
 //		std::cerr << "With table value " << i++ << ": ";
 //		item->Print(std::cerr);
 //		std::cerr << std::endl;
-		if (t.CompareAll(item->positive))
+		if (t.CompareAll(item->positive) && !t.CompareAny(item->negative))
+		{
+			//std::cout << "ITEM = " << item->name << std::endl;
 			return item->type;
+		}
 		item = item->next;
 	}
 
diff --git a/filter.h b/filter.h
index f6e3660..e207740 100644
--- a/filter.h
+++ b/filter.h
@@ -38,10 +38,13 @@ public:
 
 	typedef enum {
 		Unknown = 1,   // The calification for the tag/package is unknown
-		Green, // Green light, the tag/package is safe
-		Yellow,    // Yellow light, handle with care
-		Red,       // Green light, the tag/package is definitely unsafe
-		Black,     // Mayday, mayday, the tag/package might be really dangerous!
+		Blue,          // Especially remarkable for some reason
+		Green,         // Green light, the tag/package is safe
+		White,         // Normal package, nothing special about it
+		Yellow,        // Yellow light, handle with care
+		Red,           // Green light, the tag/package is definitely unsafe
+		Black,         // Mayday, mayday, the tag/package might be really dangerous!
+		Hidden         // Invisible, hidden, not shown
 	} Type;
 
 	typedef ept::debtags::Tag Tag;
diff --git a/gui_fltk.cpp b/gui_fltk.cpp
index ba02b92..4085498 100644
--- a/gui_fltk.cpp
+++ b/gui_fltk.cpp
@@ -115,6 +115,7 @@ static void UpdateUILists(GamesUI& ui)
 	{
 		ept::apt::PackageRecord rec(pkgdata.apt().rawRecord(i->name));
 		char* userData = pkgdata.PackageString(rec.package());
+		bool showPkg = true;
 
 		// Available Colors: FL_BLACK, FL_BLUE, FL_CYAN, FL_DARK_BLUE,
 		// FL_DARK_CYAN, FL_DARK_GREEN FL_DARK_MAGENTA, FL_DARK_RED,
@@ -125,6 +126,8 @@ static void UpdateUILists(GamesUI& ui)
 		PackageData::TagSet tags = pkgdata.debtags().getTagsOfItem((const char *)rec.package().c_str());
 		switch (pkgdata.GetPackageFilter().TagsValue(tags))
 		{
+			case PackageFilter::Blue:
+				fr = FL_BLACK; bk = FL_BLUE; break;
 			case PackageFilter::Green:
 				fr = FL_BLACK; bk = FL_GREEN; break;
 			case PackageFilter::Yellow:
@@ -133,25 +136,31 @@ static void UpdateUILists(GamesUI& ui)
 				fr = FL_WHITE; bk = FL_RED; break;
 			case PackageFilter::Black:
 				fr = FL_WHITE; bk = FL_BLACK; break;
+			case PackageFilter::Hidden:
+				showPkg = false; break;
+			case PackageFilter::White:
 			default:
 				fr = FL_BLACK; bk = FL_WHITE; break;
 		}
 
-		char fmtstr[16];
-		snprintf(fmtstr, sizeof(fmtstr), "@B%d at C%d at .", bk, fr);
-
-		std::string desc = std::string(fmtstr) + rec.package() + "\t" + 
-			std::string(fmtstr) + rec.shortDescription();
-		if (pkgdata.popcon().hasData() && i->popcon)
+		if (showPkg)
 		{
-			desc += "\t" + std::string(fmtstr);
-			char stars[16];
-			snprintf(stars, sizeof(stars), "%%%d/8/1;",
-				(int)rintf(log(i->popcon) * 100 / log(pkgdata.popconLocalMax())));
-			desc += stars;
-			//printf ("%s (%s): POPCON=%f\n", rec.package().c_str(), rec.shortDescription().c_str(), i->popcon);
+			char fmtstr[16];
+			snprintf(fmtstr, sizeof(fmtstr), "@B%d at C%d at .", bk, fr);
+
+			std::string desc = std::string(fmtstr) + rec.package() + "\t" + 
+				std::string(fmtstr) + rec.shortDescription();
+			if (pkgdata.popcon().hasData() && i->popcon)
+			{
+				desc += "\t" + std::string(fmtstr);
+				char stars[16];
+				snprintf(stars, sizeof(stars), "%%%d/8/1;",
+					(int)rintf(log(i->popcon) * 100 / log(pkgdata.popconLocalMax())));
+				desc += stars;
+				//printf ("%s (%s): POPCON=%f\n", rec.package().c_str(), rec.shortDescription().c_str(), i->popcon);
+			}
+			ui.ResultsBrowser->add(desc.c_str(), userData);
 		}
-		ui.ResultsBrowser->add(desc.c_str(), userData);
 
 		// Relevance is 0 to 100
 		// Popcon is a weird floating point number (to be improved)

-- 
Development fot GoFind!



More information about the Pkg-games-commits mailing list