[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